Ranger tempest plugin python3

More python 3 fixes

These fixes are conducive towards
verifying the functionality of
ranger in python3.6/stein development.

Change-Id: Iadb889a02658c49667a0e83ca5136323791693e1
This commit is contained in:
jh629g 2019-11-19 07:50:17 -06:00
parent aadf73a575
commit 3801aa3f18
11 changed files with 100 additions and 111 deletions

View File

@ -15,7 +15,6 @@
from oslo_log import log as logging
from ranger_tempest_plugin import clients
from ranger_tempest_plugin.services import base_client
from tempest import config
from tempest import test
@ -31,25 +30,10 @@ class BaseOrmTest(test.BaseTestCase):
build_timeout = 120
build_interval = 10
@classmethod
def setup_credentials(cls):
cls.set_network_resources(network=False, subnet=False, router=False)
super(BaseOrmTest, cls).setup_credentials()
@classmethod
def setup_clients(cls):
super(BaseOrmTest, cls).setup_clients()
cls.identity_client = cls.os_admin.projects_client
try:
auth_agent = \
base_client.RangerAuthProvider(cls.os_primary.credentials)
auth_agent.auth_request("GET",
CONF.ranger.ranger_rms_base_url,
headers=[])
except Exception as auth_exception:
skip_msg = ("Ranger was unable to authenticate against keystone."
"due to exception: %s" % str(auth_exception))
raise cls.skipException(skip_msg)
@classmethod
def skip_checks(cls):

View File

@ -40,13 +40,14 @@ class TestTempestCms(cms_base.CmsBaseOrmTest):
cls._create_cust_validate_creation_on_dcp_and_lcp(
**cls.bare_customer)
super(TestTempestCms, cls).resource_setup()
cls.addClassResourceCleanup(
cls._del_cust_validate_deletion_on_dcp_and_lcp,
cls.setup_customer_id)
cls.addClassResourceCleanup(
cls._del_cust_validate_deletion_on_dcp_and_lcp,
cls.bare_customer_id)
@classmethod
def resource_cleanup(cls):
cls._del_cust_validate_deletion_on_dcp_and_lcp(cls.setup_customer_id)
cls._del_cust_validate_deletion_on_dcp_and_lcp(cls.bare_customer_id)
super(TestTempestCms, cls).resource_cleanup()
super(TestTempestCms, cls).resource_setup()
def _delete_customer(self, id_, region):
"""Try to delete customer from dcp only"""

View File

@ -24,6 +24,7 @@ class TestTempestCmsNegative(base.BaseOrmTest):
@classmethod
def setup_credentials(cls):
cls.set_network_resources()
super(TestTempestCmsNegative, cls).setup_credentials()
@classmethod

View File

@ -19,7 +19,6 @@ import uuid
from ranger_tempest_plugin import data_utils as orm_data_utils
from ranger_tempest_plugin.tests.api import fms_base
from tempest import config
from tempest import test
from tempest.lib import decorators
from tempest.lib import exceptions
@ -33,6 +32,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
@classmethod
def setup_credentials(cls):
cls.set_network_resources()
super(TestTempestFms, cls).setup_credentials()
@classmethod
@ -45,6 +45,9 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
# create flavor then save off flavor_id for use in test cases
body = cls._get_flavor_params()
cls.addClassResourceCleanup(
cls._del_flv_and_validate_deletion_on_dcp_and_lcp,
body['id'])
cls.flavor = cls._create_flv_and_validate_creation_on_dcp_and_lcp(
**body)
@ -64,7 +67,6 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
cls.custom_es = {'os_extra_specs': {'g': 'guava', 'h': 'honeydew'}}
cls.client.add_extra_specs(cls.flavor_id, cls.custom_es)
cls._wait_for_flavor_status_on_dcp(cls.flavor_id, 'Success')
super(TestTempestFms, cls).resource_setup()
def _get_flavor_details(self, flavor_id):
@ -76,7 +78,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
**orm_data_utils.rand_region_group([CONF.identity.region])
)
group_id = body['group']['id']
test.addClassResourceCleanup(
self.addCleanup(
self.rms_client.delete_region_group,
group_id)
return group_id
@ -84,7 +86,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
def _data_setup(self, post_body):
flavor = self._create_flv_and_validate_creation_on_dcp_and_lcp(
**post_body)
test.addClassResourceCleanup(
self.addCleanup(
self._del_flv_and_validate_deletion_on_dcp_and_lcp,
flavor["id"])
return flavor
@ -140,7 +142,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
self._wait_for_flavor_status_on_dcp(test_flvr_id, 'Success')
# add flavor to tempest cleanup
test.addClassResourceCleanup(
self.addCleanup(
self._del_flv_and_validate_deletion_on_dcp_and_lcp,
test_flvr_id)
@ -150,14 +152,6 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
self.assertEqual(flavor["regions"][0]["name"], CONF.identity.region)
self.assertEqual(flavor["status"], "Success")
@classmethod
def resource_cleanup(cls):
flavor_id = cls.flavor['id']
test.addClassResourceCleanup(
cls._del_flv_and_validate_deletion_on_dcp_and_lcp,
flavor_id)
super(TestTempestFms, cls).resource_cleanup()
def _create_region(self, status='functional'):
region_name = data_utils.rand_name()
_, region = self.os_admin.rms_client.create_region(
@ -166,7 +160,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
'status': status,
}
)
test.addClassResourceCleanup(
self.addCleanup(
self.os_admin.rms_client.delete_region,
region_name)
return region
@ -244,7 +238,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
replace_tag_body = {"tags": {"ee": "ff", "gg": "hh"}}
self._exec_tags_function(self.flavor_id, replace_tag_body,
'update', None)
test.addClassResourceCleanup(
self.addCleanup(
self._restore_default_tags,
self.flavor_id)
_, tag_body = self.client.get_tags(self.flavor_id)
@ -271,7 +265,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
# test delete_all_tags command - run get_tag again and confirm
# that the tag dict is now empty
self._exec_tags_function(self.flavor_id, None, 'delete', None)
test.addClassResourceCleanup(
self.addCleanup(
self._restore_default_tags,
self.flavor_id)
_, tag_body = self.client.get_tags(self.flavor_id)
@ -327,7 +321,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
replace_es_body,
'update',
None)
test.addClassResourceCleanup(
self.addCleanup(
self._restore_custom_es,
self.flavor_id)
@ -359,7 +353,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
# run delete ALL extra specs - note that this will only
# delete custom extra specs, NOT the default extra specs
self._exec_ex_spec_function(self.flavor_id, None, 'delete', None)
test.addClassResourceCleanup(
self.addCleanup(
self._restore_custom_es,
self.flavor_id)
_, flvr_ex_specs = self.client.get_extra_specs(self.flavor_id)
@ -409,7 +403,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
test_flvr_id = flavor['id']
# delete the data and do get_flavor to ensure 404-NotFound response
test.addResourceCleanup(
self.addCleanup(
self._del_flv_and_validate_deletion_on_dcp_and_lcp,
test_flvr_id)
self.assertRaises(exceptions.NotFound, self.client.get_flavor,
@ -476,7 +470,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
**orm_data_utils.rand_region_group([CONF.identity.region])
)
group_id = body['group']['id']
test.addClassResourceCleanup(
self.addCleanup(
self.rms_client.delete_region_group,
group_id)
@ -564,7 +558,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
self.assertIn('id', body['flavor'])
test_flvr_id = body['flavor']['id']
test.addClassResourceCleanup(
self.addCleanup(
self._delete_flavor,
test_flvr_id)
@ -582,7 +576,7 @@ class TestTempestFms(fms_base.FmsBaseOrmTest):
_, body = self.client.create_flavor(**post_body)
self.assertIn('id', body['flavor'])
test_flvr_id = body['flavor']['id']
test.addClassResourceCleanup(
self.addCleanup(
self._delete_flavor,
test_flvr_id)

View File

@ -24,6 +24,7 @@ class TestTempestFmsNegative(base.BaseOrmTest):
@classmethod
def setup_credentials(cls):
cls.set_network_resources()
super(TestTempestFmsNegative, cls).setup_credentials()
@classmethod

View File

@ -18,7 +18,6 @@ import uuid
from ranger_tempest_plugin.data_utils import data_utils
from ranger_tempest_plugin.tests.api import ims_base
from tempest import config
from tempest import test
from tempest.lib import decorators
from tempest.lib import exceptions
@ -30,6 +29,7 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
@classmethod
def setup_credentials(cls):
cls.set_network_resources()
super(TestTempestIms, cls).setup_credentials()
@classmethod
@ -39,32 +39,36 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
@classmethod
def resource_setup(cls):
# setup public image for tempest testing
cls.image_params = \
cls.image_params_public = \
cls._get_image_params(set_private=False)
cls.image_params_private = \
cls._get_image_params(set_enabled=False)
cls.addClassResourceCleanup(
cls._del_img_validate_deletion_on_dcp_and_lcp,
cls.image_params_public['id'])
cls.addClassResourceCleanup(
cls._del_img_validate_deletion_on_dcp_and_lcp,
cls.image_params_private['id'])
# setup public image for tempest testing
cls.public_image = \
cls._create_img_and_validate_creation_on_dcp_and_lcp(
**cls.image_params)
**cls.image_params_public)
# setup private image for tempest testing
cls.image_params = cls._get_image_params(set_enabled=False)
cls.private_image = \
cls._create_img_and_validate_creation_on_dcp_and_lcp(
**cls.image_params)
**cls.image_params_private)
super(TestTempestIms, cls).resource_setup()
@classmethod
def resource_cleanup(cls):
cls._del_img_validate_deletion_on_dcp_and_lcp(cls.public_image['id'])
cls._del_img_validate_deletion_on_dcp_and_lcp(cls.private_image['id'])
super(TestTempestIms, cls).resource_cleanup()
def _data_setup(self, post_body):
self.addCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
post_body["id"])
image = self._create_img_and_validate_creation_on_dcp_and_lcp(
**post_body)
test.addClassResourceCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
image["id"])
# only check for Success image status if "regions" is not empty
if image["regions"]:
self._wait_for_image_status_on_dcp(image["id"], 'Success')
@ -79,15 +83,17 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
def _create_region(self, status='functional'):
region_name = data_utils.rand_name()
self.addCleanup(
self.os_admin.rms_client.delete_region,
region_name)
_, region = self.os_admin.rms_client.create_region(
**{
'region_id': region_name,
'status': status,
}
)
test.addClassResourceCleanup(
self.os_admin.rms_client.delete_region,
region_name)
return region
@decorators.idempotent_id('2b1bb28b-4151-4e75-ae1b-d21089c3418c')
@ -234,7 +240,7 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
self._wait_for_image_status_on_dcp(test_image_id, 'Success')
# do not forget to add this account to tempest cleanup
test.addClassResourceCleanup(
self.addCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
test_image_id)
# verify image record created successfully
@ -248,7 +254,7 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
post_body = self._get_image_params(set_region=False)
image = self._data_setup(post_body)
test_image_id = image['id']
test.addClassResourceCleanup(
self.addCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
test_image_id)
@ -315,18 +321,10 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
test_image_id = body['image']['id']
# add image to tempest cleanup
test.addClassResourceCleanup(
self.addCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
test_image_id)
# jh629g: changed out below code for above,
# on first glance seems to be stronger
# validation of deletion, which should be good
# for stopping resource leaks
# do not forget to add this account to tempest cleanup
# test.addClassResourceCleanup(self._delete_image, test_image_id)
_, body = self.client.get_image(test_image_id)
# since region is building it will give error
# Notification to ORD failed
@ -347,7 +345,7 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
test_image_id = body['image']['id']
# add image to tempest cleanup
test.addClassResourceCleanup(
self.addCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
test_image_id)
_, body = self.client.get_image(test_image_id)
@ -400,7 +398,7 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
self._wait_for_image_status_on_dcp(test_image_id, 'Success')
# add image to temepst cleanup
test.addClassResourceCleanup(
self.addCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
test_image_id)
# verify image record created successfully
@ -436,7 +434,7 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
self._wait_for_image_status_on_dcp(test_image_id, 'Success')
# add image to tempest cleanup
test.addClassResourceCleanup(
self.addCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
test_image_id)
# verify image record created successfully
@ -449,22 +447,23 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
def test_create_image_with_uuid(self):
post_body = self._get_image_params()
# set uuid
str_uuid = uuid.uuid4().hex
post_body['id'] = str_uuid
post_body['id'] = uuid.uuid4().hex
# add image to tempest cleanup
self.addCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
post_body['id'])
# call client create_IMAGE and wait till status equals 'Success'
_, body = self.client.create_image(**post_body)
image = body["image"]
test_image_id = image["id"]
self._wait_for_image_status_on_dcp(test_image_id, 'Success')
# add image to tempest cleanup
test.addClassResourceCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
test_image_id)
self._wait_for_image_status_on_dcp(post_body['id'], 'Success')
# verify image record created successfully
_, body = self.client.get_image(test_image_id)
_, body = self.client.get_image(post_body['id'])
image = body["image"]
self.assertEqual(image["regions"][0]["id"], str_uuid)
self.assertEqual(image["regions"][0]["id"], post_body['id'])
@decorators.idempotent_id('ae1223b5-cb75-442b-82eb-488969acc978')
def test_create_flavor_with_region_group(self):
@ -480,7 +479,7 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
self._wait_for_image_status_on_dcp(test_image_id, 'Success')
# add image to tempest cleanup
test.addClassResourceCleanup(
self.addCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
test_image_id)
# verify image record created successfully

View File

@ -24,6 +24,7 @@ class TestTempestImsNegative(base.BaseOrmTest):
@classmethod
def setup_credentials(cls):
cls.set_network_resources()
super(TestTempestImsNegative, cls).setup_credentials()
@classmethod

View File

@ -30,6 +30,7 @@ class TestTempestRegionGroup(base.BaseOrmTest):
@classmethod
def setup_credentials(cls):
cls.set_network_resources()
super(TestTempestRegionGroup, cls).setup_credentials()
@classmethod
@ -49,23 +50,20 @@ class TestTempestRegionGroup(base.BaseOrmTest):
cls.setup_ids.append(cls.region_2['id'])
_, cls.group_1 = cls.client.create_region_group(
**orm_data_utils.rand_region_group([cls.setup_ids[0]])
)
**orm_data_utils.rand_region_group(cls.setup_ids))
cls.group_ids.append(cls.group_1['group']['id'])
_, cls.group_2 = cls.client.create_region_group(
**orm_data_utils.rand_region_group(cls.setup_ids)
)
**orm_data_utils.rand_region_group(cls.setup_ids))
cls.group_ids.append(cls.group_2['group']['id'])
super(TestTempestRegionGroup, cls).resource_setup()
@classmethod
def resource_cleanup(cls):
for region_id in cls.setup_ids:
cls.client.delete_region(region_id)
cls.addClassResourceCleanup(cls.client.delete_region, region_id)
for group_id in cls.group_ids:
cls.client.delete_region_group(group_id)
super(TestTempestRegionGroup, cls).resource_cleanup()
cls.addClassResourceCleanup(cls.client.delete_region_group,
group_id)
super(TestTempestRegionGroup, cls).resource_setup()
@decorators.idempotent_id('0d377eb2-754d-49c1-9a4f-c7019dfe80ca')
def test_update_group(self):
@ -95,12 +93,18 @@ class TestTempestRegionGroup(base.BaseOrmTest):
_, region_group_details = self.client.get_region_group(
region_group['group']['id']
)
self.assertEqual(
region_group_details['regions'],
[self.region_1['id'], self.region_2['id']]
self.assertIn(
self.setup_ids[0],
region_group_details['regions']
)
# add to cleanup
self.group_ids.append(region_group['group']['id'])
self.assertIn(
self.setup_ids[1],
region_group_details['regions']
)
self.addCleanup(
self.client.delete_region_group,
region_group['group']['id'])
@decorators.idempotent_id('504cc5cb-bc19-48ea-9456-16f5b24c9530')
def test_delete_region_group(self):
@ -110,9 +114,14 @@ class TestTempestRegionGroup(base.BaseOrmTest):
_, region_group_details = self.client.get_region_group(
region_group['group']['id']
)
self.assertEqual(
region_group_details['regions'],
[self.region_1['id'], self.region_2['id']]
self.assertIn(
self.setup_ids[0],
region_group_details['regions']
)
self.assertIn(
self.setup_ids[1],
region_group_details['regions']
)
self.client.delete_region_group(region_group['group']['id'])

View File

@ -24,6 +24,7 @@ class TestTempestRegGroupNegative(base.BaseOrmTest):
@classmethod
def setup_credentials(cls):
cls.set_network_resources()
super(TestTempestRegGroupNegative, cls).setup_credentials()
@classmethod

View File

@ -51,13 +51,10 @@ class TestTempestRegion(rms_base.RmsBaseOrmTest):
'designType': 'large'})
cls.setup_ids.append(cls.region_3['id'])
super(TestTempestRegion, cls).resource_setup()
@classmethod
def resource_cleanup(cls):
for region_id in cls.setup_ids:
cls.client.delete_region(region_id)
super(TestTempestRegion, cls).resource_cleanup()
cls.addClassResourceCleanup(cls.client.delete_region, region_id)
super(TestTempestRegion, cls).resource_setup()
@decorators.idempotent_id('829c7da0-2332-4f80-ad35-24306b67ed0e')
def test_create_and_delete_region(self):

View File

@ -24,6 +24,7 @@ class TestTempestRegionsNegative(base.BaseOrmTest):
@classmethod
def setup_credentials(cls):
cls.set_network_resources()
super(TestTempestRegionsNegative, cls).setup_credentials()
@classmethod