compute: Use valid extra specs to test 'os-extra_specs' API
In Ussuri, nova is hoping to implement support for extra spec validation. If or when this is completed, only extra specs that are recognised will be permitted by default. We're currently using a number of arbitrary extra specs to validate the 'os-extra_specs' API meaning we will fall afoul of this validation. Head the issue off now by using recognized extra specs, namely 'hw:numa_nodes' and 'hw:cpu_policy', instead. Change-Id: I95a1050d6a5e2e40793ae7f18ff0d326455b4b36 Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This commit is contained in:
parent
fbde5a3948
commit
e30375e174
|
@ -64,7 +64,7 @@ class FlavorsExtraSpecsTestJSON(base.BaseV2ComputeAdminTest):
|
|||
# Test to SET, GET, UPDATE, SHOW, UNSET flavor extra
|
||||
# spec as a user with admin privileges.
|
||||
# Assigning extra specs values that are to be set
|
||||
specs = {"key1": "value1", "key2": "value2"}
|
||||
specs = {'hw:numa_nodes': '1', 'hw:cpu_policy': 'shared'}
|
||||
# SET extra specs to the flavor created in setUp
|
||||
set_body = self.admin_flavors_client.set_flavor_extra_spec(
|
||||
self.flavor['id'], **specs)['extra_specs']
|
||||
|
@ -74,30 +74,33 @@ class FlavorsExtraSpecsTestJSON(base.BaseV2ComputeAdminTest):
|
|||
self.flavor['id'])['extra_specs'])
|
||||
self.assertEqual(get_body, specs)
|
||||
|
||||
# UPDATE the value of the extra specs key1
|
||||
update_body = \
|
||||
self.admin_flavors_client.update_flavor_extra_spec(
|
||||
self.flavor['id'], "key1", key1="value")
|
||||
self.assertEqual({"key1": "value"}, update_body)
|
||||
# UPDATE the value of the extra specs 'hw:numa_nodes'
|
||||
update_body = self.admin_flavors_client.update_flavor_extra_spec(
|
||||
self.flavor['id'], "hw:numa_nodes", **{'hw:numa_nodes': '2'})
|
||||
self.assertEqual({'hw:numa_nodes': '2'}, update_body)
|
||||
|
||||
# GET extra specs and verify the value of the key2
|
||||
# GET extra specs and verify the value of the 'hw:cpu_policy'
|
||||
# is the same as before
|
||||
get_body = self.admin_flavors_client.list_flavor_extra_specs(
|
||||
self.flavor['id'])['extra_specs']
|
||||
self.assertEqual(get_body, {"key1": "value", "key2": "value2"})
|
||||
self.assertEqual(
|
||||
get_body, {'hw:numa_nodes': '2', 'hw:cpu_policy': 'shared'}
|
||||
)
|
||||
|
||||
# UNSET extra specs that were set in this test
|
||||
self.admin_flavors_client.unset_flavor_extra_spec(self.flavor['id'],
|
||||
"key1")
|
||||
self.admin_flavors_client.unset_flavor_extra_spec(self.flavor['id'],
|
||||
"key2")
|
||||
self.admin_flavors_client.unset_flavor_extra_spec(
|
||||
self.flavor['id'], 'hw:numa_nodes'
|
||||
)
|
||||
self.admin_flavors_client.unset_flavor_extra_spec(
|
||||
self.flavor['id'], 'hw:cpu_policy'
|
||||
)
|
||||
get_body = self.admin_flavors_client.list_flavor_extra_specs(
|
||||
self.flavor['id'])['extra_specs']
|
||||
self.assertEmpty(get_body)
|
||||
|
||||
@decorators.idempotent_id('a99dad88-ae1c-4fba-aeb4-32f898218bd0')
|
||||
def test_flavor_non_admin_get_all_keys(self):
|
||||
specs = {"key1": "value1", "key2": "value2"}
|
||||
specs = {'hw:numa_nodes': '1', 'hw:cpu_policy': 'shared'}
|
||||
self.admin_flavors_client.set_flavor_extra_spec(self.flavor['id'],
|
||||
**specs)
|
||||
body = (self.flavors_client.list_flavor_extra_specs(
|
||||
|
@ -108,11 +111,14 @@ class FlavorsExtraSpecsTestJSON(base.BaseV2ComputeAdminTest):
|
|||
|
||||
@decorators.idempotent_id('12805a7f-39a3-4042-b989-701d5cad9c90')
|
||||
def test_flavor_non_admin_get_specific_key(self):
|
||||
specs = {'hw:numa_nodes': '1', 'hw:cpu_policy': 'shared'}
|
||||
body = self.admin_flavors_client.set_flavor_extra_spec(
|
||||
self.flavor['id'], key1="value1", key2="value2")['extra_specs']
|
||||
self.assertEqual(body['key1'], 'value1')
|
||||
self.assertIn('key2', body)
|
||||
self.flavor['id'], **specs
|
||||
)['extra_specs']
|
||||
self.assertEqual(body['hw:numa_nodes'], '1')
|
||||
self.assertIn('hw:cpu_policy', body)
|
||||
|
||||
body = self.flavors_client.show_flavor_extra_spec(
|
||||
self.flavor['id'], 'key1')
|
||||
self.assertEqual(body['key1'], 'value1')
|
||||
self.assertNotIn('key2', body)
|
||||
self.flavor['id'], 'hw:numa_nodes')
|
||||
self.assertEqual(body['hw:numa_nodes'], '1')
|
||||
self.assertNotIn('hw:cpu_policy', body)
|
||||
|
|
|
@ -68,32 +68,36 @@ class FlavorsExtraSpecsNegativeTestJSON(base.BaseV2ComputeAdminTest):
|
|||
self.assertRaises(lib_exc.Forbidden,
|
||||
self.flavors_client.set_flavor_extra_spec,
|
||||
self.flavor['id'],
|
||||
key1="value1", key2="value2")
|
||||
**{'hw:numa_nodes': '1', 'hw:cpu_policy': 'shared'})
|
||||
|
||||
@decorators.attr(type=['negative'])
|
||||
@decorators.idempotent_id('1ebf4ef8-759e-48fe-a801-d451d80476fb')
|
||||
def test_flavor_non_admin_update_specific_key(self):
|
||||
# non admin user is not allowed to update flavor extra spec
|
||||
body = self.admin_flavors_client.set_flavor_extra_spec(
|
||||
self.flavor['id'], key1="value1", key2="value2")['extra_specs']
|
||||
self.assertEqual(body['key1'], 'value1')
|
||||
self.flavor['id'],
|
||||
**{'hw:numa_nodes': '1', 'hw:cpu_policy': 'shared'}
|
||||
)['extra_specs']
|
||||
self.assertEqual(body['hw:numa_nodes'], '1')
|
||||
self.assertRaises(lib_exc.Forbidden,
|
||||
self.flavors_client.
|
||||
update_flavor_extra_spec,
|
||||
self.flavor['id'],
|
||||
'key1',
|
||||
key1='value1_new')
|
||||
'hw:numa_nodes',
|
||||
**{'hw:numa_nodes': '1'})
|
||||
|
||||
@decorators.attr(type=['negative'])
|
||||
@decorators.idempotent_id('28f12249-27c7-44c1-8810-1f382f316b11')
|
||||
def test_flavor_non_admin_unset_keys(self):
|
||||
self.admin_flavors_client.set_flavor_extra_spec(
|
||||
self.flavor['id'], key1="value1", key2="value2")
|
||||
self.flavor['id'],
|
||||
**{'hw:numa_nodes': '1', 'hw:cpu_policy': 'shared'}
|
||||
)
|
||||
|
||||
self.assertRaises(lib_exc.Forbidden,
|
||||
self.flavors_client.unset_flavor_extra_spec,
|
||||
self.flavor['id'],
|
||||
'key1')
|
||||
'hw:numa_nodes')
|
||||
|
||||
@decorators.attr(type=['negative'])
|
||||
@decorators.idempotent_id('440b9f3f-3c7f-4293-a106-0ceda350f8de')
|
||||
|
@ -101,7 +105,7 @@ class FlavorsExtraSpecsNegativeTestJSON(base.BaseV2ComputeAdminTest):
|
|||
self.assertRaises(lib_exc.NotFound,
|
||||
self.admin_flavors_client.unset_flavor_extra_spec,
|
||||
self.flavor['id'],
|
||||
'nonexistent_key')
|
||||
'hw:cpu_thread_policy')
|
||||
|
||||
@decorators.attr(type=['negative'])
|
||||
@decorators.idempotent_id('329a7be3-54b2-48be-8052-bf2ce4afd898')
|
||||
|
@ -109,7 +113,7 @@ class FlavorsExtraSpecsNegativeTestJSON(base.BaseV2ComputeAdminTest):
|
|||
self.assertRaises(lib_exc.NotFound,
|
||||
self.flavors_client.show_flavor_extra_spec,
|
||||
self.flavor['id'],
|
||||
"nonexistent_key")
|
||||
'hw:cpu_thread_policy')
|
||||
|
||||
@decorators.attr(type=['negative'])
|
||||
@decorators.idempotent_id('25b822b8-9f49-44f6-80de-d99f0482e5cb')
|
||||
|
@ -118,8 +122,8 @@ class FlavorsExtraSpecsNegativeTestJSON(base.BaseV2ComputeAdminTest):
|
|||
self.assertRaises(lib_exc.BadRequest,
|
||||
self.admin_flavors_client.update_flavor_extra_spec,
|
||||
self.flavor['id'],
|
||||
"key2",
|
||||
key1="value")
|
||||
'hw:numa_nodes',
|
||||
**{'hw:cpu_policy': 'shared'})
|
||||
|
||||
@decorators.attr(type=['negative'])
|
||||
@decorators.idempotent_id('f5889590-bf66-41cc-b4b1-6e6370cfd93f')
|
||||
|
@ -128,6 +132,5 @@ class FlavorsExtraSpecsNegativeTestJSON(base.BaseV2ComputeAdminTest):
|
|||
self.assertRaises(lib_exc.BadRequest,
|
||||
self.admin_flavors_client.update_flavor_extra_spec,
|
||||
self.flavor['id'],
|
||||
"key1",
|
||||
key1="value",
|
||||
key2="value")
|
||||
'hw:numa_nodes',
|
||||
**{'hw:numa_nodes': '1', 'hw:cpu_policy': 'shared'})
|
||||
|
|
Loading…
Reference in New Issue