Source code for networkapi.rack.resource.GeraConfig

# -*- coding: utf-8 -*-
import logging
import re

from django.core.exceptions import ObjectDoesNotExist
from netaddr import IPNetwork

from networkapi.rack.models import RackConfigError
from networkapi.system import exceptions as var_exceptions
from networkapi.system.facade import get_value as get_variable

log = logging.getLogger(__name__)


[docs]def replace(filein, fileout, dicionario): try: # Read contents from file as a single string file_handle = open(filein, 'r') file_string = file_handle.read() file_handle.close() except: raise RackConfigError( None, None, 'Erro abrindo roteiro: %s.' % (filein)) try: # for key in dicionario: # Use RE package to allow for replacement (also allowing for # (multiline) REGEX) file_string = (re.sub(key, dicionario[key], file_string)) except: raise RackConfigError( None, None, 'Erro atualizando as variáveis no roteiro: %s.' % (filein)) try: # Write contents to file. # Using mode 'w' truncates the file. file_handle = open(fileout, 'w') file_handle.write(file_string) file_handle.close() except: raise RackConfigError( None, None, 'Erro salvando arquivo de configuração: %s.' % (fileout))
[docs]def splitnetworkbyrack(net, bloco, posicao): subnets = list(net.subnet(bloco)) return subnets[posicao]
[docs]def dic_vlan_core(variablestochangecore, rack, name_core, name_rack): """ variablestochangecore: list rack: Numero do Rack name_core: Nome do Core name_rack: Nome do rack """ core = int(name_core.split('-')[2]) try: # valor base para as vlans e portchannels BASE_SO = int(get_variable('base_so')) # rede para conectar cores aos racks SO_OOB_NETipv4 = IPNetwork(get_variable('net_core')) # Vlan para cadastrar vlan_so_name = get_variable('vlan_so_name') except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável BASE_SO ou SO_OOB_NETipv4.') variablestochangecore['VLAN_SO'] = str(BASE_SO + rack) variablestochangecore['VLAN_NAME'] = vlan_so_name + name_rack variablestochangecore['VLAN_NUM'] = str(BASE_SO + rack) # Rede para cadastrar subSO_OOB_NETipv4 = list(SO_OOB_NETipv4.subnet(25)) variablestochangecore['REDE_IP'] = str( subSO_OOB_NETipv4[rack]).split('/')[0] variablestochangecore['REDE_MASK'] = str(subSO_OOB_NETipv4[rack].prefixlen) variablestochangecore['NETMASK'] = str(subSO_OOB_NETipv4[rack].netmask) variablestochangecore['BROADCAST'] = str(subSO_OOB_NETipv4[rack].broadcast) # cadastro ip ip = 124 + core variablestochangecore['EQUIP_NAME'] = name_core variablestochangecore['IPCORE'] = str(subSO_OOB_NETipv4[rack][ip]) # ja cadastrado variablestochangecore['IPHSRP'] = str(subSO_OOB_NETipv4[rack][1]) variablestochangecore['NUM_CHANNEL'] = str(BASE_SO + rack) return variablestochangecore
[docs]def dic_lf_spn(user, rack): CIDREBGP = {} CIDRBE = {} ######## VLANBELEAF = {} VLANFELEAF = {} VLANBORDALEAF = {} VLANBORDACACHOSLEAF = {} ######## VLANBELEAF[rack] = [] VLANFELEAF[rack] = [] VLANBORDALEAF[rack] = [] VLANBORDACACHOSLEAF[rack] = [] ipv4_spn1 = dict() ipv4_spn2 = dict() ipv4_spn3 = dict() ipv4_spn4 = dict() redev6_spn1 = dict() redev6_spn2 = dict() redev6_spn3 = dict() redev6_spn4 = dict() try: BASE_RACK = int(get_variable('base_rack')) VLANBE = int(get_variable('vlanbe')) VLANFE = int(get_variable('vlanfe')) VLANBORDA = int(get_variable('vlanborda')) VLANBORDACACHOS = int(get_variable('vlanbordacachos')) VLANBETORxTOR = int(get_variable('vlanbetorxtor')) # CIDR sala 01 => 10.128.0.0/12 CIDRBE[0] = IPNetwork(get_variable('cidr_sl01')) CIDREBGP[0] = IPNetwork(get_variable('cidr_bgp')) except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável BASE_RACK ou VLAN<BE,FE,BORDA,CACHOS,TORxTOR> ou CIDR<BE,EBGP>.') SPINE1ipv4 = IPNetwork(get_variable('net_spn01')) SPINE2ipv4 = IPNetwork(get_variable('net_spn02')) SPINE3ipv4 = IPNetwork(get_variable('net_spn03')) SPINE4ipv4 = IPNetwork(get_variable('net_spn04')) # REDE subSPINE1ipv4[rack] subSPINE1ipv4 = list(SPINE1ipv4.subnet(31)) subSPINE2ipv4 = list(SPINE2ipv4.subnet(31)) subSPINE3ipv4 = list(SPINE3ipv4.subnet(31)) subSPINE4ipv4 = list(SPINE4ipv4.subnet(31)) SPINE1ipv6 = IPNetwork(get_variable('net_spn01_v6')) SPINE2ipv6 = IPNetwork(get_variable('net_spn02_v6')) SPINE3ipv6 = IPNetwork(get_variable('net_spn03_v6')) SPINE4ipv6 = IPNetwork(get_variable('net_spn04_v6')) subSPINE1ipv6 = list(SPINE1ipv6.subnet(127)) subSPINE2ipv6 = list(SPINE2ipv6.subnet(127)) subSPINE3ipv6 = list(SPINE3ipv6.subnet(127)) subSPINE4ipv6 = list(SPINE4ipv6.subnet(127)) # Vlans BE RANGE VLANBELEAF[rack].append(VLANBE + rack) # rede subSPINE1ipv4[rack] VLANBELEAF[rack].append(VLANBE + rack + BASE_RACK) VLANBELEAF[rack].append(VLANBE + rack + 2 * BASE_RACK) VLANBELEAF[rack].append(VLANBE + rack + 3 * BASE_RACK) # Vlans FE RANGE VLANFELEAF[rack].append(VLANFE + rack) VLANFELEAF[rack].append(VLANFE + rack + BASE_RACK) VLANFELEAF[rack].append(VLANFE + rack + 2 * BASE_RACK) VLANFELEAF[rack].append(VLANFE + rack + 3 * BASE_RACK) # Vlans BORDA RANGE VLANBORDALEAF[rack].append(VLANBORDA + rack) VLANBORDALEAF[rack].append(VLANBORDA + rack + BASE_RACK) VLANBORDALEAF[rack].append(VLANBORDA + rack + 2 * BASE_RACK) VLANBORDALEAF[rack].append(VLANBORDA + rack + 3 * BASE_RACK) # Vlans BORDACACHOS RANGE VLANBORDACACHOSLEAF[rack].append(VLANBORDACACHOS + rack) VLANBORDACACHOSLEAF[rack].append(VLANBORDACACHOS + rack + BASE_RACK) VLANBORDACACHOSLEAF[rack].append(VLANBORDACACHOS + rack + 2 * BASE_RACK) VLANBORDACACHOSLEAF[rack].append(VLANBORDACACHOS + rack + 3 * BASE_RACK) ################# # BD # ################# vlans = dict() vlans['VLANBELEAF'] = VLANBELEAF vlans['VLANFELEAF'] = VLANFELEAF vlans['VLANBORDALEAF'] = VLANBORDALEAF vlans['VLANBORDACACHOSLEAF'] = VLANBORDACACHOSLEAF vlans['BE'] = [VLANBE, VLANFE] vlans['FE'] = [VLANFE, VLANBORDA] vlans['BORDA'] = [VLANBORDA, VLANBORDACACHOS] vlans['BORDACACHOS'] = [VLANBORDACACHOS, VLANBETORxTOR] ipv4_spn1['REDE_IP'] = str(subSPINE1ipv4[rack].ip) ipv4_spn1['REDE_MASK'] = subSPINE1ipv4[rack].prefixlen ipv4_spn1['NETMASK'] = str(subSPINE1ipv4[rack].netmask) ipv4_spn1['BROADCAST'] = str(subSPINE1ipv4[rack].broadcast) ipv4_spn2['REDE_IP'] = str(subSPINE2ipv4[rack].ip) ipv4_spn2['REDE_MASK'] = subSPINE2ipv4[rack].prefixlen ipv4_spn2['NETMASK'] = str(subSPINE2ipv4[rack].netmask) ipv4_spn2['BROADCAST'] = str(subSPINE2ipv4[rack].broadcast) ipv4_spn3['REDE_IP'] = str(subSPINE3ipv4[rack].ip) ipv4_spn3['REDE_MASK'] = subSPINE3ipv4[rack].prefixlen ipv4_spn3['NETMASK'] = str(subSPINE3ipv4[rack].netmask) ipv4_spn3['BROADCAST'] = str(subSPINE3ipv4[rack].broadcast) ipv4_spn4['REDE_IP'] = str(subSPINE4ipv4[rack].ip) ipv4_spn4['REDE_MASK'] = subSPINE4ipv4[rack].prefixlen ipv4_spn4['NETMASK'] = str(subSPINE4ipv4[rack].netmask) ipv4_spn4['BROADCAST'] = str(subSPINE4ipv4[rack].broadcast) redev6_spn1['REDE_IP'] = str(subSPINE1ipv6[rack].ip) redev6_spn1['REDE_MASK'] = subSPINE1ipv6[rack].prefixlen redev6_spn1['NETMASK'] = str(subSPINE1ipv6[rack].netmask) redev6_spn1['BROADCAST'] = str(subSPINE1ipv6[rack].broadcast) redev6_spn2['REDE_IP'] = str(subSPINE2ipv6[rack].ip) redev6_spn2['REDE_MASK'] = subSPINE2ipv6[rack].prefixlen redev6_spn2['NETMASK'] = str(subSPINE2ipv6[rack].netmask) redev6_spn2['BROADCAST'] = str(subSPINE2ipv6[rack].broadcast) redev6_spn3['REDE_IP'] = str(subSPINE3ipv6[rack].ip) redev6_spn3['REDE_MASK'] = subSPINE3ipv6[rack].prefixlen redev6_spn3['NETMASK'] = str(subSPINE3ipv6[rack].netmask) redev6_spn3['BROADCAST'] = str(subSPINE3ipv6[rack].broadcast) redev6_spn4['REDE_IP'] = str(subSPINE4ipv6[rack].ip) redev6_spn4['REDE_MASK'] = subSPINE4ipv6[rack].prefixlen redev6_spn4['NETMASK'] = str(subSPINE4ipv6[rack].netmask) redev6_spn4['BROADCAST'] = str(subSPINE4ipv6[rack].broadcast) redes = dict() redes['SPINE1ipv4'] = str(SPINE1ipv4) redes['SPINE1ipv4_net'] = ipv4_spn1 redes['SPINE2ipv4'] = str(SPINE2ipv4) redes['SPINE2ipv4_net'] = ipv4_spn2 redes['SPINE3ipv4'] = str(SPINE3ipv4) redes['SPINE3ipv4_net'] = ipv4_spn3 redes['SPINE4ipv4'] = str(SPINE4ipv4) redes['SPINE4ipv4_net'] = ipv4_spn4 ipv6 = dict() ipv6['SPINE1ipv6'] = str(SPINE1ipv6) ipv6['SPINE1ipv6_net'] = redev6_spn1 ipv6['SPINE2ipv6'] = str(SPINE2ipv6) ipv6['SPINE2ipv6_net'] = redev6_spn2 ipv6['SPINE3ipv6'] = str(SPINE3ipv6) ipv6['SPINE3ipv6_net'] = redev6_spn3 ipv6['SPINE4ipv6'] = str(SPINE4ipv6) ipv6['SPINE4ipv6_net'] = redev6_spn4 return vlans, redes, ipv6
[docs]def dic_pods(rack): subnetsRackBEipv4 = {} subnetsRackBEipv4[rack] = [] PODSBEipv4 = {} redesPODSBEipv4 = {} PODSBEFEipv4 = {} redesPODSBEFEipv4 = {} PODSBEBOipv4 = {} redesPODSBEBOipv4 = {} PODSBECAipv4 = {} redesPODSBECAipv4 = {} PODSBEipv4[rack] = [] redesPODSBEipv4[rack] = [] PODSBEFEipv4[rack] = [] redesPODSBEFEipv4[rack] = [] PODSBEBOipv4[rack] = [] redesPODSBEBOipv4[rack] = [] PODSBECAipv4[rack] = [] redesPODSBECAipv4[rack] = [] PODSBEipv6 = {} redesPODSBEipv6 = {} PODSBEFEipv6 = {} redesPODSBEFEipv6 = {} PODSBEBOipv6 = {} redesPODSBEBOipv6 = {} PODSBECAipv6 = {} redesPODSBECAipv6 = {} subnetsRackBEipv6 = {} PODSBEipv6[rack] = [] redesPODSBEipv6[rack] = [] PODSBEFEipv6[rack] = [] redesPODSBEFEipv6[rack] = [] PODSBEBOipv6[rack] = [] redesPODSBEBOipv6[rack] = [] PODSBECAipv6[rack] = [] redesPODSBECAipv6[rack] = [] subnetsRackBEipv6[rack] = [] try: # CIDR sala 01 => 10.128.0.0/12 CIDRBEipv4 = IPNetwork(get_variable('cidr_be_v4')) CIDRBEipv6 = IPNetwork(get_variable('cidr_be_v6')) except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável CIDR<BEv4,BEv6>.') # ::::::: SUBNETING FOR RACK NETWORKS - /19 ::::::: # Redes p/ rack => 10.128.0.0/19, 10.128.32.0/19 , ... ,10.143.224.0/19 subnetsRackBEipv4[rack] = splitnetworkbyrack(CIDRBEipv4, 19, rack) subnetsRackBEipv6[rack] = splitnetworkbyrack(CIDRBEipv6, 55, rack) # PODS BE => /20 subnetteste = subnetsRackBEipv4[rack] subnetteste_ipv6 = subnetsRackBEipv6[rack] PODSBEipv4[rack] = splitnetworkbyrack(subnetteste, 20, 0) PODSBEipv6[rack] = splitnetworkbyrack(subnetteste_ipv6, 57, 0) # => 256 redes /28 # Vlan 2 a 129 redesPODSBEipv4[rack] = list(PODSBEipv4[rack].subnet(28)) redesPODSBEipv6[rack] = list(PODSBEipv6[rack].subnet(64)) # PODS BEFE => 10.128.16.0/21 PODSBEFEipv4[rack] = splitnetworkbyrack( splitnetworkbyrack(subnetteste, 20, 1), 21, 0) PODSBEFEipv6[rack] = splitnetworkbyrack(subnetteste_ipv6, 57, 1) # => 128 redes /28 # Vlan 130 a 193 redesPODSBEFEipv4[rack] = list(PODSBEFEipv4[rack].subnet(28)) redesPODSBEFEipv6[rack] = list(PODSBEFEipv6[rack].subnet(64)) # PODS BEBO => 10.128.24.0/22 PODSBEBOipv4[rack] = splitnetworkbyrack(splitnetworkbyrack( splitnetworkbyrack(subnetteste, 20, 1), 21, 1), 22, 0) PODSBEBOipv6[rack] = splitnetworkbyrack(subnetteste_ipv6, 57, 2) # => 64 redes /28 # Vlan 194 a 257 redesPODSBEBOipv4[rack] = list(PODSBEBOipv4[rack].subnet(28)) redesPODSBEBOipv6[rack] = list(PODSBEBOipv6[rack].subnet(64)) # PODS BECA => 10.128.28.0/23 PODSBECAipv4[rack] = splitnetworkbyrack(splitnetworkbyrack(splitnetworkbyrack( splitnetworkbyrack(subnetteste, 20, 1), 21, 1), 22, 1), 23, 0) PODSBECAipv6[rack] = splitnetworkbyrack( splitnetworkbyrack(subnetteste_ipv6, 57, 3), 58, 0) # => 32 redes /28 # Vlan 258 a 289 redesPODSBECAipv4[rack] = list(PODSBECAipv4[rack].subnet(28)) redesPODSBECAipv6[rack] = list(PODSBECAipv6[rack].subnet(64)) redes = dict() ipv6 = dict() redes['BE_VLAN_MIN'] = int(get_variable('be_vlan_min')) redes['BE_VLAN_MAX'] = int(get_variable('be_vlan_max')) redes['BE_PREFIX'] = str(redesPODSBEipv4[rack][0].prefixlen) redes['BE_REDE'] = str(PODSBEipv4[rack]) ipv6['BE_PREFIX'] = str(redesPODSBEipv6[rack][0].prefixlen) ipv6['BE_REDE'] = str(PODSBEipv6[rack]) redes['BEFE_VLAN_MIN'] = int(get_variable('befe_vlan_min')) redes['BEFE_VLAN_MAX'] = int(get_variable('befe_vlan_max')) redes['BEFE_PREFIX'] = str(redesPODSBEFEipv4[rack][0].prefixlen) redes['BEFE_REDE'] = str(PODSBEFEipv4[rack]) ipv6['BEFE_PREFIX'] = str(redesPODSBEFEipv6[rack][0].prefixlen) ipv6['BEFE_REDE'] = str(PODSBEFEipv6[rack]) redes['BEBORDA_VLAN_MIN'] = int(get_variable('beborda_vlan_min')) redes['BEBORDA_VLAN_MAX'] = int(get_variable('beborda_vlan_max')) redes['BEBORDA_PREFIX'] = str(redesPODSBEBOipv4[rack][0].prefixlen) redes['BEBORDA_REDE'] = str(PODSBEBOipv4[rack]) ipv6['BEBORDA_PREFIX'] = str(redesPODSBEBOipv6[rack][0].prefixlen) ipv6['BEBORDA_REDE'] = str(PODSBEBOipv6[rack]) redes['BECACHOS_VLAN_MIN'] = int(get_variable('becachos_vlan_min')) redes['BECACHOS_VLAN_MAX'] = int(get_variable('becachos_vlan_max')) redes['BECACHOS_PREFIX'] = str(redesPODSBECAipv4[rack][0].prefixlen) redes['BECACHOS_REDE'] = str(PODSBECAipv4[rack]) ipv6['BECACHOS_PREFIX'] = str(redesPODSBECAipv6[rack][0].prefixlen) ipv6['BECACHOS_REDE'] = str(PODSBECAipv6[rack]) return redes, ipv6
[docs]def dic_hosts_cloud(rack): subnetsRackBEipv4 = {} subnetsRackBEipv4[rack] = [] redesHostsipv4 = {} redesHostsipv4[rack] = [] redeHostsBEipv4 = {} redeHostsBEipv4[rack] = [] redeHostsFEipv4 = {} redeHostsFEipv4[rack] = [] redeHostsBOipv4 = {} redeHostsBOipv4[rack] = [] redeHostsCAipv4 = {} redeHostsCAipv4[rack] = [] redeHostsFILERipv4 = {} redeHostsFILERipv4[rack] = [] subnetsRackBEipv6 = {} subnetsRackBEipv6[rack] = [] redesHostsipv6 = {} redesHostsipv6[rack] = [] redeHostsBEipv6 = {} redeHostsBEipv6[rack] = [] redeHostsFEipv6 = {} redeHostsFEipv6[rack] = [] redeHostsBOipv6 = {} redeHostsBOipv6[rack] = [] redeHostsCAipv6 = {} redeHostsCAipv6[rack] = [] redeHostsFILERipv6 = {} redeHostsFILERipv6[rack] = [] hosts = dict() BE = dict() FE = dict() BO = dict() CA = dict() FILER = dict() ipv6 = dict() BE_ipv6 = dict() FE_ipv6 = dict() BO_ipv6 = dict() CA_ipv6 = dict() FILER_ipv6 = dict() try: # CIDR sala 01 => 10.128.0.0/12 CIDRBEipv4 = IPNetwork(get_variable('cidr_be_v4')) CIDRBEipv6 = IPNetwork(get_variable('cidr_be_v6')) hosts['VLAN_MNGT_BE'] = int(get_variable('vlan_mngt_be')) hosts['VLAN_MNGT_FE'] = int(get_variable('vlan_mngt_fe')) hosts['VLAN_MNGT_BO'] = int(get_variable('vlan_mngt_bo')) hosts['VLAN_MNGT_CA'] = int(get_variable('vlan_mngt_ca')) hosts['VLAN_MNGT_FILER'] = int(get_variable('vlan_mngt_filer')) except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável VLAN_MNGT<BE,FE,BO,CA,FILER> ou CIDR<BEv4,BEv6>.') subnetsRackBEipv4[rack] = splitnetworkbyrack( CIDRBEipv4, 19, rack) # 10.128.32.0/19 subnetteste = subnetsRackBEipv4[rack] # 10.128.32.0/19 subnetsRackBEipv6[rack] = splitnetworkbyrack(splitnetworkbyrack( splitnetworkbyrack(CIDRBEipv6, 55, rack), 57, 3), 58, 1) subnetteste_ipv6 = splitnetworkbyrack(subnetsRackBEipv6[rack], 61, 7) # VLANS CLoud # ambiente BE - MNGT_NETWORK - RACK_AAXX # 10.128.30.0/23 # vlans MNGT_BE/FE/BO/CA/FILER # PODS BE => /20 # Hosts => 10.128.30.0/23 redesHostsipv4[rack] = splitnetworkbyrack(splitnetworkbyrack( splitnetworkbyrack(splitnetworkbyrack(subnetteste, 20, 1), 21, 1), 22, 1), 23, 1) redesHostsipv6[rack] = subnetteste_ipv6 # Hosts BE => 10.128.30.0/24 => 256 endereços redeHostsBEipv4[rack] = splitnetworkbyrack(redesHostsipv4[rack], 24, 0) redeHostsBEipv6[rack] = splitnetworkbyrack(subnetteste_ipv6, 64, 3) # Hosts FE => 10.128.31.0/25 => 128 endereços redeHostsFEipv4[rack] = splitnetworkbyrack( splitnetworkbyrack(redesHostsipv4[rack], 24, 1), 25, 0) redeHostsFEipv6[rack] = splitnetworkbyrack(subnetteste_ipv6, 64, 4) # Hosts BO => 10.128.31.128/26 => 64 endereços redeHostsBOipv4[rack] = splitnetworkbyrack(splitnetworkbyrack( splitnetworkbyrack(redesHostsipv4[rack], 24, 1), 25, 1), 26, 0) redeHostsBOipv6[rack] = splitnetworkbyrack(subnetteste_ipv6, 64, 5) # Hosts CA => 10.128.31.192/27 => 32 endereços redeHostsCAipv4[rack] = splitnetworkbyrack(splitnetworkbyrack(splitnetworkbyrack( splitnetworkbyrack(redesHostsipv4[rack], 24, 1), 25, 1), 26, 1), 27, 0) redeHostsCAipv6[rack] = splitnetworkbyrack(subnetteste_ipv6, 64, 6) # Hosts FILER => 10.128.15.224/27 => 32 endereços redeHostsFILERipv4[rack] = splitnetworkbyrack(splitnetworkbyrack(splitnetworkbyrack( splitnetworkbyrack(redesHostsipv4[rack], 24, 1), 25, 1), 26, 1), 27, 1) redeHostsFILERipv6[rack] = splitnetworkbyrack(subnetteste_ipv6, 64, 7) hosts['PREFIX'] = str(redesHostsipv4[rack].prefixlen) hosts['REDE'] = str(redesHostsipv4[rack]) BE['REDE_IP'] = str(redeHostsBEipv4[rack].ip) BE['REDE_MASK'] = redeHostsBEipv4[rack].prefixlen BE['NETMASK'] = str(redeHostsBEipv4[rack].netmask) BE['BROADCAST'] = str(redeHostsBEipv4[rack].broadcast) hosts['BE'] = BE FE['REDE_IP'] = str(redeHostsFEipv4[rack].ip) FE['REDE_MASK'] = redeHostsFEipv4[rack].prefixlen FE['NETMASK'] = str(redeHostsFEipv4[rack].netmask) FE['BROADCAST'] = str(redeHostsFEipv4[rack].broadcast) hosts['FE'] = FE BO['REDE_IP'] = str(redeHostsBOipv4[rack].ip) BO['REDE_MASK'] = redeHostsBOipv4[rack].prefixlen BO['NETMASK'] = str(redeHostsBOipv4[rack].netmask) BO['BROADCAST'] = str(redeHostsBOipv4[rack].broadcast) hosts['BO'] = BO CA['REDE_IP'] = str(redeHostsCAipv4[rack].ip) CA['REDE_MASK'] = redeHostsCAipv4[rack].prefixlen CA['NETMASK'] = str(redeHostsCAipv4[rack].netmask) CA['BROADCAST'] = str(redeHostsCAipv4[rack].broadcast) hosts['CA'] = CA FILER['REDE_IP'] = str(redeHostsFILERipv4[rack].ip) FILER['REDE_MASK'] = redeHostsFILERipv4[rack].prefixlen FILER['NETMASK'] = str(redeHostsFILERipv4[rack].netmask) FILER['BROADCAST'] = str(redeHostsFILERipv4[rack].broadcast) hosts['FILER'] = FILER ipv6['PREFIX'] = str(redesHostsipv6[rack].prefixlen) ipv6['REDE'] = str(redesHostsipv6[rack]) BE_ipv6['REDE_IP'] = str(redeHostsBEipv6[rack].ip) BE_ipv6['REDE_MASK'] = redeHostsBEipv6[rack].prefixlen BE_ipv6['NETMASK'] = str(redeHostsBEipv6[rack].netmask) BE_ipv6['BROADCAST'] = str(redeHostsBEipv6[rack].broadcast) ipv6['BE'] = BE_ipv6 FE_ipv6['REDE_IP'] = str(redeHostsFEipv6[rack].ip) FE_ipv6['REDE_MASK'] = redeHostsFEipv6[rack].prefixlen FE_ipv6['NETMASK'] = str(redeHostsFEipv6[rack].netmask) FE_ipv6['BROADCAST'] = str(redeHostsFEipv6[rack].broadcast) ipv6['FE'] = FE_ipv6 BO_ipv6['REDE_IP'] = str(redeHostsBOipv6[rack].ip) BO_ipv6['REDE_MASK'] = redeHostsBOipv6[rack].prefixlen BO_ipv6['NETMASK'] = str(redeHostsBOipv6[rack].netmask) BO_ipv6['BROADCAST'] = str(redeHostsBOipv6[rack].broadcast) ipv6['BO'] = BO_ipv6 CA_ipv6['REDE_IP'] = str(redeHostsCAipv6[rack].ip) CA_ipv6['REDE_MASK'] = redeHostsCAipv6[rack].prefixlen CA_ipv6['NETMASK'] = str(redeHostsCAipv6[rack].netmask) CA_ipv6['BROADCAST'] = str(redeHostsCAipv6[rack].broadcast) ipv6['CA'] = CA_ipv6 FILER_ipv6['REDE_IP'] = str(redeHostsFILERipv6[rack].ip) FILER_ipv6['REDE_MASK'] = redeHostsFILERipv6[rack].prefixlen FILER_ipv6['NETMASK'] = str(redeHostsFILERipv6[rack].netmask) FILER_ipv6['BROADCAST'] = str(redeHostsFILERipv6[rack].broadcast) ipv6['FILER'] = FILER_ipv6 return hosts, ipv6
[docs]def dic_fe_prod(rack): CIDRFEipv4 = {} CIDRFEipv4[rack] = [] CIDRFEipv6 = {} CIDRFEipv6[rack] = [] subnetsRackFEipv4 = {} subnetsRackFEipv4[rack] = [] subnetsRackFEipv6 = {} subnetsRackFEipv6[rack] = [] podsFEipv4 = {} podsFEipv4[rack] = [] podsFEipv6 = {} podsFEipv6[rack] = [] redes = dict() ranges = dict() ipv6 = dict() try: # CIDR sala 01 => 172.20.0.0/14 # Sumário do rack => 172.20.0.0/21 CIDRFEipv4[0] = IPNetwork(get_variable('cidr_fe_v4')) # CIDRFE[1] = IPNetwork('172.20.1.0/14') CIDRFEipv6[0] = IPNetwork(get_variable('cidr_fe_v6')) except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável VLAN_MNGT<BE,FE,BO,CA,FILER> ou CIDR<FEv4,FEv6>.') # Sumário do rack => 172.20.0.0/21 subnetsRackFEipv4[rack] = splitnetworkbyrack(CIDRFEipv4[0], 21, rack) subnetsRackFEipv6[rack] = splitnetworkbyrack(CIDRFEipv6[0], 57, rack) podsFEipv4[rack] = splitnetworkbyrack(subnetsRackFEipv4[rack], 28, 0) podsFEipv6[rack] = splitnetworkbyrack(subnetsRackFEipv6[rack], 64, 3) ranges['MAX'] = int(get_variable('fe_vlan_min')) ranges['MIN'] = int(get_variable('fe_vlan_max')) redes['PREFIX'] = podsFEipv4[rack].prefixlen redes['REDE'] = str(subnetsRackFEipv4[rack]) ipv6['PREFIX'] = podsFEipv6[rack].prefixlen ipv6['REDE'] = str(subnetsRackFEipv6[rack]) return redes, ranges, ipv6
[docs]def autoprovision_coreoob(rack, FILEINCR1, FILEINCR2, FILEINOOB, name_core1, name_core2, name_oob, name_lf1, name_lf2, ip_mgmtoob, int_oob_core1, int_oob_core2, int_core1_oob, int_core2_oob ): # gerando dicionarios para substituir paravras chaves do roteiro variablestochangecore1 = {} variablestochangecore2 = {} variablestochangeoob = {} # nome dos cores, do console de gerencia dos lf do rack, e do rack HOSTNAME_CORE1 = name_core1 HOSTNAME_CORE2 = name_core2 HOSTNAME_OOB = name_oob HOSTNAME_RACK = HOSTNAME_OOB.split('-') HOSTNAME_LF1 = name_lf1 HOSTNAME_LF2 = name_lf2 # interfaces de conexão entre os cores e o console INT_OOBC1_UPLINK = int_oob_core1 INT_OOBC2_UPLINK = int_oob_core2 INTERFACE_CORE1 = int_core1_oob INTERFACE_CORE2 = int_core2_oob # ip de gerencia do oob IP_GERENCIA_OOB = ip_mgmtoob try: # roteiro para configuracao de core fileincore1 = get_variable('path_to_guide') + FILEINCR1 fileincore2 = get_variable('path_to_guide') + FILEINCR2 fileinoob = get_variable('path_to_guide') + FILEINOOB # valor base para as vlans e portchannels BASE_SO = int(get_variable('base_so')) # arquivos de saida, OOB-CM-01.cfg e OOB-CM-02.cfg fileoutcore1 = get_variable( 'path_to_add_config') + HOSTNAME_CORE1 + '-ADD-' + HOSTNAME_RACK[2] + '.cfg' fileoutcore2 = get_variable( 'path_to_add_config') + HOSTNAME_CORE2 + '-ADD-' + HOSTNAME_RACK[2] + '.cfg' fileoutoob = get_variable('path_to_config') + HOSTNAME_OOB + '.cfg' except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável PATH_TO_<GUIDE, CONFIG> ou BASE_SO.') variablestochangeoob['OWN_IP_MGMT'] = IP_GERENCIA_OOB variablestochangeoob['INT_OOBC1_UPLINK'] = INT_OOBC1_UPLINK variablestochangeoob['INT_OOBC2_UPLINK'] = INT_OOBC2_UPLINK variablestochangeoob['INTERFACE_CORE1'] = INTERFACE_CORE1 variablestochangeoob['INTERFACE_CORE2'] = INTERFACE_CORE2 variablestochangeoob['HOSTNAME_CORE1'] = HOSTNAME_CORE1 variablestochangeoob['HOSTNAME_CORE2'] = HOSTNAME_CORE2 variablestochangeoob['HOSTNAME_OOB'] = HOSTNAME_OOB variablestochangeoob['HOSTNAME_LF1'] = HOSTNAME_LF1 variablestochangeoob['HOSTNAME_LF2'] = HOSTNAME_LF2 variablestochangeoob['VLAN_SO'] = str(BASE_SO + rack) variablestochangeoob['HOSTNAME_RACK'] = HOSTNAME_RACK[2] variablestochangecore1['INT_OOB_UPLINK'] = INT_OOBC1_UPLINK variablestochangecore1['INTERFACE_CORE'] = INTERFACE_CORE1 variablestochangecore1['HOSTNAME_RACK'] = HOSTNAME_RACK[2] variablestochangecore1['SO_HOSTNAME_OOB'] = 'SO_' + HOSTNAME_RACK[2] if (1 + rack) % 2 == 0: variablestochangecore1['HSRP_PRIORITY'] = '100' else: variablestochangecore1['HSRP_PRIORITY'] = '101' variablestochangecore2['INT_OOB_UPLINK'] = INT_OOBC2_UPLINK variablestochangecore2['INTERFACE_CORE'] = INTERFACE_CORE2 variablestochangecore2['HOSTNAME_RACK'] = HOSTNAME_RACK[2] variablestochangecore2['SO_HOSTNAME_OOB'] = 'SO_' + HOSTNAME_RACK[2] if(2 + rack) % 2 == 0: variablestochangecore2['HSRP_PRIORITY'] = '100' else: variablestochangecore2['HSRP_PRIORITY'] = '101' variablestochangecore1 = dic_vlan_core( variablestochangecore1, rack, HOSTNAME_CORE1, HOSTNAME_RACK[2]) variablestochangecore2 = dic_vlan_core( variablestochangecore2, rack, HOSTNAME_CORE2, HOSTNAME_RACK[2]) variablestochangeoob = dic_vlan_core( variablestochangeoob, rack, HOSTNAME_CORE1, HOSTNAME_RACK[2]) # gerando arquivos de saida replace(fileincore1, fileoutcore1, variablestochangecore1) replace(fileincore2, fileoutcore2, variablestochangecore2) replace(fileinoob, fileoutoob, variablestochangeoob) return True
[docs]def autoprovision_splf(rack,FILEINLF1, FILEINLF2,FILEINSP1, FILEINSP2, FILEINSP3, FILEINSP4,name_lf1, name_lf2, name_oob, name_sp1, name_sp2, name_sp3, name_sp4, ip_mgmtlf1, ip_mgmtlf2, int_oob_mgmtlf1, int_oob_mgmtlf2, int_sp1, int_sp2, int_sp3, int_sp4, int_lf1_sp1,int_lf1_sp2,int_lf2_sp3,int_lf2_sp4): # STRUCTURE: IPSPINE[rack][spine]: ip a configurar no spine 'spine' relativo à leaf do rack 'rack' # STRUCTURE: IPLEAF[rack][spine]: ip a configurar no leaf do rack 'rack' relativo ao spine 'spine' CIDREBGP = {} CIDRBE = {} IPSPINEipv4 = {} IPSPINEipv6 = {} IPLEAFipv4 = {} IPLEAFipv6 = {} IPSIBGPipv4 = {} IPSIBGPipv6 = {} ASLEAF = {} # VLANBELEAF = {} VLANFELEAF = {} VLANBORDALEAF = {} VLANBORDACACHOSLEAF = {} # PODSBEipv4 = {} redesPODSBEipv4 = {} # subnetsRackBEipv4 = {} # PODSBEipv6 = {} redesPODSBEipv6 = {} PODSBEFEipv6 = {} redesPODSBEFEipv6 = {} PODSBEBOipv6 = {} redesPODSBEBOipv6 = {} PODSBECAipv6 = {} redesPODSBECAipv6 = {} redesHostsipv6 = {} redeHostsBEipv6 = {} redeHostsFEipv6 = {} redeHostsBOipv6 = {} redeHostsCAipv6 = {} redeHostsFILERipv6 = {} subnetsRackBEipv6 = {} subnetsRackFEipv4 = {} redesPODSFEipv4 = {} subnetsRackFEipv6 = {} redesPODSFEipv6 = {} # IPSPINEipv4[rack] = [] IPSPINEipv6[rack] = [] IPLEAFipv4[rack] = [] IPLEAFipv6[rack] = [] IPSIBGPipv4[rack] = [] IPSIBGPipv6[rack] = [] VLANBELEAF[rack] = [] VLANFELEAF[rack] = [] VLANBORDALEAF[rack] = [] VLANBORDACACHOSLEAF[rack] = [] ASLEAF[rack] = [] # PODSBEipv4[rack] = [] redesPODSBEipv4[rack] = [] # subnetsRackBEipv4[rack] = [] # PODSBEipv6[rack] = [] redesPODSBEipv6[rack] = [] PODSBEFEipv6[rack] = [] redesPODSBEFEipv6[rack] = [] PODSBEBOipv6[rack] = [] redesPODSBEBOipv6[rack] = [] PODSBECAipv6[rack] = [] redesPODSBECAipv6[rack] = [] redesHostsipv6[rack] = [] redeHostsBEipv6[rack] = [] redeHostsFEipv6[rack] = [] redeHostsBOipv6[rack] = [] redeHostsCAipv6[rack] = [] redeHostsFILERipv6[rack] = [] subnetsRackBEipv6[rack] = [] subnetsRackFEipv4[rack] = [] redesPODSFEipv4[rack] = [] subnetsRackFEipv6[rack] = [] redesPODSFEipv6[rack] = [] CIDRFEipv4 = {} CIDRFEipv6 = {} variablestochangespine1 = {} variablestochangespine2 = {} variablestochangespine3 = {} variablestochangespine4 = {} variablestochangeleaf1 = {} variablestochangeleaf2 = {} try: fileinleaf1=get_variable("path_to_guide")+FILEINLF1 fileinleaf2=get_variable("path_to_guide")+FILEINLF2 fileinspine1=get_variable("path_to_guide")+FILEINSP1 fileinspine2=get_variable("path_to_guide")+FILEINSP2 fileinspine3=get_variable("path_to_guide")+FILEINSP3 fileinspine4=get_variable("path_to_guide")+FILEINSP4 ### BASE_RACK = int(get_variable("base_rack")) BASE_AS = int(get_variable("base_as")) VLANBE = int(get_variable("vlanbe")) VLANFE = int(get_variable("vlanfe")) VLANBORDA = int(get_variable("vlanborda")) VLANBORDACACHOS = int(get_variable("vlanbordacachos")) ### except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável PATH_TO_GUIDE ou BASE_<RACK,AS> ou VLAN<BE,FE,BORDA,CACHOS>.') HOSTNAME_LF1 = name_lf1 HOSTNAME_LF2 = name_lf2 HOSTNAME_OOB = name_oob HOSTNAME_SP1 = name_sp1 HOSTNAME_SP2 = name_sp2 HOSTNAME_SP3 = name_sp3 HOSTNAME_SP4 = name_sp4 HOSTNAME_RACK = HOSTNAME_OOB.split('-') IP_GERENCIA_LF1 = ip_mgmtlf1 IP_GERENCIA_LF2 = ip_mgmtlf2 INTERFACE_SP1 = int_sp1 INTERFACE_SP2 = int_sp2 INTERFACE_SP3 = int_sp3 INTERFACE_SP4 = int_sp4 INTERFACE_OOB_LF1 = int_oob_mgmtlf1 INTERFACE_OOB_LF2 = int_oob_mgmtlf2 try: # CIDR sala 01 => 10.128.0.0/12 CIDRBE[0] = IPNetwork(get_variable('cidr_be_v4')) CIDREBGP[0] = IPNetwork(get_variable('cidr_be_v6')) SPINE1ipv4 = IPNetwork(get_variable('net_spn01')) SPINE2ipv4 = IPNetwork(get_variable('net_spn02')) SPINE3ipv4 = IPNetwork(get_variable('net_spn03')) SPINE4ipv4 = IPNetwork(get_variable('net_spn04')) SPINE1ipv6 = IPNetwork(get_variable('net_spn01_v6')) SPINE2ipv6 = IPNetwork(get_variable('net_spn02_v6')) SPINE3ipv6 = IPNetwork(get_variable('net_spn03_v6')) SPINE4ipv6 = IPNetwork(get_variable('net_spn04_v6')) except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável CIDR<BE,EBGP> ou <BE,FE,BORDA,CACHOS> ou SPINE<1,2,3,4>ipv6.') subSPINE1ipv4 = list(SPINE1ipv4.subnet(31)) subSPINE2ipv4 = list(SPINE2ipv4.subnet(31)) subSPINE3ipv4 = list(SPINE3ipv4.subnet(31)) subSPINE4ipv4 = list(SPINE4ipv4.subnet(31)) subSPINE1ipv6 = list(SPINE1ipv6.subnet(127)) subSPINE2ipv6 = list(SPINE2ipv6.subnet(127)) subSPINE3ipv6 = list(SPINE3ipv6.subnet(127)) subSPINE4ipv6 = list(SPINE4ipv6.subnet(127)) try: IBGPToRLxLipv4 = IPNetwork(get_variable('ibgptorlxlip_v4')) IBGPToRLxLipv6 = IPNetwork(get_variable('ibgptorlxlip_v6')) except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável IBGPToRLxL<ipv4,ipv6>.') subIBGPToRLxLipv4 = list(IBGPToRLxLipv4.subnet(31)) subIBGPToRLxLipv6 = list(IBGPToRLxLipv6.subnet(127)) IPSPINEipv4[rack].append(subSPINE1ipv4[rack][0]) IPSPINEipv4[rack].append(subSPINE2ipv4[rack][0]) IPSPINEipv4[rack].append(subSPINE3ipv4[rack][0]) IPSPINEipv4[rack].append(subSPINE4ipv4[rack][0]) # IPLEAFipv4[rack].append(subSPINE1ipv4[rack][1]) IPLEAFipv4[rack].append(subSPINE2ipv4[rack][1]) IPLEAFipv4[rack].append(subSPINE3ipv4[rack][1]) IPLEAFipv4[rack].append(subSPINE4ipv4[rack][1]) # IPSIBGPipv4[rack].append(subIBGPToRLxLipv4[rack][0]) IPSIBGPipv4[rack].append(subIBGPToRLxLipv4[rack][1]) # IPSPINEipv6[rack].append(subSPINE1ipv6[rack][0]) IPSPINEipv6[rack].append(subSPINE2ipv6[rack][0]) IPSPINEipv6[rack].append(subSPINE3ipv6[rack][0]) IPSPINEipv6[rack].append(subSPINE4ipv6[rack][0]) # IPLEAFipv6[rack].append(subSPINE1ipv6[rack][1]) IPLEAFipv6[rack].append(subSPINE2ipv6[rack][1]) IPLEAFipv6[rack].append(subSPINE3ipv6[rack][1]) IPLEAFipv6[rack].append(subSPINE4ipv6[rack][1]) # IPSIBGPipv6[rack].append(subIBGPToRLxLipv6[rack][0]) IPSIBGPipv6[rack].append(subIBGPToRLxLipv6[rack][1]) # VLANBELEAF[rack].append(VLANBE + rack) VLANBELEAF[rack].append(VLANBE + rack + BASE_RACK) VLANBELEAF[rack].append(VLANBE + rack + 2 * BASE_RACK) VLANBELEAF[rack].append(VLANBE + rack + 3 * BASE_RACK) # VLANFELEAF[rack].append(VLANFE + rack) VLANFELEAF[rack].append(VLANFE + rack + BASE_RACK) VLANFELEAF[rack].append(VLANFE + rack + 2 * BASE_RACK) VLANFELEAF[rack].append(VLANFE + rack + 3 * BASE_RACK) # VLANBORDALEAF[rack].append(VLANBORDA + rack) VLANBORDALEAF[rack].append(VLANBORDA + rack + BASE_RACK) VLANBORDALEAF[rack].append(VLANBORDA + rack + 2 * BASE_RACK) VLANBORDALEAF[rack].append(VLANBORDA + rack + 3 * BASE_RACK) # VLANBORDACACHOSLEAF[rack].append(VLANBORDACACHOS + rack) VLANBORDACACHOSLEAF[rack].append(VLANBORDACACHOS + rack + BASE_RACK) VLANBORDACACHOSLEAF[rack].append(VLANBORDACACHOS + rack + 2 * BASE_RACK) VLANBORDACACHOSLEAF[rack].append(VLANBORDACACHOS + rack + 3 * BASE_RACK) # ASLEAF[rack].append(BASE_AS + rack) ########################################################################## try: # CIDR sala 01 => 10.128.0.0/12 CIDRBEipv4 = IPNetwork(get_variable('cidr_be_v4')) CIDRBEipv6 = IPNetwork(get_variable('cidr_be_v6')) # CIDR sala 01 => 172.20.0.0/14 # Sumário do rack => 172.20.0.0/21 CIDRFEipv4[0] = IPNetwork(get_variable('cidr_fe_v4')) # CIDRFE[1] = IPNetwork('172.20.1.0/14') CIDRFEipv6[0] = IPNetwork(get_variable('cidr_fe_v6')) except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável CIDR<FE,BE><ipv4,ipv6>.') # ::::::: SUBNETING FOR RACK NETWORKS - /19 ::::::: # Redes p/ rack => 10.128.0.0/19, 10.128.32.0/19 , ... ,10.143.224.0/19 subnetsRackBEipv4[rack] = splitnetworkbyrack(CIDRBEipv4, 19, rack) subnetsRackBEipv6[rack] = splitnetworkbyrack(CIDRBEipv6, 55, rack) # PODS BE => /20 subnetteste = subnetsRackBEipv4[rack] # ::::::::::::::::::::::::::::::::::: FRONTEND # ::::::: SUBNETING FOR RACK NETWORKS - /19 ::::::: # Sumário do rack => 172.20.0.0/21 subnetsRackFEipv4[rack] = splitnetworkbyrack(CIDRFEipv4[0], 21, rack) subnetsRackFEipv6[rack] = splitnetworkbyrack(CIDRFEipv6[0], 57, rack) # ::::::: SUBNETING EACH RACK NETWORK::::::: # PODS FE => 128 redes /28 ; 128 redes /64 redesPODSBEipv4[rack] = list(subnetsRackFEipv4[rack].subnet(28)) redesPODSBEipv6[rack] = list(subnetsRackFEipv6[rack].subnet(64)) try: variablestochangespine1['ASSPINE'] = get_variable('base_as_spn01') variablestochangespine2['ASSPINE'] = get_variable('base_as_spn02') variablestochangespine3['ASSPINE'] = get_variable('base_as_spn03') variablestochangespine4['ASSPINE'] = get_variable('base_as_spn04') variablestochangeleaf1['ASSPINE1'] = get_variable('base_as_spn01') variablestochangeleaf1['ASSPINE2'] = get_variable('base_as_spn02') variablestochangeleaf1[ 'KICKSTART_SO_LF'] = get_variable('kickstart_so_lf') variablestochangeleaf1['IMAGE_SO_LF'] = get_variable('image_so_lf') variablestochangeleaf2[ 'KICKSTART_SO_LF'] = get_variable('kickstart_so_lf') variablestochangeleaf2['IMAGE_SO_LF'] = get_variable('image_so_lf') variablestochangeleaf2['ASSPINE1'] = get_variable('base_as_spn03') variablestochangeleaf2['ASSPINE2'] = get_variable('base_as_spn04') except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável ASSPINE<1,2,3,4> ou KICKSTART_SO_LF ou IMAGE_SO_LF.') try: ID_VLT_LF1 = get_variable('id_vlt_lf1') ID_VLT_LF2 = get_variable('id_vlt_lf2') PRIORITY_VLT_LF1 = get_variable('priority_vlt_lf1') PRIORITY_VLT_LF2 = get_variable('priority_vlt_lf2') except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando as variáveis ID_VLT_LF<1,2> ou PRIORITY_VLT_LF<1,2>') variablestochangespine1['IPSPINEIPV4'] = str(IPSPINEipv4[rack][0]) variablestochangespine1['IPSPINEIPV6'] = str(IPSPINEipv6[rack][0]) variablestochangespine1['VLANBELEAF'] = str(VLANBELEAF[rack][0]) variablestochangespine1['VLANFELEAF'] = str(VLANFELEAF[rack][0]) variablestochangespine1['VLANBORDALEAF'] = str(VLANBORDALEAF[rack][0]) variablestochangespine1['VLANBORDACACHOSLEAF'] = str( VLANBORDACACHOSLEAF[rack][0]) variablestochangespine1['ASLEAF'] = str(ASLEAF[rack][0]) variablestochangespine1['IPNEIGHLEAFIPV4'] = str(IPLEAFipv4[rack][0]) variablestochangespine1['IPNEIGHLEAFIPV6'] = str(IPLEAFipv6[rack][0]) variablestochangespine1['INTERFACE'] = INTERFACE_SP1 variablestochangespine1['LEAFNAME'] = HOSTNAME_LF1 variablestochangespine1['INT_LF_UPLINK'] = int_lf1_sp1 # # variablestochangespine2['IPSPINEIPV4'] = str(IPSPINEipv4[rack][1]) variablestochangespine2['IPSPINEIPV6'] = str(IPSPINEipv6[rack][1]) variablestochangespine2['VLANBELEAF'] = str(VLANBELEAF[rack][1]) variablestochangespine2['VLANFELEAF'] = str(VLANFELEAF[rack][1]) variablestochangespine2['VLANBORDALEAF'] = str(VLANBORDALEAF[rack][1]) variablestochangespine2['VLANBORDACACHOSLEAF'] = str( VLANBORDACACHOSLEAF[rack][1]) variablestochangespine2['ASLEAF'] = str(ASLEAF[rack][0]) variablestochangespine2['IPNEIGHLEAFIPV4'] = str(IPLEAFipv4[rack][1]) variablestochangespine2['IPNEIGHLEAFIPV6'] = str(IPLEAFipv6[rack][1]) variablestochangespine2['INTERFACE'] = INTERFACE_SP2 variablestochangespine2['LEAFNAME'] = HOSTNAME_LF1 variablestochangespine2['INT_LF_UPLINK'] = int_lf1_sp2 # # variablestochangespine3['IPSPINEIPV4'] = str(IPSPINEipv4[rack][2]) variablestochangespine3['IPSPINEIPV6'] = str(IPSPINEipv6[rack][2]) variablestochangespine3['VLANBELEAF'] = str(VLANBELEAF[rack][2]) variablestochangespine3['VLANFELEAF'] = str(VLANFELEAF[rack][2]) variablestochangespine3['VLANBORDALEAF'] = str(VLANBORDALEAF[rack][2]) variablestochangespine3['VLANBORDACACHOSLEAF'] = str( VLANBORDACACHOSLEAF[rack][2]) variablestochangespine3['ASLEAF'] = str(ASLEAF[rack][0]) variablestochangespine3['IPNEIGHLEAFIPV4'] = str(IPLEAFipv4[rack][2]) variablestochangespine3['IPNEIGHLEAFIPV6'] = str(IPLEAFipv6[rack][2]) variablestochangespine3['INTERFACE'] = INTERFACE_SP3 variablestochangespine3['LEAFNAME'] = HOSTNAME_LF2 variablestochangespine3['INT_LF_UPLINK'] = int_lf2_sp3 # # variablestochangespine4['IPSPINEIPV4'] = str(IPSPINEipv4[rack][3]) variablestochangespine4['IPSPINEIPV6'] = str(IPSPINEipv6[rack][3]) variablestochangespine4['VLANBELEAF'] = str(VLANBELEAF[rack][3]) variablestochangespine4['VLANFELEAF'] = str(VLANFELEAF[rack][3]) variablestochangespine4['VLANBORDALEAF'] = str(VLANBORDALEAF[rack][3]) variablestochangespine4['VLANBORDACACHOSLEAF'] = str( VLANBORDACACHOSLEAF[rack][3]) variablestochangespine4['ASLEAF'] = str(ASLEAF[rack][0]) variablestochangespine4['IPNEIGHLEAFIPV4'] = str(IPLEAFipv4[rack][3]) variablestochangespine4['IPNEIGHLEAFIPV6'] = str(IPLEAFipv6[rack][3]) variablestochangespine4['INTERFACE'] = INTERFACE_SP4 variablestochangespine4['LEAFNAME'] = HOSTNAME_LF2 variablestochangespine4['INT_LF_UPLINK'] = int_lf2_sp4 # # variablestochangeleaf1['IPLEAFSP1IPV4'] = str(IPLEAFipv4[rack][0]) variablestochangeleaf1['IPLEAFSP2IPV4'] = str(IPLEAFipv4[rack][1]) variablestochangeleaf1['IPIBGPIPV4'] = str(IPSIBGPipv4[rack][0]) variablestochangeleaf1['IPLEAFSP1IPV6'] = str(IPLEAFipv6[rack][0]) variablestochangeleaf1['IPLEAFSP2IPV6'] = str(IPLEAFipv6[rack][1]) variablestochangeleaf1['IPIBGPIPV6'] = str(IPSIBGPipv6[rack][0]) variablestochangeleaf1['VLANBELEAFSP1'] = str(VLANBELEAF[rack][0]) variablestochangeleaf1['VLANBELEAFSP2'] = str(VLANBELEAF[rack][1]) variablestochangeleaf1['VLANFELEAFSP1'] = str(VLANFELEAF[rack][0]) variablestochangeleaf1['VLANFELEAFSP2'] = str(VLANFELEAF[rack][1]) variablestochangeleaf1['VLANBORDALEAFSP1'] = str(VLANBORDALEAF[rack][0]) variablestochangeleaf1['VLANBORDALEAFSP2'] = str(VLANBORDALEAF[rack][1]) variablestochangeleaf1['VLANBORDACACHOSLEAFSP1'] = str( VLANBORDACACHOSLEAF[rack][0]) variablestochangeleaf1['VLANBORDACACHOSLEAFSP2'] = str( VLANBORDACACHOSLEAF[rack][1]) variablestochangeleaf1['ASLEAF'] = str(ASLEAF[rack][0]) variablestochangeleaf1['IPNEIGHSPINE1IPV4'] = str(IPSPINEipv4[rack][0]) variablestochangeleaf1['IPNEIGHSPINE2IPV4'] = str(IPSPINEipv4[rack][1]) variablestochangeleaf1['IPNEIGHIBGPIPV4'] = str(IPSIBGPipv4[rack][1]) variablestochangeleaf1['IPNEIGHSPINE1IPV6'] = str(IPSPINEipv6[rack][0]) variablestochangeleaf1['IPNEIGHSPINE2IPV6'] = str(IPSPINEipv6[rack][1]) variablestochangeleaf1['IPNEIGHIBGPIPV6'] = str(IPSIBGPipv6[rack][1]) variablestochangeleaf1['LF_HOSTNAME'] = HOSTNAME_LF1 variablestochangeleaf1['NET_HOST_BE_IPV4'] = str(subnetsRackBEipv4[rack]) variablestochangeleaf1['NET_HOST_FE_IPV4'] = str(subnetsRackFEipv4[rack]) variablestochangeleaf1['NET_SPINE1_LF_IPV4'] = str(subSPINE1ipv4[rack]) variablestochangeleaf1['NET_SPINE2_LF_IPV4'] = str(subSPINE2ipv4[rack]) variablestochangeleaf1['NET_LF_LF_IPV4'] = str(subIBGPToRLxLipv4[rack]) variablestochangeleaf1['NET_HOST_BE_IPV6'] = str(subnetsRackBEipv6[rack]) variablestochangeleaf1['NET_HOST_FE_IPV6'] = str(subnetsRackFEipv6[rack]) variablestochangeleaf1['NET_SPINE1_LF_IPV6'] = str(subSPINE1ipv6[rack]) variablestochangeleaf1['NET_SPINE2_LF_IPV6'] = str(subSPINE2ipv6[rack]) variablestochangeleaf1['NET_LF_LF_IPV6'] = str(subIBGPToRLxLipv6[rack]) variablestochangeleaf1['ID_LEAF'] = '1' variablestochangeleaf1['OWN_IP_MGMT'] = IP_GERENCIA_LF1 variablestochangeleaf1['LFNEIGH_IP_MGMT'] = IP_GERENCIA_LF2 variablestochangeleaf1['LFNEIGH_HOSTNAME'] = HOSTNAME_LF2 variablestochangeleaf1['SP1_HOSTNAME'] = HOSTNAME_SP1 variablestochangeleaf1['SP2_HOSTNAME'] = HOSTNAME_SP2 variablestochangeleaf1['INTERFACE_SP1'] = INTERFACE_SP1 variablestochangeleaf1['INTERFACE_SP2'] = INTERFACE_SP2 variablestochangeleaf1['HOSTNAME_OOB'] = HOSTNAME_OOB variablestochangeleaf1['INTERFACE_OOB'] = INTERFACE_OOB_LF1 variablestochangeleaf1['ID_VLT'] = ID_VLT_LF1 variablestochangeleaf1['PRIORITY_VLT'] = PRIORITY_VLT_LF1 # # variablestochangeleaf2['IPLEAFSP1IPV4'] = str(IPLEAFipv4[rack][2]) variablestochangeleaf2['IPLEAFSP2IPV4'] = str(IPLEAFipv4[rack][3]) variablestochangeleaf2['IPIBGPIPV4'] = str(IPSIBGPipv4[rack][1]) variablestochangeleaf2['IPLEAFSP1IPV6'] = str(IPLEAFipv6[rack][2]) variablestochangeleaf2['IPLEAFSP2IPV6'] = str(IPLEAFipv6[rack][3]) variablestochangeleaf2['IPIBGPIPV6'] = str(IPSIBGPipv6[rack][1]) variablestochangeleaf2['VLANBELEAFSP1'] = str(VLANBELEAF[rack][2]) variablestochangeleaf2['VLANBELEAFSP2'] = str(VLANBELEAF[rack][3]) variablestochangeleaf2['VLANFELEAFSP1'] = str(VLANFELEAF[rack][2]) variablestochangeleaf2['VLANFELEAFSP2'] = str(VLANFELEAF[rack][3]) variablestochangeleaf2['VLANBORDALEAFSP1'] = str(VLANBORDALEAF[rack][2]) variablestochangeleaf2['VLANBORDALEAFSP2'] = str(VLANBORDALEAF[rack][3]) variablestochangeleaf2['VLANBORDACACHOSLEAFSP1'] = str( VLANBORDACACHOSLEAF[rack][2]) variablestochangeleaf2['VLANBORDACACHOSLEAFSP2'] = str( VLANBORDACACHOSLEAF[rack][3]) variablestochangeleaf2['ASLEAF'] = str(ASLEAF[rack][0]) variablestochangeleaf2['IPNEIGHSPINE1IPV4'] = str(IPSPINEipv4[rack][2]) variablestochangeleaf2['IPNEIGHSPINE2IPV4'] = str(IPSPINEipv4[rack][3]) variablestochangeleaf2['IPNEIGHIBGPIPV4'] = str(IPSIBGPipv4[rack][0]) variablestochangeleaf2['IPNEIGHSPINE1IPV6'] = str(IPSPINEipv6[rack][2]) variablestochangeleaf2['IPNEIGHSPINE2IPV6'] = str(IPSPINEipv6[rack][3]) variablestochangeleaf2['IPNEIGHIBGPIPV6'] = str(IPSIBGPipv6[rack][0]) variablestochangeleaf2['LF_HOSTNAME'] = HOSTNAME_LF2 variablestochangeleaf2['NET_HOST_BE_IPV4'] = str(subnetsRackBEipv4[rack]) variablestochangeleaf2['NET_HOST_FE_IPV4'] = str(subnetsRackFEipv4[rack]) variablestochangeleaf2['NET_SPINE1_LF_IPV4'] = str(subSPINE3ipv4[rack]) variablestochangeleaf2['NET_SPINE2_LF_IPV4'] = str(subSPINE4ipv4[rack]) variablestochangeleaf2['NET_LF_LF_IPV4'] = str(subIBGPToRLxLipv4[rack]) variablestochangeleaf2['NET_HOST_BE_IPV6'] = str(subnetsRackBEipv6[rack]) variablestochangeleaf2['NET_HOST_FE_IPV6'] = str(subnetsRackFEipv6[rack]) variablestochangeleaf2['NET_SPINE1_LF_IPV6'] = str(subSPINE3ipv6[rack]) variablestochangeleaf2['NET_SPINE2_LF_IPV6'] = str(subSPINE4ipv6[rack]) variablestochangeleaf2['NET_LF_LF_IPV6'] = str(subIBGPToRLxLipv6[rack]) variablestochangeleaf2['ID_LEAF'] = '2' variablestochangeleaf2['OWN_IP_MGMT'] = IP_GERENCIA_LF2 variablestochangeleaf2['LFNEIGH_IP_MGMT'] = IP_GERENCIA_LF1 variablestochangeleaf2['LFNEIGH_HOSTNAME'] = HOSTNAME_LF1 variablestochangeleaf2['SP1_HOSTNAME'] = HOSTNAME_SP3 variablestochangeleaf2['SP2_HOSTNAME'] = HOSTNAME_SP4 variablestochangeleaf2['INTERFACE_SP1'] = INTERFACE_SP3 variablestochangeleaf2['INTERFACE_SP2'] = INTERFACE_SP4 variablestochangeleaf2['HOSTNAME_OOB'] = HOSTNAME_OOB variablestochangeleaf2['INTERFACE_OOB'] = INTERFACE_OOB_LF2 variablestochangeleaf2['ID_VLT'] = ID_VLT_LF2 variablestochangeleaf2['PRIORITY_VLT'] = PRIORITY_VLT_LF2 try: fileoutspine1 = get_variable( 'path_to_add_config') + HOSTNAME_SP1 + '-ADD-' + HOSTNAME_RACK[2] + '.cfg' fileoutspine2 = get_variable( 'path_to_add_config') + HOSTNAME_SP2 + '-ADD-' + HOSTNAME_RACK[2] + '.cfg' fileoutspine3 = get_variable( 'path_to_add_config') + HOSTNAME_SP3 + '-ADD-' + HOSTNAME_RACK[2] + '.cfg' fileoutspine4 = get_variable( 'path_to_add_config') + HOSTNAME_SP4 + '-ADD-' + HOSTNAME_RACK[2] + '.cfg' fileoutleaf1 = get_variable('path_to_config') + HOSTNAME_LF1 + '.cfg' fileoutleaf2 = get_variable('path_to_config') + HOSTNAME_LF2 + '.cfg' except ObjectDoesNotExist, exception: log.error(exception) raise var_exceptions.VariableDoesNotExistException( 'Erro buscando a variável PATH_TO_CONFIG ou PATH_TO_ADD_CONFIG.') replace(fileinspine1, fileoutspine1, variablestochangespine1) replace(fileinspine2, fileoutspine2, variablestochangespine2) replace(fileinspine3, fileoutspine3, variablestochangespine3) replace(fileinspine4, fileoutspine4, variablestochangespine4) replace(fileinleaf1, fileoutleaf1, variablestochangeleaf1) replace(fileinleaf2, fileoutleaf2, variablestochangeleaf2) return True