diff --git a/doc/api_samples/flavor-access/v2.7/flavor-access-add-tenant-req.json b/doc/api_samples/flavor-access/v2.7/flavor-access-add-tenant-req.json new file mode 100644 index 000000000000..eb23a76c15b1 --- /dev/null +++ b/doc/api_samples/flavor-access/v2.7/flavor-access-add-tenant-req.json @@ -0,0 +1,5 @@ +{ + "addTenantAccess": { + "tenant": "fake_tenant" + } +} diff --git a/doc/api_samples/flavor-access/v2.7/flavor-access-create-req.json b/doc/api_samples/flavor-access/v2.7/flavor-access-create-req.json new file mode 100644 index 000000000000..4ad8a8c15e73 --- /dev/null +++ b/doc/api_samples/flavor-access/v2.7/flavor-access-create-req.json @@ -0,0 +1,10 @@ +{ + "flavor": { + "name": "test_flavor", + "ram": 1024, + "vcpus": 2, + "disk": 10, + "id": "10", + "os-flavor-access:is_public": true + } +} diff --git a/nova/tests/functional/api_sample_tests/api_samples/flavor-access/v2.7/flavor-access-add-tenant-req.json.tpl b/nova/tests/functional/api_sample_tests/api_samples/flavor-access/v2.7/flavor-access-add-tenant-req.json.tpl new file mode 100644 index 000000000000..94f5439e0457 --- /dev/null +++ b/nova/tests/functional/api_sample_tests/api_samples/flavor-access/v2.7/flavor-access-add-tenant-req.json.tpl @@ -0,0 +1,5 @@ +{ + "addTenantAccess": { + "tenant": "%(tenant_id)s" + } +} diff --git a/nova/tests/functional/api_sample_tests/api_samples/flavor-access/v2.7/flavor-access-create-req.json.tpl b/nova/tests/functional/api_sample_tests/api_samples/flavor-access/v2.7/flavor-access-create-req.json.tpl new file mode 100644 index 000000000000..75fa67d9fca3 --- /dev/null +++ b/nova/tests/functional/api_sample_tests/api_samples/flavor-access/v2.7/flavor-access-create-req.json.tpl @@ -0,0 +1,10 @@ +{ + "flavor": { + "name": "%(flavor_name)s", + "ram": 1024, + "vcpus": 2, + "disk": 10, + "id": "%(flavor_id)s", + "os-flavor-access:is_public": true + } +} diff --git a/nova/tests/functional/api_sample_tests/test_flavor_access.py b/nova/tests/functional/api_sample_tests/test_flavor_access.py index b58148bffd4a..1bde8c75adf2 100644 --- a/nova/tests/functional/api_sample_tests/test_flavor_access.py +++ b/nova/tests/functional/api_sample_tests/test_flavor_access.py @@ -21,12 +21,12 @@ CONF.import_opt('osapi_compute_extension', 'nova.api.openstack.compute.legacy_v2.extensions') -class FlavorAccessSampleJsonTests(api_sample_base.ApiSampleTestBaseV21): +class FlavorAccessTestsBase(api_sample_base.ApiSampleTestBaseV21): ADMIN_API = True extension_name = 'flavor-access' def _get_flags(self): - f = super(FlavorAccessSampleJsonTests, self)._get_flags() + f = super(FlavorAccessTestsBase, self)._get_flags() f['osapi_compute_extension'] = CONF.osapi_compute_extension[:] f['osapi_compute_extension'].append( 'nova.api.openstack.compute.contrib.' @@ -67,6 +67,9 @@ class FlavorAccessSampleJsonTests(api_sample_base.ApiSampleTestBaseV21): subs) self._verify_response("flavor-access-create-resp", subs, response, 200) + +class FlavorAccessSampleJsonTests(FlavorAccessTestsBase): + def test_flavor_access_detail(self): response = self._do_get('flavors/detail') self._verify_response('flavor-access-detail-resp', {}, response, 200) @@ -109,3 +112,35 @@ class FlavorAccessSampleJsonTests(api_sample_base.ApiSampleTestBaseV21): } self._verify_response('flavor-access-remove-tenant-resp', exp_subs, response, 200) + + +class FlavorAccessV27SampleJsonTests(FlavorAccessTestsBase): + microversion = '2.7' + + scenarios = [('v2_7', {'api_major_version': 'v2.1'})] + + def setUp(self): + super(FlavorAccessV27SampleJsonTests, self).setUp() + self.api.microversion = self.microversion + + def test_add_tenant_access_to_public_flavor(self): + subs = { + 'flavor_id': '10', + 'flavor_name': 'test_flavor' + } + # Create public flavor + response = self._do_post("flavors", + "flavor-access-create-req", + subs) + self.assertEqual(200, response.status_code) + + subs = { + 'flavor_id': '10', + 'tenant_id': 'fake_tenant' + } + # Version 2.7+ will return HTTPConflict (409) + # if the flavor is public + response = self._do_post('flavors/10/action', + 'flavor-access-add-tenant-req', + subs) + self.assertEqual(409, response.status_code)