From 247c7966938e27ca67bd2f1075d4211ab11b97bf Mon Sep 17 00:00:00 2001 From: Girish Shilamkar Date: Wed, 30 Apr 2014 03:40:40 -0400 Subject: [PATCH] CLOUDSTACK-6536: Code cleanup - removing unnecessary waits after VM stop operation, modifying imports, removing white-spaces, adding try catch blocks whenever necessary --- .../component/test_add_remove_network.py | 26 +- .../component/test_blocker_bugs.py | 40 ++- .../component/test_custom_hostname.py | 17 +- .../test_dynamic_compute_offering.py | 241 ++++++------- .../component/test_egress_rules.py | 30 +- .../integration/component/test_escalations.py | 269 +++++++-------- .../component/test_netscaler_configs.py | 88 +++-- .../component/test_netscaler_lb.py | 81 ++--- .../component/test_netscaler_nw_off.py | 150 ++++---- .../component/test_network_offering.py | 31 +- .../component/test_persistent_networks.py | 61 ++-- .../component/test_project_resources.py | 103 +++--- .../component/test_project_usage.py | 109 +++--- .../test_redundant_router_cleanups.py | 39 +-- .../component/test_reset_ssh_keypair.py | 204 +++++------ .../component/test_resource_limits.py | 168 ++++----- .../component/test_security_groups.py | 68 ++-- test/integration/component/test_stopped_vm.py | 104 +++--- test/integration/component/test_tags.py | 183 ++++------ test/integration/component/test_templates.py | 134 ++++---- test/integration/component/test_usage.py | 129 +++---- test/integration/component/test_volumes.py | 321 +++++++----------- .../integration/component/test_vpc_network.py | 4 - .../component/test_vpc_vm_life_cycle.py | 48 +-- .../smoke/test_service_offerings.py | 22 +- test/integration/smoke/test_templates.py | 155 ++++----- test/integration/smoke/test_vm_life_cycle.py | 79 ++--- test/integration/smoke/test_volumes.py | 59 ++-- 28 files changed, 1342 insertions(+), 1621 deletions(-) diff --git a/test/integration/component/test_add_remove_network.py b/test/integration/component/test_add_remove_network.py index 3e0e78b9bb6..c17293d17af 100644 --- a/test/integration/component/test_add_remove_network.py +++ b/test/integration/component/test_add_remove_network.py @@ -347,14 +347,10 @@ class TestAddNetworkToVirtualMachine(cloudstackTestCase): # Validate the following: # 1. New nic is generated for the added network - self.debug("Stopping Virtual Machine: %s" % self.virtual_machine.id) - self.virtual_machine.stop(self.apiclient) - - vm_list = list_virtual_machines(self.apiclient,id=self.virtual_machine.id) - vm_list_validation_result = validateList(vm_list) - self.assertEqual(vm_list_validation_result[0], PASS, "vm list validation failed due to %s" % - vm_list_validation_result[2]) - self.assertTrue(vm_list[0].state == 'Stopped', "Failed to stop VM, the state is %s" % vm_list[0].state) + try: + self.virtual_machine.stop(self.apiclient) + except Exception as e: + self.fail("Failed to stop VM: %s" % e) network = None #The network which we are adding to the vm if value == "isolated": @@ -451,16 +447,10 @@ class TestAddNetworkToVirtualMachine(cloudstackTestCase): # Validate the following: # 1. Adding VPC to vm should fail - self.debug("Stopping Virtual Machine: %s" % self.virtual_machine.id) - self.virtual_machine.stop(self.apiclient) - - vm_list = list_virtual_machines(self.apiclient,id=self.virtual_machine.id) - #validation vm list - vm_list_validation_result = validateList(vm_list) - self.assertEqual(vm_list_validation_result[0], PASS, "vm list validation failed due to %s" % - vm_list_validation_result[2]) - - self.assertTrue(vm_list[0].state == 'Stopped', "Failed to stop VM, the state is %s" % vm_list[0].state) + try: + self.virtual_machine.stop(self.apiclient) + except Exception as e: + self.fail("Failed to stop virtual machine: %s" % e) self.addNetworkToVm(self.isolated_network, self.virtual_machine) diff --git a/test/integration/component/test_blocker_bugs.py b/test/integration/component/test_blocker_bugs.py index ba2602ca2ed..ba15b186c1b 100644 --- a/test/integration/component/test_blocker_bugs.py +++ b/test/integration/component/test_blocker_bugs.py @@ -28,7 +28,7 @@ from marvin.lib.base import (Snapshot, StaticNATRule, FireWallRule, Volume) -from marvin.lib.utils import cleanup_resources +from marvin.lib.utils import cleanup_resources, validateList from marvin.lib.common import (get_zone, get_domain, get_template, @@ -36,8 +36,9 @@ from marvin.lib.common import (get_zone, get_builtin_template_info) #Import Local Modules -from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.cloudstackTestCase import cloudstackTestCase, unittest from marvin.cloudstackAPI import restartNetwork +from marvin.codes import PASS import time @@ -744,20 +745,24 @@ class TestTemplates(cloudstackTestCase): cls.services["ostype"] ) cls.services["virtual_machine"]["zoneid"] = cls.zone.id - cls.account = Account.create( + cls._cleanup = [] + try: + cls.account = Account.create( cls.api_client, cls.services["account"], domainid=cls.domain.id ) + cls._cleanup.append(cls.account) - cls.services["account"] = cls.account.name - cls.service_offering = ServiceOffering.create( + cls.services["account"] = cls.account.name + cls.service_offering = ServiceOffering.create( cls.api_client, cls.services["service_offering"], ) + cls._cleanup.append(cls.service_offering) - # create virtual machine - cls.virtual_machine = VirtualMachine.create( + # create virtual machine + cls.virtual_machine = VirtualMachine.create( cls.api_client, cls.services["virtual_machine"], templateid=template.id, @@ -765,27 +770,20 @@ class TestTemplates(cloudstackTestCase): domainid=cls.account.domainid, serviceofferingid=cls.service_offering.id, ) - #Stop virtual machine - cls.virtual_machine.stop(cls.api_client) + #Stop virtual machine + cls.virtual_machine.stop(cls.api_client) - #Wait before server has be successfully stopped - time.sleep(30) - list_volume = Volume.list( + listvolumes = Volume.list( cls.api_client, virtualmachineid=cls.virtual_machine.id, type='ROOT', listall=True ) - try: - if isinstance(list_volume, list): - cls.volume = list_volume[0] + assert validateList(listvolumes)[0] == PASS, "volumes list is empty" + cls.volume = listvolumes[0] except Exception as e: - raise Exception("Warning: Exception during setup : %s" % e) - - cls._cleanup = [ - cls.service_offering, - cls.account, - ] + cls.tearDownClass() + raise unittest.SkipTest("Exception in setUpClass: %s" % e) @classmethod def tearDownClass(cls): diff --git a/test/integration/component/test_custom_hostname.py b/test/integration/component/test_custom_hostname.py index 7eeda492583..637be86d6ba 100644 --- a/test/integration/component/test_custom_hostname.py +++ b/test/integration/component/test_custom_hostname.py @@ -17,12 +17,19 @@ """ P1 tests for user provide hostname cases """ #Import Local Modules -import marvin + from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * +from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.lib.utils import (cleanup_resources, + random_gen) +from marvin.lib.base import (ServiceOffering, + Configurations, + VirtualMachine, + Account) +from marvin.lib.common import (get_domain, + get_zone, + get_template, + is_config_suitable) class Services: diff --git a/test/integration/component/test_dynamic_compute_offering.py b/test/integration/component/test_dynamic_compute_offering.py index 8cb6eb1ea9b..393977726a8 100644 --- a/test/integration/component/test_dynamic_compute_offering.py +++ b/test/integration/component/test_dynamic_compute_offering.py @@ -24,12 +24,22 @@ Feature Specifications: https://cwiki.apache.org/confluence/display/CLOUDSTACK/Dynamic+Compute+Offering+FS """ from marvin.cloudstackTestCase import cloudstackTestCase -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * +from marvin.lib.utils import (cleanup_resources, + validateList, + random_gen) +from marvin.lib.base import (Account, + VirtualMachine, + ServiceOffering, + Resources, + AffinityGroup, + Host) +from marvin.lib.common import (get_zone, + get_domain, + get_template, + verifyComputeOfferingCreation) from nose.plugins.attrib import attr -from marvin.codes import PASS, ADMIN_ACCOUNT, USER_ACCOUNT +from marvin.codes import PASS, ADMIN_ACCOUNT, USER_ACCOUNT, FAILED from ddt import ddt, data @ddt @@ -460,27 +470,6 @@ class TestScaleVmDynamicServiceOffering(cloudstackTestCase): raise Exception("Warning: Exception during cleanup : %s" % e) return - def stopVM(self, vm): - """Stop VM and verify that it is indeed in stopped state""" - try: - vm.stop(self.apiclient) - except Exception as e: - self.fail("Failed to stop VM: %s" % e) - - retriesCount = 10 - while True: - vmlist = VirtualMachine.list(self.apiclient, id=vm.id) - if str(vmlist[0].state).lower() == "stopped": - break - elif retriesCount == 0: - self.fail("Failed to stop VM even after 10 minutes") - else: - retriesCount -= 1 - time.sleep(60) - continue - # End while - return - @data(ADMIN_ACCOUNT, USER_ACCOUNT) @attr(tags=["basic","advanced"]) def test_change_so_stopped_vm_static_to_static(self, value): @@ -500,46 +489,43 @@ class TestScaleVmDynamicServiceOffering(cloudstackTestCase): if value == USER_ACCOUNT: isadmin=False - # Create Account - self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id, admin=isadmin) - apiclient = self.testClient.getUserApiClient( + try: + # Create Account + self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id, admin=isadmin) + self.cleanup.append(self.account) + apiclient = self.testClient.getUserApiClient( UserName=self.account.name, DomainName=self.account.domain) - self.cleanup.append(self.account) - # Create static service offerings (Second offering should have - # one of the custom values greater than 1st one, scaling down is not allowed - self.services["service_offering"]["cpunumber"] = "2" - self.services["service_offering"]["cpuspeed"] = "256" - self.services["service_offering"]["memory"] = "128" + # Create static service offerings (Second offering should have + # one of the custom values greater than 1st one, scaling down is not allowed + self.services["service_offering"]["cpunumber"] = "2" + self.services["service_offering"]["cpuspeed"] = "256" + self.services["service_offering"]["memory"] = "128" - serviceOffering_static_1 = ServiceOffering.create(self.apiclient, + serviceOffering_static_1 = ServiceOffering.create(self.apiclient, self.services["service_offering"]) - self.services["service_offering"]["cpunumber"] = "4" + self.services["service_offering"]["cpunumber"] = "4" - serviceOffering_static_2 = ServiceOffering.create(self.apiclient, + serviceOffering_static_2 = ServiceOffering.create(self.apiclient, self.services["service_offering"]) - self.cleanup_co.append(serviceOffering_static_1) - self.cleanup_co.append(serviceOffering_static_2) + self.cleanup_co.append(serviceOffering_static_1) + self.cleanup_co.append(serviceOffering_static_2) - # Deploy VM - try: + # Deploy VM virtualMachine = VirtualMachine.create(apiclient,self.services["virtual_machine"], serviceofferingid=serviceOffering_static_1.id, accountid=self.account.name,domainid=self.account.domainid) - except Exception as e: - self.fail("vm creation failed: %s" % e) - # Stop VM and verify it is in stopped state - self.stopVM(virtualMachine) + # Stop VM + virtualMachine.stop(apiclient) - # Scale VM to new static service offering - try: + # Scale VM to new static service offering virtualMachine.scale(apiclient, serviceOfferingId=serviceOffering_static_2.id) except Exception as e: - self.fail("Failure while changing service offering: %s" % e) + self.fail("Exception occured: %s" % e) return @data(ADMIN_ACCOUNT, USER_ACCOUNT) @@ -565,69 +551,59 @@ class TestScaleVmDynamicServiceOffering(cloudstackTestCase): if value == USER_ACCOUNT: isadmin=False - # Create Account and api client - self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id, admin=isadmin) - apiclient = self.testClient.getUserApiClient( + try: + # Create Account and api client + self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id, admin=isadmin) + apiclient = self.testClient.getUserApiClient( UserName=self.account.name, DomainName=self.account.domain) - self.cleanup.append(self.account) + self.cleanup.append(self.account) - # Create static and dynamic service offerings - self.services["service_offering"]["cpunumber"] = "2" - self.services["service_offering"]["cpuspeed"] = "256" - self.services["service_offering"]["memory"] = "128" + # Create static and dynamic service offerings + self.services["service_offering"]["cpunumber"] = "2" + self.services["service_offering"]["cpuspeed"] = "256" + self.services["service_offering"]["memory"] = "128" - serviceOffering_static = ServiceOffering.create(self.apiclient, + serviceOffering_static = ServiceOffering.create(self.apiclient, self.services["service_offering"]) - self.services["service_offering"]["cpunumber"] = "" - self.services["service_offering"]["cpuspeed"] = "" - self.services["service_offering"]["memory"] = "" + self.services["service_offering"]["cpunumber"] = "" + self.services["service_offering"]["cpuspeed"] = "" + self.services["service_offering"]["memory"] = "" - serviceOffering_dynamic = ServiceOffering.create(self.apiclient, + serviceOffering_dynamic = ServiceOffering.create(self.apiclient, self.services["service_offering"]) - self.cleanup_co.append(serviceOffering_static) - self.cleanup_co.append(serviceOffering_dynamic) + self.cleanup_co.append(serviceOffering_static) + self.cleanup_co.append(serviceOffering_dynamic) - # Deploy VM with static service offering - try: + # Deploy VM with static service offering virtualMachine_1 = VirtualMachine.create(apiclient,self.services["virtual_machine"], serviceofferingid=serviceOffering_static.id, accountid=self.account.name,domainid=self.account.domainid) - except Exception as e: - self.fail("vm creation failed: %s" % e) - # Stop VM and verify it is in stopped state - self.stopVM(virtualMachine_1) + # Stop VM + virtualMachine_1.stop(apiclient) - # Scale VM to dynamic service offering proving all custom values - try: + # Scale VM to dynamic service offering proving all custom values virtualMachine_1.scale(apiclient, serviceOfferingId=serviceOffering_dynamic.id, customcpunumber=4, customcpuspeed=256, custommemory=128) - except Exception as e: - self.fail("Failure while changing service offering: %s" % e) - # Deploy VM with static service offering - try: + # Deploy VM with static service offering virtualMachine_2 = VirtualMachine.create(apiclient,self.services["virtual_machine"], serviceofferingid=serviceOffering_static.id, accountid=self.account.name,domainid=self.account.domainid) + + # Stop VM + virtualMachine_2.stop(apiclient) except Exception as e: - self.fail("vm creation failed: %s" % e) + self.fail("Exception occuered: %s" % e) - # Stop VM and verify it is in stopped state - self.stopVM(virtualMachine_2) - - # Scale VM to dynamic service offering proving only custom cpu number - try: + # Scale VM to dynamic service offering proving only custom cpu number + with self.assertRaises(Exception): virtualMachine_2.scale(apiclient, serviceOfferingId=serviceOffering_dynamic.id, customcpunumber=4) - self.fail("Changing service offering with incomplete data should have failed, it succeded") - except Exception as e: - self.debug("Failure while changing service offering as expected: %s" % e) - return @data(ADMIN_ACCOUNT, USER_ACCOUNT) @@ -649,48 +625,45 @@ class TestScaleVmDynamicServiceOffering(cloudstackTestCase): if value == USER_ACCOUNT: isadmin=False - # Create account and api client - self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id, admin=isadmin) - apiclient = self.testClient.getUserApiClient( + try: + # Create account and api client + self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id, admin=isadmin) + apiclient = self.testClient.getUserApiClient( UserName=self.account.name, DomainName=self.account.domain) - self.cleanup.append(self.account) + self.cleanup.append(self.account) - # Create dynamic and static service offering - self.services["service_offering"]["cpunumber"] = "" - self.services["service_offering"]["cpuspeed"] = "" - self.services["service_offering"]["memory"] = "" + # Create dynamic and static service offering + self.services["service_offering"]["cpunumber"] = "" + self.services["service_offering"]["cpuspeed"] = "" + self.services["service_offering"]["memory"] = "" - serviceOffering_dynamic = ServiceOffering.create(self.apiclient, + serviceOffering_dynamic = ServiceOffering.create(self.apiclient, self.services["service_offering"]) - self.services["service_offering"]["cpunumber"] = "4" - self.services["service_offering"]["cpuspeed"] = "256" - self.services["service_offering"]["memory"] = "128" + self.services["service_offering"]["cpunumber"] = "4" + self.services["service_offering"]["cpuspeed"] = "256" + self.services["service_offering"]["memory"] = "128" - serviceOffering_static = ServiceOffering.create(self.apiclient, + serviceOffering_static = ServiceOffering.create(self.apiclient, self.services["service_offering"]) - self.cleanup_co.append(serviceOffering_static) - self.cleanup_co.append(serviceOffering_dynamic) + self.cleanup_co.append(serviceOffering_static) + self.cleanup_co.append(serviceOffering_dynamic) - # Deploy VM with dynamic service offering - try: + # Deploy VM with dynamic service offering virtualMachine = VirtualMachine.create(apiclient,self.services["virtual_machine"], serviceofferingid=serviceOffering_dynamic.id, accountid=self.account.name,domainid=self.account.domainid, customcpunumber=2, customcpuspeed=256, custommemory=128) - except Exception as e: - self.fail("vm creation failed: %s" % e) - # Stop VM and verify that it is in stopped state - self.stopVM(virtualMachine) + # Stop VM and verify that it is in stopped state + virtualMachine.stop(apiclient) - # Scale VM to static service offering - try: + # Scale VM to static service offering virtualMachine.scale(apiclient, serviceOfferingId=serviceOffering_static.id) except Exception as e: - self.fail("Failure while changing service offering: %s" % e) + self.fail("Exception occured: %s" % e) return @data(ADMIN_ACCOUNT, USER_ACCOUNT) @@ -717,62 +690,52 @@ class TestScaleVmDynamicServiceOffering(cloudstackTestCase): if value == USER_ACCOUNT: isadmin=False - # Create Account - self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id, admin=isadmin) - apiclient = self.testClient.getUserApiClient( + try: + # Create Account + self.account = Account.create(self.apiclient,self.services["account"],domainid=self.domain.id, admin=isadmin) + apiclient = self.testClient.getUserApiClient( UserName=self.account.name, DomainName=self.account.domain) - self.cleanup.append(self.account) + self.cleanup.append(self.account) - # Create dynamic service offerings - self.services["service_offering"]["cpunumber"] = "" - self.services["service_offering"]["cpuspeed"] = "" - self.services["service_offering"]["memory"] = "" + # Create dynamic service offerings + self.services["service_offering"]["cpunumber"] = "" + self.services["service_offering"]["cpuspeed"] = "" + self.services["service_offering"]["memory"] = "" - serviceOffering_dynamic_1 = ServiceOffering.create(self.apiclient, + serviceOffering_dynamic_1 = ServiceOffering.create(self.apiclient, self.services["service_offering"]) - serviceOffering_dynamic_2 = ServiceOffering.create(self.apiclient, + serviceOffering_dynamic_2 = ServiceOffering.create(self.apiclient, self.services["service_offering"]) - self.cleanup_co.append(serviceOffering_dynamic_1) - self.cleanup_co.append(serviceOffering_dynamic_2) + self.cleanup_co.append(serviceOffering_dynamic_1) + self.cleanup_co.append(serviceOffering_dynamic_2) - # Deploy VM with dynamic service offering - try: + # Deploy VM with dynamic service offering virtualMachine = VirtualMachine.create(apiclient,self.services["virtual_machine"], serviceofferingid=serviceOffering_dynamic_1.id, accountid=self.account.name,domainid=self.account.domainid, customcpunumber=2, customcpuspeed=256, custommemory=128) - except Exception as e: - self.fail("vm creation failed: %s" % e) - # Stop VM and verify that it is in stopped state - self.stopVM(virtualMachine) + # Stop VM + virtualMachine.stop(apiclient) - # Scale VM with same dynamic service offering - try: + # Scale VM with same dynamic service offering virtualMachine.scale(apiclient, serviceOfferingId=serviceOffering_dynamic_1.id, customcpunumber=4, customcpuspeed=512, custommemory=256) - except Exception as e: - self.fail("Failure while changing service offering: %s" % e) - # Scale VM with other dynamic service offering - try: + # Scale VM with other dynamic service offering virtualMachine.scale(apiclient, serviceOfferingId=serviceOffering_dynamic_2.id, customcpunumber=4, customcpuspeed=512, custommemory=256) except Exception as e: - self.fail("Failure while changing service offering: %s" % e) + self.fail("Exception occured: %s" % e) # Scale VM with dynamic service offering proving custom value # only for cpu number - try: + with self.assertRaises(Exception): virtualMachine.scale(apiclient, serviceOfferingId=serviceOffering_dynamic_1.id, customcpunumber=4) - self.fail("Changing service offering should have failed, it succeded") - except Exception as e: - self.debug("Failure while changing service offering: %s" % e) - return @data(ADMIN_ACCOUNT, USER_ACCOUNT) diff --git a/test/integration/component/test_egress_rules.py b/test/integration/component/test_egress_rules.py index f0b98e4a628..0f05c07a228 100644 --- a/test/integration/component/test_egress_rules.py +++ b/test/integration/component/test_egress_rules.py @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -1901,27 +1901,11 @@ class TestStartStopVMWithEgressRule(cloudstackTestCase): "Check egress rule created properly" ) - # Stop virtual machine - self.debug("Stopping virtual machine: %s" % self.virtual_machine.id) - self.virtual_machine.stop(self.apiclient) - - vms = VirtualMachine.list( - self.apiclient, - id=self.virtual_machine.id, - listall=True - ) - self.assertEqual( - isinstance(vms, list), - True, - "List VM should return a valid list" - ) - vm = vms[0] - self.assertEqual( - vm.state, - "Stopped", - "VM state should be stopped" - ) - self.debug("VM: %s state: %s" % (vm.id, vm.state)) + try: + # Stop virtual machine + self.virtual_machine.stop(self.apiclient) + except Exception as e: + self.fail("Failed to stop instance: %s" % e) # Start virtual machine self.debug("Starting virtual machine: %s" % self.virtual_machine.id) diff --git a/test/integration/component/test_escalations.py b/test/integration/component/test_escalations.py index c07cf971c63..ed00b325714 100644 --- a/test/integration/component/test_escalations.py +++ b/test/integration/component/test_escalations.py @@ -16,23 +16,47 @@ # under the License. #Import Local Modules -from marvin.cloudstackTestCase import * -from marvin.cloudstackException 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 * -from marvin.lib.utils import checkVolumeSize -from marvin.codes import SUCCESS +from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.cloudstackAPI import (createVolume, + createTemplate) +from marvin.lib.base import (Volume, + Iso, + VirtualMachine, + Template, + Snapshot, + SecurityGroup, + Account, + Zone, + Network, + NetworkOffering, + DiskOffering, + ServiceOffering, + VmSnapshot, + SnapshotPolicy, + SSHKeyPair, + Resources, + Configurations, + VpnCustomerGateway, + Hypervisor, + VpcOffering, + VPC, + NetworkACL) +from marvin.lib.common import (get_zone, + get_domain, + get_template, + list_os_types) +from marvin.lib.utils import (validateList, + cleanup_resources, + random_gen) +from marvin.codes import (PASS, FAIL, EMPTY_LIST) from nose.plugins.attrib import attr -from time import sleep +import time class TestVolumes(cloudstackTestCase): @classmethod def setUpClass(cls): - + cls.testClient = super(TestVolumes, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() @@ -112,9 +136,9 @@ class TestVolumes(cloudstackTestCase): except Exception as e: raise Exception("Warning: Exception during cleanup : %s" % e) - + def __verify_values(self, expected_vals, actual_vals): - """ + """ @summary: Function to verify expected and actual values Step1: Initializing return flag to True Step1: Verifying length of expected and actual dictionaries is matching. @@ -2142,7 +2166,7 @@ class TestListInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "selfservice"]) def test_04_list_Destroyed_vm(self): - """ + """ @Desc: Test List Destroyed VM's @Steps: Step1: Listing all the Destroyed VMs for a user @@ -2250,7 +2274,7 @@ class TestListInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "selfservice"]) def test_05_list_vm_by_id(self): - """ + """ @Desc: Test List VM by Id @Steps: Step1: Listing all the VMs for a user @@ -2352,7 +2376,7 @@ class TestListInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "selfservice"]) def test_06_list_vm_by_name(self): - """ + """ @Desc: Test List VM's by Name @Steps: Step1: Listing all the VMs for a user @@ -2394,7 +2418,7 @@ class TestListInstances(cloudstackTestCase): ) self.cleanup.append(vm_created) vms.update({i: vm_created}) - + # Listing all the VM's for a User list_vms_after = VirtualMachine.list( self.userapiclient, @@ -3198,22 +3222,6 @@ class TestListInstances(cloudstackTestCase): self.userapiclient, forced=True ) - # Listing VM details - list_vm = VirtualMachine.list( - self.userapiclient, - id=vm_created.id - ) - status = validateList(list_vm) - self.assertEquals( - PASS, - status[0], - "Listing of VM failed" - ) - self.assertEquals( - "Stopped", - list_vm[0].state, - "Stopped VM is not in stopped state" - ) # Listing all the SSH Key pairs list_keypairs_before = SSHKeyPair.list( self.userapiclient @@ -3284,7 +3292,7 @@ class TestListInstances(cloudstackTestCase): @attr(tags=["advanced", "provisioning"]) def test_12_vm_nics(self): - """ + """ @Desc: Test to verify Nics for a VM @Steps: Step1: Deploying a VM @@ -3293,7 +3301,7 @@ class TestListInstances(cloudstackTestCase): Step4: Creating 1 network Step5: Listing all the networks again Step6: Verifying that the list size is 2 - Step7: Verifying that VM deployed in step1 has only 1 nic + Step7: Verifying that VM deployed in step1 has only 1 nic and it is same as network listed in step3 Step8: Adding the networks created in step4 to VM deployed in step1 Step9: Verifying that VM deployed in step1 has 2 nics @@ -3465,7 +3473,6 @@ class TestListInstances(cloudstackTestCase): default_nic = vm_nics_after[i] else: non_default_nic = vm_nics_after[i] - self.assertEquals( 1, default_count, @@ -3513,7 +3520,7 @@ class TestListInstances(cloudstackTestCase): default_nic = vm_nics_after[i] else: non_default_nic = vm_nics_after[i] - + self.assertEquals( 1, default_count, @@ -3566,7 +3573,7 @@ class TestInstances(cloudstackTestCase): @classmethod def setUpClass(cls): try: - cls._cleanup = [] + cls._cleanup = [] cls.testClient = super(TestInstances, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() @@ -3587,13 +3594,13 @@ class TestInstances(cloudstackTestCase): cls.storagetype = 'shared' cls.services["service_offerings"]["tiny"]["storagetype"] = 'shared' cls.services["disk_offering"]["storagetype"] = 'shared' - + cls.services['mode'] = cls.zone.networktype cls.services["virtual_machine"]["hypervisor"] = cls.testClient.getHypervisorInfo() cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.services["custom_volume"]["zoneid"] = cls.zone.id - + # Creating Disk offering, Service Offering and Account cls.disk_offering = DiskOffering.create( cls.api_client, @@ -3648,7 +3655,7 @@ class TestInstances(cloudstackTestCase): return def __verify_values(self, expected_vals, actual_vals): - """ + """ @Desc: Function to verify expected and actual values @Steps: Step1: Initializing return flag to True @@ -3660,10 +3667,10 @@ class TestInstances(cloudstackTestCase): Step4: returning the return flag after all the values are verified """ return_flag = True - + if len(expected_vals) != len(actual_vals): return False - + keys = expected_vals.keys() for i in range(0, len(expected_vals)): exp_val = expected_vals[keys[i]] @@ -3680,8 +3687,8 @@ class TestInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_13_attach_detach_iso(self): - """ - @Desc: Test Attach ISO to VM and Detach ISO from VM. + """ + @Desc: Test Attach ISO to VM and Detach ISO from VM. @Steps: Step1: Listing all the VMs for a user Step2: Verifying that the size of the list is 0 @@ -3808,15 +3815,15 @@ class TestInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_14_vm_snapshot_pagination(self): - """ - @Desc: Test VM Snapshots pagination. + """ + @Desc: Test VM Snapshots pagination. @Steps: Step1: Deploying a VM Step2: Listing all the Snapshots of the VM deployed in Step 1 Step3: Verifying that the list size is 0 Step4: Creating (pagesize + 1) number of Snapshots for the VM Step5: Listing all the Snapshots of the VM deployed in Step 1 - Step6: Verifying that the list size is (pagesize + 1) + Step6: Verifying that the list size is (pagesize + 1) Step7: Listing all the VM snapshots in Page 1 with page size Step8: Verifying that size of the list is same as page size Step9: Listing all the VM snapshots in Page 2 with page size @@ -3965,8 +3972,8 @@ class TestInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_15_revert_vm_to_snapshot(self): - """ - @Desc: Test Revert VM to Snapshot functionality. + """ + @Desc: Test Revert VM to Snapshot functionality. @Steps: Step1: Deploying a VM Step2: Listing all the Snapshots of the VM deployed in Step 1 @@ -4064,14 +4071,14 @@ class TestInstances(cloudstackTestCase): len(list_snapshots_after), "Count of VM Snapshots is not matching" ) - # Verifying that only 1 snapshot is having current flag set to true + # Verifying that only 1 snapshot is having current flag set to true # and that snapshot is the latest snapshot created (snapshot2) current_count = 0 for i in range(0, len(list_snapshots_after)): if(list_snapshots_after[i].current is True): current_count = current_count + 1 current_snapshot = list_snapshots_after[i] - + self.assertEquals( 1, current_count, @@ -4104,7 +4111,7 @@ class TestInstances(cloudstackTestCase): len(list_snapshots_after), "Count of VM Snapshots is not matching" ) - # Verifying that only 1 snapshot is having current flag set to true + # Verifying that only 1 snapshot is having current flag set to true # and that snapshot is snapshot1 current_count = 0 for i in range(0, len(list_snapshots_after)): @@ -4125,7 +4132,7 @@ class TestInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "selfservice"]) def test_16_list_vm_volumes_pagination(self): - """ + """ @Desc: Test to verify pagination of Volumes for a VM @Steps: Step1: Deploying a VM @@ -4218,7 +4225,7 @@ class TestInstances(cloudstackTestCase): self.userapiclient, volume_created ) - + # List all the volumes for the VM again list_volumes_after = Volume.list( self.userapiclient, @@ -4299,7 +4306,7 @@ class TestInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_17_running_vm_scaleup(self): - """ + """ @Desc: Test to verify change service for Running VM @Steps: Step1: Checking if dynamic scaling of virtual machines is enabled in zone and template. @@ -4437,7 +4444,7 @@ class TestInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_18_stopped_vm_change_service(self): - """ + """ @Desc: Test to verify change service for Stopped VM @Steps: Step1: Deploying a VM @@ -4504,22 +4511,6 @@ class TestInstances(cloudstackTestCase): self.userapiclient, forced=True ) - # Listing VM details - list_vm = VirtualMachine.list( - self.userapiclient, - id=vm_created.id - ) - status = validateList(list_vms_after) - self.assertEquals( - PASS, - status[0], - "Listing of VM failed" - ) - self.assertEquals( - "Stopped", - list_vm[0].state, - "Stopped VM is not in stopped state" - ) # Listing all the service offerings service_offerings_list = ServiceOffering.list( self.userapiclient, @@ -4573,7 +4564,7 @@ class TestInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_19_create_reset_vm_sshkey(self): - """ + """ @Desc: Test to verify creation and reset of SSH Key for VM @Steps: Step1: Deploying a VM @@ -4629,22 +4620,6 @@ class TestInstances(cloudstackTestCase): self.userapiclient, forced=True ) - # Listing VM details - list_vm = VirtualMachine.list( - self.userapiclient, - id=vm_created.id - ) - status = validateList(list_vm) - self.assertEquals( - PASS, - status[0], - "Listing of VM failed" - ) - self.assertEquals( - "Stopped", - list_vm[0].state, - "Stopped VM is not in stopped state" - ) # Listing all the SSH Key pairs list_keypairs_before = SSHKeyPair.list( self.userapiclient @@ -4652,7 +4627,7 @@ class TestInstances(cloudstackTestCase): list_keypairs_before_size = 0 if list_keypairs_before is not None: list_keypairs_before_size = len(list_keypairs_before) - + # Creating a new Key pair new_keypair = SSHKeyPair.create( self.userapiclient, @@ -4716,7 +4691,7 @@ class TestInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "selfservice"]) def test_20_update_vm_displayname_group(self): - """ + """ @Desc: Test to verify Update VM details @Steps: Step1: List all the VM's for a user @@ -4817,7 +4792,7 @@ class TestInstances(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_21_restore_vm(self): - """ + """ @Desc: Test to verify Restore VM @Steps: Step1: List all the VM's for a user @@ -4904,7 +4879,7 @@ class TestInstances(cloudstackTestCase): @attr(tags=["advanced", "selfservice"]) def test_22_deploy_vm_multiple_networks(self): - """ + """ @Desc: Test to verify deploy VM with multiple networks @Steps: Step1: List all the networks for user @@ -4924,7 +4899,7 @@ class TestInstances(cloudstackTestCase): networks_list_size = 0 if networks_list_before is not None: networks_list_size = len(networks_list_before) - + # Listing Network Offerings network_offerings_list = NetworkOffering.list( self.apiClient, @@ -4956,7 +4931,7 @@ class TestInstances(cloudstackTestCase): ) self.cleanup.append(network) networks_list_size = networks_list_size + 1 - + # Listing the networks again networks_list_after = Network.list( self.userapiclient, @@ -5036,7 +5011,7 @@ class TestInstances(cloudstackTestCase): @attr(tags=["basic", "provisioning"]) def test_23_deploy_vm_multiple_securitygroups(self): - """ + """ @Desc: Test to verify deploy VM with multiple Security Groups @Steps: Step1: List all the security groups for user @@ -5057,7 +5032,7 @@ class TestInstances(cloudstackTestCase): security_groups_list_size = 0 if security_groups_list is not None: security_groups_list_size = len(security_groups_list) - + while security_groups_list_size < 2: # Creating a security group security_group = SecurityGroup.create( @@ -5072,7 +5047,7 @@ class TestInstances(cloudstackTestCase): ) self.cleanup.append(security_group) security_groups_list_size = security_groups_list_size + 1 - + # Listing the networks again security_groups_list = SecurityGroup.list( self.userapiclient, @@ -5142,7 +5117,7 @@ class TestInstances(cloudstackTestCase): (vm_securitygroups[i].id != security_groups_list[1].id)): vm_securitygroups_flag = False break - + self.assertEquals( True, vm_securitygroups_flag, @@ -5155,7 +5130,7 @@ class TestSnapshots(cloudstackTestCase): @classmethod def setUpClass(cls): try: - cls._cleanup = [] + cls._cleanup = [] cls.testClient = super(TestSnapshots, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() @@ -5175,7 +5150,7 @@ class TestSnapshots(cloudstackTestCase): cls.storagetype = 'shared' cls.services["service_offerings"]["tiny"]["storagetype"] = 'shared' cls.services["disk_offering"]["storagetype"] = 'shared' - + cls.services['mode'] = cls.zone.networktype cls.services["virtual_machine"]["hypervisor"] = cls.testClient.getHypervisorInfo() cls.services["virtual_machine"]["zoneid"] = cls.zone.id @@ -5235,7 +5210,7 @@ class TestSnapshots(cloudstackTestCase): return def __verify_values(self, expected_vals, actual_vals): - """ + """ @Desc: Function to verify expected and actual values @Steps: Step1: Initializing return flag to True @@ -5267,7 +5242,7 @@ class TestSnapshots(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_01_list_volume_snapshots_pagination(self): - """ + """ @Desc: Test to List Volume Snapshots pagination @steps: Step1: Listing all the volume snapshots for a user @@ -5399,7 +5374,7 @@ class TestSnapshots(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_02_list_volume_snapshots_byid(self): - """ + """ @Desc: Test to List Volume Snapshots by Id @Steps: Step1: Listing all the volume snapshots for a user @@ -5517,7 +5492,7 @@ class TestSnapshots(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_03_list_vm_snapshots_pagination(self): - """ + """ @Desc: Test to List VM Snapshots pagination @Steps: Step1: Listing all the VM snapshots for a user @@ -5653,7 +5628,7 @@ class TestSnapshots(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_04_list_vm_snapshots_byid(self): - """ + """ @summary: Test to List VM Snapshots by Id Step1: Listing all the VM snapshots for a user @@ -5749,7 +5724,7 @@ class TestSecurityGroups(cloudstackTestCase): @classmethod def setUpClass(cls): try: - cls._cleanup = [] + cls._cleanup = [] cls.testClient = super(TestSecurityGroups, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() @@ -5796,7 +5771,7 @@ class TestSecurityGroups(cloudstackTestCase): return def __verify_values(self, expected_vals, actual_vals): - """ + """ @Desc: Function to verify expected and actual values @Steps: Step1: Initializing return flag to True @@ -5828,11 +5803,11 @@ class TestSecurityGroups(cloudstackTestCase): @attr(tags=["basic", "provisioning"]) def test_01_list_securitygroups_pagination(self): - """ + """ @Desc: Test to List Security Groups pagination @steps: Step1: Listing all the Security Groups for a user - Step2: Verifying that list size is 1 + Step2: Verifying that list size is 1 Step3: Creating (page size) number of Security Groups Step4: Listing all the Security Groups again for a user Step5: Verifying that list size is (page size + 1) @@ -5953,11 +5928,11 @@ class TestSecurityGroups(cloudstackTestCase): @attr(tags=["basic", "provisioning"]) def test_02_securitygroups_authorize_revoke_ingress(self): - """ + """ @Desc: Test to Authorize and Revoke Ingress for Security Group @steps: Step1: Listing all the Security Groups for a user - Step2: Verifying that list size is 1 + Step2: Verifying that list size is 1 Step3: Creating a Security Groups Step4: Listing all the Security Groups again for a user Step5: Verifying that list size is 2 @@ -6117,11 +6092,11 @@ class TestSecurityGroups(cloudstackTestCase): @attr(tags=["basic", "provisioning"]) def test_03_securitygroups_authorize_revoke_egress(self): - """ + """ @Desc: Test to Authorize and Revoke Egress for Security Group @steps: Step1: Listing all the Security Groups for a user - Step2: Verifying that list size is 1 + Step2: Verifying that list size is 1 Step3: Creating a Security Groups Step4: Listing all the Security Groups again for a user Step5: Verifying that list size is 2 @@ -6284,7 +6259,7 @@ class TestVpnCustomerGateways(cloudstackTestCase): @classmethod def setUpClass(cls): try: - cls._cleanup = [] + cls._cleanup = [] cls.testClient = super(TestVpnCustomerGateways, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() @@ -6331,7 +6306,7 @@ class TestVpnCustomerGateways(cloudstackTestCase): return def __verify_values(self, expected_vals, actual_vals): - """ + """ @Desc: Function to verify expected and actual values @Steps: Step1: Initializing return flag to True @@ -6363,7 +6338,7 @@ class TestVpnCustomerGateways(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_01_list_vpncustomergateways_pagination(self): - """ + """ @Desc: Test to List VPN Customer Gateways pagination @steps: Step1: Listing all the VPN Customer Gateways for a user @@ -6483,7 +6458,7 @@ class TestVpnCustomerGateways(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_02_update_vpncustomergateways(self): - """ + """ @Desc: Test to update VPN Customer Gateways pagination @steps: Step1: Listing all the VPN Customer Gateways for a user @@ -6613,7 +6588,7 @@ class TestTemplates(cloudstackTestCase): @classmethod def setUpClass(cls): try: - cls._cleanup = [] + cls._cleanup = [] cls.testClient = super(TestTemplates, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() @@ -6661,7 +6636,7 @@ class TestTemplates(cloudstackTestCase): return def __verify_values(self, expected_vals, actual_vals): - """ + """ @Desc: Function to verify expected and actual values @Steps: Step1: Initializing return flag to True @@ -6693,7 +6668,7 @@ class TestTemplates(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_01_list_templates_pagination(self): - """ + """ @Desc: Test to List Templates pagination @steps: Step1: Listing all the Templates for a user @@ -6706,8 +6681,8 @@ class TestTemplates(cloudstackTestCase): Step8: Listing all the Templates in page2 Step9: Verifying that list size is 1 Step10: Listing the template by Id - Step11: Verifying if the template is downloaded and ready. - If yes the continuing + Step11: Verifying if the template is downloaded and ready. + If yes the continuing If not waiting and checking for template to be ready till timeout Step12: Deleting the Template present in page 2 Step13: Listing all the Templates in page2 @@ -6853,7 +6828,7 @@ class TestTemplates(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_02_download_template(self): - """ + """ @Desc: Test to Download Template @steps: Step1: Listing all the Templates for a user @@ -6861,8 +6836,8 @@ class TestTemplates(cloudstackTestCase): Step3: Creating a Templates Step4: Listing all the Templates again for a user Step5: Verifying that list size is 1 - Step6: Verifying if the template is in ready state. - If yes the continuing + Step6: Verifying if the template is in ready state. + If yes the continuing If not waiting and checking for template to be ready till timeout Step7: Downloading the template (Extract) Step8: Verifying that Template is downloaded @@ -6974,7 +6949,7 @@ class TestTemplates(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_03_edit_template_details(self): - """ + """ @Desc: Test to Edit Template name, displaytext, OSType @steps: Step1: Listing all the Templates for a user @@ -6982,8 +6957,8 @@ class TestTemplates(cloudstackTestCase): Step3: Creating a Templates Step4: Listing all the Templates again for a user Step5: Verifying that list size is 1 - Step6: Verifying if the template is in ready state. - If yes the continuing + Step6: Verifying if the template is in ready state. + If yes the continuing If not waiting and checking for template to be ready till timeout Step7: Editing the template name Step8: Verifying that Template name is edited @@ -7160,7 +7135,7 @@ class TestTemplates(cloudstackTestCase): if ostype_list[i].id != template_created.ostypeid: newostypeid = ostype_list[i].id break - + edited_template = Template.update( template_created, self.userapiclient, @@ -7290,7 +7265,7 @@ class TestTemplates(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_04_copy_template(self): - """ + """ @Desc: Test to copy Template from one zone to another @steps: Step1: Listing Zones available for a user @@ -7504,7 +7479,7 @@ class TestIsos(cloudstackTestCase): @classmethod def setUpClass(cls): try: - cls._cleanup = [] + cls._cleanup = [] cls.testClient = super(TestIsos, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() @@ -7552,7 +7527,7 @@ class TestIsos(cloudstackTestCase): return def __verify_values(self, expected_vals, actual_vals): - """ + """ @Desc: Function to verify expected and actual values @Steps: Step1: Initializing return flag to True @@ -7584,7 +7559,7 @@ class TestIsos(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_01_list_isos_pagination(self): - """ + """ @Desc: Test to List ISO's pagination @steps: Step1: Listing all the ISO's for a user @@ -7597,8 +7572,8 @@ class TestIsos(cloudstackTestCase): Step8: Listing all the ISO's in page2 Step9: Verifying that list size is 1 Step10: Listing the ISO's by Id - Step11: Verifying if the ISO is downloaded and ready. - If yes the continuing + Step11: Verifying if the ISO is downloaded and ready. + If yes the continuing If not waiting and checking for iso to be ready till timeout Step12: Deleting the ISO present in page 2 Step13: Listing all the ISO's in page2 @@ -7738,7 +7713,7 @@ class TestIsos(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_02_download_iso(self): - """ + """ @Desc: Test to Download ISO @steps: Step1: Listing all the ISO's for a user @@ -7746,8 +7721,8 @@ class TestIsos(cloudstackTestCase): Step3: Creating an ISO Step4: Listing all the ISO's again for a user Step5: Verifying that list size is 1 - Step6: Verifying if the ISO is in ready state. - If yes the continuing + Step6: Verifying if the ISO is in ready state. + If yes the continuing If not waiting and checking for template to be ready till timeout Step7: Downloading the ISO (Extract) Step8: Verifying the details of downloaded ISO @@ -7853,7 +7828,7 @@ class TestIsos(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_03_edit_iso_details(self): - """ + """ @Desc: Test to Edit ISO name, displaytext, OSType @steps: Step1: Listing all the ISO's for a user @@ -7861,8 +7836,8 @@ class TestIsos(cloudstackTestCase): Step3: Creating an ISO Step4: Listing all the ISO's again for a user Step5: Verifying that list size is 1 - Step6: Verifying if the ISO is in ready state. - If yes the continuing + Step6: Verifying if the ISO is in ready state. + If yes the continuing If not waiting and checking for template to be ready till timeout Step7: Editing the ISO's name, displaytext Step8: Verifying that ISO name and displaytext are edited @@ -7990,7 +7965,7 @@ class TestIsos(cloudstackTestCase): if ostype_list[i].id != iso_created.ostypeid: newostypeid = ostype_list[i].id break - + edited_iso = Iso.update( iso_created, self.userapiclient, @@ -8037,7 +8012,7 @@ class TestIsos(cloudstackTestCase): @attr(tags=["advanced", "basic", "provisioning"]) def test_04_copy_iso(self): - """ + """ @Desc: Test to copy ISO from one zone to another @steps: Step1: Listing Zones available for a user @@ -8234,7 +8209,7 @@ class TestNetworks(cloudstackTestCase): @classmethod def setUpClass(cls): try: - cls._cleanup = [] + cls._cleanup = [] cls.testClient = super(TestNetworks, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() @@ -9646,4 +9621,4 @@ class TestNetworks(cloudstackTestCase): networkid=network_created.id ) self.assertIsNone(list_network_acl, "ACL list is not empty for newly created network") - return \ No newline at end of file + return diff --git a/test/integration/component/test_netscaler_configs.py b/test/integration/component/test_netscaler_configs.py index 592b351375c..6d856094f74 100644 --- a/test/integration/component/test_netscaler_configs.py +++ b/test/integration/component/test_netscaler_configs.py @@ -18,15 +18,28 @@ """ P1 tests for netscaler configurations """ #Import Local Modules -import marvin from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * +from marvin.cloudstackTestCase import cloudstackTestCase +#from marvin.cloudstackAPI import * +from marvin.lib.utils import (cleanup_resources, + random_gen) +from marvin.lib.base import (VirtualMachine, + NetworkServiceProvider, + PublicIPAddress, + Account, + Network, + NetScaler, + LoadBalancerRule, + NetworkOffering, + ServiceOffering, + PhysicalNetwork, + Configurations) +from marvin.lib.common import (get_domain, + get_zone, + get_template, + add_netscaler) from marvin.sshClient import SshClient -import datetime +import time class Services: @@ -559,7 +572,7 @@ class TestNetScalerDedicated(cloudstackTestCase): netscaler_provider = nw_service_providers[0] if netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=netscaler_provider.id, state='Enabled' @@ -621,11 +634,11 @@ class TestNetScalerDedicated(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -781,7 +794,7 @@ class TestNetScalerShared(cloudstackTestCase): netscaler_provider = nw_service_providers[0] if netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=netscaler_provider.id, state='Enabled' @@ -839,11 +852,11 @@ class TestNetScalerShared(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -1023,7 +1036,7 @@ class TestNetScalerCustomCapacity(cloudstackTestCase): netscaler_provider = nw_service_providers[0] if netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=netscaler_provider.id, state='Enabled' @@ -1087,11 +1100,11 @@ class TestNetScalerCustomCapacity(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -1244,7 +1257,7 @@ class TestNetScalerCustomCapacity(cloudstackTestCase): self.debug("Deploying VM in account: %s" % self.account_3.name) with self.assertRaises(Exception): # Spawn an instance in that network - virtual_machine_3 = VirtualMachine.create( + VirtualMachine.create( self.apiclient, self.services["virtual_machine"], accountid=self.account_3.name, @@ -1295,7 +1308,7 @@ class TestNetScalerNoCapacity(cloudstackTestCase): netscaler_provider = nw_service_providers[0] if netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=netscaler_provider.id, state='Enabled' @@ -1359,11 +1372,11 @@ class TestNetScalerNoCapacity(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -1517,7 +1530,7 @@ class TestNetScalerNoCapacity(cloudstackTestCase): self.debug("Deploying VM in account: %s" % self.account_3.name) with self.assertRaises(Exception): # Spawn an instance in that network - virtual_machine_3 = VirtualMachine.create( + VirtualMachine.create( self.apiclient, self.services["virtual_machine"], accountid=self.account_3.name, @@ -1568,7 +1581,7 @@ class TestGuestNetworkWithNetScaler(cloudstackTestCase): netscaler_provider = nw_service_providers[0] if netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=netscaler_provider.id, state='Enabled' @@ -1626,11 +1639,11 @@ class TestGuestNetworkWithNetScaler(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -2030,11 +2043,11 @@ class TestGuestNetworkWithNetScaler(cloudstackTestCase): self.debug("Account: %s is deleted!" % self.account_1.name) self.debug("Waiting for network.gc.interval & network.gc.wait..") - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -2223,15 +2236,18 @@ class TestGuestNetworkShutDown(cloudstackTestCase): "Stopping all the VM instances for the account: %s" % self.account.name) - self.vm_1.stop(self.apiclient) - self.vm_2.stop(self.apiclient) + try: + self.vm_1.stop(self.apiclient) + self.vm_2.stop(self.apiclient) + except Exception as e: + self.fail("Failed to stop instance: %s" % e) self.debug("Sleep for network.gc.interval + network.gc.wait") - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -2529,7 +2545,7 @@ class TestServiceProvider(cloudstackTestCase): cls.netscaler_provider = nw_service_providers[0] if cls.netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=cls.netscaler_provider.id, state='Enabled' @@ -2586,11 +2602,11 @@ class TestServiceProvider(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -2843,7 +2859,7 @@ class TestDeleteNetscaler(cloudstackTestCase): netscaler_provider = nw_service_providers[0] if netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=netscaler_provider.id, state='Enabled' @@ -2901,11 +2917,11 @@ class TestDeleteNetscaler(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) diff --git a/test/integration/component/test_netscaler_lb.py b/test/integration/component/test_netscaler_lb.py index 732f0f9304b..4c99aa36d43 100644 --- a/test/integration/component/test_netscaler_lb.py +++ b/test/integration/component/test_netscaler_lb.py @@ -18,15 +18,27 @@ """ P1 tests for netscaler load balancing """ #Import Local Modules -import marvin from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * +from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.cloudstackAPI import migrateVirtualMachine +from marvin.lib.utils import (cleanup_resources, + random_gen) +from marvin.lib.base import (Account, + VirtualMachine, + PublicIPAddress, + LoadBalancerRule, + ServiceOffering, + NetworkOffering, + Host, + Network, + NATRule, + Configurations) +from marvin.lib.common import (get_domain, + get_zone, + get_template, + add_netscaler) from marvin.sshClient import SshClient -import datetime +import time class Services: @@ -209,11 +221,11 @@ class TestLbSourceNat(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -418,11 +430,11 @@ class TestLbOnIpWithPf(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -630,11 +642,11 @@ class TestPfOnIpWithLb(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -771,7 +783,7 @@ class TestPfOnIpWithLb(cloudstackTestCase): with self.assertRaises(Exception): NATRule.create( self.apiclient, - virtual_machine, + virtual_machine_1, self.services["natrule"], ipaddressid=ip_with_lb_rule.ipaddress.id ) @@ -843,11 +855,11 @@ class TestLbOnNonSourceNat(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -1059,11 +1071,11 @@ class TestAddMultipleVmsLb(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -1338,11 +1350,11 @@ class TestMultipleLbRules(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -1656,11 +1668,11 @@ class TestMultipleLbRulesSameIp(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -2246,7 +2258,7 @@ class TestDeleteCreateLBRule(cloudstackTestCase): self.debug("Create a new LB rule with different public port") self.services["lbrule"]["publicport"] = 23 - lb_rule = LoadBalancerRule.create( + LoadBalancerRule.create( self.apiclient, self.services["lbrule"], ipaddressid=self.public_ip.ipaddress.id, @@ -2462,18 +2474,11 @@ class TestVmWithLb(cloudstackTestCase): # 4. In netscaler, LB rules for this VM still remain configured.But # it will be marked as being down - self.debug("Adding instances: %s, %s to LB rule: %s" % ( - self.vm_1.name, - self.vm_2.name, - self.lb_rule_1.name)) - self.lb_rule_1.assign(self.apiclient, [self.vm_1, self.vm_2]) - self.debug("Assigned instances: %s, %s to LB rule: %s" % ( - self.vm_1.name, - self.vm_2.name, - self.lb_rule_1.name)) - self.debug("Stopping VM instance: %s" % self.vm_2.name) - self.vm_2.stop(self.apiclient) - self.debug("Stopped VM: %s" % self.vm_2.name) + try: + self.lb_rule_1.assign(self.apiclient, [self.vm_1, self.vm_2]) + self.vm_2.stop(self.apiclient) + except Exception as e: + self.fail("Exception occured: %s" % e) try: self.debug( @@ -2642,7 +2647,7 @@ class TestVmWithLb(cloudstackTestCase): cmd.virtualmachineid = self.vm_2.id self.apiclient.migrateVirtualMachine(cmd) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.vm_2.id ) @@ -2852,11 +2857,11 @@ class TestVmWithLb(cloudstackTestCase): self.fail("Exception occured during SSH: %s - %s" % ( self.public_ip_1.ipaddress.ipaddress, e)) - delay = list_configurations( + delay = Configurations.list( self.apiclient, name='expunge.delay' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='expunge.interval' ) diff --git a/test/integration/component/test_netscaler_nw_off.py b/test/integration/component/test_netscaler_nw_off.py index d3f1f9e8814..af53eb7677f 100644 --- a/test/integration/component/test_netscaler_nw_off.py +++ b/test/integration/component/test_netscaler_nw_off.py @@ -18,15 +18,32 @@ """ P1 tests for multiple netscaler instances """ #Import Local Modules -import marvin from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * -from marvin.sshClient import SshClient -import datetime +from marvin.cloudstackTestCase import cloudstackTestCase +#from marvin.cloudstackAPI import * +from marvin.lib.utils import (cleanup_resources) +from marvin.lib.base import (NATRule, + LoadBalancerRule, + FireWallRule, + PublicIPAddress, + VirtualMachine, + Network, + Account, + NetScaler, + PhysicalNetwork, + NetworkServiceProvider, + NetworkOffering, + Vpn, + Zone, + ServiceOffering, + Configurations + ) +from marvin.lib.common import (get_domain, + get_zone, + get_template, + add_netscaler, + ) +import time class Services: @@ -540,7 +557,7 @@ class TestNetScalerSharedMode(cloudstackTestCase): netscaler_provider = nw_service_providers[0] if netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=netscaler_provider.id, state='Enabled' @@ -767,7 +784,7 @@ class TestNetScalerSharedMode(cloudstackTestCase): with self.assertRaises(Exception): # Spawn an instance in that network - virtual_machine_3 = VirtualMachine.create( + VirtualMachine.create( self.apiclient, self.services["virtual_machine"], accountid=self.account_3.name, @@ -955,7 +972,7 @@ class TestNetScalerSharedMode(cloudstackTestCase): with self.assertRaises(Exception): # Spawn an instance in that network - virtual_machine_5 = VirtualMachine.create( + VirtualMachine.create( self.apiclient, self.services["virtual_machine"], accountid=self.account_5.name, @@ -983,14 +1000,10 @@ class TestNetScalerSharedMode(cloudstackTestCase): self.account_4.delete(self.apiclient) self.debug("Account: %s is deleted" % self.account_4.name) - interval = list_configurations( - self.apiclient, - name='network.gc.interval' - ) - wait = list_configurations( - self.apiclient, - name='network.gc.wait' - ) + interval = Configurations.list(self.apiclient, + name='network.gc.interval') + wait = Configurations.list(self.apiclient, + name='network.gc.wait') self.debug("Sleeping for: network.gc.interval + network.gc.wait") # Sleep to ensure that all resources are deleted time.sleep(int(interval[0].value) + int(wait[0].value)) @@ -1084,7 +1097,7 @@ class TestNwOffDedicatedNetscaler(cloudstackTestCase): netscaler_provider = nw_service_providers[0] if netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=netscaler_provider.id, state='Enabled' @@ -1135,11 +1148,11 @@ class TestNwOffDedicatedNetscaler(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -1256,7 +1269,7 @@ class TestNwOffNetscaler(cloudstackTestCase): netscaler_provider = nw_service_providers[0] if netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=netscaler_provider.id, state='Enabled' @@ -1326,11 +1339,11 @@ class TestNwOffNetscaler(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -1386,14 +1399,13 @@ class TestNwOffNetscaler(cloudstackTestCase): zoneid=self.zone.id ) self.debug("Deploying VM in account: %s" % self.account_1.name) - virtual_machine = VirtualMachine.create( - self.apiclient, - self.services["virtual_machine"], - accountid=self.account_1.name, - domainid=self.account_1.domainid, - serviceofferingid=self.service_offering.id, - networkids=[str(self.network.id)] - ) + VirtualMachine.create( + self.apiclient, + self.services["virtual_machine"], + accountid=self.account_1.name, + domainid=self.account_1.domainid, + serviceofferingid=self.service_offering.id, + networkids=[str(self.network.id)]) # Creating network using the network offering created self.debug("Creating different network with network offering: %s" % self.network_offering.id) @@ -1421,14 +1433,12 @@ class TestNwOffNetscaler(cloudstackTestCase): self.debug("Deleting account: %s" % self.account_1.name) self.account_1.delete(self.apiclient) self.debug("Account: %s deleted!" % self.account_1.name) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( - self.apiclient, - name='network.gc.wait' - ) + wait = Configurations.list(self.apiclient, + name='network.gc.wait') self.debug("Sleeping for: network.gc.interval + network.gc.wait") # Sleep to ensure that all resources are deleted time.sleep(int(interval[0].value) + int(wait[0].value)) @@ -1564,7 +1574,7 @@ class TestNwOffSToDUpgrade(cloudstackTestCase): netscaler_provider = nw_service_providers[0] if netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=netscaler_provider.id, state='Enabled' @@ -1634,11 +1644,11 @@ class TestNwOffSToDUpgrade(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -1823,29 +1833,6 @@ class TestNwOffSToDUpgrade(cloudstackTestCase): self.account_1.name) virtual_machine_1.stop(self.apiclient) - list_vm_response = VirtualMachine.list( - self.apiclient, - id=virtual_machine_1.id - ) - - self.debug( - "Verify listVirtualMachines response for virtual machine: %s" \ - % virtual_machine_1.id - ) - - self.assertEqual( - isinstance(list_vm_response, list), - True, - "Check list response returns a valid list" - ) - vm_response = list_vm_response[0] - - self.assertEqual( - vm_response.state, - "Stopped", - "VM state should be running after deployment" - ) - self.debug("All Vms are in stopped state") self.debug("Upgrading the network: %s" % self.network_1.id) self.network_1.update( self.apiclient, @@ -1917,7 +1904,7 @@ class TestNwOffSToDUpgrade(cloudstackTestCase): "Creating LB rule for IP address: %s with round robin algo" % public_ip.ipaddress.ipaddress) - lb_rule = LoadBalancerRule.create( + LoadBalancerRule.create( self.apiclient, self.services["lbrule"], ipaddressid=public_ip.ipaddress.id, @@ -1978,7 +1965,7 @@ class TestNwOffDToSUpgrade(cloudstackTestCase): netscaler_provider = nw_service_providers[0] if netscaler_provider.state != 'Enabled': - response = NetworkServiceProvider.update( + NetworkServiceProvider.update( cls.api_client, id=netscaler_provider.id, state='Enabled' @@ -2048,11 +2035,11 @@ class TestNwOffDToSUpgrade(cloudstackTestCase): self.debug("Cleaning up the resources") #Clean up, terminate the created network offerings cleanup_resources(self.apiclient, self.cleanup) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.interval' ) - wait = list_configurations( + wait = Configurations.list( self.apiclient, name='network.gc.wait' ) @@ -2227,29 +2214,6 @@ class TestNwOffDToSUpgrade(cloudstackTestCase): self.debug("Stopping all VMs in account: %s" % self.account_3.name) virtual_machine_3.stop(self.apiclient) - list_vm_response = VirtualMachine.list( - self.apiclient, - id=virtual_machine_3.id - ) - - self.debug( - "Verify listVirtualMachines response for virtual machine: %s" \ - % virtual_machine_3.id - ) - - self.assertEqual( - isinstance(list_vm_response, list), - True, - "Check list response returns a valid list" - ) - vm_response = list_vm_response[0] - - self.assertEqual( - vm_response.state, - "Stopped", - "VM state should be stopped" - ) - self.debug("All user VMs stopped") self.debug("Upgrading the network: %s" % self.network_3.id) self.network_3.update( self.apiclient, @@ -2318,7 +2282,7 @@ class TestNwOffDToSUpgrade(cloudstackTestCase): "Creating LB rule for IP address: %s with round robin algo" % public_ip.ipaddress.ipaddress) - lb_rule = LoadBalancerRule.create( + LoadBalancerRule.create( self.apiclient, self.services["lbrule"], ipaddressid=public_ip.ipaddress.id, @@ -2936,7 +2900,7 @@ class TestNOWithNetscaler(cloudstackTestCase): # User should be able to enable VPN on source NAT self.debug("Created VPN with source NAT IP: %s" % src_nat.ipaddress) # Assign VPN to source NAT - vpn = Vpn.create( + Vpn.create( self.apiclient, src_nat.id, account=self.account.name, diff --git a/test/integration/component/test_network_offering.py b/test/integration/component/test_network_offering.py index b0b6906913a..f2251ff8733 100644 --- a/test/integration/component/test_network_offering.py +++ b/test/integration/component/test_network_offering.py @@ -18,14 +18,23 @@ """ P1 tests for network offering """ #Import Local Modules -import marvin from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * -import datetime +from marvin.cloudstackTestCase import cloudstackTestCase +#from marvin.cloudstackAPI import * +from marvin.lib.utils import (cleanup_resources) +from marvin.lib.base import (VirtualMachine, + Account, + Network, + LoadBalancerRule, + PublicIPAddress, + FireWallRule, + NATRule, + Vpn, + ServiceOffering, + NetworkOffering) +from marvin.lib.common import (get_domain, + get_zone, + get_template) class Services: @@ -700,7 +709,7 @@ class TestNOVirtualRouter(cloudstackTestCase): # User should be able to enable VPN on source NAT self.debug("Created VPN with source NAT IP: %s" % src_nat.ipaddress) # Assign VPN to source NAT - vpn = Vpn.create( + Vpn.create( self.apiclient, src_nat.id, account=self.account.name, @@ -942,7 +951,7 @@ class TestNetworkUpgrade(cloudstackTestCase): # Assign VPN to source NAT self.debug("Enabling VPN on source NAT") - vpn = Vpn.create( + Vpn.create( self.apiclient, src_nat.id, account=self.account.name, @@ -1142,7 +1151,7 @@ class TestNetworkUpgrade(cloudstackTestCase): # Assign VPN to source NAT self.debug("Enabling VPN on source NAT") - vpn = Vpn.create( + Vpn.create( self.apiclient, src_nat.id, account=self.account.name, @@ -1262,7 +1271,7 @@ class TestNOWithOnlySourceNAT(cloudstackTestCase): self.debug("Deploying VM in account: %s on the network %s" % (self.account.name, self.network.id)) # Spawn an instance in that network - virtual_machine = VirtualMachine.create( + VirtualMachine.create( self.apiclient, self.services["virtual_machine"], accountid=self.account.name, diff --git a/test/integration/component/test_persistent_networks.py b/test/integration/component/test_persistent_networks.py index deb0d6e6014..4261abe6249 100644 --- a/test/integration/component/test_persistent_networks.py +++ b/test/integration/component/test_persistent_networks.py @@ -15,11 +15,32 @@ # specific language governing permissions and limitations # under the License. """ Tests for Persistent Networks without running VMs feature""" -from marvin.cloudstackException import CloudstackAPIException -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * -import netaddr +from marvin.lib.utils import (cleanup_resources, + validateList, + get_hypervisor_type) +from marvin.lib.base import (Account, + VPC, + VirtualMachine, + LoadBalancerRule, + Network, + Domain, + Router, + NetworkACL, + PublicIPAddress, + VpcOffering, + ServiceOffering, + Project, + NetworkOffering, + NATRule, + FireWallRule, + Host, + StaticNATRule) +from marvin.lib.common import (get_domain, + get_zone, + get_template, + verifyNetworkState, + add_netscaler, + wait_for_cleanup) from nose.plugins.attrib import attr from marvin.codes import PASS, FAIL, FAILED from marvin.sshClient import SshClient @@ -1051,24 +1072,20 @@ class TestAssignVirtualMachine(cloudstackTestCase): networkids=[network.id], serviceofferingid=self.service_offering.id, accountid=account_1.name,domainid=self.domain.id) + + virtual_machine.stop(self.apiclient) + + # Assign virtual machine to different account + virtual_machine.assign_virtual_machine(self.apiclient, account=account_2.name, domainid=self.domain.id) + + # Start VM + virtual_machine.start(self.apiclient) + + # Verify that new network is created in other account + networks = Network.list(self.apiclient, account=account_2.name, domainid = account_2.domainid) + self.assertEqual(validateList(networks)[0], PASS, "networks list validation failed, list is %s" % networks) except Exception as e: - self.fail("vm creation failed: %s" % e) - - virtual_machine.stop(self.apiclient) - - vms = VirtualMachine.list(self.apiclient, id=virtual_machine.id) - self.assertEqual(validateList(vms)[0], PASS, "vm list validation failed, vm list is %s" % vms) - self.assertEqual(str(vms[0].state).lower(), "stopped", "vm state should be stopped, it is %s" % vms[0].state) - - # Assign virtual machine to different account - virtual_machine.assign_virtual_machine(self.apiclient, account=account_2.name, domainid=self.domain.id) - - # Start VM - virtual_machine.start(self.apiclient) - - # Verify that new network is created in other account - networks = Network.list(self.apiclient, account=account_2.name, domainid = account_2.domainid) - self.assertEqual(validateList(networks)[0], PASS, "networks list validation failed, list is %s" % networks) + self.fail("Exception occured: %s" % e) return @ddt diff --git a/test/integration/component/test_project_resources.py b/test/integration/component/test_project_resources.py index 8f81cf9dc35..4f61cb0cabb 100644 --- a/test/integration/component/test_project_resources.py +++ b/test/integration/component/test_project_resources.py @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -18,7 +18,7 @@ """ #Import Local Modules from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import cloudstackTestCase, unittest +from marvin.cloudstackTestCase import cloudstackTestCase from marvin.lib.base import (VirtualMachine, Account, Project, @@ -458,7 +458,6 @@ class TestNetwork(cloudstackTestCase): True, "Check for the valid network list response" ) - network_response = networks[0] self.debug("Deploying VM with network: %s" % network.id) @@ -631,53 +630,56 @@ class TestTemplates(cloudstackTestCase): # 3. Verify that template created in project can be used in project # without any restrictions - self.debug("Deploying VM for with public template: %s" % + try: + self.debug("Deploying VM for with public template: %s" % self.template.id) - virtual_machine_1 = VirtualMachine.create( + virtual_machine_1 = VirtualMachine.create( self.apiclient, self.services["server"], templateid=self.template.id, serviceofferingid=self.service_offering.id, projectid=self.project.id ) - self.cleanup.append(virtual_machine_1) - # Verify VM state - self.assertEqual( + self.cleanup.append(virtual_machine_1) + # Verify VM state + self.assertEqual( virtual_machine_1.state, 'Running', "Check VM state is Running or not" ) - virtual_machine_1.stop(self.apiclient) - # Get the Root disk of VM - volumes = list_volumes( + virtual_machine_1.stop(self.apiclient) + # Get the Root disk of VM + volumes = list_volumes( self.apiclient, projectid=self.project.id, type='ROOT', listall=True ) - self.assertEqual( + self.assertEqual( isinstance(volumes, list), True, "Check for list volume response return valid data" ) - volume = volumes[0] + volume = volumes[0] - self.debug("Creating template from volume: %s" % volume.id) - # Create a template from the ROOTDISK - template_1 = Template.create( + self.debug("Creating template from volume: %s" % volume.id) + # Create a template from the ROOTDISK + template_1 = Template.create( self.apiclient, self.services["template"], volumeid=volume.id, projectid=self.project.id ) - self.cleanup.append(template_1) - # Verify Template state - self.assertEqual( + self.cleanup.append(template_1) + # Verify Template state + self.assertEqual( template_1.isready, True, "Check Template is in ready state or not" ) + except Exception as e: + self.fail("Exception occured: %s" % e) return @attr(tags=["advanced", "basic", "sg", "eip", "advancedns", "selfservice"]) @@ -690,83 +692,83 @@ class TestTemplates(cloudstackTestCase): # be granted to the Project (use API 'updateTemplatePermissions' # with project id to achieve that). - self.debug("Deploying VM for with public template: %s" % + try: + self.debug("Deploying VM for with public template: %s" % self.template.id) - virtual_machine_1 = VirtualMachine.create( + virtual_machine_1 = VirtualMachine.create( self.apiclient, self.services["server"], templateid=self.template.id, serviceofferingid=self.service_offering.id, projectid=self.project.id ) - self.cleanup.append(virtual_machine_1) - # Verify VM state - self.assertEqual( - virtual_machine_1.state, - 'Running', - "Check VM state is Running or not" - ) - self.debug("Stopping the VM: %s" % virtual_machine_1.id) - virtual_machine_1.stop(self.apiclient) - # Get the Root disk of VM - volumes = list_volumes( + self.cleanup.append(virtual_machine_1) + # Verify VM state + self.assertEqual(virtual_machine_1.state, + 'Running', + "Check VM state is Running or not") + virtual_machine_1.stop(self.apiclient) + # Get the Root disk of VM + volumes = list_volumes( self.apiclient, projectid=self.project.id, type='ROOT', listall=True ) - self.assertEqual( + self.assertEqual( isinstance(volumes, list), True, "Check for list volume response return valid data" ) - volume = volumes[0] + volume = volumes[0] - self.debug("Creating template from volume: %s" % volume.id) - # Create a template from the ROOTDISK - template_1 = Template.create( + self.debug("Creating template from volume: %s" % volume.id) + # Create a template from the ROOTDISK + template_1 = Template.create( self.apiclient, self.services["template"], volumeid=volume.id, projectid=self.project.id ) - self.cleanup.append(template_1) - # Verify Template state - self.assertEqual( + self.cleanup.append(template_1) + # Verify Template state + self.assertEqual( template_1.isready, True, "Check Template is in ready state or not" ) - # Update template permissions to grant permission to project - self.debug( - "Updating template permissions:%s to grant access to project: %s" % ( + # Update template permissions to grant permission to project + self.debug( + "Updating template permissions:%s to grant access to project: %s" % ( template_1.id, self.project.id )) - template_1.updatePermissions( + template_1.updatePermissions( self.apiclient, op='add', projectids=self.project.id ) - self.debug("Deploying VM for with privileged template: %s" % + self.debug("Deploying VM for with privileged template: %s" % self.template.id) - virtual_machine_2 = VirtualMachine.create( + virtual_machine_2 = VirtualMachine.create( self.apiclient, self.services["server"], templateid=template_1.id, serviceofferingid=self.service_offering.id, projectid=self.project.id ) - self.cleanup.append(virtual_machine_2) - # Verify VM state - self.assertEqual( + self.cleanup.append(virtual_machine_2) + # Verify VM state + self.assertEqual( virtual_machine_2.state, 'Running', "Check VM state is Running or not" ) + except Exception as e: + self.fail("Exception occured: %s" % e) return @@ -882,7 +884,6 @@ class TestSnapshots(cloudstackTestCase): True, "Check for list volume response return valid data" ) - volume = volumes[0] self.debug("Creating snapshot from volume: %s" % volumes[0].id) # Create a snapshot from the ROOTDISK diff --git a/test/integration/component/test_project_usage.py b/test/integration/component/test_project_usage.py index 16ca8c1ba64..5e0dda5aff2 100644 --- a/test/integration/component/test_project_usage.py +++ b/test/integration/component/test_project_usage.py @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -17,16 +17,29 @@ """ P1 tests for Snapshots """ #Import Local Modules -import marvin from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * -from marvin.sshClient import SshClient -import datetime - +from marvin.cloudstackTestCase import cloudstackTestCase, unittest +from marvin.cloudstackAPI import deleteVolume +from marvin.lib.utils import (cleanup_resources) +from marvin.lib.base import (Project, + VirtualMachine, + Account, + Network, + PublicIPAddress, + NATRule, + ServiceOffering, + Vpn, + VpnUser, + Snapshot, + ImageStore, + DiskOffering, + LoadBalancerRule, + Template, + Iso) +from marvin.lib.common import (get_domain, + get_zone, + get_template, + list_volumes) class Services: """Test Snapshots Services @@ -204,14 +217,19 @@ class TestVmUsage(cloudstackTestCase): # VM.Destroy and volume .delete Event for the created account # 4. Delete the account - self.debug("Stopping the VM: %s" % self.virtual_machine.id) - # Stop the VM - self.virtual_machine.stop(self.apiclient) + try: + self.debug("Stopping the VM: %s" % self.virtual_machine.id) + # Stop the VM + self.virtual_machine.stop(self.apiclient) + except Exception as e: + self.fail("Failed to stop VM: %s" % e) - time.sleep(self.services["sleep"]) - # Destroy the VM - self.debug("Destroying the VM: %s" % self.virtual_machine.id) - self.virtual_machine.delete(self.apiclient) + try: + # Destroy the VM + self.debug("Destroying the VM: %s" % self.virtual_machine.id) + self.virtual_machine.delete(self.apiclient) + except Exception as e: + self.fail("Failed to delete VM: %s" % e) # Fetch project account ID from project UUID self.debug( @@ -574,7 +592,10 @@ class TestVolumeUsage(cloudstackTestCase): # Stop VM self.debug("Stopping VM with ID: %s" % self.virtual_machine.id) - self.virtual_machine.stop(self.apiclient) + try: + self.virtual_machine.stop(self.apiclient) + except Exception as e: + self.fail("Failed to stop VM: %s" % e) volume_response = list_volumes( self.apiclient, @@ -594,7 +615,10 @@ class TestVolumeUsage(cloudstackTestCase): data_volume.id, self.virtual_machine.id )) - self.virtual_machine.detach_volume(self.apiclient, data_volume) + try: + self.virtual_machine.detach_volume(self.apiclient, data_volume) + except Exception as e: + self.fail("Failed to detach volume: %s" % e) # Delete Data disk self.debug("Delete volume ID: %s" % data_volume.id) @@ -680,26 +704,28 @@ class TestTemplateUsage(cloudstackTestCase): cls.services["ostype"] ) cls.services["server"]["zoneid"] = cls.zone.id - cls.account = Account.create( + cls._cleanup = [] + try: + cls.account = Account.create( cls.api_client, cls.services["account"], domainid=cls.domain.id ) - cls.services["account"] = cls.account.name + cls._cleanup.append(cls.account) + cls.services["account"] = cls.account.name - cls.project = Project.create( + cls.project = Project.create( cls.api_client, cls.services["project"], account=cls.account.name, domainid=cls.account.domainid ) - - cls.service_offering = ServiceOffering.create( + cls._cleanup.append(cls.account) + cls.service_offering = ServiceOffering.create( cls.api_client, - cls.services["service_offering"] - ) - #create virtual machine - cls.virtual_machine = VirtualMachine.create( + cls.services["service_offering"]) + #create virtual machine + cls.virtual_machine = VirtualMachine.create( cls.api_client, cls.services["server"], templateid=template.id, @@ -707,25 +733,22 @@ class TestTemplateUsage(cloudstackTestCase): projectid=cls.project.id ) - #Stop virtual machine - cls.virtual_machine.stop(cls.api_client) + #Stop virtual machine + cls.virtual_machine.stop(cls.api_client) - #Wait before server has be successfully stopped - time.sleep(30) - list_volume = list_volumes( + list_volume = list_volumes( cls.api_client, projectid=cls.project.id, type='ROOT', listall=True ) - if isinstance(list_volume, list): - cls.volume = list_volume[0] - else: - raise Exception("List Volumes failed!") - cls._cleanup = [ - cls.project, - cls.account, - ] + if isinstance(list_volume, list): + cls.volume = list_volume[0] + else: + raise Exception("List Volumes failed!") + except Exception as e: + cls.tearDownClass() + raise unittest.SkipTest("Failed during setUpClass: %s" % e) return @classmethod @@ -1271,8 +1294,6 @@ class TestSnapshotUsage(cloudstackTestCase): "Check if list volumes return a valid data" ) - volume = volumes[0] - # Create a snapshot from the ROOTDISK self.debug("Creating snapshot from volume: %s" % volumes[0].id) snapshot = Snapshot.create(self.apiclient, volumes[0].id) diff --git a/test/integration/component/test_redundant_router_cleanups.py b/test/integration/component/test_redundant_router_cleanups.py index 2220d510df6..444fa3a66bb 100644 --- a/test/integration/component/test_redundant_router_cleanups.py +++ b/test/integration/component/test_redundant_router_cleanups.py @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -16,13 +16,22 @@ # under the License. from nose.plugins.attrib import attr -from marvin.lib.base import * -from marvin.lib.utils import * -from marvin.lib.common import * +from marvin.lib.base import (Account, + Network, + ServiceOffering, + NetworkOffering, + VirtualMachine, + Router, + Configurations) +from marvin.lib.utils import cleanup_resources +from marvin.lib.common import (get_domain, + get_zone, + get_template) #Import Local Modules from marvin.cloudstackTestCase import cloudstackTestCase -from marvin.cloudstackAPI import * +from marvin.cloudstackAPI import startRouter +import time class Services: """Test Services for customer defects @@ -304,13 +313,6 @@ class TestRedundantRouterNetworkCleanups(cloudstackTestCase): "Length of the list router should be 2 (Backup & master)" ) - if routers[0].redundantstate == 'MASTER': - master_router = routers[0] - backup_router = routers[1] - else: - master_router = routers[1] - backup_router = routers[0] - self.debug("restarting network with cleanup=False") try: network.restart(self.apiclient, cleanup=False) @@ -445,13 +447,6 @@ class TestRedundantRouterNetworkCleanups(cloudstackTestCase): "Length of the list router should be 2 (Backup & master)" ) - if routers[0].redundantstate == 'MASTER': - master_router = routers[0] - backup_router = routers[1] - else: - master_router = routers[1] - backup_router = routers[0] - self.debug("restarting network with cleanup=True") try: network.restart(self.apiclient, cleanup=True) @@ -597,12 +592,12 @@ class TestRedundantRouterNetworkCleanups(cloudstackTestCase): self.fail("Failed to stop guest Vm: %s - %s" % (virtual_machine.name, e)) - interval = list_configurations( + interval = Configurations( self.apiclient, name='network.gc.interval' ) delay = int(interval[0].value) - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='network.gc.wait' ) diff --git a/test/integration/component/test_reset_ssh_keypair.py b/test/integration/component/test_reset_ssh_keypair.py index 307e8dc7aff..d0ddb18aa1c 100644 --- a/test/integration/component/test_reset_ssh_keypair.py +++ b/test/integration/component/test_reset_ssh_keypair.py @@ -24,12 +24,11 @@ from marvin.lib.base import (VirtualMachine, Account, Template, ServiceOffering, - EgressFireWallRule) + EgressFireWallRule, + Volume) from marvin.lib.common import (get_domain, get_zone, - get_template, - list_virtual_machines, - list_volumes) + get_template) from marvin.lib.utils import (cleanup_resources, random_gen, validateList) @@ -136,118 +135,93 @@ class TestResetSSHKeypair(cloudstackTestCase): cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = template.id - # Create VMs, NAT Rules etc - cls.account = Account.create( - cls.api_client, - cls.services["account"], - domainid=domain.id - ) + cls._cleanup = [] + try: + # Create VMs, NAT Rules etc + cls.account = Account.create( + cls.api_client, + cls.services["account"], + domainid=domain.id) + cls._cleanup.append(cls.account) - cls.service_offering = ServiceOffering.create( - cls.api_client, - cls.services["service_offering"] - ) + cls.service_offering = ServiceOffering.create( + cls.api_client, + cls.services["service_offering"]) + cls._cleanup.append(cls.service_offering) - cls.virtual_machine = VirtualMachine.create( - cls.api_client, - cls.services["virtual_machine"], - accountid=cls.account.name, - domainid=cls.account.domainid, - serviceofferingid=cls.service_offering.id, - mode=cls.services["mode"] - ) + cls.virtual_machine = VirtualMachine.create( + cls.api_client, + cls.services["virtual_machine"], + accountid=cls.account.name, + domainid=cls.account.domainid, + serviceofferingid=cls.service_offering.id, + mode=cls.services["mode"]) - networkid = cls.virtual_machine.nic[0].networkid + networkid = cls.virtual_machine.nic[0].networkid - # create egress rule to allow wget of my cloud-set-guest-password script - if cls.zone.networktype.lower() == 'advanced': - EgressFireWallRule.create(cls.api_client, + # create egress rule to allow wget of my cloud-set-guest-password script + if cls.zone.networktype.lower() == 'advanced': + EgressFireWallRule.create(cls.api_client, networkid=networkid, protocol=cls.services["egress"]["protocol"], startport=cls.services["egress"]["startport"], endport=cls.services["egress"]["endport"], cidrlist=cls.services["egress"]["cidrlist"]) - cls.virtual_machine.password = cls.services["virtual_machine"]["password"] - ssh = cls.virtual_machine.get_ssh_client() + cls.virtual_machine.password = cls.services["virtual_machine"]["password"] + ssh = cls.virtual_machine.get_ssh_client() - # below steps are required to get the new password from VR(reset password) - # http://cloudstack.org/dl/cloud-set-guest-password - # Copy this file to /etc/init.d - # chmod +x /etc/init.d/cloud-set-guest-password - # chkconfig --add cloud-set-guest-password - # similar steps to get SSH key from web so as to make it ssh enabled + # below steps are required to get the new password from VR(reset password) + # http://cloudstack.org/dl/cloud-set-guest-password + # Copy this file to /etc/init.d + # chmod +x /etc/init.d/cloud-set-guest-password + # chkconfig --add cloud-set-guest-password + # similar steps to get SSH key from web so as to make it ssh enabled - cmds = [ - "cd /etc/init.d;wget http://people.apache.org/~tsp/cloud-set-guest-password", - "chmod +x /etc/init.d/cloud-set-guest-password", - "chkconfig --add cloud-set-guest-password", - "cd /etc/init.d;wget http://downloads.sourceforge.net/project/cloudstack/SSH%20Key%20Gen%20Script/" + \ - "cloud-set-guest-sshkey.in?r=http%3A%2F%2Fsourceforge" + \ - ".net%2Fprojects%2Fcloudstack%2Ffiles%2FSSH%2520Key%2520Gen%2520Script%2F&ts=1331225219&use_mirror=iweb", - "chmod +x /etc/init.d/cloud-set-guest-sshkey.in", - "chkconfig --add cloud-set-guest-sshkey.in" - ] - for c in cmds: - result = ssh.execute(c) + cmds = [ + "cd /etc/init.d;wget http://people.apache.org/~tsp/cloud-set-guest-password", + "chmod +x /etc/init.d/cloud-set-guest-password", + "chkconfig --add cloud-set-guest-password", + "cd /etc/init.d;wget http://downloads.sourceforge.net/project/cloudstack/SSH%20Key%20Gen%20Script/" + \ + "cloud-set-guest-sshkey.in?r=http%3A%2F%2Fsourceforge" + \ + ".net%2Fprojects%2Fcloudstack%2Ffiles%2FSSH%2520Key%2520Gen%2520Script%2F&ts=1331225219&use_mirror=iweb", + "chmod +x /etc/init.d/cloud-set-guest-sshkey.in", + "chkconfig --add cloud-set-guest-sshkey.in" + ] + for c in cmds: + ssh.execute(c) - #Stop virtual machine - cls.virtual_machine.stop(cls.api_client) + #Stop virtual machine + cls.virtual_machine.stop(cls.api_client) - # Poll listVM to ensure VM is stopped properly - timeout = cls.services["timeout"] - while True: - time.sleep(cls.services["sleep"]) + list_volume = Volume.list( + cls.api_client, + virtualmachineid=cls.virtual_machine.id, + type='ROOT', + listall=True) - # Ensure that VM is in stopped state - list_vm_response = list_virtual_machines( - cls.api_client, - id=cls.virtual_machine.id - ) - - if isinstance(list_vm_response, list): - - vm = list_vm_response[0] - if vm.state == 'Stopped': - break - - if timeout == 0: + if isinstance(list_volume, list): + cls.volume = list_volume[0] + else: raise Exception( - "Failed to stop VM (ID: %s) " % - vm.id) - - timeout = timeout - 1 - - list_volume = list_volumes( - cls.api_client, - virtualmachineid=cls.virtual_machine.id, - type='ROOT', - listall=True - ) - if isinstance(list_volume, list): - cls.volume = list_volume[0] - else: - raise Exception( "Exception: Unable to find root volume for VM: %s" % cls.virtual_machine.id) - cls.services["template"]["ostype"] = cls.services["ostype"] - #Create templates for Edit, Delete & update permissions testcases - cls.pw_ssh_enabled_template = Template.create( - cls.api_client, - cls.services["template"], - cls.volume.id, - account=cls.account.name, - domainid=cls.account.domainid - ) - # Delete the VM - No longer needed - cls.virtual_machine.delete(cls.api_client) - - cls._cleanup = [ - cls.service_offering, - cls.pw_ssh_enabled_template, - cls.account - ] + cls.services["template"]["ostype"] = cls.services["ostype"] + #Create templates for Edit, Delete & update permissions testcases + cls.pw_ssh_enabled_template = Template.create( + cls.api_client, + cls.services["template"], + cls.volume.id, + account=cls.account.name, + domainid=cls.account.domainid + ) + cls._cleanup.append(cls.pw_ssh_enabled_template) + # Delete the VM - No longer needed + cls.virtual_machine.delete(cls.api_client) + except Exception as e: + cls.tearDownClass() + raise unittest.SkipTest("Exception in setUpClass: %s" % e) @classmethod def tearDownClass(cls): @@ -1026,36 +1000,16 @@ class TestResetSSHKeyUserRights(cloudstackTestCase): "chkconfig --add cloud-set-guest-sshkey.in" ] for c in cmds: - result = ssh.execute(c) + ssh.execute(c) - #Stop virtual machine - cls.virtual_machine.stop(cls.api_client) + try: + #Stop virtual machine + cls.virtual_machine.stop(cls.api_client) + except Exception as e: + cls.tearDownClass() + raise unittest.SkipTest("Exception in setUpClass: %s" % e) - # Poll listVM to ensure VM is stopped properly - timeout = cls.services["timeout"] - while True: - time.sleep(cls.services["sleep"]) - - # Ensure that VM is in stopped state - list_vm_response = list_virtual_machines( - cls.api_client, - id=cls.virtual_machine.id - ) - - if isinstance(list_vm_response, list): - - vm = list_vm_response[0] - if vm.state == 'Stopped': - break - - if timeout == 0: - raise Exception( - "Failed to stop VM (ID: %s) " % - vm.id) - - timeout = timeout - 1 - - list_volume = list_volumes( + list_volume = Volume.list( cls.api_client, virtualmachineid=cls.virtual_machine.id, type='ROOT', diff --git a/test/integration/component/test_resource_limits.py b/test/integration/component/test_resource_limits.py index 09d9658802e..9f9cdfa06e2 100644 --- a/test/integration/component/test_resource_limits.py +++ b/test/integration/component/test_resource_limits.py @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -747,11 +747,12 @@ class TestResourceLimitsAccount(cloudstackTestCase): # 3. Try to create 2 templates in account 2. Verify account 2 should be # able to create template without any error - self.debug( - "Updating template resource limit for account: %s" % + try: + self.debug( + "Updating template resource limit for account: %s" % self.account_1.name) - # Set usage_vm=1 for Account 1 - update_resource_limit( + # Set usage_vm=1 for Account 1 + update_resource_limit( self.apiclient, 4, # Template account=self.account_1.name, @@ -759,10 +760,10 @@ class TestResourceLimitsAccount(cloudstackTestCase): max=1 ) - self.debug( - "Updating volume resource limit for account: %s" % + self.debug( + "Updating volume resource limit for account: %s" % self.account_1.name) - virtual_machine_1 = VirtualMachine.create( + virtual_machine_1 = VirtualMachine.create( self.apiclient, self.services["server"], templateid=self.template.id, @@ -770,19 +771,19 @@ class TestResourceLimitsAccount(cloudstackTestCase): domainid=self.account_1.domainid, serviceofferingid=self.service_offering.id ) - self.cleanup.append(virtual_machine_1) - # Verify VM state - self.assertEqual( + self.cleanup.append(virtual_machine_1) + # Verify VM state + self.assertEqual( virtual_machine_1.state, 'Running', "Check VM state is Running or not" ) - self.debug( - "Deploying virtual machine for account: %s" % + self.debug( + "Deploying virtual machine for account: %s" % self.account_2.name) - # Create VM for second account - virtual_machine_2 = VirtualMachine.create( + # Create VM for second account + virtual_machine_2 = VirtualMachine.create( self.apiclient, self.services["server"], templateid=self.template.id, @@ -790,33 +791,33 @@ class TestResourceLimitsAccount(cloudstackTestCase): domainid=self.account_2.domainid, serviceofferingid=self.service_offering.id ) - self.cleanup.append(virtual_machine_2) - # Verify VM state - self.assertEqual( + self.cleanup.append(virtual_machine_2) + # Verify VM state + self.assertEqual( virtual_machine_2.state, 'Running', "Check VM state is Running or not" ) - virtual_machine_1.stop(self.apiclient) - # Get the Root disk of VM - volumes = list_volumes( + virtual_machine_1.stop(self.apiclient) + # Get the Root disk of VM + volumes = list_volumes( self.apiclient, virtualmachineid=virtual_machine_1.id, type='ROOT', listall=True ) - self.assertEqual( + self.assertEqual( isinstance(volumes, list), True, "Check for list volume response return valid data" ) - volume = volumes[0] + volume = volumes[0] - self.debug( - "Creating template from volume: %s" % volume.id) - # Create a template from the ROOTDISK (Account 1) - template_1 = Template.create( + self.debug( + "Creating template from volume: %s" % volume.id) + # Create a template from the ROOTDISK (Account 1) + template_1 = Template.create( self.apiclient, self.services["template"], volumeid=volume.id, @@ -824,14 +825,15 @@ class TestResourceLimitsAccount(cloudstackTestCase): domainid=self.account_1.domainid, ) - self.cleanup.append(template_1) - # Verify Template state - self.assertEqual( + self.cleanup.append(template_1) + # Verify Template state + self.assertEqual( template_1.isready, True, "Check Template is in ready state or not" ) - + except Exception as e: + self.fail("Exception occured: %s" % e) # Exception should be raised for second snapshot (account_1) with self.assertRaises(Exception): Template.create( @@ -841,25 +843,27 @@ class TestResourceLimitsAccount(cloudstackTestCase): account=self.account_1.name, domainid=self.account_1.domainid, ) - virtual_machine_2.stop(self.apiclient) - # Get the Root disk of VM - volumes = list_volumes( + + try: + virtual_machine_2.stop(self.apiclient) + # Get the Root disk of VM + volumes = list_volumes( self.apiclient, virtualmachineid=virtual_machine_2.id, type='ROOT', listall=True ) - self.assertEqual( + self.assertEqual( isinstance(volumes, list), True, "Check for list volume response return valid data" ) - volume = volumes[0] + volume = volumes[0] - self.debug( - "Creating template from volume: %s" % volume.id) - # Create a snapshot from the ROOTDISK (Account 1) - template_2 = Template.create( + self.debug( + "Creating template from volume: %s" % volume.id) + # Create a snapshot from the ROOTDISK (Account 1) + template_2 = Template.create( self.apiclient, self.services["template"], volumeid=volume.id, @@ -867,17 +871,17 @@ class TestResourceLimitsAccount(cloudstackTestCase): domainid=self.account_2.domainid, ) - self.cleanup.append(template_2) - # Verify Template state - self.assertEqual( + self.cleanup.append(template_2) + # Verify Template state + self.assertEqual( template_2.isready, True, "Check Template is in ready state or not" - ) - self.debug( - "Creating template from volume: %s" % volume.id) - # Create a second volume from the ROOTDISK (Account 2) - template_3 = Template.create( + ) + self.debug( + "Creating template from volume: %s" % volume.id) + # Create a second volume from the ROOTDISK (Account 2) + template_3 = Template.create( self.apiclient, self.services["template"], volumeid=volume.id, @@ -885,13 +889,15 @@ class TestResourceLimitsAccount(cloudstackTestCase): domainid=self.account_2.domainid, ) - self.cleanup.append(template_3) - # Verify Template state - self.assertEqual( + self.cleanup.append(template_3) + # Verify Template state + self.assertEqual( template_3.isready, True, "Check Template is in ready state or not" ) + except Exception as e: + self.fail("Exception occured: %s" % e) return @@ -1256,27 +1262,23 @@ class TestResourceLimitsDomain(cloudstackTestCase): # 4. Try create 3rd template in the domain. It should give the user an # appropriate error and an alert should be generated. - # Set usage_vm=1 for Account 1 - update_resource_limit( + try: + # Set usage_vm=1 for Account 1 + update_resource_limit( self.apiclient, 2, # Volume domainid=self.account.domainid, max=5 ) - self.debug( - "Updating template resource limits for domain: %s" % - self.account.domainid) - # Set usage_vm=1 for Account 1 - update_resource_limit( + # Set usage_vm=1 for Account 1 + update_resource_limit( self.apiclient, 4, # Template domainid=self.account.domainid, max=2 ) - - self.debug("Deploying VM for account: %s" % self.account.name) - virtual_machine_1 = VirtualMachine.create( + virtual_machine_1 = VirtualMachine.create( self.apiclient, self.services["server"], templateid=self.template.id, @@ -1284,31 +1286,31 @@ class TestResourceLimitsDomain(cloudstackTestCase): domainid=self.account.domainid, serviceofferingid=self.service_offering.id ) - self.cleanup.append(virtual_machine_1) - # Verify VM state - self.assertEqual( + self.cleanup.append(virtual_machine_1) + # Verify VM state + self.assertEqual( virtual_machine_1.state, 'Running', "Check VM state is Running or not" ) - virtual_machine_1.stop(self.apiclient) - # Get the Root disk of VM - volumes = list_volumes( + virtual_machine_1.stop(self.apiclient) + # Get the Root disk of VM + volumes = list_volumes( self.apiclient, virtualmachineid=virtual_machine_1.id, type='ROOT', listall=True ) - self.assertEqual( + self.assertEqual( isinstance(volumes, list), True, "Check for list volume response return valid data" ) - volume = volumes[0] + volume = volumes[0] - self.debug("Creating template from volume: %s" % volume.id) - # Create a template from the ROOTDISK - template_1 = Template.create( + self.debug("Creating template from volume: %s" % volume.id) + # Create a template from the ROOTDISK + template_1 = Template.create( self.apiclient, self.services["template"], volumeid=volume.id, @@ -1316,16 +1318,16 @@ class TestResourceLimitsDomain(cloudstackTestCase): domainid=self.account.domainid, ) - self.cleanup.append(template_1) - # Verify Template state - self.assertEqual( + self.cleanup.append(template_1) + # Verify Template state + self.assertEqual( template_1.isready, True, "Check Template is in ready state or not" ) - self.debug("Creating template from volume: %s" % volume.id) - # Create a template from the ROOTDISK - template_2 = Template.create( + self.debug("Creating template from volume: %s" % volume.id) + # Create a template from the ROOTDISK + template_2 = Template.create( self.apiclient, self.services["template"], volumeid=volume.id, @@ -1333,13 +1335,15 @@ class TestResourceLimitsDomain(cloudstackTestCase): domainid=self.account.domainid, ) - self.cleanup.append(template_2) - # Verify Template state - self.assertEqual( + self.cleanup.append(template_2) + # Verify Template state + self.assertEqual( template_2.isready, True, "Check Template is in ready state or not" ) + except Exception as e: + self.fail("Exception occured: %s" % e) # Exception should be raised for second template with self.assertRaises(Exception): diff --git a/test/integration/component/test_security_groups.py b/test/integration/component/test_security_groups.py index f5c47273ba5..63436131fee 100644 --- a/test/integration/component/test_security_groups.py +++ b/test/integration/component/test_security_groups.py @@ -18,13 +18,21 @@ """ P1 for Security groups """ #Import Local Modules -import marvin from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * +from marvin.cloudstackTestCase import cloudstackTestCase +#from marvin.cloudstackAPI import * +from marvin.lib.utils import cleanup_resources +from marvin.lib.base import (Account, + ServiceOffering, + VirtualMachine, + SecurityGroup, + Router, + Host, + Configurations) +from marvin.lib.common import (get_domain, + get_zone, + get_template, + get_process_status) from marvin.sshClient import SshClient #Import System modules @@ -186,7 +194,7 @@ class TestDefaultSecurityGroup(cloudstackTestCase): self.debug("Deployed VM with ID: %s" % self.virtual_machine.id) self.cleanup.append(self.virtual_machine) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -225,7 +233,7 @@ class TestDefaultSecurityGroup(cloudstackTestCase): "Verify list routers response for account: %s" \ % self.account.name ) - routers = list_routers( + routers = Router.list( self.apiclient, zoneid=self.zone.id, listall=True @@ -300,7 +308,7 @@ class TestDefaultSecurityGroup(cloudstackTestCase): self.debug("Deployed VM with ID: %s" % self.virtual_machine.id) self.cleanup.append(self.virtual_machine) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -362,12 +370,12 @@ class TestDefaultSecurityGroup(cloudstackTestCase): # SSH Attempt to VM should fail with self.assertRaises(Exception): self.debug("SSH into VM: %s" % self.virtual_machine.ssh_ip) - ssh = SshClient( - self.virtual_machine.ssh_ip, - self.virtual_machine.ssh_port, - self.virtual_machine.username, - self.virtual_machine.password - ) + SshClient( + self.virtual_machine.ssh_ip, + self.virtual_machine.ssh_port, + self.virtual_machine.username, + self.virtual_machine.password + ) return @@ -651,7 +659,7 @@ class TestRevokeIngressRule(cloudstackTestCase): self.debug("Revoking ingress rule for sec group ID: %s for ssh access" % security_group.id) # Revoke Security group to SSH to VM - result = security_group.revoke( + security_group.revoke( self.apiclient, id=ssh_rule["ruleid"] ) @@ -752,7 +760,7 @@ class TestDhcpOnlyRouter(cloudstackTestCase): #2. The only service supported by this router should be dhcp # Find router associated with user account - list_router_response = list_routers( + list_router_response = Router.list( self.apiclient, zoneid=self.zone.id, listall=True @@ -764,7 +772,7 @@ class TestDhcpOnlyRouter(cloudstackTestCase): ) router = list_router_response[0] - hosts = list_hosts( + hosts = Host.list( self.apiclient, zoneid=router.zoneid, type='Routing', @@ -886,7 +894,7 @@ class TestdeployVMWithUserData(cloudstackTestCase): # router for this VM # Find router associated with user account - list_router_response = list_routers( + list_router_response = Router.list( self.apiclient, zoneid=self.zone.id, listall=True @@ -1201,7 +1209,7 @@ class TestDeleteSecurityGroup(cloudstackTestCase): # Destroy the VM self.virtual_machine.delete(self.apiclient) - config = list_configurations( + config = Configurations.list( self.apiclient, name='expunge.delay' ) @@ -1220,8 +1228,8 @@ class TestDeleteSecurityGroup(cloudstackTestCase): self.debug("Deleting Security Group: %s" % security_group.id) security_group.delete(self.apiclient) except Exception as e: - self.fail("Failed to delete security group - ID: %s" \ - % security_group.id + self.fail("Failed to delete security group - ID: %s: %s" \ + % (security_group.id, e) ) return @@ -1639,15 +1647,13 @@ class TestIngressRule(cloudstackTestCase): % ingress_rule["id"] ) - self.virtual_machine.stop(self.apiclient) - - # Sleep to ensure that VM is in stopped state - time.sleep(self.services["sleep"]) - - self.virtual_machine.start(self.apiclient) - - # Sleep to ensure that VM is in running state - time.sleep(self.services["sleep"]) + try: + self.virtual_machine.stop(self.apiclient) + self.virtual_machine.start(self.apiclient) + # Sleep to ensure that VM is in running state + time.sleep(self.services["sleep"]) + except Exception as e: + self.fail("Exception occured: %s" % e) # SSH should be allowed on 22 port after restart try: diff --git a/test/integration/component/test_stopped_vm.py b/test/integration/component/test_stopped_vm.py index 6c776796f0b..04dd859d0cc 100644 --- a/test/integration/component/test_stopped_vm.py +++ b/test/integration/component/test_stopped_vm.py @@ -18,13 +18,27 @@ """ P1 for stopped Virtual Maschine life cycle """ #Import Local Modules -import marvin from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * +from marvin.cloudstackTestCase import cloudstackTestCase +#from marvin.cloudstackAPI import * +from marvin.lib.utils import cleanup_resources +from marvin.lib.base import (Account, + VirtualMachine, + ServiceOffering, + Volume, + Router, + DiskOffering, + Host, + Iso, + Cluster, + StoragePool, + Configurations, + Template) +from marvin.lib.common import (get_zone, + get_domain, + get_template, + get_builtin_template_info, + update_resource_limit) #Import System modules import time @@ -194,7 +208,7 @@ class TestDeployVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -245,7 +259,7 @@ class TestDeployVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -297,7 +311,7 @@ class TestDeployVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -340,17 +354,17 @@ class TestDeployVM(cloudstackTestCase): ) self.debug("Instance destroyed..waiting till expunge interval") - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='expunge.interval' ) - delay = list_configurations( + delay = Configurations.list( self.apiclient, name='expunge.delay' ) # Sleep to ensure that all resources are deleted time.sleep((int(interval[0].value) + int(delay[0].value))) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -387,7 +401,7 @@ class TestDeployVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -425,7 +439,7 @@ class TestDeployVM(cloudstackTestCase): try: self.virtual_machine.attach_volume(self.apiclient, volume) except Exception as e: - self.fail("Attach volume failed!") + self.fail("Attach volume failed with Exception: %s" % e) return @attr(tags=["advanced", "eip", "advancedns", "basic", "sg", "selfservice"]) @@ -452,7 +466,7 @@ class TestDeployVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -528,7 +542,7 @@ class TestDeployVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -566,7 +580,7 @@ class TestDeployVM(cloudstackTestCase): try: self.virtual_machine.attach_volume(self.apiclient, volume) except Exception as e: - self.fail("Attach volume failed!") + self.fail("Attach volume failed with Exception: %s" % e) self.debug("Detaching the disk: %s" % volume.name) self.virtual_machine.detach_volume(self.apiclient, volume) @@ -611,7 +625,7 @@ class TestDeployVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -702,7 +716,7 @@ class TestDeployVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine_1.id ) @@ -738,7 +752,7 @@ class TestDeployVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine_2.id ) @@ -868,7 +882,7 @@ class TestDeployVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -889,28 +903,10 @@ class TestDeployVM(cloudstackTestCase): "Running", "VM should be in Running state after deployment" ) - self.debug("Stopping instance: %s" % self.virtual_machine.name) - self.virtual_machine.stop(self.apiclient) - self.debug("Instance is stopped!") - self.debug( - "Verify listVirtualMachines response for virtual machine: %s" \ - % self.virtual_machine.id - ) - list_vm_response = list_virtual_machines( - self.apiclient, - id=self.virtual_machine.id - ) - self.assertEqual( - isinstance(list_vm_response, list), - True, - "Check list response returns a valid list" - ) - vm_response = list_vm_response[0] - self.assertEqual( - vm_response.state, - "Stopped", - "VM should be in Stopped state after stoping vm" - ) + try: + self.virtual_machine.stop(self.apiclient) + except Exception as e: + self.fail("failed to stop instance: %s" % e) volumes = Volume.list( self.apiclient, virtualmachineid=self.virtual_machine.id, @@ -1047,7 +1043,7 @@ class TestDeployHaEnabledVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -1112,7 +1108,7 @@ class TestDeployHaEnabledVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -1161,7 +1157,7 @@ class TestDeployHaEnabledVM(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -1278,7 +1274,7 @@ class TestRouterStateAfterDeploy(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine_1.id ) @@ -1328,7 +1324,7 @@ class TestRouterStateAfterDeploy(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine_2.id ) @@ -1375,11 +1371,11 @@ class TestRouterStateAfterDeploy(cloudstackTestCase): self.virtual_machine_2.delete(self.apiclient) self.debug("Instance destroyed..waiting till expunge interval") - interval = list_configurations( + interval = Configurations.list( self.apiclient, name='expunge.interval' ) - delay = list_configurations( + delay = Configurations.list( self.apiclient, name='expunge.delay' ) @@ -1518,8 +1514,8 @@ class TestDeployVMFromTemplate(cloudstackTestCase): ) builtin_info = get_builtin_template_info(self.apiclient, self.zone.id) - self.services["template"]["url"] = builtin_info[0] - self.services["template"]["hypervisor"] = builtin_info[1] + self.services["template"]["url"] = builtin_info[0] + self.services["template"]["hypervisor"] = builtin_info[1] self.services["template"]["format"] = builtin_info[2] # Register new template @@ -1578,7 +1574,7 @@ class TestDeployVMFromTemplate(cloudstackTestCase): self.debug("Deployed instance in account: %s" % self.account.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -1605,7 +1601,7 @@ class TestDeployVMFromTemplate(cloudstackTestCase): self.virtual_machine.start(self.apiclient) self.debug("Started the instance: %s" % self.virtual_machine.name) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) diff --git a/test/integration/component/test_tags.py b/test/integration/component/test_tags.py index d6b43d97d19..fbe64367bf1 100644 --- a/test/integration/component/test_tags.py +++ b/test/integration/component/test_tags.py @@ -17,15 +17,31 @@ """ P1 tests for tags """ #Import Local Modules -import marvin from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * -import datetime - +from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.lib.utils import cleanup_resources +from marvin.lib.base import (Tag, + Account, + VirtualMachine, + Iso, + Volume, + Network, + Host, + DiskOffering, + NATRule, + PublicIPAddress, + FireWallRule, + LoadBalancerRule, + Vpn, + Template, + Snapshot, + ServiceOffering, + Project) +from marvin.lib.common import (get_zone, + get_domain, + get_template) +from marvin.codes import FAILED +import time class Services: """Test tags Services @@ -924,14 +940,14 @@ class TestResourceTags(cloudstackTestCase): # 1. Create a tag on template/ISO using createTags API # 2. Delete above created tag using deleteTags API - self.debug("Stopping the virtual machine: %s" % self.vm_1.name) - #Stop virtual machine - self.vm_1.stop(self.apiclient) + try: + self.debug("Stopping the virtual machine: %s" % self.vm_1.name) + #Stop virtual machine + self.vm_1.stop(self.apiclient) + except Exception as e: + self.fail("Failed to stop VM: %s" % e) timeout = self.services["timeout"] - #Wait before server has be successfully stopped - time.sleep(self.services["sleep"]) - while True: list_volume = Volume.list( self.apiclient, @@ -990,11 +1006,11 @@ class TestResourceTags(cloudstackTestCase): 'CentOS', 'The tag should have original value' ) - - templates = Template.list( + + Template.list( self.apiclient, templatefilter=\ - self.services["template"]["templatefilter"], + self.services["template"]["templatefilter"], listall=True, key='OS', value='CentOS' @@ -1044,10 +1060,8 @@ class TestResourceTags(cloudstackTestCase): ) self.debug("ISO created with ID: %s" % iso.id) - list_iso_response = list_isos( - self.apiclient, - id=iso.id - ) + list_iso_response = Iso.list(self.apiclient, + id=iso.id) self.assertEqual( isinstance(list_iso_response, list), True, @@ -1225,12 +1239,10 @@ class TestResourceTags(cloudstackTestCase): self.debug("Creating snapshot on ROOT volume for VM: %s " % self.vm_1.name) # Get the Root disk of VM - volumes = list_volumes( - self.apiclient, - virtualmachineid=self.vm_1.id, - type='ROOT', - listall=True - ) + volumes = Volume.list(self.apiclient, + virtualmachineid=self.vm_1.id, + type='ROOT', + listall=True) volume = volumes[0] # Create a snapshot from the ROOTDISK @@ -1238,10 +1250,8 @@ class TestResourceTags(cloudstackTestCase): self.debug("Snapshot created: ID - %s" % snapshot.id) self.cleanup.append(snapshot) - snapshots = list_snapshots( - self.apiclient, - id=snapshot.id - ) + snapshots = Snapshot.list(self.apiclient, + id=snapshot.id) self.assertEqual( isinstance(snapshots, list), True, @@ -1275,13 +1285,10 @@ class TestResourceTags(cloudstackTestCase): 'manual', 'The tag should have original value' ) - - snapshots = list_snapshots( - self.apiclient, - listall=True, - key='type', - value='manual' - ) + snapshots = Snapshot.list(self.apiclient, + listall=True, + key='type', + value='manual') self.assertEqual( isinstance(snapshots, list), True, @@ -1563,21 +1570,16 @@ class TestResourceTags(cloudstackTestCase): 'India', 'The tag should have original value' ) - self.debug("Creating the same tag with caps for user VM") - try: - tag_2 = Tag.create( - self.apiclient, - resourceIds=self.vm_1.id, - resourceType='userVM', - tags={'REGION': 'INDIA'} - ) + Tag.create(self.apiclient, + resourceIds=self.vm_1.id, + resourceType='userVM', + tags={'REGION': 'INDIA'}) except Exception as e: pass else: assert("Creating same tag in upper case succeeded") - self.debug("Deleting the created tag..") try: tag_1.delete( self.apiclient, @@ -1785,14 +1787,14 @@ class TestResourceTags(cloudstackTestCase): domainid=self.domain.id ) self.cleanup.append(user_account) - + other_user_account = Account.create( self.apiclient, self.services["other_user"], domainid=self.domain.id ) self.cleanup.append(other_user_account) - + iso = Iso.create( self.apiclient, self.services["iso"], @@ -1801,10 +1803,8 @@ class TestResourceTags(cloudstackTestCase): ) self.debug("ISO created with ID: %s" % iso.id) - list_iso_response = list_isos( - self.apiclient, - id=iso.id - ) + list_iso_response = Iso.list(self.apiclient, + id=iso.id) self.assertEqual( isinstance(list_iso_response, list), True, @@ -1828,8 +1828,6 @@ class TestResourceTags(cloudstackTestCase): domainid=user_account.domainid, key='region', ) - - self.debug("Verify listTag API using user account") self.assertEqual( isinstance(tags, list), True, @@ -1877,33 +1875,25 @@ class TestResourceTags(cloudstackTestCase): domainid=self.domain.id ) self.cleanup.append(user_account) - + iso = Iso.create( self.apiclient, self.services["iso"], account=user_account.name, domainid=user_account.domainid ) - self.debug("ISO created with ID: %s" % iso.id) - list_iso_response = list_isos( - self.apiclient, - id=iso.id - ) + list_iso_response = Iso.list(self.apiclient, + id=iso.id) self.assertEqual( isinstance(list_iso_response, list), True, "Check list response returns a valid list" ) - - self.debug("Creating a tag for the ISO") - tag = Tag.create( - self.apiclient, - resourceIds=iso.id, - resourceType='ISO', - tags={'region': 'India'} - ) - self.debug("Tag created: %s" % tag.__dict__) + Tag.create(self.apiclient, + resourceIds=iso.id, + resourceType='ISO', + tags={'region': 'India'}) tags = Tag.list( self.apiclient, @@ -1913,8 +1903,6 @@ class TestResourceTags(cloudstackTestCase): domainid=user_account.domainid, key='region', ) - - self.debug("Verify listTag API using user account") self.assertEqual( isinstance(tags, list), True, @@ -2200,47 +2188,21 @@ class TestResourceTags(cloudstackTestCase): def test_21_create_tag_stopped_vm(self): "Test creation of tag on stopped vm." - self.debug("Stopping the virtual machine: %s" % self.vm_1.name) - #Stop virtual machine - self.vm_1.stop(self.apiclient) - - timeout = self.services["timeout"] - #Wait before server has be successfully stopped - time.sleep(self.services["sleep"]) + try: + self.debug("Stopping the virtual machine: %s" % self.vm_1.name) + #Stop virtual machine + self.vm_1.stop(self.apiclient) - list_vm_response = list_virtual_machines( - self.apiclient, - id=self.vm_1.id - ) - - self.debug( - "Verify listVirtualMachines response for virtual machine: %s" \ - % self.vm_1.id - ) - - self.assertEqual( - isinstance(list_vm_response, list), - True, - "Check list response returns a valid list" - ) - vm_response = list_vm_response[0] - - self.assertEqual( - vm_response.state, - "Stopped", - "VM should be in stopped state after deployment" - ) - - self.debug("Creating a tag for user VM") - tag = Tag.create( + self.debug("Creating a tag for user VM") + tag = Tag.create( self.apiclient, resourceIds=self.vm_1.id, resourceType='userVM', tags={'region': 'India'} ) - self.debug("Tag created: %s" % tag.__dict__) + self.debug("Tag created: %s" % tag.__dict__) - tags = Tag.list( + tags = Tag.list( self.apiclient, listall=True, resourceType='userVM', @@ -2249,20 +2211,19 @@ class TestResourceTags(cloudstackTestCase): key='region', value='India' ) - self.assertEqual( + self.assertEqual( isinstance(tags, list), True, "List tags should not return empty response" ) - self.assertEqual( + self.assertEqual( tags[0].value, "India", "Tag created with incorrect value" ) - self.debug("Deleting the created tag..") - try: + self.debug("Deleting the created tag..") tag.delete( self.apiclient, resourceIds=self.vm_1.id, @@ -2270,7 +2231,7 @@ class TestResourceTags(cloudstackTestCase): tags={'region': 'India'} ) except Exception as e: - self.fail("Failed to delete the tag - %s" % e) + self.fail("Exception occured - %s" % e) return @attr(tags=["advanced", "basic", "selfservice"]) diff --git a/test/integration/component/test_templates.py b/test/integration/component/test_templates.py index 98b1cbc9d02..19852643d66 100644 --- a/test/integration/component/test_templates.py +++ b/test/integration/component/test_templates.py @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -17,15 +17,20 @@ """ P1 tests for Templates """ #Import Local Modules -import marvin from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * -import urllib -from random import random +from marvin.cloudstackTestCase import cloudstackTestCase, unittest +from marvin.cloudstackAPI import listZones +from marvin.lib.utils import (cleanup_resources) +from marvin.lib.base import (Account, + Template, + ServiceOffering, + VirtualMachine, + Snapshot, + Volume) +from marvin.lib.common import (get_domain, + get_zone, + get_template, + get_builtin_template_info) #Import System modules import time @@ -201,14 +206,13 @@ class TestCreateTemplate(cloudstackTestCase): time.sleep(self.services["sleep"]) timeout = self.services["timeout"] while True: - list_template_response = list_templates( - self.apiclient, - templatefilter='all', - id=template.id, - zoneid=self.zone.id, - account=self.account.name, - domainid=self.account.domainid - ) + list_template_response = Template.list( + self.apiclient, + templatefilter='all', + id=template.id, + zoneid=self.zone.id, + account=self.account.name, + domainid=self.account.domainid) if isinstance(list_template_response, list): break elif timeout == 0: @@ -247,12 +251,10 @@ class TestCreateTemplate(cloudstackTestCase): mode=self.services["mode"] ) self.debug("creating an instance with template ID: %s" % template.id) - vm_response = list_virtual_machines( - self.apiclient, - id=virtual_machine.id, - account=self.account.name, - domainid=self.account.domainid - ) + vm_response = VirtualMachine.list(self.apiclient, + id=virtual_machine.id, + account=self.account.name, + domainid=self.account.domainid) self.assertEqual( isinstance(vm_response, list), True, @@ -300,20 +302,24 @@ class TestTemplates(cloudstackTestCase): cls.services["ostype"] ) cls.services["virtual_machine"]["zoneid"] = cls.zone.id - cls.account = Account.create( + cls._cleanup = [] + try: + cls.account = Account.create( cls.api_client, cls.services["account"], domainid=cls.domain.id ) + cls._cleanup.append(cls.account) - cls.services["account"] = cls.account.name - cls.service_offering = ServiceOffering.create( + cls.services["account"] = cls.account.name + cls.service_offering = ServiceOffering.create( cls.api_client, cls.services["service_offering"] ) + cls._cleanup.append(cls.service_offering) - # create virtual machine - cls.virtual_machine = VirtualMachine.create( + # create virtual machine + cls.virtual_machine = VirtualMachine.create( cls.api_client, cls.services["virtual_machine"], templateid=template.id, @@ -321,40 +327,36 @@ class TestTemplates(cloudstackTestCase): domainid=cls.account.domainid, serviceofferingid=cls.service_offering.id, ) - #Stop virtual machine - cls.virtual_machine.stop(cls.api_client) + #Stop virtual machine + cls.virtual_machine.stop(cls.api_client) - timeout = cls.services["timeout"] - #Wait before server has be successfully stopped - time.sleep(cls.services["sleep"]) + timeout = cls.services["timeout"] - while True: - list_volume = list_volumes( - cls.api_client, - virtualmachineid=cls.virtual_machine.id, - type='ROOT', - listall=True - ) - if isinstance(list_volume, list): - break - elif timeout == 0: - raise Exception("List volumes failed.") + while True: + list_volume = Volume.list( + cls.api_client, + virtualmachineid=cls.virtual_machine.id, + type='ROOT', + listall=True) + if isinstance(list_volume, list): + break + elif timeout == 0: + raise Exception("List volumes failed.") - time.sleep(5) - timeout = timeout - 1 + time.sleep(5) + timeout = timeout - 1 - cls.volume = list_volume[0] + cls.volume = list_volume[0] - #Create template from volume - cls.template = Template.create( + #Create template from volume + cls.template = Template.create( cls.api_client, cls.services["template"], cls.volume.id ) - cls._cleanup = [ - cls.service_offering, - cls.account, - ] + except Exception as e: + cls.tearDownClass() + raise unittest.SkipTest("Failure in setUpClass: %s" % e) @classmethod def tearDownClass(cls): @@ -405,12 +407,11 @@ class TestTemplates(cloudstackTestCase): self.debug("creating an instance with template ID: %s" % self.template.id) self.cleanup.append(virtual_machine) - vm_response = list_virtual_machines( - self.apiclient, - id=virtual_machine.id, - account=self.account.name, - domainid=self.account.domainid - ) + vm_response = VirtualMachine.list( + self.apiclient, + id=virtual_machine.id, + account=self.account.name, + domainid=self.account.domainid) #Verify VM response to check whether VM deployment was successful self.assertNotEqual( len(vm_response), @@ -435,13 +436,12 @@ class TestTemplates(cloudstackTestCase): # 2. Delete the created template and again verify list template response # Verify template response for updated attributes - list_template_response = list_templates( + list_template_response = Template.list( self.apiclient, templatefilter=\ self.services["template"]["templatefilter"], id=self.template.id, - zoneid=self.zone.id - ) + zoneid=self.zone.id) self.assertEqual( isinstance(list_template_response, list), True, @@ -467,7 +467,7 @@ class TestTemplates(cloudstackTestCase): self.template.delete(self.apiclient) self.debug("Delete template: %s successful" % self.template) - list_template_response = list_templates( + list_template_response = Template.list( self.apiclient, templatefilter=\ self.services["template"]["templatefilter"], @@ -493,7 +493,7 @@ class TestTemplates(cloudstackTestCase): # 4. Deploy Virtual machine using this template # 5. VM should be in running state - volumes = list_volumes( + volumes = Volume.list( self.apiclient, virtualmachineid=self.virtual_machine.id, type='ROOT', @@ -518,7 +518,7 @@ class TestTemplates(cloudstackTestCase): ) self.cleanup.append(template) # Verify created template - templates = list_templates( + templates = Template.list( self.apiclient, templatefilter=\ self.services["template"]["templatefilter"], @@ -547,7 +547,7 @@ class TestTemplates(cloudstackTestCase): ) self.cleanup.append(virtual_machine) - vm_response = list_virtual_machines( + vm_response = VirtualMachine.list( self.apiclient, id=virtual_machine.id, account=self.account.name, diff --git a/test/integration/component/test_usage.py b/test/integration/component/test_usage.py index eb920111370..03823bed91b 100644 --- a/test/integration/component/test_usage.py +++ b/test/integration/component/test_usage.py @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -17,16 +17,27 @@ """ P1 tests for Snapshots """ #Import Local Modules -import marvin from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * -from marvin.sshClient import SshClient -import datetime - +from marvin.cloudstackTestCase import cloudstackTestCase, unittest +from marvin.cloudstackAPI import deleteVolume +from marvin.lib.utils import (cleanup_resources) +from marvin.lib.base import (Account, + ServiceOffering, + NATRule, + VirtualMachine, + Snapshot, + Iso, + ImageStore, + LoadBalancerRule, + PublicIPAddress, + DiskOffering, + Template, + VpnUser, + Vpn, + Volume) +from marvin.lib.common import (get_zone, + get_domain, + get_template) class Services: """Test Snapshots Services @@ -193,14 +204,19 @@ class TestVmUsage(cloudstackTestCase): # VM.Destroy and volume .delete Event for the created account # 4. Delete the account - self.debug("Stopping the VM: %s" % self.virtual_machine.id) - # Stop the VM - self.virtual_machine.stop(self.apiclient) + try: + self.debug("Stopping the VM: %s" % self.virtual_machine.id) + # Stop the VM + self.virtual_machine.stop(self.apiclient) + except Exception as e: + self.fail("Failed to stop instance: %s" % e) - time.sleep(self.services["sleep"]) - # Destroy the VM - self.debug("Destroying the VM: %s" % self.virtual_machine.id) - self.virtual_machine.delete(self.apiclient) + try: + # Destroy the VM + self.debug("Destroying the VM: %s" % self.virtual_machine.id) + self.virtual_machine.delete(self.apiclient) + except Exception as e: + self.fail("Failed to destroy VM: %s" % e) # Fetch account ID from account_uuid self.debug("select id from account where uuid = '%s';" \ @@ -536,16 +552,18 @@ class TestVolumeUsage(cloudstackTestCase): # 4. Destroy the Data disk. Volume.delete event is generated for data # disk of the destroyed VM - # Stop VM - self.debug("Stopping VM with ID: %s" % self.virtual_machine.id) - self.virtual_machine.stop(self.apiclient) + try: + # Stop VM + self.debug("Stopping VM with ID: %s" % self.virtual_machine.id) + self.virtual_machine.stop(self.apiclient) + except Exception as e: + self.fail("Failed to stop instance: %s" % e) - volume_response = list_volumes( - self.apiclient, - virtualmachineid=self.virtual_machine.id, - type='DATADISK', - listall=True - ) + volume_response = Volume.list( + self.apiclient, + virtualmachineid=self.virtual_machine.id, + type='DATADISK', + listall=True) self.assertEqual( isinstance(volume_response, list), True, @@ -643,19 +661,22 @@ class TestTemplateUsage(cloudstackTestCase): cls.services["ostype"] ) cls.services["server"]["zoneid"] = cls.zone.id - cls.account = Account.create( + try: + cls.account = Account.create( cls.api_client, cls.services["account"], domainid=cls.domain.id ) - cls.services["account"] = cls.account.name + cls._cleanup.append(cls.account) + cls.services["account"] = cls.account.name - cls.service_offering = ServiceOffering.create( + cls.service_offering = ServiceOffering.create( cls.api_client, cls.services["service_offering"] ) - #create virtual machine - cls.virtual_machine = VirtualMachine.create( + cls._cleanup.append(cls.service_offering) + #create virtual machine + cls.virtual_machine = VirtualMachine.create( cls.api_client, cls.services["server"], templateid=template.id, @@ -665,24 +686,21 @@ class TestTemplateUsage(cloudstackTestCase): mode=cls.services["mode"] ) - #Stop virtual machine - cls.virtual_machine.stop(cls.api_client) + #Stop virtual machine + cls.virtual_machine.stop(cls.api_client) - #Wait before server has be successfully stopped - time.sleep(30) - list_volume = list_volumes( - cls.api_client, - virtualmachineid=cls.virtual_machine.id, - type='ROOT', - listall=True - ) - if isinstance(list_volume, list): - cls.volume = list_volume[0] - else: - raise Exception("List Volumes failed!") - cls._cleanup = [ - cls.account, - ] + list_volume = Volume.list( + cls.api_client, + virtualmachineid=cls.virtual_machine.id, + type='ROOT', + listall=True) + if isinstance(list_volume, list): + cls.volume = list_volume[0] + else: + raise Exception("List Volumes failed!") + except Exception as e: + cls.tearDownClass() + raise unittest.SkipTest("Exception in setUpClass: %s" % e) return @classmethod @@ -1180,20 +1198,17 @@ class TestSnapshotUsage(cloudstackTestCase): # 3. Delete the account # Get the Root disk of VM - volumes = list_volumes( - self.apiclient, - virtualmachineid=self.virtual_machine.id, - type='ROOT', - listall=True - ) + volumes = Volume.list( + self.apiclient, + virtualmachineid=self.virtual_machine.id, + type='ROOT', + listall=True) self.assertEqual( isinstance(volumes, list), True, "Check if list volumes return a valid data" ) - volume = volumes[0] - # Create a snapshot from the ROOTDISK self.debug("Creating snapshot from volume: %s" % volumes[0].id) snapshot = Snapshot.create(self.apiclient, volumes[0].id) diff --git a/test/integration/component/test_volumes.py b/test/integration/component/test_volumes.py index a3104723737..b5b08e2d5c0 100644 --- a/test/integration/component/test_volumes.py +++ b/test/integration/component/test_volumes.py @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -18,11 +18,24 @@ """ #Import Local Modules from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * +from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.cloudstackAPI import (listHypervisorCapabilities, + attachIso, + deleteVolume) +from marvin.lib.utils import cleanup_resources +from marvin.lib.base import (Account, + ServiceOffering, + VirtualMachine, + Volume, + Host, + Iso, + Configurations, + DiskOffering, + Domain) +from marvin.lib.common import (get_domain, + get_zone, + get_template, + get_pod) #Import System modules import time @@ -186,9 +199,9 @@ class TestAttachVolume(cloudstackTestCase): # 5. Start The VM. Start VM should be successful # Create 5 volumes and attach to VM - for i in range(self.max_data_volumes): - self.debug(i) - volume = Volume.create( + try: + for i in range(self.max_data_volumes): + volume = Volume.create( self.apiclient, self.services["volume"], zoneid=self.zone.id, @@ -196,134 +209,99 @@ class TestAttachVolume(cloudstackTestCase): domainid=self.account.domainid, diskofferingid=self.disk_offering.id ) - self.debug("Created volume: %s for account: %s" % ( - volume.id, - self.account.name - )) - # Check List Volume response for newly created volume - list_volume_response = list_volumes( + # Check List Volume response for newly created volume + list_volume_response = Volume.list( self.apiclient, id=volume.id ) - self.assertNotEqual( + self.assertNotEqual( list_volume_response, None, "Check if volume exists in ListVolumes" ) - # Attach volume to VM - self.virtual_machine.attach_volume( + # Attach volume to VM + self.virtual_machine.attach_volume( self.apiclient, volume ) - self.debug("Attach volume: %s to VM: %s" % ( - volume.id, - self.virtual_machine.id - )) - # Check all volumes attached to same VM - list_volume_response = list_volumes( + # Check all volumes attached to same VM + list_volume_response = Volume.list( self.apiclient, virtualmachineid=self.virtual_machine.id, type='DATADISK', listall=True ) - self.assertNotEqual( - list_volume_response, - None, - "Check if volume exists in ListVolumes" - ) - self.assertEqual( - isinstance(list_volume_response, list), - True, - "Check list volumes response for valid list" - ) - self.assertEqual( - len(list_volume_response), - self.max_data_volumes, - "Volumes attached to the VM %s. Expected %s" % (len(list_volume_response), self.max_data_volumes) - ) - self.debug("Rebooting the VM: %s" % self.virtual_machine.id) - # Reboot VM - self.virtual_machine.reboot(self.apiclient) + self.assertNotEqual( + list_volume_response, + None, + "Check if volume exists in ListVolumes") + self.assertEqual( + isinstance(list_volume_response, list), + True, + "Check list volumes response for valid list") + self.assertEqual( + len(list_volume_response), + self.max_data_volumes, + "Volumes attached to the VM %s. Expected %s" % (len(list_volume_response), self.max_data_volumes)) + self.debug("Rebooting the VM: %s" % self.virtual_machine.id) + # Reboot VM + self.virtual_machine.reboot(self.apiclient) - vm_response = list_virtual_machines( + vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id, ) - #Verify VM response to check whether VM deployment was successful - self.assertNotEqual( + #Verify VM response to check whether VM deployment was successful + self.assertNotEqual( len(vm_response), 0, "Check VMs available in List VMs response" ) - self.assertEqual( + self.assertEqual( isinstance(vm_response, list), True, "Check list VM response for valid list" ) - vm = vm_response[0] - self.assertEqual( + vm = vm_response[0] + self.assertEqual( vm.state, 'Running', "Check the state of VM" ) - self.debug("Stopping the VM: %s" % self.virtual_machine.id) - # Stop VM - self.virtual_machine.stop(self.apiclient) + # Stop VM + self.virtual_machine.stop(self.apiclient) - vm_response = list_virtual_machines( + # Start VM + self.virtual_machine.start(self.apiclient) + # Sleep to ensure that VM is in ready state + time.sleep(self.services["sleep"]) + + vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id, ) - self.assertEqual( + self.assertEqual( isinstance(vm_response, list), True, "Check list VM response for valid list" ) - #Verify VM response to check whether VM deployment was successful - self.assertNotEqual( + #Verify VM response to check whether VM deployment was successful + self.assertNotEqual( len(vm_response), 0, "Check VMs available in List VMs response" ) - vm = vm_response[0] - self.assertEqual( - vm.state, - 'Stopped', - "Check the state of VM" - ) - - self.debug("Starting the VM: %s" % self.virtual_machine.id) - # Start VM - self.virtual_machine.start(self.apiclient) - # Sleep to ensure that VM is in ready state - time.sleep(self.services["sleep"]) - - vm_response = list_virtual_machines( - self.apiclient, - id=self.virtual_machine.id, - ) - self.assertEqual( - isinstance(vm_response, list), - True, - "Check list VM response for valid list" - ) - - #Verify VM response to check whether VM deployment was successful - self.assertNotEqual( - len(vm_response), - 0, - "Check VMs available in List VMs response" - ) - - vm = vm_response[0] - self.assertEqual( + vm = vm_response[0] + self.assertEqual( vm.state, 'Running', "Check the state of VM" ) + except Exception as e: + self.fail("Exception occured: %s" % e) return @attr(tags = ["advanced", "advancedns"]) @@ -349,7 +327,7 @@ class TestAttachVolume(cloudstackTestCase): self.account.name )) # Check List Volume response for newly created volume - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiclient, id=volume.id ) @@ -476,10 +454,11 @@ class TestAttachDetachVolume(cloudstackTestCase): # 5. Stop the VM. Stop VM should be successful # 6. Start The VM. Start VM should be successful - volumes = [] - # Create 5 volumes and attach to VM - for i in range(self.max_data_volumes): - volume = Volume.create( + try: + volumes = [] + # Create 5 volumes and attach to VM + for i in range(self.max_data_volumes): + volume = Volume.create( self.apiclient, self.services["volume"], zoneid=self.zone.id, @@ -487,155 +466,117 @@ class TestAttachDetachVolume(cloudstackTestCase): domainid=self.account.domainid, diskofferingid=self.disk_offering.id ) - self.debug("Created volume: %s for account: %s" % ( - volume.id, - self.account.name - )) - self.cleanup.append(volume) - volumes.append(volume) + self.cleanup.append(volume) + volumes.append(volume) - # Check List Volume response for newly created volume - list_volume_response = list_volumes( + # Check List Volume response for newly created volume + list_volume_response = Volume.list( self.apiclient, id=volume.id ) - self.assertNotEqual( - list_volume_response, - None, - "Check if volume exists in ListVolumes" - ) - self.assertEqual( - isinstance(list_volume_response, list), - True, - "Check list volumes response for valid list" - ) - self.debug("Attach volume: %s to VM: %s" % ( - volume.id, - self.virtual_machine.id - )) - # Attach volume to VM - self.virtual_machine.attach_volume( + self.assertNotEqual( + list_volume_response, + None, + "Check if volume exists in ListVolumes") + self.assertEqual( + isinstance(list_volume_response, list), + True, + "Check list volumes response for valid list") + # Attach volume to VM + self.virtual_machine.attach_volume( self.apiclient, volume ) - # Check all volumes attached to same VM - list_volume_response = list_volumes( + # Check all volumes attached to same VM + list_volume_response = Volume.list( self.apiclient, virtualmachineid=self.virtual_machine.id, type='DATADISK', listall=True ) - self.assertNotEqual( + self.assertNotEqual( list_volume_response, None, "Check if volume exists in ListVolumes" ) - self.assertEqual( + self.assertEqual( isinstance(list_volume_response, list), True, "Check list volumes response for valid list" ) - self.assertEqual( - len(list_volume_response), - self.max_data_volumes, - "Volumes attached to the VM %s. Expected %s" % (len(list_volume_response), self.max_data_volumes) - ) + self.assertEqual( + len(list_volume_response), + self.max_data_volumes, + "Volumes attached to the VM %s. Expected %s" % (len(list_volume_response), self.max_data_volumes) + ) - # Detach all volumes from VM - for volume in volumes: - self.debug("Detach volume: %s to VM: %s" % ( - volume.id, - self.virtual_machine.id - )) - self.virtual_machine.detach_volume( + # Detach all volumes from VM + for volume in volumes: + self.virtual_machine.detach_volume( self.apiclient, volume ) - # Reboot VM - self.debug("Rebooting the VM: %s" % self.virtual_machine.id) - self.virtual_machine.reboot(self.apiclient) - # Sleep to ensure that VM is in ready state - time.sleep(self.services["sleep"]) + # Reboot VM + self.debug("Rebooting the VM: %s" % self.virtual_machine.id) + self.virtual_machine.reboot(self.apiclient) + # Sleep to ensure that VM is in ready state + time.sleep(self.services["sleep"]) - vm_response = list_virtual_machines( + vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id, ) - #Verify VM response to check whether VM deployment was successful - self.assertEqual( + #Verify VM response to check whether VM deployment was successful + self.assertEqual( isinstance(vm_response, list), True, "Check list VM response for valid list" ) - self.assertNotEqual( + self.assertNotEqual( len(vm_response), 0, "Check VMs available in List VMs response" ) - vm = vm_response[0] - self.assertEqual( + vm = vm_response[0] + self.assertEqual( vm.state, 'Running', "Check the state of VM" ) - # Stop VM - self.debug("Stopping the VM: %s" % self.virtual_machine.id) - self.virtual_machine.stop(self.apiclient) - # Sleep to ensure that VM is in ready state - time.sleep(self.services["sleep"]) + # Stop VM + self.virtual_machine.stop(self.apiclient) - vm_response = list_virtual_machines( + # Start VM + self.virtual_machine.start(self.apiclient) + # Sleep to ensure that VM is in ready state + time.sleep(self.services["sleep"]) + + vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id, ) - #Verify VM response to check whether VM deployment was successful - self.assertEqual( + #Verify VM response to check whether VM deployment was successful + self.assertEqual( isinstance(vm_response, list), True, "Check list VM response for valid list" ) - self.assertNotEqual( + self.assertNotEqual( len(vm_response), 0, "Check VMs available in List VMs response" ) - vm = vm_response[0] - self.assertEqual( - vm.state, - 'Stopped', - "Check the state of VM" - ) - - # Start VM - self.debug("Starting the VM: %s" % self.virtual_machine.id) - self.virtual_machine.start(self.apiclient) - # Sleep to ensure that VM is in ready state - time.sleep(self.services["sleep"]) - - vm_response = list_virtual_machines( - self.apiclient, - id=self.virtual_machine.id, - ) - #Verify VM response to check whether VM deployment was successful - self.assertEqual( - isinstance(vm_response, list), - True, - "Check list VM response for valid list" - ) - self.assertNotEqual( - len(vm_response), - 0, - "Check VMs available in List VMs response" - ) - vm = vm_response[0] - self.assertEqual( + vm = vm_response[0] + self.assertEqual( vm.state, 'Running', "Check the state of VM" ) + except Exception as e: + self.fail("Exception occuered: %s" % e) return @@ -754,7 +695,7 @@ class TestAttachVolumeISO(cloudstackTestCase): self.account.name )) # Check List Volume response for newly created volume - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiclient, id=volume.id ) @@ -775,7 +716,7 @@ class TestAttachVolumeISO(cloudstackTestCase): ) # Check all volumes attached to same VM - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiclient, virtualmachineid=self.virtual_machine.id, type='DATADISK', @@ -826,7 +767,7 @@ class TestAttachVolumeISO(cloudstackTestCase): self.apiclient.attachIso(cmd) # Verify ISO is attached to VM - vm_response = list_virtual_machines( + vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id, ) @@ -941,7 +882,7 @@ class TestVolumes(cloudstackTestCase): # response before volume attach (to VM) # Check the list volumes response for vmname and virtualmachineid - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiclient, id=self.volume.id ) @@ -982,7 +923,7 @@ class TestVolumes(cloudstackTestCase): self.virtual_machine.attach_volume(self.apiclient, self.volume) # Check all volumes attached to same VM - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiclient, virtualmachineid=self.virtual_machine.id, type='DATADISK', @@ -1030,7 +971,7 @@ class TestVolumes(cloudstackTestCase): #Sleep to ensure the current state will reflected in other calls time.sleep(self.services["sleep"]) - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiclient, id=self.volume.id ) @@ -1074,7 +1015,7 @@ class TestVolumes(cloudstackTestCase): #Sleep to ensure the current state will reflected in other calls time.sleep(self.services["sleep"]) - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiclient, id=self.volume.id, ) diff --git a/test/integration/component/test_vpc_network.py b/test/integration/component/test_vpc_network.py index 2924b72be9f..a449948c91f 100644 --- a/test/integration/component/test_vpc_network.py +++ b/test/integration/component/test_vpc_network.py @@ -1933,8 +1933,6 @@ class TestVPCNetworkUpgrade(cloudstackTestCase): except Exception as e: self.fail("Failed to stop VMs, %s" % e) - wait_for_cleanup(self.apiclient, ["expunge.interval", "expunge.delay"]) - # When all Vms ain network are stopped, network state changes from Implemented --> Shutdown --> Allocated # We can't update the network when it is in Shutodown state, hence we should wait for the state to change to # Allocated and then update the network @@ -2108,8 +2106,6 @@ class TestVPCNetworkUpgrade(cloudstackTestCase): except Exception as e: self.fail("Failed to stop VMs, %s" % e) - wait_for_cleanup(self.apiclient, ["expunge.interval", "expunge.delay"]) - self.debug("Upgrading network offering to support PF services") with self.assertRaises(Exception): network_1.update( diff --git a/test/integration/component/test_vpc_vm_life_cycle.py b/test/integration/component/test_vpc_vm_life_cycle.py index 95f46d0474e..fd995cdd5dd 100644 --- a/test/integration/component/test_vpc_vm_life_cycle.py +++ b/test/integration/component/test_vpc_vm_life_cycle.py @@ -19,7 +19,7 @@ """ #Import Local Modules from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import cloudstackTestCase, unittest +from marvin.cloudstackTestCase import cloudstackTestCase from marvin.lib.utils import cleanup_resources, validateList from marvin.lib.base import (VirtualMachine, NATRule, @@ -1256,24 +1256,6 @@ class TestVMLifeCycleSharedNwVPC(cloudstackTestCase): except Exception as e: self.fail("Failed to stop the virtual instances, %s" % e) - self.debug("Check if the instance is in stopped state?") - vms = VirtualMachine.list( - self.apiclient, - id=self.vm_2.id, - listall=True - ) - self.assertEqual( - isinstance(vms, list), - True, - "List virtual machines should return a valid list" - ) - vm = vms[0] - self.assertEqual( - vm.state, - "Stopped", - "Virtual machine should be in stopped state" - ) - self.debug("Validating if network rules are coonfigured properly?") self.validate_network_rules() return @@ -3099,35 +3081,7 @@ class TestVMLifeCycleDiffHosts(cloudstackTestCase): self.account.name) try: self.vm_1.stop(self.apiclient) - - list_vm_response = list_virtual_machines( - self.apiclient, - id=self.vm_1.id - ) - - vm_response = list_vm_response[0] - - self.assertEqual( - vm_response.state, - 'Stopped', - "VM state should be stopped" - ) - self.vm_2.stop(self.apiclient) - - list_vm_response = list_virtual_machines( - self.apiclient, - id=self.vm_2.id - ) - - vm_response = list_vm_response[0] - - self.assertEqual( - vm_response.state, - 'Stopped', - "VM state should be stopped" - ) - except Exception as e: self.fail("Failed to stop the virtual instances, %s" % e) diff --git a/test/integration/smoke/test_service_offerings.py b/test/integration/smoke/test_service_offerings.py index 3c918598639..980e11017b1 100644 --- a/test/integration/smoke/test_service_offerings.py +++ b/test/integration/smoke/test_service_offerings.py @@ -85,7 +85,6 @@ class TestCreateServiceOffering(cloudstackTestCase): 0, "Check Service offering is created" ) - service_response = list_service_response[0] self.assertEqual( list_service_response[0].cpunumber, @@ -293,23 +292,10 @@ class TestServiceOfferings(cloudstackTestCase): # 2. Using listVM command verify that this Vm # has Small service offering Id. - self.debug("Stopping VM - ID: %s" % self.medium_virtual_machine.id) - self.medium_virtual_machine.stop(self.apiclient) - # Ensure that VM is in stopped state - list_vm_response = list_virtual_machines( - self.apiclient, - id=self.medium_virtual_machine.id - ) - if isinstance(list_vm_response, list): - vm = list_vm_response[0] - if vm.state == 'Stopped': - self.debug("VM state: %s" % vm.state) - else: - raise Exception( - "Failed to stop VM (ID: %s) in change service offering" % vm.id) - - self.debug("Change Service offering VM - ID: %s" % - self.medium_virtual_machine.id) + try: + self.medium_virtual_machine.stop(self.apiclient) + except Exception as e: + self.fail("Failed to stop VM: %s" % e) cmd = changeServiceForVirtualMachine.changeServiceForVirtualMachineCmd() cmd.id = self.medium_virtual_machine.id diff --git a/test/integration/smoke/test_templates.py b/test/integration/smoke/test_templates.py index 4865ee3a2cb..c7594bb85df 100644 --- a/test/integration/smoke/test_templates.py +++ b/test/integration/smoke/test_templates.py @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -17,19 +17,28 @@ """ BVT tests for Templates ISO """ #Import Local Modules -import marvin from marvin.codes import FAILED -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 * +from marvin.cloudstackTestCase import cloudstackTestCase, unittest +from marvin.cloudstackAPI import (updateTemplate, + extractTemplate, + listZones, + updateTemplatePermissions, + deleteTemplate, + copyTemplate) +from marvin.lib.utils import random_gen, cleanup_resources +from marvin.lib.base import (Account, + ServiceOffering, + VirtualMachine, + DiskOffering, + Template, + Volume) +from marvin.lib.common import (get_domain, + get_zone, + get_template) from nose.plugins.attrib import attr import urllib -from random import random #Import System modules -import datetime +import time _multiprocess_shared_ = True @@ -62,38 +71,43 @@ class TestCreateTemplate(cloudstackTestCase): cls.domain = get_domain(cls.apiclient) cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests()) cls.services['mode'] = cls.zone.networktype - cls.disk_offering = DiskOffering.create( + + cls._cleanup = [] + try: + cls.disk_offering = DiskOffering.create( cls.apiclient, cls.services["disk_offering"] ) - template = get_template( + cls._cleanup.append(cls.disk_offering) + template = get_template( cls.apiclient, cls.zone.id, cls.services["ostype"] ) - if template == FAILED: - assert False, "get_template() failed to return template with description %s" % cls.services["ostype"] + if template == FAILED: + assert False, "get_template() failed to return template with description %s" % cls.services["ostype"] - cls.services["template"]["ostypeid"] = template.ostypeid - cls.services["template_2"]["ostypeid"] = template.ostypeid - cls.services["ostypeid"] = template.ostypeid + cls.services["template"]["ostypeid"] = template.ostypeid + cls.services["template_2"]["ostypeid"] = template.ostypeid + cls.services["ostypeid"] = template.ostypeid - cls.services["virtual_machine"]["zoneid"] = cls.zone.id - cls.services["volume"]["diskoffering"] = cls.disk_offering.id - cls.services["volume"]["zoneid"] = cls.zone.id - cls.services["sourcezoneid"] = cls.zone.id - - cls.account = Account.create( + cls.services["virtual_machine"]["zoneid"] = cls.zone.id + cls.services["volume"]["diskoffering"] = cls.disk_offering.id + cls.services["volume"]["zoneid"] = cls.zone.id + cls.services["sourcezoneid"] = cls.zone.id + cls.account = Account.create( cls.apiclient, cls.services["account"], domainid=cls.domain.id ) - cls.service_offering = ServiceOffering.create( + cls._cleanup.append(cls.account) + cls.service_offering = ServiceOffering.create( cls.apiclient, cls.services["service_offerings"] ) - #create virtual machine - cls.virtual_machine = VirtualMachine.create( + cls._cleanup.append(cls.service_offering) + #create virtual machine + cls.virtual_machine = VirtualMachine.create( cls.apiclient, cls.services["virtual_machine"], templateid=template.id, @@ -102,47 +116,20 @@ class TestCreateTemplate(cloudstackTestCase): serviceofferingid=cls.service_offering.id, mode=cls.services["mode"] ) + #Stop virtual machine + cls.virtual_machine.stop(cls.apiclient) - #Stop virtual machine - cls.virtual_machine.stop(cls.apiclient) - - # Poll listVM to ensure VM is stopped properly - timeout = cls.services["timeout"] - while True: - time.sleep(cls.services["sleep"]) - - # Ensure that VM is in stopped state - list_vm_response = list_virtual_machines( - cls.apiclient, - id=cls.virtual_machine.id - ) - - if isinstance(list_vm_response, list): - - vm = list_vm_response[0] - if vm.state == 'Stopped': - break - - if timeout == 0: - raise Exception( - "Failed to stop VM (ID: %s) in change service offering" % - vm.id) - - timeout = timeout - 1 - - list_volume = list_volumes( + list_volume = Volume.list( cls.apiclient, virtualmachineid=cls.virtual_machine.id, type='ROOT', listall=True ) - cls.volume = list_volume[0] - cls._cleanup = [ - cls.account, - cls.service_offering, - cls.disk_offering, - ] + cls.volume = list_volume[0] + except Exception as e: + cls.tearDownClass() + raise unittest.SkipTest("Exception in setUpClass: %s" % e) return @classmethod @@ -180,7 +167,7 @@ class TestCreateTemplate(cloudstackTestCase): self.debug("Created template with ID: %s" % template.id) - list_template_response = list_templates( + list_template_response = Template.list( self.apiclient, templatefilter=\ self.services["templatefilter"], @@ -289,31 +276,7 @@ class TestTemplates(cloudstackTestCase): #Stop virtual machine cls.virtual_machine.stop(cls.apiclient) - # Poll listVM to ensure VM is stopped properly - timeout = cls.services["timeout"] - while True: - time.sleep(cls.services["sleep"]) - - # Ensure that VM is in stopped state - list_vm_response = list_virtual_machines( - cls.apiclient, - id=cls.virtual_machine.id - ) - - if isinstance(list_vm_response, list): - - vm = list_vm_response[0] - if vm.state == 'Stopped': - break - - if timeout == 0: - raise Exception( - "Failed to stop VM (ID: %s) in change service offering" % - vm.id) - - timeout = timeout - 1 - - list_volume = list_volumes( + list_volume = Volume.list( cls.apiclient, virtualmachineid=cls.virtual_machine.id, type='ROOT', @@ -323,8 +286,8 @@ class TestTemplates(cloudstackTestCase): cls.volume = list_volume[0] except Exception as e: raise Exception( - "Exception: Unable to find root volume foe VM: %s" % - cls.virtual_machine.id) + "Exception: Unable to find root volume foe VM: %s - %s" % + (cls.virtual_machine.id, e)) #Create templates for Edit, Delete & update permissions testcases cls.template_1 = Template.create( @@ -407,7 +370,7 @@ class TestTemplates(cloudstackTestCase): timeout = self.services["timeout"] while True: # Verify template response for updated attributes - list_template_response = list_templates( + list_template_response = Template.list( self.apiclient, templatefilter=\ self.services["templatefilter"], @@ -473,7 +436,7 @@ class TestTemplates(cloudstackTestCase): self.template_1.delete(self.apiclient) - list_template_response = list_templates( + list_template_response = Template.list( self.apiclient, templatefilter=\ self.services["templatefilter"], @@ -560,7 +523,7 @@ class TestTemplates(cloudstackTestCase): cmd.isextractable = self.services["isextractable"] self.apiclient.updateTemplatePermissions(cmd) - list_template_response = list_templates( + list_template_response = Template.list( self.apiclient, templatefilter='featured', id=self.template_2.id, @@ -617,7 +580,7 @@ class TestTemplates(cloudstackTestCase): self.apiclient.copyTemplate(cmd) # Verify template is copied to another zone using ListTemplates - list_template_response = list_templates( + list_template_response = Template.list( self.apiclient, templatefilter=\ self.services["templatefilter"], @@ -651,7 +614,7 @@ class TestTemplates(cloudstackTestCase): timeout = self.services["timeout"] while True: time.sleep(self.services["sleep"]) - list_template_response = list_templates( + list_template_response = Template.list( self.apiclient, templatefilter=\ self.services["templatefilter"], @@ -691,7 +654,7 @@ class TestTemplates(cloudstackTestCase): # Validate the following # 1. ListTemplates should show only 'public' templates for normal user - list_template_response = list_templates( + list_template_response = Template.list( self.apiclient, templatefilter='featured', account=self.user.name, @@ -723,7 +686,7 @@ class TestTemplates(cloudstackTestCase): # Validate the following # 1. ListTemplates should not show 'SYSTEM' templates for normal user - list_template_response = list_templates( + list_template_response = Template.list( self.apiclient, templatefilter='featured', account=self.user.name, diff --git a/test/integration/smoke/test_vm_life_cycle.py b/test/integration/smoke/test_vm_life_cycle.py index f114ec9024b..62a807d9890 100644 --- a/test/integration/smoke/test_vm_life_cycle.py +++ b/test/integration/smoke/test_vm_life_cycle.py @@ -18,12 +18,24 @@ """ #Import Local Modules from marvin.cloudstackTestCase import cloudstackTestCase -from marvin.codes import FAILED -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * +from marvin.cloudstackAPI import (recoverVirtualMachine, + destroyVirtualMachine, + attachIso, + detachIso) +from marvin.lib.utils import (cleanup_resources, + validateList, + get_hypervisor_type) +from marvin.lib.base import (Account, + ServiceOffering, + VirtualMachine, + Host, + Iso, + Router, + Configurations) +from marvin.lib.common import (get_domain, + get_zone, + get_template) +from marvin.codes import FAILED, PASS from nose.plugins.attrib import attr #Import System modules import time @@ -110,7 +122,7 @@ class TestDeployVM(cloudstackTestCase): # Validate the following: # 1. Virtual Machine is accessible via SSH # 2. listVirtualMachines returns accurate information - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.virtual_machine.id ) @@ -159,7 +171,7 @@ class TestDeployVM(cloudstackTestCase): 3. Has a linklocalip, publicip and a guestip @return: """ - routers = list_routers(self.apiclient, account=self.account.name) + routers = Router.list(self.apiclient, account=self.account.name) self.assertTrue(len(routers) > 0, msg = "No virtual router found") router = routers[0] @@ -181,7 +193,7 @@ class TestDeployVM(cloudstackTestCase): 2. is in the account the VM was deployed in @return: """ - routers = list_routers(self.apiclient, account=self.account.name) + routers = Router.list(self.apiclient, account=self.account.name) self.assertTrue(len(routers) > 0, msg = "No virtual router found") router = routers[0] @@ -301,31 +313,10 @@ class TestVMLifeCycle(cloudstackTestCase): # 1. Should Not be able to login to the VM. # 2. listVM command should return # this VM.State of this VM should be ""Stopped"". - - self.debug("Stopping VM - ID: %s" % self.virtual_machine.id) - self.small_virtual_machine.stop(self.apiclient) - - list_vm_response = list_virtual_machines( - self.apiclient, - id=self.small_virtual_machine.id - ) - - self.assertEqual( - isinstance(list_vm_response, list), - True, - "Check list response returns a valid list" - ) - self.assertNotEqual( - len(list_vm_response), - 0, - "Check VM available in List Virtual Machines" - ) - - self.assertEqual( - list_vm_response[0].state, - "Stopped", - "Check virtual machine is in stopped state" - ) + try: + self.small_virtual_machine.stop(self.apiclient) + except Exception as e: + self.fail("Failed to stop VM: %s" % e) return @attr(tags = ["devcloud", "advanced", "advancedns", "smoke", "basic", "sg", "selfservice"]) @@ -339,7 +330,7 @@ class TestVMLifeCycle(cloudstackTestCase): self.debug("Starting VM - ID: %s" % self.virtual_machine.id) self.small_virtual_machine.start(self.apiclient) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.small_virtual_machine.id ) @@ -379,7 +370,7 @@ class TestVMLifeCycle(cloudstackTestCase): self.debug("Rebooting VM - ID: %s" % self.virtual_machine.id) self.small_virtual_machine.reboot(self.apiclient) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.small_virtual_machine.id ) @@ -416,7 +407,7 @@ class TestVMLifeCycle(cloudstackTestCase): self.debug("Destroy VM - ID: %s" % self.small_virtual_machine.id) self.small_virtual_machine.delete(self.apiclient) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.small_virtual_machine.id ) @@ -456,7 +447,7 @@ class TestVMLifeCycle(cloudstackTestCase): cmd.id = self.small_virtual_machine.id self.apiclient.recoverVirtualMachine(cmd) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.small_virtual_machine.id ) @@ -540,7 +531,7 @@ class TestVMLifeCycle(cloudstackTestCase): self.vm_to_migrate.migrate(self.apiclient, migrate_host.id) - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.vm_to_migrate.id ) @@ -580,7 +571,7 @@ class TestVMLifeCycle(cloudstackTestCase): cmd.id = self.small_virtual_machine.id self.apiclient.destroyVirtualMachine(cmd) - config = list_configurations( + config = Configurations.list( self.apiclient, name='expunge.delay' ) @@ -590,14 +581,14 @@ class TestVMLifeCycle(cloudstackTestCase): #VM should be destroyed unless expunge thread hasn't run #Wait for two cycles of the expunge thread - config = list_configurations( + config = Configurations.list( self.apiclient, name='expunge.interval' ) expunge_cycle = int(config[0].value) wait_time = expunge_cycle * 2 while wait_time >= 0: - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiclient, id=self.small_virtual_machine.id ) @@ -657,7 +648,7 @@ class TestVMLifeCycle(cloudstackTestCase): except Exception as e: self.fail("SSH failed for virtual machine: %s - %s" % (self.virtual_machine.ipaddress, e)) - + mount_dir = "/mnt/tmp" cmds = "mkdir -p %s" % mount_dir self.assert_(ssh_client.execute(cmds) == [], "mkdir failed within guest") @@ -676,7 +667,7 @@ class TestVMLifeCycle(cloudstackTestCase): self.debug("Found a mount point at %s with size %s" % (res, size)) # Get ISO size - iso_response = list_isos( + iso_response = Iso.list( self.apiclient, id=iso.id ) diff --git a/test/integration/smoke/test_volumes.py b/test/integration/smoke/test_volumes.py index 7f5c4f3c061..5908e2b5a5e 100644 --- a/test/integration/smoke/test_volumes.py +++ b/test/integration/smoke/test_volumes.py @@ -17,15 +17,25 @@ """ BVT tests for Volumes """ #Import Local Modules -from marvin.cloudstackTestCase import * -from marvin.cloudstackException 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 * +from marvin.cloudstackTestCase import cloudstackTestCase +#from marvin.cloudstackException import * +from marvin.cloudstackAPI import (deleteVolume, + extractVolume, + resizeVolume) +#from marvin.sshClient import SshClient +from marvin.lib.utils import (cleanup_resources, + format_volume_to_ext3) +from marvin.lib.base import (ServiceOffering, + VirtualMachine, + Account, + Volume, + Host, + DiskOffering) +from marvin.lib.common import (get_domain, + get_zone, + get_template) from marvin.lib.utils import checkVolumeSize -from marvin.codes import SUCCESS +from marvin.codes import SUCCESS, FAILED from nose.plugins.attrib import attr #Import System modules import os @@ -149,10 +159,9 @@ class TestCreateVolume(cloudstackTestCase): #Attach a volume with different disk offerings #and check the memory allocated to each of them for volume in self.volumes: - list_volume_response = list_volumes( - self.apiClient, - id=volume.id - ) + list_volume_response = Volume.list( + self.apiClient, + id=volume.id) self.assertEqual( isinstance(list_volume_response, list), True, @@ -186,7 +195,7 @@ class TestCreateVolume(cloudstackTestCase): time.sleep(self.services["sleep"]) # Ensure that VM is in running state - list_vm_response = list_virtual_machines( + list_vm_response = VirtualMachine.list( self.apiClient, id=self.virtual_machine.id ) @@ -337,7 +346,7 @@ class TestVolumes(cloudstackTestCase): )) self.virtual_machine.attach_volume(self.apiClient, self.volume) self.attached = True - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiClient, id=self.volume.id ) @@ -429,7 +438,7 @@ class TestVolumes(cloudstackTestCase): self.attached = False #Sleep to ensure the current state will reflected in other calls time.sleep(self.services["sleep"]) - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiClient, id=self.volume.id ) @@ -501,7 +510,7 @@ class TestVolumes(cloudstackTestCase): cmd.diskofferingid = self.services['resizeddiskofferingid'] success = False try: - response = self.apiClient.resizeVolume(cmd) + self.apiClient.resizeVolume(cmd) except Exception as ex: #print str(ex) if "invalid" in str(ex): @@ -516,7 +525,7 @@ class TestVolumes(cloudstackTestCase): cmd.diskofferingid = "invalid id" success = False try: - response = self.apiClient.resizeVolume(cmd) + self.apiClient.resizeVolume(cmd) except Exception as ex: if "invalid" in str(ex): success = True @@ -527,7 +536,7 @@ class TestVolumes(cloudstackTestCase): # try to resize a root disk with a disk offering, root can only be resized by size= # get root vol from created vm - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiClient, virtualmachineid=self.virtual_machine.id, type='ROOT', @@ -540,7 +549,7 @@ class TestVolumes(cloudstackTestCase): cmd.diskofferingid = self.services['diskofferingid'] success = False try: - response = self.apiClient.resizeVolume(cmd) + self.apiClient.resizeVolume(cmd) except Exception as ex: if "Can only resize Data volumes" in str(ex): success = True @@ -548,7 +557,7 @@ class TestVolumes(cloudstackTestCase): success, True, "ResizeVolume - verify root disks cannot be resized by disk offering id") - + # Ok, now let's try and resize a volume that is not custom. cmd.id = self.volume.id cmd.diskofferingid = self.services['diskofferingid'] @@ -578,7 +587,7 @@ class TestVolumes(cloudstackTestCase): count = 0 success = True while count < 10: - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiClient, id=self.volume.id, type='DATADISK' @@ -637,7 +646,7 @@ class TestVolumes(cloudstackTestCase): count = 0 success = False while count < 3: - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiClient, id=self.volume.id, type='DATADISK' @@ -661,7 +670,7 @@ class TestVolumes(cloudstackTestCase): self.debug("Resize Root for : %s" % self.virtual_machine.id) # get root vol from created vm - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiClient, virtualmachineid=self.virtual_machine.id, type='ROOT', @@ -679,7 +688,7 @@ class TestVolumes(cloudstackTestCase): count = 0 success = False while count < 3: - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiClient, id=rootvolume.id ) @@ -732,7 +741,7 @@ class TestVolumes(cloudstackTestCase): cmd.id = self.volume_1.id self.apiClient.deleteVolume(cmd) - list_volume_response = list_volumes( + list_volume_response = Volume.list( self.apiClient, id=self.volume_1.id, type='DATADISK'