Ejemplo n.º 1
0
def _create_spnlfvlans(rack, user):
    log.debug("_create_spnlfvlans")

    spn_lf_envs = models_env.Ambiente.objects.filter(
        dcroom=int(rack.dcroom.id),
        grupo_l3__nome=str(rack.dcroom.name),
        ambiente_logico__nome__in=[
            "SPINE01LEAF", "SPINE02LEAF", "SPINE03LEAF", "SPINE04LEAF"
        ])
    log.debug("SPN environments" + str(spn_lf_envs))

    rack_number = int(rack.numero)
    tipo_rede = "Ponto a ponto"
    try:
        id_network_type = models_vlan.TipoRede().get_by_name(tipo_rede).id
    except:
        network_type = models_vlan.TipoRede()
        network_type.tipo_rede = tipo_rede
        network_type.save()
        id_network_type = network_type.id
        pass
    for env in spn_lf_envs:
        env_id = env.id
        try:
            base_rack = int(rack.dcroom.racks)
            spn = int(env.ambiente_logico.nome[6])
        except:
            spn = 1
            base_rack = 1
        vlan_base = env.min_num_vlan_1
        vlan_number = int(vlan_base) + int(rack_number) + (spn - 1) * base_rack
        vlan_name = "VLAN_" + env.divisao_dc.nome + "_" + env.ambiente_logico.nome \
                    + "_" + rack.nome

        for net in env.configs:
            prefix = int(net.subnet_mask)
            block = list(IPNetwork(net.network).subnet(int(net.subnet_mask)))
            network = {
                'network': str(block[rack_number]),
                'prefix': prefix,
                'network_type': id_network_type,
                'ip_version': str(net.ip_version)
            }
            if str(net.ip_version)[-1] is "4":
                create_networkv4 = network
            elif str(net.ip_version)[-1] is "6":
                create_networkv6 = network
        obj = {
            'name': vlan_name,
            'num_vlan': vlan_number,
            'environment': env_id,
            'default_vrf': env.default_vrf.id,
            'vrf': env.vrf,
            'create_networkv4': create_networkv4 if create_networkv4 else None,
            'create_networkv6': create_networkv6 if create_networkv6 else None
        }
        try:
            facade_vlan_v3.create_vlan(obj, user)
        except:
            log.debug("Vlan object: %s" % str(obj))
Ejemplo n.º 2
0
    def leaf_leaf_vlans_save(self):
        log.debug("_create_lflf_vlans")

        env_lf = models_env.Ambiente.objects.filter(
            dcroom=int(self.rack.dcroom.id),
            grupo_l3__nome=str(self.rack.dcroom.name),
            ambiente_logico__nome="LEAF-LEAF")
        log.debug("Leaf-leaf environments: " + str(env_lf))

        tipo_rede = "Ponto a ponto"
        try:
            id_network_type = models_vlan.TipoRede().get_by_name(tipo_rede).id
        except:
            network_type = models_vlan.TipoRede()
            network_type.tipo_rede = tipo_rede
            network_type.save()
            id_network_type = network_type.id
            pass

        for env in env_lf:
            env_id = env.id
            vlan_number = int(env.min_num_vlan_1)
            vlan_name = "VLAN_LFxLF_" + env.divisao_dc.nome + "_" + env.grupo_l3.nome

            try:
                models_vlan.Vlan.objects.all().filter(
                    nome=vlan_name).uniqueResult()
            except:
                log.debug("debug lfxlf")
                for net in env.configs:
                    bloco = net.network
                    prefix = bloco.split('/')[-1]
                    network = {
                        'prefix': prefix,
                        'network_type': id_network_type
                    }
                    if str(net.ip_version)[-1] is "4":
                        create_networkv4 = network
                    elif str(net.ip_version)[-1] is "6":
                        create_networkv6 = network
                obj = {
                    'name':
                    vlan_name,
                    'num_vlan':
                    vlan_number,
                    'environment':
                    env_id,
                    'default_vrf':
                    env.default_vrf.id,
                    'vrf':
                    env.vrf,
                    'create_networkv4':
                    create_networkv4 if create_networkv4 else None,
                    'create_networkv6':
                    create_networkv6 if create_networkv6 else None
                }
                facade_vlan_v3.create_vlan(obj, self.user)
Ejemplo n.º 3
0
def _create_spnlfvlans(rack, user):
    log.debug("_create_spnlfvlans")

    spn_lf_envs = models_env.Ambiente.objects.filter(
        dcroom=int(rack.dcroom.id),
        father_environment__isnull=False,
        grupo_l3__nome=str(rack.dcroom.name),
        ambiente_logico__nome__in=[
            "SPINE01LEAF", "SPINE02LEAF", "SPINE03LEAF", "SPINE04LEAF"
        ])
    log.debug(str(spn_lf_envs))

    rack_number = int(rack.numero)
    tipo_rede = "Ponto a ponto"
    try:
        id_network_type = models_vlan.TipoRede().get_by_name(tipo_rede).id
    except:
        network_type = models_vlan.TipoRede()
        network_type.tipo_rede = tipo_rede
        network_type.save()
        id_network_type = network_type.id
        pass
    for env in spn_lf_envs:
        log.debug(str(env))
        env_id = env.id
        vlan_base = env.min_num_vlan_1
        vlan_number = int(vlan_base) + int(rack_number)
        vlan_name = "VLAN_" + env.divisao_dc.nome + "_" + env.ambiente_logico.nome + "_" + rack.nome

        for net in env.configs:
            prefix = int(net.ip_config.new_prefix)
            network = {
                'prefix':
                prefix,  # str(list(cidr.subnet(prefix))[rack_number]),
                'network_type': id_network_type
            }
            if str(net.ip_config.type)[-1] is "4":
                create_networkv4 = network
            elif str(net.ip_config.type)[-1] is "6":
                create_networkv6 = network
        obj = {
            'name': vlan_name,
            'num_vlan': vlan_number,
            'environment': env_id,
            'default_vrf': env.default_vrf.id,
            'vrf': env.vrf,
            'create_networkv4': create_networkv4 if create_networkv4 else None,
            'create_networkv6': create_networkv6 if create_networkv6 else None
        }
        try:
            facade_vlan_v3.create_vlan(obj, user)
        except:
            log.debug("Vlan object: %s" % str(obj))
Ejemplo n.º 4
0
def _create_spnlfvlans(rack, user):
    log.debug("_create_spnlfvlans")

    spn_lf_envs = models_env.Ambiente.objects.filter(dcroom=int(rack.dcroom.id),
                                                     father_environment__isnull=False,
                                                     grupo_l3__nome=str(rack.dcroom.name),
                                                     ambiente_logico__nome__in=["SPINE01LEAF",
                                                                                "SPINE02LEAF",
                                                                                "SPINE03LEAF",
                                                                                "SPINE04LEAF"])
    log.debug("SPN environments"+str(spn_lf_envs))

    rack_number = int(rack.numero)
    tipo_rede = "Ponto a ponto"
    try:
        id_network_type = models_vlan.TipoRede().get_by_name(tipo_rede).id
    except:
        network_type = models_vlan.TipoRede()
        network_type.tipo_rede = tipo_rede
        network_type.save()
        id_network_type = network_type.id
        pass
    for env in spn_lf_envs:
        env_id = env.id
        vlan_base = env.min_num_vlan_1
        vlan_number = int(vlan_base) + int(rack_number)
        vlan_name = "VLAN_" + env.divisao_dc.nome + "_" + env.ambiente_logico.nome + "_" + rack.nome

        for net in env.configs:
            prefix = int(net.ip_config.new_prefix)
            network = {
                'prefix': prefix,  # str(list(cidr.subnet(prefix))[rack_number]),
                'network_type': id_network_type
            }
            if str(net.ip_config.type)[-1] is "4":
                create_networkv4 = network
            elif str(net.ip_config.type)[-1] is "6":
                create_networkv6 = network
        obj = {
            'name': vlan_name,
            'num_vlan': vlan_number,
            'environment': env_id,
            'default_vrf': env.default_vrf.id,
            'vrf': env.vrf,
            'create_networkv4': create_networkv4 if create_networkv4 else None,
            'create_networkv6': create_networkv6 if create_networkv6 else None
        }
        try:
            facade_vlan_v3.create_vlan(obj, user)
        except:
            log.debug("Vlan object: %s" % str(obj))
Ejemplo n.º 5
0
def _create_lflf_vlans(rack, user):
    log.debug("_create_lflf_vlans")

    env_lf = models_env.Ambiente.objects.filter(dcroom=int(rack.dcroom.id),
                                                father_environment__isnull=True,
                                                grupo_l3__nome=str(rack.dcroom.name),
                                                ambiente_logico__nome="LEAF-LEAF")
    log.debug("Leaf-leaf environments: "+str(env_lf))

    tipo_rede = "Ponto a ponto"
    try:
        id_network_type = models_vlan.TipoRede().get_by_name(tipo_rede).id
    except:
        network_type = models_vlan.TipoRede()
        network_type.tipo_rede = tipo_rede
        network_type.save()
        id_network_type = network_type.id
        pass

    for env in env_lf:
        env_id = env.id
        vlan_number = int(env.min_num_vlan_1)
        vlan_name = "VLAN_LFxLF_" + env.divisao_dc.nome + "_" + env.grupo_l3.nome

        try:
            models_vlan.Vlan.objects.all().filter(nome=vlan_name).uniqueResult()
        except:
            log.debug("debug lfxlf")
            for net in env.configs:
                bloco = net.ip_config.subnet
                prefix = bloco.split('/')[-1]
                network = {
                    'prefix': prefix,
                    'network_type': id_network_type
                }
                if str(net.ip_config.type)[-1] is "4":
                    create_networkv4 = network
                elif str(net.ip_config.type)[-1] is "6":
                    create_networkv6 = network
            obj = {
                'name': vlan_name,
                'num_vlan': vlan_number,
                'environment': env_id,
                'default_vrf': env.default_vrf.id,
                'vrf': env.vrf,
                'create_networkv4': create_networkv4 if create_networkv4 else None,
                'create_networkv6': create_networkv6 if create_networkv6 else None
            }
            facade_vlan_v3.create_vlan(obj, user)
Ejemplo n.º 6
0
def _create_oobvlans(rack, user):
    log.debug("_create_oobvlans")

    env_oob = models_env.Ambiente.objects.filter(
        dcroom=int(rack.dcroom.id),
        divisao_dc__nome="OOB",
        grupo_l3__nome=str(rack.dcroom.name),
        ambiente_logico__nome="GERENCIA").uniqueResult()
    log.debug(str(env_oob))
    vlan = None
    for env in [env_oob]:
        vlan_base = env.min_num_vlan_1
        vlan_number = int(vlan_base) + int(rack.numero)
        vlan_name = "VLAN_" + env.ambiente_logico.nome + "_" + rack.nome

        network = dict()
        for config in env.configs:
            network = {
                'new_prefix': str(config.ip_config.new_prefix),
                'network_type': config.ip_config.network_type.id
            }
        obj = {
            'name': vlan_name,
            'num_vlan': vlan_number,
            'environment': env.id,
            'default_vrf': env.default_vrf.id,
            'vrf': env.vrf,
            'create_networkv4': network,
            'create_networkv6': None
        }
        log.debug("Vlan object: %s" % str(obj))
        vlan = facade_vlan_v3.create_vlan(obj, user)

    return vlan
Ejemplo n.º 7
0
def _create_lflf_vlans(rack, user):
    log.debug("_create_lflf_vlans")

    env_lf = models_env.Ambiente.objects.filter(
        dcroom=int(rack.dcroom.id),
        father_environment__isnull=True,
        grupo_l3__nome=str(rack.dcroom.name),
        ambiente_logico__nome="LEAF-LEAF")
    log.debug(str(env_lf))
    rack_number = int(rack.numero)

    tipo_rede = "Ponto a ponto"
    try:
        id_network_type = models_vlan.TipoRede().get_by_name(tipo_rede).id
    except:
        network_type = models_vlan.TipoRede()
        network_type.tipo_rede = tipo_rede
        network_type.save()
        id_network_type = network_type.id
        pass

    for env in env_lf:
        env_id = env.id
        vlan_number = int(env.min_num_vlan_1)
        vlan_name = "VLAN_LFxLF_" + env.divisao_dc.nome + "_" + env.grupo_l3.nome

        for net in env.configs:
            bloco = net.ip_config.subnet
            prefix = bloco.split('/')[-1]
            network = {'prefix': prefix, 'network_type': id_network_type}
            if str(net.ip_config.type)[-1] is "4":
                create_networkv4 = network
            elif str(net.ip_config.type)[-1] is "6":
                create_networkv6 = network
        obj = {
            'name': vlan_name,
            'num_vlan': vlan_number,
            'environment': env_id,
            'default_vrf': env.default_vrf.id,
            'vrf': env.vrf,
            'create_networkv4': create_networkv4 if create_networkv4 else None,
            'create_networkv6': create_networkv6 if create_networkv6 else None
        }
        try:
            facade_vlan_v3.create_vlan(obj, user)
        except:
            log.debug("Vlan object: %s" % str(obj))
Ejemplo n.º 8
0
def _create_oobvlans(rack, user):
    log.debug("_create_oobvlans")

    env_oob = models_env.Ambiente.objects.filter(
        dcroom=int(rack.dcroom.id),
        divisao_dc__nome="OOB",
        grupo_l3__nome=str(rack.dcroom.name),
        ambiente_logico__nome="GERENCIA").uniqueResult()
    log.debug("OOB environments: " + str(env_oob))

    vlan = None
    for env in [env_oob]:
        vlan_base = env.min_num_vlan_1
        vlan_number = int(vlan_base) + int(rack.numero)
        vlan_name = "VLAN_" + env.ambiente_logico.nome + "_" + rack.nome

        obj = {
            'name': vlan_name,
            'num_vlan': vlan_number,
            'environment': env.id,
            'default_vrf': env.default_vrf.id,
            'vrf': env.vrf,
            'create_networkv4': None,
            'create_networkv6': None
        }
        vlan = facade_vlan_v3.create_vlan(obj, user)

        log.debug("Vlan allocated: " + str(vlan))

        network = dict()
        for config in env.configs:
            log.debug("Configs: " + str(config))
            new_prefix = config.subnet_mask
            redev4 = IPNetwork(config.network)
            new_v4 = list(redev4.subnet(int(new_prefix)))[int(rack.numero)]
            oct1, oct2, oct3, var = str(new_v4).split('.')
            oct4, prefix = var.split('/')
            netmask = str(new_v4.netmask)
            mask1, mask2, mask3, mask4 = netmask.split('.')
            network = dict(oct1=oct1,
                           oct2=oct2,
                           oct3=oct3,
                           oct4=oct4,
                           prefix=prefix,
                           mask_oct1=mask1,
                           mask_oct2=mask2,
                           mask_oct3=mask3,
                           mask_oct4=mask4,
                           cluster_unit=None,
                           vlan=vlan.id,
                           network_type=config.id_network_type.id,
                           environmentvip=None)
            log.debug("Network allocated: " + str(network))
        facade_redev4_v3.create_networkipv4(network, user)

    return vlan
Ejemplo n.º 9
0
    def spine_leaf_vlans_save(self):
        log.debug("_create_spnlfvlans")

        spn_lf_envs = models_env.Ambiente.objects.filter(
            dcroom=int(self.rack.dcroom.id),
            grupo_l3__nome=str(self.rack.dcroom.name),
            ambiente_logico__nome__in=[
                "SPINE01LEAF", "SPINE02LEAF", "SPINE03LEAF", "SPINE04LEAF"
            ])
        log.debug("SPN environments" + str(spn_lf_envs))

        tipo_rede = "Ponto a ponto"
        try:
            id_network_type = models_vlan.TipoRede().get_by_name(tipo_rede).id
        except:
            network_type = models_vlan.TipoRede()
            network_type.tipo_rede = tipo_rede
            network_type.save()
            id_network_type = network_type.id
            pass

        for env in spn_lf_envs:

            obj = {
                'name':
                "VLAN_" + env.divisao_dc.nome + "_" +
                env.ambiente_logico.nome + "_" + self.rack.nome,
                'environment':
                env.id,
                'default_vrf':
                env.default_vrf.id,
                'vrf':
                env.vrf,
                'create_networkv4':
                None,
                'create_networkv6':
                None,
                'description':
                "Vlan spinexleaf do rack " + self.rack.nome
            }
            vlan = facade_vlan_v3.create_vlan(obj, self.user)

            log.debug("Vlan allocated: " + str(vlan))

            for config in env.configs:
                log.debug("Configs: " + str(config))
                network = dict(prefix=config.subnet_mask,
                               cluster_unit=None,
                               vlan=vlan.id,
                               network_type=id_network_type,
                               environmentvip=None)
                log.debug("Network allocated: " + str(network))
                if str(config.ip_version)[-1] is "4":
                    facade_redev4_v3.create_networkipv4(network, self.user)
                elif str(config.ip_version)[-1] is "6":
                    facade_redev6_v3.create_networkipv6(network, self.user)
Ejemplo n.º 10
0
    def post(self, request, *args, **kwargs):
        """Creates list of vlans."""

        data = request.DATA

        json_validate(SPECS.get('vlan_post')).validate(data)

        response = list()
        for vlan in data['vlans']:
            vl = facade.create_vlan(vlan, request.user)
            response.append({'id': vl.id})

        return Response(response, status=status.HTTP_201_CREATED)
Ejemplo n.º 11
0
    def post(self, request, *args, **kwargs):
        """Creates list of vlans."""

        data = request.DATA

        json_validate(SPECS.get('vlan_post')).validate(data)

        response = list()
        for vlan in data['vlans']:
            vl = facade.create_vlan(vlan, request.user)
            response.append({'id': vl.id})

        return Response(response, status=status.HTTP_201_CREATED)
Ejemplo n.º 12
0
def create_vlan(self, vlan_dict, user_id):

    msg = {'object_type': 'vlan', 'action': 'allocate'}
    self.update_state(state='PROGRESS', meta=msg)

    user = Usuario.objects.get(id=user_id)

    try:
        vlan_obj = facade.create_vlan(vlan_dict, user)

    except Exception, exception:
        msg['message'] = 'Vlan was not allocated.'
        msg['reason'] = str(exception)

        raise Exception(msg)
Ejemplo n.º 13
0
def _create_oobvlans(rack, user):
    log.debug("_create_oobvlans")

    env_oob = models_env.Ambiente.objects.filter(dcroom=int(rack.dcroom.id),
                                                 divisao_dc__nome="OOB",
                                                 grupo_l3__nome=str(rack.dcroom.name),
                                                 ambiente_logico__nome="GERENCIA").uniqueResult()
    log.debug("OOB environments: "+str(env_oob))

    vlan = None
    for env in [env_oob]:
        vlan_base = env.min_num_vlan_1
        vlan_number = int(vlan_base) + int(rack.numero)
        vlan_name = "VLAN_" + env.ambiente_logico.nome + "_" + rack.nome

        obj = {
            'name': vlan_name,
            'num_vlan': vlan_number,
            'environment': env.id,
            'default_vrf': env.default_vrf.id,
            'vrf': env.vrf,
            'create_networkv4': None,
            'create_networkv6': None
        }
        vlan = facade_vlan_v3.create_vlan(obj, user)

        log.debug("Vlan allocated: "+str(vlan))

        network = dict()
        for config in env.configs:
            log.debug("Configs: "+str(config))
            new_prefix = config.ip_config.new_prefix
            redev4 = IPNetwork(config.ip_config.subnet)
            new_v4 = list(redev4.subnet(int(new_prefix)))[int(rack.numero)]
            oct1, oct2, oct3, var = str(new_v4).split('.')
            oct4, prefix = var.split('/')
            netmask = str(new_v4.netmask)
            mask1, mask2, mask3, mask4 = netmask.split('.')
            network = dict(oct1=oct1, oct2=oct2, oct3=oct3, oct4=oct4, prefix=prefix, mask_oct1=mask1, mask_oct2=mask2,
                           mask_oct3=mask3, mask_oct4=mask4, cluster_unit=None, vlan=vlan.id,
                           network_type=config.ip_config.network_type.id, environmentvip=None)
            log.debug("Network allocated: "+ str(network))
        facade_redev4_v3.create_networkipv4(network, user)

    return vlan
Ejemplo n.º 14
0
def create_vlan(self, vlan_dict, user_id):

    msg = {
        'object_type': 'vlan',
        'action': 'allocate'
    }
    self.update_state(
        state='PROGRESS',
        meta=msg
    )

    user = Usuario.objects.get(id=user_id)

    try:
        vlan_obj = facade.create_vlan(vlan_dict, user)

    except Exception, exception:
        msg['message'] = 'Vlan was not allocated.'
        msg['reason'] = str(exception)

        raise Exception(msg)
Ejemplo n.º 15
0
    def manage_vlan_save(self):
        log.debug("_create_oobvlans")

        env_oob = models_env.Ambiente.objects.filter(
            dcroom=int(self.rack.dcroom.id),
            divisao_dc__nome="OOB",
            grupo_l3__nome=str(self.rack.dcroom.name),
            ambiente_logico__nome="GERENCIA").uniqueResult()
        log.debug("OOB environments: " + str(env_oob))

        for env in [env_oob]:

            obj = {
                'name':
                "VLAN_" + env.ambiente_logico.nome + "_" + self.rack.nome,
                'environment': env.id,
                'default_vrf': env.default_vrf.id,
                'vrf': env.vrf,
                'create_networkv4': None,
                'create_networkv6': None,
                'description': "Vlan de gerência do rack " + self.rack.nome
            }
            vlan = facade_vlan_v3.create_vlan(obj, self.user)

            log.debug("Vlan allocated: " + str(vlan))

            network = dict()
            for config in env.configs:
                log.debug("Configs: " + str(config))
                network = dict(prefix=config.subnet_mask,
                               cluster_unit=None,
                               vlan=vlan.id,
                               network_type=config.id_network_type.id,
                               environmentvip=None)
                log.debug("Network allocated: " + str(network))
            facade_redev4_v3.create_networkipv4(network, self.user)

        return vlan