From ad258cc8f5e2ef5d524aae761501cdc32e397fc4 Mon Sep 17 00:00:00 2001 From: Gaurav Aradhye Date: Thu, 18 Dec 2014 15:23:13 +0530 Subject: [PATCH] CLOUDSTACK-8089: Fixed test_explicit_dedication.py test case and moved to maint folder for it is to be run separately Signed-off-by: pdion891 --- .../{ => maint}/test_explicit_dedication.py | 192 +++++++++--------- 1 file changed, 100 insertions(+), 92 deletions(-) rename test/integration/component/{ => maint}/test_explicit_dedication.py (53%) diff --git a/test/integration/component/test_explicit_dedication.py b/test/integration/component/maint/test_explicit_dedication.py similarity index 53% rename from test/integration/component/test_explicit_dedication.py rename to test/integration/component/maint/test_explicit_dedication.py index 71c4141100d..970795a1f7e 100644 --- a/test/integration/component/test_explicit_dedication.py +++ b/test/integration/component/maint/test_explicit_dedication.py @@ -16,82 +16,89 @@ # under the License. """ P1 tests for Storage motion """ -#Import Local Modules -import marvin -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.sshClient import SshClient -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * +# Import Local Modules +from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.lib.utils import cleanup_resources +from marvin.cloudstackAPI import dedicateHost, releaseDedicatedHost +from marvin.lib.base import (Account, + ServiceOffering, + VirtualMachine, + AffinityGroup) +from marvin.lib.common import (get_domain, + get_zone, + get_template, + list_hosts, + list_virtual_machines) from nose.plugins.attrib import attr -#Import System modules -import time _multiprocess_shared_ = True + + class Services: + """Test explicit dedication """ def __init__(self): self.services = { - "disk_offering":{ - "displaytext": "Small", - "name": "Small", - "disksize": 1 - }, - "account": { - "email": "test@test.com", - "firstname": "Test", - "lastname": "User", - "username": "testexplicit", - # Random characters are appended in create account to - # ensure unique username generated each time - "password": "password", - }, - "virtual_machine" : + "disk_offering": { + "displaytext": "Small", + "name": "Small", + "disksize": 1 + }, + "account": { + "email": "test@test.com", + "firstname": "Test", + "lastname": "User", + "username": "testexplicit", + # Random characters are appended in create account to + # ensure unique username generated each time + "password": "password", + }, + "virtual_machine": { "affinity": { "name": "explicit", "type": "ExplicitDedication", }, - "hypervisor" : "XenServer", - }, - "small": + "hypervisor": "XenServer", + }, + "small": # Create a small virtual machine instance with disk offering { "displayname": "testserver", - "username": "root", # VM creds for SSH + "username": "root", # VM creds for SSH "password": "password", "ssh_port": 22, "hypervisor": 'XenServer', "privateport": 22, "publicport": 22, "protocol": 'TCP', - }, - "service_offerings": + }, + "service_offerings": { - "for-explicit": + "for-explicit": { - # Small service offering ID to for change VM - # service offering from medium to small + # Small service offering ID to for change VM + # service offering from medium to small "name": "For explicit", "displaytext": "For explicit", "cpunumber": 1, "cpuspeed": 500, "memory": 512 } - }, - "template": { + }, + "template": { "displaytext": "Cent OS Template", "name": "Cent OS Template", "passwordenabled": True, - }, - "sleep": 60, + }, + "sleep": 60, "timeout": 10, "ostype": 'CentOS 5.3 (64-bit)' } + class TestExplicitDedication(cloudstackTestCase): @classmethod @@ -106,37 +113,36 @@ class TestExplicitDedication(cloudstackTestCase): cls.services['mode'] = cls.zone.networktype cls.template = get_template( - cls.api_client, - cls.zone.id, - cls.services["ostype"] - ) + cls.api_client, + cls.zone.id, + cls.services["ostype"] + ) # Set Zones and disk offerings cls.services["small"]["zoneid"] = cls.zone.id cls.services["small"]["template"] = cls.template.id # Create VMs, NAT Rules etc cls.account = Account.create( - cls.api_client, - cls.services["account"], - domainid=cls.domain.id - ) + cls.api_client, + cls.services["account"], + domainid=cls.domain.id + ) cls.small_offering = ServiceOffering.create( - cls.api_client, - cls.services["service_offerings"]["for-explicit"] - ) - - #cls.ag = AffinityGroup.create(cls.api_client, cls.services["virtual_machine"]["affinity"], - # account=cls.services["account"], domainid=cls.domain.id) + cls.api_client, + cls.services["service_offerings"]["for-explicit"] + ) cls._cleanup = [ - cls.small_offering, - cls.account - ] + cls.small_offering, + cls.account + ] @classmethod def tearDownClass(cls): - cls.api_client = super(TestExplicitDedication, cls).getClsTestClient().getApiClient() + cls.api_client = super( + TestExplicitDedication, + cls).getClsTestClient().getApiClient() cleanup_resources(cls.api_client, cls._cleanup) return @@ -146,57 +152,58 @@ class TestExplicitDedication(cloudstackTestCase): self.cleanup = [] def tearDown(self): - #Clean up, terminate the created ISOs + # Clean up, terminate the created ISOs cleanup_resources(self.apiclient, self.cleanup) return - # This test requires multi host and at least one host which is empty (no vms should - # be running on that host). It explicitly dedicates empty host to an account, deploys - # a vm for that account and verifies that the vm gets deployed to the dedicated host. - @attr(tags=["advanced", "basic", "multihosts", "explicitdedication"], required_hardware="false") + # This test requires multi host and at least one host which is empty + # (no vms should be running on that host). It explicitly dedicates + # empty host to an account, deploys a vm for that account and verifies + # that the vm gets deployed to the dedicated host. + @attr( + tags=[ + "advanced", + "basic", + "multihosts", + "explicitdedication"], + required_hardware="false") def test_01_deploy_vm_with_explicit_dedication(self): """Test explicit dedication is placing vms of an account on dedicated hosts. """ # Validate the following # 1. Find and dedicate an empty host to an account. - # 2. Create an affinity group for explicit dedication. - # 3. Create a vm deployment by passing the affinity group as a parameter. - # 4. Validate the vm got deployed on the dedicated host. - # 5. Cleanup. + # 2. Create a vm deployment by passing the affinity group as a + # parameter. + # 3. Validate the vm got deployed on the dedicated host. + # 4. Cleanup. # list and find an empty hosts all_hosts = list_hosts( - self.apiclient, - type='Routing', - ) + self.apiclient, + type='Routing', + ) empty_host = None for host in all_hosts: vms_on_host = list_virtual_machines( - self.api_client, - hostid=host.id) + self.api_client, + hostid=host.id) if not vms_on_host: empty_host = host break - #If no empty host is found, return - if empty_host: - self.skipTest("Did not find any empty hosts, Skipping") - - # Create an affinity group for explicit dedication. - agCmd = createAffinityGroup.createAffinityGroupCmd() - agCmd.name = "explicit-affinity" - agCmd.displayText = "explicit-affinity" - agCmd.account = self.account.name - agCmd.domainid = self.account.domainid - agCmd.type = self.services['virtual_machine']['affinity']['type'] - self.apiclient.createAffinityGroup(agCmd) + # If no empty host is found, return + if empty_host is None: + self.skipTest("Did not find any empty hosts, Skipping") # dedicate the empty host to this account. dedicateCmd = dedicateHost.dedicateHostCmd() dedicateCmd.hostid = empty_host.id dedicateCmd.domainid = self.domain.id - self.apiclient.dedicateHost(dedicateCmd) + self.api_client.dedicateHost(dedicateCmd) + affinitygroup = AffinityGroup.list( + self.apiclient, + type="ExplicitDedication") # deploy vm on the dedicated resource. vm = VirtualMachine.create( @@ -205,22 +212,22 @@ class TestExplicitDedication(cloudstackTestCase): accountid=self.account.name, domainid=self.account.domainid, serviceofferingid=self.small_offering.id, - affinitygroupnames=["explicit-affinity"], + affinitygroupids=affinitygroup[0].id, mode=self.services["mode"] ) list_vm_response = list_virtual_machines( - self.apiclient, - id=vm.id - ) + self.apiclient, + id=vm.id + ) vm_response = list_vm_response[0] self.assertEqual( - vm_response.hostid, - empty_host.id, - "Check destination hostID of deployed VM" - ) + vm_response.hostid, + empty_host.id, + "Check destination hostID of deployed VM" + ) # release the dedicated host to this account. releaseCmd = releaseDedicatedHost.releaseDedicatedHostCmd() @@ -228,6 +235,7 @@ class TestExplicitDedication(cloudstackTestCase): releaseCmd.domainid = self.domain.id self.apiclient.releaseDedicatedHost(releaseCmd) - #Deletion of the created VM and affinity group is taken care as part of account clean + # Deletion of the created VM and affinity group is taken care as part + # of account clean return