Fix policy validation in JSONSchema

Fix the JSONSchema for server_group to include the validation of
conflicting policies. The check in the create function in v3 was
removed.

Change-Id: I258f76adb6e5b85838bb2daae0ac25057ea8e650
Closes-Bug: #1413281
This commit is contained in:
Ildiko Vancsa 2015-01-21 17:55:02 +01:00
parent 7287314278
commit ad0eab8bb2
3 changed files with 9 additions and 13 deletions

View File

@ -131,12 +131,6 @@ class ServerGroupController(wsgi.Controller):
"""Creates a new server group."""
context = _authorize_context(req)
policies = body['server_group']['policies']
if ('anti-affinity' in policies and
'affinity' in policies):
msg = _("Conflicting policies configured!")
raise exc.HTTPBadRequest(explanation=msg)
quotas = objects.Quotas()
try:
quotas.reserve(context, project_id=context.project_id,

View File

@ -29,11 +29,9 @@ create = {
'name': parameter_types.name,
'policies': {
'type': 'array',
'items': {
'type': 'string', 'enum': SUPPORTED_POLICIES
},
'items': [{'enum': SUPPORTED_POLICIES}],
'uniqueItems': True,
'minItems': 1
'additionalItems': False,
}
},
'required': ['name', 'policies'],

View File

@ -93,9 +93,8 @@ class ServerGroupTestV21(test.TestCase):
self.assertRaises(self.validation_error, self.controller.create,
self.req, body={'server_group': sgroup})
def test_create_server_group_normal(self):
def _create_server_group_normal(self, policies):
sgroup = server_group_template()
policies = ['anti-affinity']
sgroup['policies'] = policies
res_dict = self.controller.create(self.req,
body={'server_group': sgroup})
@ -103,6 +102,11 @@ class ServerGroupTestV21(test.TestCase):
self.assertTrue(uuidutils.is_uuid_like(res_dict['server_group']['id']))
self.assertEqual(res_dict['server_group']['policies'], policies)
def test_create_server_group(self):
policies = ['affinity', 'anti-affinity']
for policy in policies:
self._create_server_group_normal([policy])
def _create_instance(self, context):
instance = objects.Instance(context=context, image_ref=1, node='node1',
reservation_id='a', host='host1', project_id='fake',
@ -208,7 +212,7 @@ class ServerGroupTestV21(test.TestCase):
sgroup = server_group_template()
policies = ['anti-affinity', 'affinity']
sgroup['policies'] = policies
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create,
self.assertRaises(self.validation_error, self.controller.create,
self.req, body={'server_group': sgroup})
def test_create_server_group_with_duplicate_policies(self):