Add marvin test for bug CS-38356

Bug-Id: CS-38356
Reviewed-By: Self
This commit is contained in:
sanjeevn 2015-11-25 17:30:07 +05:30 committed by sanjeev
parent 41b0139e7a
commit 41ce802c93

View File

@ -36,12 +36,14 @@ from marvin.lib.base import (Tag,
Template,
Snapshot,
ServiceOffering,
Project)
Project,
Domain)
from marvin.lib.common import (get_zone,
get_domain,
get_template,
find_storage_pool_type,
list_clusters)
list_clusters,
createEnabledNetworkOffering)
from marvin.codes import FAILED, PASS
import time
@ -2401,3 +2403,143 @@ class TestResourceTags(cloudstackTestCase):
if not id in host_ids_for_migration:
self.fail("Not all hosts are available for vm migration")
return
@attr(tags=["advanced"], required_hardware="false")
def test_24_public_IP_tag(self):
""" Testcreation, adding and removing tag on public IP address
"""
# Validate the following
# 1. Create a domain and admin account under the new domain
# 2. Create a tag on acquired public IP address using createTags API
# 3. Delete above created tag using deleteTags API
# 4. Perform steps 3&4 using domain-admin
self.debug("Creating a sub-domain under: %s" % self.domain.name)
self.child_domain = Domain.create(
self.apiclient,
services=self.services["domain"],
parentdomainid=self.domain.id
)
self.child_do_admin = Account.create(
self.apiclient,
self.services["account"],
admin=True,
domainid=self.child_domain.id
)
# Cleanup the resources created at end of test
self.cleanup.append(self.child_do_admin)
self.cleanup.append(self.child_domain)
self.dom_admin_api_client = self.testClient.getUserApiClient(
UserName=self.child_do_admin.name,
DomainName=self.child_do_admin.domain
)
result = createEnabledNetworkOffering(
self.apiclient,
self.services["network_offering"]
)
assert result[0] == PASS, \
"Network offering create/enable failed with error %s" % result[2]
self.network_offering = result[1]
self.network = Network.create(
self.dom_admin_api_client,
self.services["network"],
networkofferingid=self.network_offering.id,
accountid=self.child_do_admin.name,
domainid=self.child_do_admin.domainid,
zoneid=self.zone.id
)
self.debug("Fetching the network details for account: %s" %
self.child_do_admin.name
)
networks = Network.list(
self.dom_admin_api_client,
account=self.child_do_admin.name,
domainid=self.child_do_admin.domainid,
listall=True
)
self.assertEqual(
isinstance(networks, list),
True,
"List networks should not return an empty response"
)
network = networks[0]
self.debug("Network for the account: %s is %s" %
(self.child_do_admin.name, network.name)
)
self.debug("Associating public IP for network: %s" % network.id)
public_ip = PublicIPAddress.create(
self.dom_admin_api_client,
accountid=self.child_do_admin.name,
zoneid=self.zone.id,
domainid=self.child_do_admin.domainid,
networkid=network.id
)
self.debug("Creating a tag for Public IP")
tag = Tag.create(
self.dom_admin_api_client,
resourceIds=public_ip.ipaddress.id,
resourceType='PublicIpAddress',
tags={'region': 'India'}
)
self.debug("Tag created: %s" % tag.__dict__)
tags = Tag.list(
self.dom_admin_api_client,
listall=True,
resourceType='PublicIpAddress',
account=self.child_do_admin.name,
domainid=self.child_do_admin.domainid,
key='region',
value='India'
)
self.assertEqual(
isinstance(tags, list),
True,
"List tags should not return empty response"
)
self.assertEqual(
tags[0].value,
'India',
'The tag should have original value'
)
publicIps = PublicIPAddress.list(
self.dom_admin_api_client,
account=self.child_do_admin.name,
domainid=self.child_do_admin.domainid,
listall=True,
key='region',
value='India'
)
self.assertEqual(
isinstance(publicIps, list),
True,
"List Public IPs should not return an empty response"
)
self.debug("Deleting the created tag..")
try:
tag.delete(
self.dom_admin_api_client,
resourceIds=public_ip.ipaddress.id,
resourceType='PublicIpAddress',
tags={'region': 'India'}
)
except Exception as e:
self.fail("Failed to delete the tag - %s" % e)
self.debug("Verifying if tag is actually deleted!")
tags = Tag.list(
self.dom_admin_api_client,
listall=True,
resourceType='PublicIpAddress',
account=self.child_do_admin.name,
domainid=self.child_do_admin.domainid,
key='region',
value='India'
)
self.assertEqual(
tags,
None,
"List tags should return empty response"
)
return