You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ro...@apache.org on 2022/12/09 12:40:53 UTC
[cloudstack] branch 4.17 updated: test: add nic validation in import vm test (#6964)
This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch 4.17
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.17 by this push:
new 7f760cc395b test: add nic validation in import vm test (#6964)
7f760cc395b is described below
commit 7f760cc395b700d29a6f166c4a5c91f8ccc46470
Author: Abhishek Kumar <ab...@gmail.com>
AuthorDate: Fri Dec 9 20:40:46 2022 +0800
test: add nic validation in import vm test (#6964)
Add smoke test to prevent any regression such as #6951.
Signed-off-by: Abhishek Kumar <ab...@gmail.com>
Signed-off-by: Abhishek Kumar <ab...@gmail.com>
---
.../smoke/test_vm_lifecycle_unmanage_import.py | 85 ++++++++++++++++++----
1 file changed, 72 insertions(+), 13 deletions(-)
diff --git a/test/integration/smoke/test_vm_lifecycle_unmanage_import.py b/test/integration/smoke/test_vm_lifecycle_unmanage_import.py
index ea76a7ee428..26b485f751d 100644
--- a/test/integration/smoke/test_vm_lifecycle_unmanage_import.py
+++ b/test/integration/smoke/test_vm_lifecycle_unmanage_import.py
@@ -83,6 +83,12 @@ class TestUnmanageVM(cloudstackTestCase):
)
cls._cleanup.append(cls.network_offering)
cls.network_offering.update(cls.apiclient, state='Enabled')
+ cls.isolated_network_offering = NetworkOffering.create(
+ cls.apiclient,
+ cls.services["nw_off_isolated_persistent"],
+ )
+ cls._cleanup.append(cls.isolated_network_offering)
+ cls.isolated_network_offering.update(cls.apiclient, state='Enabled')
@classmethod
def tearDownClass(cls):
@@ -92,16 +98,37 @@ class TestUnmanageVM(cloudstackTestCase):
self.apiclient = self.testClient.getApiClient()
self.dbclient = self.testClient.getDbConnection()
self.services["network"]["networkoffering"] = self.network_offering.id
+ self.cleanup = []
+ self.created_networks = []
+ network_data = self.services["l2-network"]
self.network = Network.create(
self.apiclient,
- self.services["l2-network"],
+ network_data,
+ zoneid=self.zone.id,
+ networkofferingid=self.network_offering.id
+ )
+ self.cleanup.append(self.network)
+ self.created_networks.append(self.network)
+ network_data['name'] = "Test L2 Network1"
+ network_data['displaytext'] = "Test L2 Network1"
+ self.network1 = Network.create(
+ self.apiclient,
+ network_data,
zoneid=self.zone.id,
networkofferingid=self.network_offering.id
)
- self.cleanup = [
- self.network
- ]
+ self.cleanup.append(self.network1)
+ self.created_networks.append(self.network1)
+ self.network2 = Network.create(
+ self.apiclient,
+ self.services["isolated_network"],
+ zoneid=self.zone.id,
+ networkofferingid=self.isolated_network_offering.id
+ )
+ self.cleanup.append(self.network2)
+ self.created_networks.append(self.network2)
self.unmanaged_instance = None
+ self.imported_vm = None
'''
Fetch vmware datacenter login details
@@ -128,6 +155,9 @@ class TestUnmanageVM(cloudstackTestCase):
self.delete_vcenter_vm(self.unmanaged_instance)
except Exception as e:
print("Warning: Exception during cleaning up vCenter VM: %s : %s" % (self.unmanaged_instance, e))
+ else:
+ if self.virtual_machine is not None and self.imported_vm is None:
+ self.cleanup.append(self.virtual_machine)
super(TestUnmanageVM, self).tearDown()
def check_vm_state(self, vm_id):
@@ -158,7 +188,8 @@ class TestUnmanageVM(cloudstackTestCase):
3. Verify VM is not listed in CloudStack
4. Verify VM is listed as part of the unmanaged instances
5. Import VM
- 6. Destroy VM
+ 6. Verify details of imported VM
+ 7. Destroy VM
"""
# 1 - Deploy VM
@@ -167,11 +198,18 @@ class TestUnmanageVM(cloudstackTestCase):
self.services["virtual_machine"],
templateid=self.template.id,
serviceofferingid=self.small_offering.id,
- networkids=self.network.id,
+ networkids=[self.network.id, self.network1.id, self.network2.id],
zoneid=self.zone.id
)
vm_id = self.virtual_machine.id
vm_instance_name = self.virtual_machine.instancename
+ networks = []
+ for network in self.created_networks:
+ n = Network.list(
+ self.apiclient,
+ id=network.id
+ )[0]
+ networks.append(n)
hostid = self.virtual_machine.hostid
hosts = Host.list(
self.apiclient,
@@ -212,13 +250,20 @@ class TestUnmanageVM(cloudstackTestCase):
)
# 5 - Import VM
unmanaged_vm_nic = unmanaged_vm.nic[0]
- nicnetworklist = [{}]
- nicnetworklist[0]["nic"] = unmanaged_vm_nic.id
- nicnetworklist[0]["network"] = self.network.id
- nicipaddresslist = [{}]
- if self.network.type == "Isolated":
- nicipaddresslist[0]["nic"] = unmanaged_vm_nic.id
- nicipaddresslist[0]["ip4Address"] = "auto"
+ nicnetworklist = []
+ nicipaddresslist = []
+ for nic in unmanaged_vm.nic:
+ for network in networks:
+ if int(network.vlan) == int(nic.vlanid):
+ nicnetworklist.append({
+ "nic": nic.id,
+ "network": network.id
+ })
+ if network.type == "Isolated":
+ nicipaddresslist.append({
+ "nic": nic.id,
+ "ip4Address": "auto"
+ })
import_vm_service = {
"nicnetworklist": nicnetworklist,
"nicipaddresslist": nicipaddresslist
@@ -232,6 +277,7 @@ class TestUnmanageVM(cloudstackTestCase):
templateid=self.template.id)
self.cleanup.append(self.imported_vm)
self.unmanaged_instance = None
+ # 6 - Verify details of the imported VM
self.assertEqual(
self.small_offering.id,
self.imported_vm.serviceofferingid,
@@ -242,4 +288,17 @@ class TestUnmanageVM(cloudstackTestCase):
self.imported_vm.templateid,
"Imported VM template is different, expected: %s, actual: %s" % (self.template.id, self.imported_vm.templateid)
)
+ self.assertEqual(
+ len(nicnetworklist),
+ len(self.imported_vm.nic),
+ "Imported VM number of NICs is different, expected: %d, actual: %d" % (len(nicnetworklist), len(self.imported_vm.nic))
+ )
+ for nic in self.imported_vm.nic:
+ index = int(nic.deviceid) # device id of imported nics will be in order of their import
+ self.assertEqual(
+ nicnetworklist[index]["network"],
+ nic.networkid,
+ "Imported VM NIC with id: %s has wrong network, expected: %s, actual: %s" % (nic.id, nicnetworklist[index]["network"], nic.networkid)
+ )
self.check_vm_state(self.imported_vm.id)
+ # 7 - Destroy VM. This will be done during cleanup