Add environment edit API
'/environments/<env_id>/model/<path>' endpoint added. GET request responds with the subsection of <env_id>'s object model located in its <path>. PATCH request applies json-patch from request body to <end_id>'s model. It does not contain <path> in the URL. Change-Id: I672d43464ed7d5722cc574f1a10700b070664f34 Implements: bp environment-edit
This commit is contained in:
parent
ccba1ae810
commit
235c44e7a5
|
@ -155,6 +155,28 @@ class ApplicationCatalogClient(rest_client.RestClient):
|
|||
self.expected_success(200, resp.status)
|
||||
return self._parse_resp(body)
|
||||
|
||||
def get_environment_model(self, environment_id, path='/', session_id=None):
|
||||
headers = self.get_headers()
|
||||
if session_id:
|
||||
headers.update(
|
||||
{'X-Configuration-Session': session_id}
|
||||
)
|
||||
uri = '/v1/environments/{id}/model/{path}'.format(
|
||||
id=environment_id, path=path)
|
||||
resp, body = self.get(uri, headers=headers)
|
||||
self.expected_success(200, resp.status)
|
||||
return json.loads(body)
|
||||
|
||||
def update_environment_model(self, environment_id, data, session_id):
|
||||
headers = self.get_headers(send_type='env-model-json-patch')
|
||||
headers.update(
|
||||
{'X-Configuration-Session': session_id}
|
||||
)
|
||||
uri = '/v1/environments/{id}/model/'.format(id=environment_id)
|
||||
resp, body = self.patch(uri, json.dumps(data), headers=headers)
|
||||
self.expected_success(200, resp.status)
|
||||
return json.loads(body)
|
||||
|
||||
# -----------------------Methods for session manage ---------------------------
|
||||
def create_session(self, environment_id):
|
||||
body = None
|
||||
|
|
|
@ -84,3 +84,42 @@ class TestEnvironments(base.BaseApplicationCatalogTest):
|
|||
environment = self.application_catalog_client.\
|
||||
update_environment(self.environment['id'])
|
||||
self.assertIsNot(self.environment['name'], environment['name'])
|
||||
|
||||
@testtools.testcase.attr('smoke')
|
||||
def test_get_environment_model(self):
|
||||
model = self.application_catalog_client.\
|
||||
get_environment_model(self.environment['id'])
|
||||
self.assertIsInstance(model, dict)
|
||||
self.assertIn('defaultNetworks', model)
|
||||
self.assertEqual(self.environment['name'], model['name'])
|
||||
self.assertEqual(model['?']['type'], "io.murano.Environment")
|
||||
|
||||
net_name = self.application_catalog_client.\
|
||||
get_environment_model(self.environment['id'],
|
||||
path='/defaultNetworks/environment/name')
|
||||
self.assertEqual("{0}-network".format(self.environment['name']),
|
||||
net_name)
|
||||
|
||||
@testtools.testcase.attr('smoke')
|
||||
def test_update_environment_model(self):
|
||||
session = self.application_catalog_client. \
|
||||
create_session(self.environment['id'])
|
||||
patch = [{
|
||||
"op": "replace",
|
||||
"path": "/defaultNetworks/flat",
|
||||
"value": True
|
||||
}]
|
||||
new_model = self.application_catalog_client. \
|
||||
update_environment_model(self.environment['id'], patch,
|
||||
session['id'])
|
||||
self.assertTrue(new_model['defaultNetworks']['flat'])
|
||||
|
||||
value_draft = self.application_catalog_client. \
|
||||
get_environment_model(self.environment['id'],
|
||||
'/defaultNetworks/flat',
|
||||
session['id'])
|
||||
self.assertTrue(value_draft)
|
||||
|
||||
model_current = self.application_catalog_client. \
|
||||
get_environment_model(self.environment['id'])
|
||||
self.assertIsNone(model_current['defaultNetworks']['flat'])
|
||||
|
|
Loading…
Reference in New Issue