@@ -205,6 +205,15 @@ def validate_vm_networking(self, vm):
205205 def validate_network_networking (self , network , vpc ):
206206 self .verify_vsd_network (self .domain .id , network , vpc = vpc )
207207
208+ def validate_shared_networking (self , network , vm ):
209+ # Verify shared Network and VM in VSD
210+ subnet_id = self .get_subnet_id (network .id , network .gateway )
211+
212+ self .verify_vsd_shared_network (self .domain .id , network ,
213+ gateway = network .gateway )
214+ self .verify_vsd_enterprise_vm (self .domain .id , network , vm ,
215+ sharedsubnetid = subnet_id )
216+
208217 def _get_test_data (self , key ):
209218 return self .test_data ["nuagevsp" ][key ]
210219
@@ -987,7 +996,9 @@ def test_nuage_configdrive_shared_network(self):
987996 'Network found success = %s, expected success = %s'
988997 % (str (shared_network .success ), 'True' ))
989998
990- self .validate_Network (shared_network .network , state = "Allocated" )
999+ shared_nw_1 = shared_network .network
1000+
1001+ self .validate_Network (shared_nw_1 , state = "Allocated" )
9911002
9921003 shared_test_data2 = self .test_data ["nuagevsp" ]["network_all2" ]
9931004 shared_network2 = self .verify_network_creation (
@@ -997,29 +1008,28 @@ def test_nuage_configdrive_shared_network(self):
9971008 'Network found success = %s, expected success = %s'
9981009 % (str (shared_network2 .success ), 'True' ))
9991010
1000- self .validate_Network (shared_network2 .network , state = "Allocated" )
1011+ shared_nw_1 = shared_network .network
1012+ shared_nw_2 = shared_network2 .network
1013+ shared_nw_ids = [shared_nw_1 .id , shared_nw_2 .id ]
1014+ self .validate_Network (shared_nw_2 , state = "Allocated" )
10011015
10021016 self .debug ("+++Test user data & password reset functionality "
10031017 "using configdrive in an Isolated network without VR" )
10041018
10051019 self .given_template_password_enabled_is (True )
10061020 public_ip_ranges = PublicIpRange .list (self .api_client )
10071021 for ip_range in public_ip_ranges :
1008- if shared_network .network .id == ip_range .networkid \
1009- or shared_network2 .network .id == ip_range .networkid :
1022+ if ip_range .networkid in shared_nw_ids :
10101023 self .enable_NuageUnderlayPublicIpRange (ip_range .id )
10111024
1012- self .generate_ssh_keys ()
1013- self .debug ("keypair name %s " % self .keypair .name )
1014-
10151025 self .debug ("+++Deploy of a VM on a shared network with multiple "
10161026 "ip ranges, all should have the same value for the "
10171027 "underlay flag." )
10181028 # Add subnet of different gateway
10191029 self .debug ("+++ Adding subnet of different gateway" )
10201030
10211031 subnet = self .add_subnet_to_shared_network_and_verify (
1022- shared_network . network ,
1032+ shared_nw_1 ,
10231033 self .test_data ["nuagevsp" ]["publiciprange2" ])
10241034 tmp_test_data = copy .deepcopy (
10251035 self .test_data ["virtual_machine" ])
@@ -1028,213 +1038,138 @@ def test_nuage_configdrive_shared_network(self):
10281038 self .test_data ["nuagevsp" ]["network_all" ]["endip" ]
10291039
10301040 with self .assertRaises (Exception ):
1031- self .create_VM (
1032- [shared_network .network ],
1033- testdata = tmp_test_data )
1041+ self .create_VM ([shared_nw_1 ], testdata = tmp_test_data )
10341042
10351043 self .debug ("+++ In a shared network with multiple ip ranges, "
10361044 "userdata with config drive must be allowed." )
10371045
10381046 self .enable_NuageUnderlayPublicIpRange (subnet .vlan .id )
10391047
1040- vm1 = self .create_VM (
1041- [shared_network .network ],
1042- testdata = self .test_data ["virtual_machine_userdata" ],
1043- keypair = self .keypair .name )
1044- # Check VM
1045- self .check_VM_state (vm1 , state = "Running" )
1046- # Verify shared Network and VM in VSD
1047- self .verify_vsd_shared_network (
1048- self .domain .id ,
1049- shared_network .network ,
1050- gateway = self .test_data ["nuagevsp" ]["network_all" ]["gateway" ])
1051- subnet_id = self .get_subnet_id (
1052- shared_network .network .id ,
1053- self .test_data ["nuagevsp" ]["network_all" ]["gateway" ])
1054- self .verify_vsd_enterprise_vm (
1055- self .domain .id ,
1056- shared_network .network , vm1 ,
1057- sharedsubnetid = subnet_id )
1048+ vm1 = self .when_I_deploy_a_vm_with_keypair_in ([shared_nw_1 ])
10581049
1059- with self .assertRaises (Exception ):
1060- self .get_Router (shared_network )
1061- self .debug ("+++ Verified no VR is spawned for this network " )
1062- # We need to have the vm password
1063- self .when_I_reset_the_password (vm1 )
1064- self .debug ("Password reset to - %s" % vm1 .password )
1065- self .debug ("VM - %s password - %s !" %
1066- (vm1 .name , vm1 .password ))
1067- public_ip = PublicIPAddress ({"ipaddress" : vm1 })
1068- self .then_config_drive_is_as_expected (
1069- vm1 , public_ip ,
1070- metadata = True )
1071- expected_user_data = self .update_and_validate_userdata (vm1 ,
1072- "helloworldvm1" ,
1073- public_ip )
1074- self .then_config_drive_is_as_expected (
1075- vm1 , public_ip )
1050+ self .then_vr_is_as_expected (shared_nw_1 )
1051+
1052+ public_ip = self .get_public_shared_ip (vm1 , shared_nw_1 )
1053+ self .then_config_drive_is_as_expected (vm1 , public_ip , metadata = True )
1054+
1055+ self .update_and_validate_userdata (vm1 , "helloworld vm1" , public_ip )
1056+ self .then_config_drive_is_as_expected (vm1 , public_ip )
1057+
1058+ # =====================================================================
1059+ # Test using network2 as default network
1060+ # =====================================================================
10761061
10771062 self .debug ("+++ Adding a non-default nic to the VM "
10781063 "making it a multi-nic VM..." )
1079- self .nic_operation_VM (vm1 , shared_network2 .network ,
1080- operation = "add" )
1081- self .then_config_drive_is_as_expected (vm1 , public_ip ,
1082- metadata = True )
1083- self .when_I_reset_the_password (vm1 )
1084- self .debug ("Password reset to - %s" % vm1 .password )
1085- self .debug ("VM - %s password - %s !" %
1086- (vm1 .name , vm1 .password ))
1064+ self .plug_nic (vm1 , shared_nw_2 )
1065+ self .then_config_drive_is_as_expected (vm1 , public_ip , metadata = True )
10871066
1088- expected_user_data1 = self .update_and_validate_userdata (vm1 ,
1089- "himultinicvm" ,
1090- public_ip )
1091- self .then_config_drive_is_as_expected (vm1 , public_ip )
1067+ self .when_I_reset_the_password (vm1 )
1068+ self .update_and_validate_userdata (vm1 , "hellomultinicvm1" , public_ip )
10921069
10931070 self .debug ("+++ Updating non-default nic as the default nic "
10941071 "of the multi-nic VM..." )
1095- self .nic_operation_VM (vm1 ,
1096- shared_network2 .network , operation = "update" )
1097- vm1 .stop (self .api_client )
1098- vm1 .start (self .api_client )
1099-
1100- public_ip_2 = PublicIPAddress (
1101- {"ipaddress" : VirtualMachine .list (self .api_client ,
1102- id = vm1 .id )[0 ].nic [1 ]})
1103- self .then_config_drive_is_as_expected (vm1 , public_ip_2 ,
1104- metadata = True )
1072+ self .update_default_nic (vm1 , shared_nw_2 )
1073+ self .stop_and_start_vm (vm1 )
1074+
1075+ public_ip_2 = self .get_public_shared_ip (vm1 , shared_nw_2 )
1076+ self .then_config_drive_is_as_expected (vm1 , public_ip_2 , metadata = True )
1077+
11051078 self .when_I_reset_the_password (vm1 )
1106- self .debug ("Password reset to - %s" % vm1 .password )
1107- self .debug ("VM - %s password - %s !" %
1108- (vm1 .name , vm1 .password ))
1109- self .then_config_drive_is_as_expected (vm1 , public_ip_2 )
1110- expected_user_data1 = self .update_and_validate_userdata (vm1 ,
1111- "himultinicvm" ,
1112- public_ip )
11131079 self .then_config_drive_is_as_expected (vm1 , public_ip_2 )
11141080
1081+ self .update_and_validate_userdata (vm1 , "hellomultinicvm1again" ,
1082+ public_ip_2 )
1083+
11151084 self .debug ("+++ Updating the default nic of the multi-nic VM, "
11161085 "deleting the non-default nic..." )
1117- self .nic_operation_VM (vm1 ,
1118- shared_network .network , operation = "update" )
1119- vm1 .stop (self .api_client )
1120- vm1 .start (self .api_client )
1121- public_ip = PublicIPAddress ({"ipaddress" : vm1 })
1122- self .then_config_drive_is_as_expected (vm1 , public_ip ,
1123- metadata = True )
1086+ self .update_default_nic (vm1 , shared_nw_1 )
1087+ self .stop_and_start_vm (vm1 )
1088+ self .then_config_drive_is_as_expected (vm1 , public_ip , metadata = True )
1089+
1090+ self .unplug_nic (vm1 , shared_nw_2 )
1091+
1092+ # =====================================================================
1093+ # Another Multinic VM
1094+ # =====================================================================
11241095
1125- self .nic_operation_VM (vm1 ,
1126- shared_network2 .network , operation = "remove" )
1127-
1128- multinicvm1 = self .create_VM ([shared_network2 .network ,
1129- shared_network .network ])
1130- multinicvm1 .password = multinicvm1 .resetPassword (self .api_client )
1131- self .debug ("+++ MultiNICVM Password reset to - %s"
1132- % multinicvm1 .password )
1133- self .debug ("MultiNICVM - %s password - %s !"
1134- % (multinicvm1 .name , multinicvm1 .password ))
1135- public_ip_3 = \
1136- PublicIPAddress (
1137- {"ipaddress" : VirtualMachine .list (
1138- self .api_client , id = multinicvm1 .id )[0 ].nic [0 ]})
1096+ multinicvm1 = self .when_I_deploy_a_vm ([shared_nw_2 , shared_nw_1 ])
1097+ public_ip_3 = self .get_public_shared_ip (multinicvm1 , shared_nw_2 )
11391098 self .then_config_drive_is_as_expected (
11401099 multinicvm1 , public_ip_3 ,
11411100 metadata = True )
1142- expected_user_data2 = self .update_and_validate_userdata (
1143- multinicvm1 , "hello multinicvm1" , public_ip )
1101+ self .update_and_validate_userdata (multinicvm1 , "hello multinicvm1" ,
1102+ public_ip )
11441103 self .then_config_drive_is_as_expected (multinicvm1 , public_ip_3 )
11451104 multinicvm1 .delete (self .api_client , expunge = True )
1105+ shared_nw_2 .delete (self .api_client )
11461106
1147- shared_network2 .network .delete (self .api_client )
1148- # We need to have the vm password
1149- self .when_I_reset_the_password (vm1 )
1150- self .debug ("Password reset to - %s" % vm1 .password )
1151- self .debug ("VM - %s password - %s !" %
1152- (vm1 .name , vm1 .password ))
1153- public_ip = PublicIPAddress ({"ipaddress" : vm1 })
1107+ # =====================================================================
11541108
1155- self .debug ("+++ Verifying userdata after rebootVM - %s" % vm1 .name )
1109+ self .debug ("+++ Scenario: "
1110+ "update userdata and reset password after reboot" )
11561111 vm1 .reboot (self .api_client )
1157- self .then_config_drive_is_as_expected (vm1 , public_ip ,
1158- metadata = True )
1159-
1160- self .debug ("Updating userdata for VM - %s" % vm1 .name )
1161- expected_user_data1 = self .update_and_validate_userdata (vm1 ,
1162- "hiafterboot" ,
1163- public_ip )
1164- self .then_config_drive_is_as_expected (vm1 , public_ip )
1165- self .debug ("Resetting password for VM - %s" % vm1 .name )
1112+ self .then_config_drive_is_as_expected (vm1 , public_ip , metadata = True )
1113+ self .update_and_validate_userdata (vm1 , "hello afterboot" , public_ip )
11661114 self .when_I_reset_the_password (vm1 )
1167- self .debug ("SSHing into the VM for verifying its new password "
1168- "after its password reset..." )
11691115 self .then_config_drive_is_as_expected (vm1 , public_ip )
11701116
1171- self .debug ("+++ Migrating one of the VMs in the created Isolated "
1172- "network to another host, if available..." )
1117+ # =====================================================================
1118+ self .debug ("+++ Scenario: "
1119+ "update userdata and reset password after migrate" )
11731120 self .migrate_VM (vm1 )
1174- self .then_config_drive_is_as_expected (vm1 , public_ip ,
1175- metadata = True )
1176-
1177- self .debug ("Updating userdata after migrating VM - %s" % vm1 .name )
1178- expected_user_data1 = self .update_and_validate_userdata (vm1 ,
1179- "aftermigrate" ,
1180- public_ip )
1181- self .then_config_drive_is_as_expected (vm1 , public_ip )
1182- self .debug ("Resetting password for VM - %s" % vm1 .name )
1121+ self .then_config_drive_is_as_expected (vm1 , public_ip , metadata = True )
1122+ self .update_and_validate_userdata (vm1 , "hello after migrate" ,
1123+ public_ip )
11831124 self .when_I_reset_the_password (vm1 )
1184- self .debug ("SSHing into the VM for verifying its new password "
1185- "after its password reset..." )
11861125 self .then_config_drive_is_as_expected (vm1 , public_ip )
11871126
1188- self . debug ( "+++ Verify userdata after stopstartVM - %s" % vm1 . name )
1189- vm1 . stop ( self .api_client )
1190- vm1 . start ( self . api_client )
1191- self .then_config_drive_is_as_expected (vm1 , public_ip ,
1192- metadata = True )
1127+ # =====================================================================
1128+ self .debug ( "+++ Scenario: "
1129+ "update userdata and reset password after stop/ start" )
1130+ self .stop_and_start_vm (vm1 )
1131+ self . then_config_drive_is_as_expected ( vm1 , public_ip , metadata = True )
11931132
1194- self .debug ("Updating userdata for VM - %s" % vm1 .name )
1195- expected_user_data1 = self .update_and_validate_userdata (vm1 ,
1196- "stopstart" ,
1133+ self .update_and_validate_userdata (vm1 , "hello afterstopstart" ,
11971134 public_ip )
1198- self .then_config_drive_is_as_expected (vm1 , public_ip )
1199- self .debug ("Resetting password for VM - %s" % vm1 .name )
12001135 self .when_I_reset_the_password (vm1 )
1201- self .debug ("SSHing into the VM for verifying its new password "
1202- "after its password reset..." )
12031136 self .then_config_drive_is_as_expected (vm1 , public_ip )
12041137
1205- self .debug ("+++ Verify userdata after VM recover- %s" % vm1 .name )
1206- vm1 .delete (self .api_client , expunge = False )
1207- self .debug ("Recover VM - %s" % vm1 .name )
1208- vm1 .recover (self .api_client )
1209- vm1 .start (self .api_client )
1210- self .then_config_drive_is_as_expected (vm1 , public_ip ,
1211- metadata = True )
1212- self .given_config_drive_provider_is ("Disabled" )
1213- expected_user_data1 = self .update_and_validate_userdata (vm1 ,
1214- "afterrecover" ,
1215- public_ip )
1138+ # =====================================================================
1139+ self .debug ("+++ Scenario: "
1140+ "verify config drive after delete/recover" )
1141+ self .delete_and_recover_vm (vm1 )
12161142 self .then_config_drive_is_as_expected (vm1 , public_ip ,
12171143 metadata = True )
12181144
1219- self .debug ("+++ When template is not password enabled, "
1220- "verify configdrive of VM - %s" % vm1 .name )
1221- vm1 .delete (self .api_client , expunge = True )
1145+ # =====================================================================
1146+ self .debug ("+++ Scenario: "
1147+ "Start VM fails when ConfigDrive provider is disabled" )
1148+ self .given_config_drive_provider_is ("Disabled" )
1149+ with self .assertRaises (Exception ):
1150+ self .when_I_update_userdata (vm1 , "hi with provider state Disabled" )
12221151 self .given_config_drive_provider_is ("Enabled" )
1152+
1153+ self .delete (vm1 , expunge = True )
1154+
1155+ # =====================================================================
1156+ self .debug ("+++ Scenario: "
1157+ "Update Userdata on a VM that is not password enabled" )
12231158 self .update_template (passwordenabled = False )
1224- self .generate_ssh_keys ()
1225- self .debug ("keypair name %s " % self .keypair .name )
1159+
12261160 vm1 = self .create_VM (
1227- [shared_network . network ],
1161+ [shared_nw_1 ],
12281162 testdata = self .test_data ["virtual_machine_userdata" ],
12291163 keypair = self .keypair .name )
1230- expected_user_data1 = self . update_and_validate_userdata ( vm1 ,
1231- " sample data" ,
1232- public_ip )
1164+
1165+ self . update_and_validate_userdata ( vm1 , "This is sample data" ,
1166+ public_ip )
12331167 public_ip = PublicIPAddress ({"ipaddress" : vm1 })
12341168 self .then_config_drive_is_as_expected (vm1 , public_ip ,
12351169 metadata = True )
1236- vm1 .delete (self .api_client , expunge = True )
1237- shared_network .network .delete (self .api_client )
1170+
1171+ self .delete (vm1 , expunge = True )
1172+ self .delete (shared_nw_1 )
12381173
12391174 @attr (tags = ["advanced" , "nuagevsp" , "endurance" ], required_hardware = "true" )
12401175 def test_nuage_configdrive_endurance (self ):
0 commit comments