Merge "Add mandatory_attrs to BayModelPatchType"

This commit is contained in:
Jenkins 2016-01-14 21:26:43 +00:00 committed by Gerrit Code Review
commit 628f7c4239
2 changed files with 35 additions and 18 deletions

View File

@ -33,7 +33,12 @@ from magnum import objects
class BayModelPatchType(types.JsonPatchType):
pass
@staticmethod
def mandatory_attrs():
return ['/image_id', '/keypair_id', '/external_network_id', '/coe',
'/tls_disabled', '/public', '/registry_enabled',
'/server_type', '/cluster_distro', '/network_driver']
class BayModel(base.APIBase):

View File

@ -340,37 +340,35 @@ class TestPatch(api_base.FunctionalTest):
baymodel = obj_utils.create_test_baymodel(self.context,
uuid=utils.generate_uuid())
response = self.get_json('/baymodels/%s' % baymodel.uuid)
self.assertIsNotNone(response['image_id'])
self.assertIsNotNone(response['dns_nameserver'])
response = self.patch_json('/baymodels/%s' % baymodel.uuid,
[{'path': '/image_id', 'op': 'remove'}])
[{'path': '/dns_nameserver',
'op': 'remove'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_code)
response = self.get_json('/baymodels/%s' % baymodel.uuid)
self.assertIsNone(response['image_id'])
self.assertIsNone(response['dns_nameserver'])
# Assert nothing else was changed
self.assertEqual(baymodel.uuid, response['uuid'])
self.assertEqual(baymodel.name, response['name'])
self.assertEqual(baymodel.apiserver_port, response['apiserver_port'])
self.assertEqual(self.baymodel.fixed_network,
self.assertEqual(baymodel.image_id,
response['image_id'])
self.assertEqual(baymodel.fixed_network,
response['fixed_network'])
self.assertEqual(self.baymodel.network_driver,
self.assertEqual(baymodel.network_driver,
response['network_driver'])
self.assertEqual(self.baymodel.docker_volume_size,
self.assertEqual(baymodel.docker_volume_size,
response['docker_volume_size'])
self.assertEqual(self.baymodel.ssh_authorized_key,
self.assertEqual(baymodel.ssh_authorized_key,
response['ssh_authorized_key'])
self.assertEqual(self.baymodel.coe,
response['coe'])
self.assertEqual(self.baymodel.http_proxy,
response['http_proxy'])
self.assertEqual(self.baymodel.https_proxy,
response['https_proxy'])
self.assertEqual(self.baymodel.no_proxy,
response['no_proxy'])
self.assertEqual(self.baymodel.labels,
response['labels'])
self.assertEqual(baymodel.coe, response['coe'])
self.assertEqual(baymodel.http_proxy, response['http_proxy'])
self.assertEqual(baymodel.https_proxy, response['https_proxy'])
self.assertEqual(baymodel.no_proxy, response['no_proxy'])
self.assertEqual(baymodel.labels, response['labels'])
def test_remove_non_existent_property_fail(self):
response = self.patch_json('/baymodels/%s' % self.baymodel.uuid,
@ -380,6 +378,20 @@ class TestPatch(api_base.FunctionalTest):
self.assertEqual(400, response.status_code)
self.assertTrue(response.json['error_message'])
def test_remove_mandatory_property_fail(self):
mandatory_properties = ('/image_id', '/keypair_id',
'/external_network_id', '/coe',
'/tls_disabled', '/public',
'/registry_enabled', '/server_type',
'/cluster_distro', '/network_driver')
for p in mandatory_properties:
response = self.patch_json('/baymodels/%s' % self.baymodel.uuid,
[{'path': p, 'op': 'remove'}],
expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_code)
self.assertTrue(response.json['error_message'])
def test_add_root_non_existent(self):
response = self.patch_json(
'/baymodels/%s' % self.baymodel.uuid,