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:
parent
7287314278
commit
ad0eab8bb2
@ -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,
|
||||
|
@ -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'],
|
||||
|
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user