Fix Tempest IMS tests for Ranger

Adjusts tests to work with ranger
adjusted for python 3.6. Failures
occurred due to bad application of
region functionality in previous
iterations of tests.

Change-Id: Id077817a119e65dd5d483eafa1759ae371600f88
This commit is contained in:
jh629g 2020-03-18 13:22:20 -05:00
parent 03f238e85e
commit 80186622a9
2 changed files with 58 additions and 79 deletions

View File

@ -66,7 +66,7 @@ disable=protected-access,fixme,too-many-branches,
redefined-variable-type,
# bug in 1.7.2 https://github.com/PyCQA/pylint/issues/1493
not-callable,
C0411
C0411,R0901
[REPORTS]

View File

@ -13,6 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo_concurrency import lockutils
from ranger_tempest_plugin.data_utils import data_utils
from ranger_tempest_plugin.tests.api import ims_base
from tempest import config
@ -22,6 +24,9 @@ from tempest.lib import exceptions
CONF = config.CONF
PREFIX = 'ranger'
SYNC = lockutils.synchronized_with_prefix(PREFIX)
class TestTempestIms(ims_base.ImsBaseOrmTest):
@ -56,6 +61,12 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
super(TestTempestIms, cls).resource_setup()
def _update_region(self, region_name, status=None):
if status is None:
status = {'status': 'functional'}
self.os_admin.rms_client.update_region_status(
region_name, status)
def _data_setup(self, post_body):
self.addCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
@ -293,26 +304,28 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
self.assertRaises(exceptions.NotFound, self.client.get_image,
image['id'])
@SYNC('region')
@decorators.idempotent_id('e642fa39-1b69-4d17-8bd1-aee90ea042a3')
def test_image_while_region_down(self):
# create region with status down
region = self._create_region(status='down')
self._update_region(CONF.identity.region,
status={'status': 'down'})
# create image within that newly created region
post_body = self._get_image_params()
post_body['regions'][0]['name'] = region['name']
post_body['regions'][0]['name'] = CONF.identity.region
self.assertRaises(exceptions.BadRequest,
self.client.create_image, **post_body)
self._update_region(CONF.identity.region)
@SYNC('region')
@decorators.idempotent_id('a1fee342-3000-41a6-97f9-b33fd2734e4d')
def test_image_while_region_building(self):
# create region with status building
region = self._create_region(status='building')
self._update_region(CONF.identity.region,
status={'status': 'building'})
# create image within that newly created region
post_body = self._get_image_params()
post_body['regions'][0]['name'] = region['name']
post_body['regions'][0]['name'] = CONF.identity.region
# add image to tempest cleanup
self.addCleanup(
@ -320,23 +333,22 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
post_body["id"])
_, body = self.client.create_image(**post_body)
self.assertIn('id', body['image'])
image = body['image']
_, body = self.client.get_image(image['id'])
# since region is building it will send error
# notification to ORD
self._wait_for_image_status_on_dcp(image['id'], 'Success')
self.assertIn('id', body['image'])
_, body = self.client.get_image(image['id'])
self.assertEqual(body['image']['id'], image['id'])
self.assertEqual(body['image']['status'], 'error')
self.assertEqual(body['image']['region'][0]['status'], 'success')
self._update_region(CONF.identity.region)
@SYNC('region')
@decorators.idempotent_id('b967ce58-5d24-4af2-8416-a336772c8087')
def test_image_while_region_maintenance(self):
# create region with status maintenance
region = self._create_region(status='maintenance')
self._update_region(CONF.identity.region,
status={'status': 'maintenance'})
# get image params and add region to them
post_body = self._get_image_params()
post_body['regions'][0]['name'] = region['name']
post_body['regions'][0]['name'] = CONF.identity.region
# add image to tempest cleanup
self.addCleanup(
@ -344,14 +356,14 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
post_body['id'])
_, body = self.client.create_image(**post_body)
self.assertIn('id', body['image'])
image = body['image']
self._wait_for_image_status_on_dcp(image['id'], 'Success')
self.assertIn('id', body['image'])
_, body = self.client.get_image(image['id'])
# since region is maintenance it will give error
# Notification to ORD failed
self.assertEqual(body['image']['id'], image['id'])
self.assertEqual(body['image']['status'], 'Error')
self.assertEqual(body['image']['region'][0]['status'], 'Success')
self._update_region(CONF.identity.region)
@decorators.idempotent_id('eae7ca20-5383-4579-9f73-0138b8b3ec85')
def test_list_public_images(self):
@ -384,44 +396,43 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
image_ids = [img['id'] for img in body['images']]
self.assertIn(image['id'], image_ids)
@decorators.idempotent_id('59887b26-8e73-4781-87a4-3b505ece0021')
def test_create_image_protected_true(self):
post_body = self._get_image_params()
# TODO(JH629g): following test skipped until protect image bug resolved
# @decorators.idempotent_id('59887b26-8e73-4781-87a4-3b505ece0021')
# def test_create_image_protected_true(self):
# post_body = self._get_image_params()
# set Protected True
post_body['protected'] = True
# post_body['protected'] = True
# add image to temepst cleanup
self.addCleanup(
self._del_img_validate_deletion_on_dcp_and_lcp,
post_body['id'])
# 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"]
self._wait_for_image_status_on_dcp(image['id'], 'Success')
# _, body = self.client.create_image(**post_body)
# image = body["image"]
# self._wait_for_image_status_on_dcp(image['id'], 'Success')
# verify image record created successfully
_, body = self.client.get_image(image['id'])
image = body["image"]
self.assertEqual(image["regions"][0]["name"], CONF.identity.region)
# _, body = self.client.get_image(image['id'])
# image = body["image"]
# self.assertEqual(image["regions"][0]["name"], CONF.identity.region)
# unset protect for cleanup
# post_body['protected'] = False
# _, body = self.client.update_image(post_body['id'],
# para=None,
# **post_body)
# self._wait_for_image_status_on_dcp(image['id'], 'Success')
@decorators.idempotent_id('56cd1de0-3908-41d5-af98-45ad95463817')
def test_create_image_with_tags_properties(self):
post_body = self._get_image_params()
# set tags and properties
tags = ["brocade", "vyatta", "vCEImage", "mediumImage"]
tags = ["brocade", "mediumImage", "vCEImage", "vyatta"]
properties = {
"Application-Name": "Vyatta",
"Application-Type": "VCE",
"Application-Vendor": "Brocade",
"Application-Version": "3.5.R5.att-V6.0",
"hw_vif_model": "VirtualVmxnet3",
"OS": "Debian",
"OS-Version": "7",
"Post-Processing-Networking": "None",
"Post-Processing-Tools": "None",
"vmware-adaptertype": "ide",
"vmware-disktype": "sparse"
}
post_body["tags"] = tags
post_body["properties"] = properties
@ -439,8 +450,8 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
# verify image record created successfully
_, body = self.client.get_image(image['id'])
image = body["image"]
self.assertListEqual(image["regions"][0]["tags"], tags)
self.assertDictEqual(image["regions"][0]["properties"], properties)
self.assertListEqual(image["tags"], tags)
self.assertDictEqual(image["properties"], properties)
@decorators.idempotent_id('67aa7014-4dbb-4d66-bc7b-1a95a57494f8')
def test_create_image_with_uuid(self):
@ -460,36 +471,4 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
# verify image record created successfully
_, body = self.client.get_image(image['id'])
image = body["image"]
self.assertEqual(image["regions"][0]['id'], post_body['id'])
@decorators.idempotent_id('ae1223b5-cb75-442b-82eb-488969acc978')
def test_create_image_with_region_group(self):
# grab image details needed for image build
post_body = self._get_image_params()
# define a region group
region_group = {"name": "NCLargetest", "type": "group"}
# add region_group to regions in image
post_body["regions"].append(region_group)
# 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)
# set object to built image and wait until it is ready for use
image = body["image"]
self._wait_for_image_status_on_dcp(image['id'], 'Success')
# verify image record created successfully
_, body = self.client.get_image(image['id'])
image = body["image"]
# Aggregate Status
self.assertEqual(image["status"], 'Success')
# Region Status
self.assertEqual(image["regions"][1]["status"], 'Success')
# region group
self.assertDictEqual(image["regions"][1]["name"], "NCLargetest")
self.assertEqual(image['id'], post_body['id'])