36
36
from networkapi .api_rack import serializers as rack_serializers
37
37
from networkapi .api_rack import exceptions
38
38
from networkapi .api_rack import provision
39
+ from networkapi .api_rack import autoprovision
39
40
from networkapi .system import exceptions as var_exceptions
40
41
from networkapi .system .facade import get_value as get_variable
41
42
from networkapi .api_rest .exceptions import ValidationAPIException , ObjectDoesNotExistException , \
@@ -407,7 +408,7 @@ def gerar_arquivo_config(ids):
407
408
408
409
auto = provision .Provision (rack .id )
409
410
auto .spine_provision (rack , equips )
410
- auto .oob_provision (rack , equips )
411
+ auto .oob_provision (equips )
411
412
412
413
return True
413
414
@@ -420,16 +421,14 @@ def _create_spnlfenv(user, rack):
420
421
ambiente_logico__nome = "SPINES" )
421
422
log .debug ("SPN environments" + str (envfathers ))
422
423
423
- environment_spn_lf = None
424
424
environment_spn_lf_list = list ()
425
425
spines = int (rack .dcroom .spines )
426
- fabric = rack .dcroom .name
427
426
428
427
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
430
429
except :
431
430
grupo_l3_dict = models_env .GrupoL3 ()
432
- grupo_l3_dict .nome = fabric
431
+ grupo_l3_dict .nome = rack . nome
433
432
grupo_l3_dict .save ()
434
433
id_grupo_l3 = grupo_l3_dict .id
435
434
pass
@@ -483,6 +482,7 @@ def _create_spnlfenv(user, rack):
483
482
'configs' : config ,
484
483
'fabric_id' : rack .dcroom .id
485
484
}
485
+ # obj_env = facade_env.create_environment(obj)
486
486
487
487
return environment_spn_lf_list
488
488
@@ -510,15 +510,24 @@ def _create_spnlfvlans(rack, user):
510
510
pass
511
511
for env in spn_lf_envs :
512
512
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
513
519
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
515
521
vlan_name = "VLAN_" + env .divisao_dc .nome + "_" + env .ambiente_logico .nome + "_" + rack .nome
516
522
517
523
for net in env .configs :
518
524
prefix = int (net .subnet_mask )
525
+ block = list (IPNetwork (net .network ).subnet (int (net .subnet_mask )))
519
526
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 )
522
531
}
523
532
if str (net .ip_version )[- 1 ] is "4" :
524
533
create_networkv4 = network
@@ -592,14 +601,13 @@ def _create_prod_envs(rack, user):
592
601
subnet_list = list (cidr .subnet (int (prefix )))
593
602
try :
594
603
bloco = subnet_list [int (rack .numero )]
595
- except IndexError as err :
604
+ except IndexError :
596
605
msg = "Rack number %d is greater than the maximum number of " \
597
606
"subnets available with prefix %d from %s subnet" % \
598
607
(rack .numero , prefix , cidr )
599
608
raise Exception (msg )
600
609
601
610
if isinstance (details , list ) and len (details ) > 0 :
602
-
603
611
if details [0 ].get (str (net .ip_version )):
604
612
new_prefix = details [0 ].get (str (net .ip_version )).get ("new_prefix" )
605
613
else :
@@ -761,6 +769,56 @@ def _create_prod_vlans(rack, user):
761
769
return environment
762
770
763
771
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
+
764
822
def _create_lflf_vlans (rack , user ):
765
823
log .debug ("_create_lflf_vlans" )
766
824
@@ -789,15 +847,15 @@ def _create_lflf_vlans(rack, user):
789
847
except :
790
848
log .debug ("debug lfxlf" )
791
849
for net in env .configs :
792
- bloco = net .ip_config . subnet
850
+ bloco = net .network
793
851
prefix = bloco .split ('/' )[- 1 ]
794
852
network = {
795
853
'prefix' : prefix ,
796
854
'network_type' : id_network_type
797
855
}
798
- if str (net .ip_config . type )[- 1 ] is "4" :
856
+ if str (net .ip_version )[- 1 ] is "4" :
799
857
create_networkv4 = network
800
- elif str (net .ip_config . type )[- 1 ] is "6" :
858
+ elif str (net .ip_version )[- 1 ] is "6" :
801
859
create_networkv6 = network
802
860
obj = {
803
861
'name' : vlan_name ,
@@ -871,6 +929,7 @@ def rack_environments_vlans(rack_id, user):
871
929
872
930
# leaf x leaf
873
931
_create_lflf_vlans (rack , user )
932
+ _create_lflf_envs (rack )
874
933
875
934
# producao/cloud
876
935
_create_prod_envs (rack , user )
@@ -898,6 +957,7 @@ def allocate_env_vlan(user, rack_id):
898
957
899
958
# leaf x leaf
900
959
rack_env .leaf_leaf_vlans_save ()
960
+ rack_env .leaf_leaf_envs_save ()
901
961
902
962
# producao/cloud
903
963
rack_env .prod_environment_save ()
0 commit comments