Skip to content

Commit c2d9bce

Browse files
author
Laura
authored
Merge pull request #276 from globocom/develop
merge develop
2 parents 04b503a + 0b43fad commit c2d9bce

File tree

4 files changed

+326
-341
lines changed

4 files changed

+326
-341
lines changed

networkapi/api_rack/facade.py

Lines changed: 73 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
from networkapi.api_rack import serializers as rack_serializers
3737
from networkapi.api_rack import exceptions
3838
from networkapi.api_rack import provision
39+
from networkapi.api_rack import autoprovision
3940
from networkapi.system import exceptions as var_exceptions
4041
from networkapi.system.facade import get_value as get_variable
4142
from networkapi.api_rest.exceptions import ValidationAPIException, ObjectDoesNotExistException, \
@@ -407,7 +408,7 @@ def gerar_arquivo_config(ids):
407408

408409
auto = provision.Provision(rack.id)
409410
auto.spine_provision(rack, equips)
410-
auto.oob_provision(rack, equips)
411+
auto.oob_provision(equips)
411412

412413
return True
413414

@@ -420,16 +421,14 @@ def _create_spnlfenv(user, rack):
420421
ambiente_logico__nome="SPINES")
421422
log.debug("SPN environments"+str(envfathers))
422423

423-
environment_spn_lf = None
424424
environment_spn_lf_list = list()
425425
spines = int(rack.dcroom.spines)
426-
fabric = rack.dcroom.name
427426

428427
try:
429-
id_grupo_l3 = models_env.GrupoL3().get_by_name(fabric).id
428+
id_grupo_l3 = models_env.GrupoL3().get_by_name(rack.nome).id
430429
except:
431430
grupo_l3_dict = models_env.GrupoL3()
432-
grupo_l3_dict.nome = fabric
431+
grupo_l3_dict.nome = rack.nome
433432
grupo_l3_dict.save()
434433
id_grupo_l3 = grupo_l3_dict.id
435434
pass
@@ -483,6 +482,7 @@ def _create_spnlfenv(user, rack):
483482
'configs': config,
484483
'fabric_id': rack.dcroom.id
485484
}
485+
# obj_env = facade_env.create_environment(obj)
486486

487487
return environment_spn_lf_list
488488

@@ -510,15 +510,24 @@ def _create_spnlfvlans(rack, user):
510510
pass
511511
for env in spn_lf_envs:
512512
env_id = env.id
513+
try:
514+
base_rack = int(rack.dcroom.racks)
515+
spn = int(env.ambiente_logico.nome[6])
516+
except:
517+
spn = 1
518+
base_rack = 1
513519
vlan_base = env.min_num_vlan_1
514-
vlan_number = int(vlan_base) + int(rack_number)
520+
vlan_number = int(vlan_base) + int(rack_number) + (spn-1)*base_rack
515521
vlan_name = "VLAN_" + env.divisao_dc.nome + "_" + env.ambiente_logico.nome + "_" + rack.nome
516522

517523
for net in env.configs:
518524
prefix = int(net.subnet_mask)
525+
block = list(IPNetwork(net.network).subnet(int(net.subnet_mask)))
519526
network = {
520-
'prefix': prefix, # str(list(cidr.subnet(prefix))[rack_number]),
521-
'network_type': id_network_type
527+
'network': str(block[rack_number]),
528+
'prefix': prefix,
529+
'network_type': id_network_type,
530+
'ip_version': str(net.ip_version)
522531
}
523532
if str(net.ip_version)[-1] is "4":
524533
create_networkv4 = network
@@ -592,14 +601,13 @@ def _create_prod_envs(rack, user):
592601
subnet_list = list(cidr.subnet(int(prefix)))
593602
try:
594603
bloco = subnet_list[int(rack.numero)]
595-
except IndexError as err:
604+
except IndexError:
596605
msg = "Rack number %d is greater than the maximum number of " \
597606
"subnets available with prefix %d from %s subnet" % \
598607
(rack.numero, prefix, cidr)
599608
raise Exception(msg)
600609

601610
if isinstance(details, list) and len(details) > 0:
602-
603611
if details[0].get(str(net.ip_version)):
604612
new_prefix = details[0].get(str(net.ip_version)).get("new_prefix")
605613
else:
@@ -761,6 +769,56 @@ def _create_prod_vlans(rack, user):
761769
return environment
762770

763771

772+
def _create_lflf_envs(rack):
773+
log.debug("_create_lflf_envs")
774+
env_lf = models_env.Ambiente.objects.filter(dcroom=int(rack.dcroom.id),
775+
grupo_l3__nome=str(rack.dcroom.name),
776+
ambiente_logico__nome="LEAF-LEAF")
777+
log.debug("Leaf-leaf environments: "+str(env_lf))
778+
779+
try:
780+
id_l3 = models_env.GrupoL3().get_by_name(rack.nome).id
781+
except:
782+
l3_dict = models_env.GrupoL3()
783+
l3_dict.nome = rack.nome
784+
l3_dict.save()
785+
id_l3 = l3_dict.id
786+
pass
787+
788+
for env in env_lf:
789+
config_subnet = []
790+
for net in env.configs:
791+
cidr = list(IPNetwork(net.network).subnet(int(net.subnet_mask)))[rack.numero]
792+
network = {
793+
'network': str(cidr),
794+
'ip_version': str(net.ip_version),
795+
'network_type': int(net.id_network_type.id),
796+
'subnet_mask': int(net.subnet_mask)
797+
}
798+
config_subnet.append(network)
799+
800+
obj = {
801+
'grupo_l3': id_l3,
802+
'ambiente_logico': env.ambiente_logico.id,
803+
'divisao_dc': env.divisao_dc.id,
804+
'acl_path': env.acl_path,
805+
'ipv4_template': env.ipv4_template,
806+
'ipv6_template': env.ipv6_template,
807+
'link': env.link,
808+
'min_num_vlan_2': env.min_num_vlan_1,
809+
'max_num_vlan_2': env.max_num_vlan_1,
810+
'min_num_vlan_1': env.min_num_vlan_1,
811+
'max_num_vlan_1': env.max_num_vlan_1,
812+
'vrf': env.vrf,
813+
'father_environment': env.id,
814+
'default_vrf': env.default_vrf.id,
815+
'configs': config_subnet,
816+
'fabric_id': rack.dcroom.id
817+
}
818+
environment = facade_env.create_environment(obj)
819+
log.debug("Environment object: %s" % str(environment))
820+
821+
764822
def _create_lflf_vlans(rack, user):
765823
log.debug("_create_lflf_vlans")
766824

@@ -789,15 +847,15 @@ def _create_lflf_vlans(rack, user):
789847
except:
790848
log.debug("debug lfxlf")
791849
for net in env.configs:
792-
bloco = net.ip_config.subnet
850+
bloco = net.network
793851
prefix = bloco.split('/')[-1]
794852
network = {
795853
'prefix': prefix,
796854
'network_type': id_network_type
797855
}
798-
if str(net.ip_config.type)[-1] is "4":
856+
if str(net.ip_version)[-1] is "4":
799857
create_networkv4 = network
800-
elif str(net.ip_config.type)[-1] is "6":
858+
elif str(net.ip_version)[-1] is "6":
801859
create_networkv6 = network
802860
obj = {
803861
'name': vlan_name,
@@ -871,6 +929,7 @@ def rack_environments_vlans(rack_id, user):
871929

872930
# leaf x leaf
873931
_create_lflf_vlans(rack, user)
932+
_create_lflf_envs(rack)
874933

875934
# producao/cloud
876935
_create_prod_envs(rack, user)
@@ -898,6 +957,7 @@ def allocate_env_vlan(user, rack_id):
898957

899958
# leaf x leaf
900959
rack_env.leaf_leaf_vlans_save()
960+
rack_env.leaf_leaf_envs_save()
901961

902962
# producao/cloud
903963
rack_env.prod_environment_save()

0 commit comments

Comments
 (0)