Skip to content

Commit 41fcf43

Browse files
committed
Fix config drive test for Shared Network
1 parent b0490c5 commit 41fcf43

3 files changed

Lines changed: 112 additions & 165 deletions

File tree

test/integration/component/test_configdrive.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,9 @@ def validate_vm_networking(self, vm):
309309
def validate_network_networking(self, network, vpc):
310310
pass
311311

312+
def validate_shared_networking(self, network, vm):
313+
pass
314+
312315
def validate_StaticNat_rule_For_VM(self, public_ip, network, vm):
313316
self.validate_PublicIPAddress(
314317
public_ip, network, static_nat=True, vm=vm)
@@ -699,7 +702,10 @@ def when_I_deploy_a_vm(self, networks, acl_item=None,
699702

700703
for network in network_list:
701704
self.validate_Network(network, state="Implemented")
702-
self.validate_network_networking(network, self.vpc)
705+
if network.type == "Shared":
706+
self.validate_shared_networking(network, self.vpc)
707+
else:
708+
self.validate_network_networking(network, self.vpc)
703709

704710
if self.vpc_acl_rule is not None:
705711
self.validate_acl_rule(self.vpc_acl_rule)
@@ -907,6 +913,10 @@ def _find_nic(self, vm, network):
907913
vm = VirtualMachine.list(self.api_client, id=vm.id)[0]
908914
return next(nic for nic in vm.nic if nic.networkid == network.id)
909915

916+
def get_public_shared_ip(self, vm, network):
917+
nic = self._find_nic(vm, network)
918+
return PublicIPAddress({"ipaddress": nic})
919+
910920
def plug_nic(self, vm, network):
911921
vm.add_nic(self.api_client, network.id)
912922
self.debug("Added NIC in VM with ID - %s and network with ID - %s"

test/integration/plugins/nuagevsp/nuageTestCase.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,6 +1302,8 @@ def verify_vsd_vm(self, vm, stopped=False):
13021302
)
13031303
vm_info = VirtualMachine.list(self.api_client, id=vm.id)[0]
13041304
for nic in vm_info.nic:
1305+
if nic.type == "Shared":
1306+
continue
13051307
vsd_subnet = self.vsd.get_subnet(
13061308
filter=self.get_externalID_filter(nic.networkid))
13071309
vsd_vport = self.vsd.get_vport(

test/integration/plugins/nuagevsp/test_nuage_configdrive.py

Lines changed: 99 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)