Fix bunch of affinity group tests

Signed-off-by: Prasanna Santhanam <tsp@apache.org>
(cherry picked from commit 2b0a97267617608e6695973bc768eec499b69eca)
This commit is contained in:
Prasanna Santhanam 2013-07-25 22:50:45 +05:30
parent 7df0d3a23b
commit 23e7753741
3 changed files with 97 additions and 133 deletions

View File

@ -153,34 +153,34 @@ class TestCreateAffinityGroup(cloudstackTestCase):
def create_aff_grp(self, api_client=None, aff_grp=None,
acc=None, domainid=None):
if api_client == None:
if not api_client:
api_client = self.api_client
if aff_grp == None:
if not aff_grp:
self.services["host_anti_affinity_0"]
if acc == None:
if not acc:
acc = self.account.name
if domainid == None:
if not domainid:
domainid = self.domain.id
try:
self.aff_grp = AffinityGroup.create(api_client, aff_grp, acc, domainid)
return AffinityGroup.create(api_client, aff_grp, acc, domainid)
except Exception as e:
raise Exception("Error: Creation of Affinity Group failed : %s" %e)
@attr(tags=["simulator", "basic", "advanced", "needle"])
@attr(tags=["simulator", "basic", "advanced"])
def test_01_admin_create_aff_grp(self):
"""
Test create affinity group as admin
@return:
"""
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.account.name, domainid=self.account.domainid)
self.debug("Created Affinity Group: %s" % self.aff_grp.name)
list_aff_grps = AffinityGroup.list(self.api_client, id=self.aff_grp.id)
AffinityGroup.delete(self.api_client, id=list_aff_grps[0].id)
self.debug("Deleted Affinity Group: %s" % list_aff_grps[0].name)
aff_grp = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.account.name, domainid=self.account.domainid)
self.debug("Created Affinity Group: %s" % aff_grp.name)
list_aff_grps = AffinityGroup.list(self.api_client, id=aff_grp.id)
self.assert_(isinstance(list_aff_grps, list) and len(list_aff_grps) > 0)
self.assert_(list_aff_grps[0].id == aff_grp.id)
self.cleanup.append(aff_grp)
@attr(tags=["simulator", "basic", "advanced"])
def test_02_doadmin_create_aff_grp(self):
@ -195,13 +195,11 @@ class TestCreateAffinityGroup(cloudstackTestCase):
self.cleanup.append(self.do_admin)
self.cleanup.append(self.new_domain)
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.do_admin.name, domainid=self.new_domain.id)
AffinityGroup.delete(self.api_client, name=self.aff_grp.name,
account=self.do_admin.name, domainid=self.new_domain.id)
self.debug("Deleted Affinity Group: %s" %self.aff_grp.name)
domainapiclient = self.testClient.createUserApiClient(self.do_admin.name, self.new_domain.name, 2)
aff_grp = self.create_aff_grp(api_client=domainapiclient, aff_grp=self.services["host_anti_affinity_0"],
acc=self.do_admin.name, domainid=self.new_domain.id)
aff_grp.delete(domainapiclient)
@attr(tags=["simulator", "basic", "advanced"])
def test_03_user_create_aff_grp(self):
@ -213,13 +211,12 @@ class TestCreateAffinityGroup(cloudstackTestCase):
self.user = Account.create(self.api_client, self.services["new_account"],
domainid=self.domain.id)
self.cleanup.append(self.user)
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.user.name, domainid=self.domain.id)
userapiclient = self.testClient.createUserApiClient(self.user.name, self.domain.name)
AffinityGroup.delete(self.api_client, name=self.aff_grp.name,
account=self.user.name, domainid=self.domain.id)
self.debug("Deleted Affinity Group: %s" %self.aff_grp.name)
self.cleanup.append(self.user)
aff_grp = self.create_aff_grp(api_client=userapiclient, aff_grp=self.services["host_anti_affinity_0"],
acc=self.user.name, domainid=self.domain.id)
aff_grp.delete(userapiclient)
@attr(tags=["simulator", "basic", "advanced"])
@ -233,15 +230,14 @@ class TestCreateAffinityGroup(cloudstackTestCase):
domainid=self.domain.id)
self.cleanup.append(self.user)
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
aff_grp = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.user.name, domainid=self.domain.id)
with self.assertRaises(Exception):
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.user.name, domainid=self.domain.id)
AffinityGroup.delete(self.api_client, name=self.aff_grp.name,
account=self.user.name, domainid=self.domain.id)
self.debug("Deleted Affinity Group: %s" %self.aff_grp.name)
self.debug("Deleted Affinity Group: %s" %aff_grp.name)
aff_grp.delete(self.api_client)
@attr(tags=["simulator", "basic", "advanced"])
def test_05_create_aff_grp_same_name_diff_acc(self):
@ -254,7 +250,7 @@ class TestCreateAffinityGroup(cloudstackTestCase):
domainid=self.domain.id)
self.cleanup.append(self.user)
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
aff_grp = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.user.name, domainid=self.domain.id)
try:
@ -262,9 +258,8 @@ class TestCreateAffinityGroup(cloudstackTestCase):
except Exception:
self.debug("Error: Creating affinity group with same name from different account failed.")
AffinityGroup.delete(self.api_client, name=self.aff_grp.name,
account=self.user.name, domainid=self.domain.id)
self.debug("Deleted Affinity Group: %s" %self.aff_grp.name)
self.debug("Deleted Affinity Group: %s" %aff_grp.name)
aff_grp.delete(self.api_client)
@attr(tags=["simulator", "basic", "advanced"])
def test_06_create_aff_grp_nonexisting_type(self):
@ -554,8 +549,7 @@ class TestDeleteAffinityGroups(cloudstackTestCase):
if aff_grp == None:
self.services["host_anti_affinity_0"]
try:
self.aff_grp.append(AffinityGroup.create(api_client,
aff_grp, acc, domainid))
return AffinityGroup.create(api_client, aff_grp, acc, domainid)
except Exception as e:
raise Exception("Error: Creation of Affinity Group failed : %s" %e)
@ -584,99 +578,83 @@ class TestDeleteAffinityGroups(cloudstackTestCase):
return vm, vm_response.hostid
def test_01_delete_aff_grp_by_id(self):
def delete_aff_group(self, apiclient, **kwargs):
cmd = deleteAffinityGroup.deleteAffinityGroupCmd()
[setattr(cmd, k, v) for k, v in kwargs.items()]
return apiclient.deleteAffinityGroup(cmd)
@attr(tags=["simulator", "basic", "advanced", "multihost"])
def test_01_delete_aff_grp_by_name(self):
"""
Delete Affinity Group by id.
Delete Affinity Group by name
"""
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"])
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_1"])
list_aff_grps = AffinityGroup.list(self.api_client,
name=self.aff_grp[0].name)
AffinityGroup.delete(self.api_client, id=list_aff_grps[0].id)
AffinityGroup.delete(self.api_client, name=self.aff_grp[1].name)
aff_0 = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"])
AffinityGroup.list(self.api_client, name=aff_0.name)
self.delete_aff_group(self.api_client, name=aff_0.name)
self.assert_(AffinityGroup.list(self.api_client, name=aff_0.name) is None)
@attr(tags=["simulator", "basic", "advanced", "multihost"])
def test_02_delete_aff_grp_for_acc(self):
"""
Delete Affinity Group for an account.
Delete Affinity Group as admin for an account
"""
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
aff_0 = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.account.name, domainid=self.domain.id)
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_1"],
aff_1 = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_1"],
acc=self.account.name, domainid=self.domain.id)
AffinityGroup.delete(self.api_client, account=self.account.name,
domainid=self.domain.id, name=self.aff_grp[0].name)
aff_0.delete(self.api_client)
with self.assertRaises(Exception):
vm, hostid = self.create_vm_in_aff_grps([self.aff_grp[0].name])
AffinityGroup.delete(self.api_client, account=self.account.name,
domainid=self.domain.id, name=self.aff_grp[1].name)
self.create_vm_in_aff_grps([aff_0.name])
aff_1.delete(self.api_client)
@attr(tags=["simulator", "basic", "advanced", "multihost"])
def test_03_delete_aff_grp_with_vms(self):
"""
Delete Affinity Group which has vms in it.
Delete Affinity Group which has vms in it
"""
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
aff_0 = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.account.name, domainid=self.domain.id)
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_1"],
aff_1 = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_1"],
acc=self.account.name, domainid=self.domain.id)
vm, hostid = self.create_vm_in_aff_grps([self.aff_grp[0].name,
self.aff_grp[1].name])
AffinityGroup.delete(self.api_client, account=self.account.name,
domainid=self.domain.id, name=self.aff_grp[0].name)
vm_list = list_virtual_machines(self.apiclient,
id=self.virtual_machine.id)
vm, hostid = self.create_vm_in_aff_grps([aff_0.name, aff_1.name])
aff_0.delete(self.api_client)
vm_list = list_virtual_machines(self.apiclient, id=self.virtual_machine.id)
self.assert_(vm_list is not None)
vm.delete(self.api_client)
#Wait for expunge interval to cleanup VM
wait_for_cleanup(self.apiclient, ["expunge.delay", "expunge.interval"])
aff_1.delete(self.api_client)
AffinityGroup.delete(self.api_client, account=self.account.name,
domainid=self.domain.id, name=self.aff_grp[0].name)
AffinityGroup.delete(self.api_client, account=self.account.name,
domainid=self.domain.id, name=self.aff_grp[1].name)
@attr(tags=["simulator", "basic", "advanced", "multihost"])
def test_04_delete_aff_grp_with_vms(self):
"""
Delete Affinity Group which has after updating affinity group for
vms in it.
Delete Affinity Group which has vms after updating affinity group for vms in it
"""
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"])
aff_0 = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"])
vm1, hostid1 = self.create_vm_in_aff_grps([self.aff_grp[0].name])
vm2, hostid2 = self.create_vm_in_aff_grps([self.aff_grp[0].name])
vm1, hostid1 = self.create_vm_in_aff_grps([aff_0.name])
vm2, hostid2 = self.create_vm_in_aff_grps([aff_0.name])
self.cleanup.extend([vm1, vm2])
with self.assertRaises(Exception):
AffinityGroup.delete(self.api_client, name=self.aff_grp[0].name)
aff_0.delete(self.api_client)
vm1.update_affinity_group(self.api_client, affinitygroupnames=[])
with self.assertRaises(Exception):
AffinityGroup.delete(self.api_client, name=self.aff_grp[0].name)
aff_0.delete(self.api_client)
vm2.update_affinity_group(self.api_client, affinitygroupnames=[])
AffinityGroup.delete(self.api_client, name=self.aff_grp[0].name)
vm1.delete(self.api_client)
vm2.delete(self.api_client)
#Wait for expunge interval to cleanup VM
wait_for_cleanup(self.apiclient, ["expunge.delay", "expunge.interval"])
AffinityGroup.delete(self.api_client, name=self.aff_grp[1].name)
aff_0.delete(self.api_client)
@attr(tags=["simulator", "basic", "advanced", "multihost"])
def test_05_delete_aff_grp_id(self):
"""
Delete Affinity Group with id which does not belong to this user
@ -686,7 +664,7 @@ class TestDeleteAffinityGroups(cloudstackTestCase):
self.services["new_account"])
self.cleanup.append(self.user1)
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
aff_0 = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.user1.name,
domainid=self.domain.id)
@ -698,20 +676,21 @@ class TestDeleteAffinityGroups(cloudstackTestCase):
DomainName=self.user2.domain,
acctType=0)
self.create_aff_grp(api_client=userapiclient,
aff_1 = self.create_aff_grp(api_client=userapiclient,
aff_grp=self.services["host_anti_affinity_1"])
list_aff_grps = AffinityGroup.list(self.api_client,
name=self.aff_grp[0].name)
name=aff_0.name)
# Delete Affinity group belonging to different user by id
with self.assertRaises(Exception):
AffinityGroup.delete(userapiclient, name=list_aff_grps.id)
self.delete_aff_group(userapiclient, name=list_aff_grps.id)
#Cleanup
AffinityGroup.delete(self.api_client, name=self.aff_grp[0].name)
AffinityGroup.delete(userapiclient, name=self.aff_grp[1].name)
aff_0.delete(self.api_client)
aff_1.delete(userapiclient)
@attr(tags=["simulator", "basic", "advanced", "multihost"])
def test_06_delete_aff_grp_name(self):
"""
Delete Affinity Group by name which does not belong to this user
@ -721,7 +700,7 @@ class TestDeleteAffinityGroups(cloudstackTestCase):
self.services["new_account"])
self.cleanup.append(self.user1)
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
aff_0 = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.user1.name,
domainid=self.domain.id)
@ -733,16 +712,19 @@ class TestDeleteAffinityGroups(cloudstackTestCase):
DomainName=self.user2.domain,
acctType=0)
self.create_aff_grp(api_client=userapiclient,
aff_1 = self.create_aff_grp(api_client=userapiclient,
aff_grp=self.services["host_anti_affinity_1"])
list_aff_grps = AffinityGroup.list(self.api_client,
name=aff_0.name)
# Delete Affinity group belonging to different user by name
with self.assertRaises(Exception):
AffinityGroup.delete(userapiclient, name=self.aff_grp[0].name)
self.delete_aff_group(userapiclient, name=list_aff_grps.name)
#Cleanup
AffinityGroup.delete(self.api_client, name=self.aff_grp[0].name)
AffinityGroup.delete(userapiclient, name=self.aff_grp[1].name)
aff_0.delete(self.api_client)
aff_1.delete(userapiclient)
class TestUpdateVMAffinityGroups(cloudstackTestCase):
@ -1424,8 +1406,7 @@ class TestAffinityGroupsAdminUser(cloudstackTestCase):
self.services["host_anti_affinity_0"]
try:
self.aff_grp.append(AffinityGroup.create(api_client,
aff_grp, acc, domainid))
return AffinityGroup.create(api_client, aff_grp, acc, domainid)
except Exception as e:
raise Exception("Error: Creation of Affinity Group failed : %s" %e)
@ -1440,7 +1421,7 @@ class TestAffinityGroupsAdminUser(cloudstackTestCase):
templateid=self.template.id,
serviceofferingid=self.service_offering.id,
affinitygroupnames=ag_list,
affinitygroupids=ag_ids
affinitygroupids=ag_ids
)
self.debug('Created VM=%s in Affinity Group=%s' %
(vm.id, ag_list))
@ -1461,7 +1442,7 @@ class TestAffinityGroupsAdminUser(cloudstackTestCase):
@attr(tags=["simulator", "basic", "advanced", "multihost"])
def test_01_deploy_vm_another_user(self):
"""
Deploy vm in Affinity Group belonging to regular user
Deploy vm as Admin in Affinity Group belonging to regular user (should fail)
"""
self.user1 = Account.create(self.api_client,
self.services["new_account"])
@ -1472,35 +1453,33 @@ class TestAffinityGroupsAdminUser(cloudstackTestCase):
DomainName=self.user1.domain,
acctType=0)
self.create_aff_grp(api_client=userapiclient,
aff_grp = self.create_aff_grp(api_client=userapiclient,
aff_grp=self.services["host_anti_affinity_0"])
with self.assertRaises(Exception):
vm1, hostid1 = self.create_vm_in_aff_grps(ag_list=[self.aff_grp[0].name])
self.create_vm_in_aff_grps(api_client=self.apiclient, ag_list=[self.aff_grp[0].name])
AffinityGroup.delete(userapiclient, self.aff_grp[0].name)
aff_grp.delete(userapiclient)
@attr(tags=["simulator", "basic", "advanced", "multihost"])
def test_02_create_aff_grp_user(self):
"""
Create Affinity Group for regular user
Create Affinity Group as admin for regular user
"""
self.user = Account.create(self.api_client, self.services["new_account"],
domainid=self.domain.id)
self.cleanup.append(self.user)
self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
aff_grp = self.create_aff_grp(aff_grp=self.services["host_anti_affinity_0"],
acc=self.user.name, domainid=self.domain.id)
aff_grp.delete(self.apiclient)
AffinityGroup.delete(self.api_client, name=self.aff_grp[0].name,
account=self.user.name, domainid=self.domain.id)
self.debug("Deleted Affinity Group: %s" %self.aff_grp[0].name)
@attr(tags=["simulator", "basic", "advanced", "multihost"])
def test_03_list_aff_grp_all_users(self):
"""
List Affinity Groups for all the users
List Affinity Groups as admin for all the users
"""
self.user1 = Account.create(self.api_client,
@ -1512,11 +1491,10 @@ class TestAffinityGroupsAdminUser(cloudstackTestCase):
DomainName=self.user1.domain,
acctType=0)
self.create_aff_grp(api_client=userapiclient,
aff_grp = self.create_aff_grp(api_client=userapiclient,
aff_grp=self.services["host_anti_affinity_0"])
list_aff_grps = AffinityGroup.list(self.api_client)
print list_aff_grps
self.assertNotEqual(list_aff_grps, [], "Admin not able to list Affinity "
"Groups of users")
AffinityGroup.delete(userapiclient, self.aff_grp[0].name)
aff_grp.delete(userapiclient)

View File

@ -94,10 +94,6 @@ class cloudstackTestClient(object):
domain = self.apiClient.createDomain(cdomain)
domId = domain.id
mdf = hashlib.md5()
mdf.update("password")
mdf_pass = mdf.hexdigest()
cmd = listAccounts.listAccountsCmd()
cmd.name = UserName
cmd.domainid = domId
@ -112,7 +108,7 @@ class cloudstackTestClient(object):
+ "@cloudstack.org"
createAcctCmd.firstname = UserName
createAcctCmd.lastname = UserName
createAcctCmd.password = mdf_pass
createAcctCmd.password = 'password'
createAcctCmd.username = UserName
acct = self.apiClient.createAccount(createAcctCmd)
acctId = acct.id

View File

@ -3011,19 +3011,9 @@ class AffinityGroup:
def update(self, apiclient):
pass
@classmethod
def delete(cls, apiclient, name=None, id=None, account=None,
domainid=None):
def delete(self, apiclient):
cmd = deleteAffinityGroup.deleteAffinityGroupCmd()
if id is not None:
cmd.id = id
if name is not None:
cmd.name = name
if account is not None:
cmd.account = account
if domainid is not None:
cmd.domainid = domainid
cmd.id = self.id
return apiclient.deleteAffinityGroup(cmd)
@classmethod