Skip to content

Commit 64e3074

Browse files
sanjeevneelarapuPrasanna Santhanam
authored andcommitted
Test Volumes: do not assume max.volumes attachable to guest
1.Current Implementation assumes 6 as the max volumes that can be attached to disk. Actually it depends on the hypervisor capabilities. 2.Modified the script to get the max limit from hypervsior capabilities. Signed-off-by: sanjeevneelarapu <sanjeev.neelarapu@citrix.com> Signed-off-by: Prasanna Santhanam <tsp@apache.org>
1 parent c03ba0c commit 64e3074

1 file changed

Lines changed: 60 additions & 5 deletions

File tree

test/integration/component/test_volumes.py

Lines changed: 60 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ def __init__(self):
5858
},
5959
"volume": {
6060
"diskname": "TestDiskServ",
61-
"max": 6,
6261
},
6362
"virtual_machine": {
6463
"displayname": "testVM",
@@ -97,6 +96,7 @@ def setUpClass(cls):
9796
# Get Zone, Domain and templates
9897
cls.domain = get_domain(cls.api_client, cls.services)
9998
cls.zone = get_zone(cls.api_client, cls.services)
99+
cls.pod = get_pod(cls.api_client, cls.zone.id, cls.services)
100100
cls.services['mode'] = cls.zone.networktype
101101
cls.disk_offering = DiskOffering.create(
102102
cls.api_client,
@@ -110,7 +110,25 @@ def setUpClass(cls):
110110
cls.services["zoneid"] = cls.zone.id
111111
cls.services["virtual_machine"]["zoneid"] = cls.zone.id
112112
cls.services["virtual_machine"]["template"] = template.id
113-
113+
#get max data volumes limit based on the hypervisor type and version
114+
listHost = Host.list(
115+
cls.api_client,
116+
hypervisor = cls.services["virtual_machine"]["hypervisor"],
117+
type ='Routing',
118+
zoneid = cls.zone.id,
119+
podid = cls.pod.id,
120+
)
121+
ver = listHost[0].hypervisorversion
122+
cmd = listHypervisorCapabilities.listHypervisorCapabilitiesCmd()
123+
cmd.hypervisor = cls.services["virtual_machine"]["hypervisor"]
124+
res = cls.api_client.listHypervisorCapabilities(cmd)
125+
cls.debug('Hypervisor Capabilities: {}'.format(res))
126+
for i in range(len(res)):
127+
if res[i].hypervisorversion == ver:
128+
break
129+
max_data_volumes = int(res[i].maxdatavolumeslimit)
130+
cls.debug('max data volumes:{}'.format(max_data_volumes))
131+
cls.services["volume"]["max"] = max_data_volumes
114132
# Create VMs, NAT Rules etc
115133
cls.account = Account.create(
116134
cls.api_client,
@@ -368,6 +386,7 @@ def setUpClass(cls):
368386
# Get Zone, Domain and templates
369387
cls.domain = get_domain(cls.api_client, cls.services)
370388
cls.zone = get_zone(cls.api_client, cls.services)
389+
cls.pod = get_pod(cls.api_client, cls.zone.id, cls.services)
371390
cls.services['mode'] = cls.zone.networktype
372391
cls.disk_offering = DiskOffering.create(
373392
cls.api_client,
@@ -381,7 +400,25 @@ def setUpClass(cls):
381400
cls.services["zoneid"] = cls.zone.id
382401
cls.services["virtual_machine"]["zoneid"] = cls.zone.id
383402
cls.services["virtual_machine"]["template"] = template.id
384-
403+
#get max data volumes limit based on the hypervisor type and version
404+
listHost = Host.list(
405+
cls.api_client,
406+
hypervisor = cls.services["virtual_machine"]["hypervisor"],
407+
type ='Routing',
408+
zoneid = cls.zone.id,
409+
podid = cls.pod.id,
410+
)
411+
ver = listHost[0].hypervisorversion
412+
cmd = listHypervisorCapabilities.listHypervisorCapabilitiesCmd()
413+
cmd.hypervisor = cls.services["virtual_machine"]["hypervisor"]
414+
res = cls.api_client.listHypervisorCapabilities(cmd)
415+
cls.debug('Hypervisor Capabilities: {}'.format(res))
416+
for i in range(len(res)):
417+
if res[i].hypervisorversion == ver:
418+
break
419+
max_data_volumes = int(res[i].maxdatavolumeslimit)
420+
cls.debug('max data volumes:{}'.format(max_data_volumes))
421+
cls.services["volume"]["max"] = max_data_volumes
385422
# Create VMs, NAT Rules etc
386423
cls.account = Account.create(
387424
cls.api_client,
@@ -614,6 +651,7 @@ def setUpClass(cls):
614651
# Get Zone, Domain and templates
615652
cls.domain = get_domain(cls.api_client, cls.services)
616653
cls.zone = get_zone(cls.api_client, cls.services)
654+
cls.pod = get_pod(cls.api_client, cls.zone.id, cls.services)
617655
cls.services['mode'] = cls.zone.networktype
618656
cls.disk_offering = DiskOffering.create(
619657
cls.api_client,
@@ -628,14 +666,31 @@ def setUpClass(cls):
628666
cls.services["virtual_machine"]["zoneid"] = cls.zone.id
629667
cls.services["iso"]["zoneid"] = cls.zone.id
630668
cls.services["virtual_machine"]["template"] = template.id
631-
669+
#get max data volumes limit based on the hypervisor type and version
670+
listHost = Host.list(
671+
cls.api_client,
672+
hypervisor = cls.services["virtual_machine"]["hypervisor"],
673+
type ='Routing',
674+
zoneid = cls.zone.id,
675+
podid = cls.pod.id,
676+
)
677+
ver = listHost[0].hypervisorversion
678+
cmd = listHypervisorCapabilities.listHypervisorCapabilitiesCmd()
679+
cmd.hypervisor = cls.services["virtual_machine"]["hypervisor"]
680+
res = cls.api_client.listHypervisorCapabilities(cmd)
681+
cls.debug('Hypervisor Capabilities: {}'.format(res))
682+
for i in range(len(res)):
683+
if res[i].hypervisorversion == ver:
684+
break
685+
max_data_volumes = int(res[i].maxdatavolumeslimit)
686+
cls.debug('max data volumes:{}'.format(max_data_volumes))
687+
cls.services["volume"]["max"] = max_data_volumes
632688
# Create VMs, NAT Rules etc
633689
cls.account = Account.create(
634690
cls.api_client,
635691
cls.services["account"],
636692
domainid=cls.domain.id
637693
)
638-
639694
cls.services["account"] = cls.account.name
640695
cls.service_offering = ServiceOffering.create(
641696
cls.api_client,

0 commit comments

Comments
 (0)