diff --git a/ranger_tempest_plugin/tests/api/test_flavors.py b/ranger_tempest_plugin/tests/api/test_flavors.py index 447f9c8..6373cdf 100755 --- a/ranger_tempest_plugin/tests/api/test_flavors.py +++ b/ranger_tempest_plugin/tests/api/test_flavors.py @@ -134,6 +134,22 @@ class TestTempestFms(fms_base.FmsBaseOrmTest): 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( + **{ + 'region_id': region_name, + 'status': status, + } + ) + self.addCleanup(self.os_admin.rms_client.delete_region, region_name) + return region + + def _delete_flavor(self, flvr_id): + # delete the data and do get_flavor to ensure 404-NotFound response + self._del_flv_and_validate_deletion_on_dcp_and_lcp(flvr_id) + self.assertRaises(exceptions.NotFound, self.client.get_flavor, flvr_id) + @decorators.idempotent_id('2a4481cd-acce-4a5d-af7c-940222a6238b') def test_get_flavor(self): """Execute get_flavor using flavor_id / flavor_name""" @@ -494,3 +510,47 @@ class TestTempestFms(fms_base.FmsBaseOrmTest): flavor_details = self._get_flavor_details(uuid_) self.assertEqual(flavor_details['status'], 'Success') self.assertEqual(flavor['id'], uuid_) + + @decorators.idempotent_id('37f1909f-3ba2-403c-ba0c-0a11b869d6a1') + def test_flavor_while_region_down(self): + # create region with status down + region = self._create_region(status='down') + + # create flavor within that newly created region + post_body = self._get_flavor_params() + post_body['regions'][0]['name'] = region['name'] + self.assertRaises(exceptions.BadRequest, + self.client.create_flavor, **post_body) + + @decorators.idempotent_id('1c6a24d3-345e-46d4-aaa0-127b7fc8a42d') + def test_flavor_while_region_building(self): + # create region with status building + region = self._create_region(status='building') + + post_body = self._get_flavor_params() + post_body['regions'][0]['name'] = region['name'] + _, body = self.client.create_flavor(**post_body) + + self.assertIn('id', body['flavor']) + test_flvr_id = body['flavor']['id'] + self.addCleanup(self._delete_flavor, test_flvr_id) + + flavor = self._get_flavor_details(test_flvr_id) + self.assertEqual(flavor['id'], test_flvr_id) + self.assertEqual(flavor['status'], 'Error') + + @decorators.idempotent_id('e17dab64-c900-4a19-a7a2-96a0bf4af0f8') + def test_flavor_while_region_maintenance(self): + # create region with status maintenance + region = self._create_region(status='maintenance') + + post_body = self._get_flavor_params() + post_body['regions'][0]['name'] = region['name'] + _, body = self.client.create_flavor(**post_body) + self.assertIn('id', body['flavor']) + test_flvr_id = body['flavor']['id'] + self.addCleanup(self._delete_flavor, test_flvr_id) + + flavor = self._get_flavor_details(test_flvr_id) + self.assertEqual(flavor['id'], test_flvr_id) + self.assertEqual(flavor['status'], 'Error')