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:
Valerii Kovalchuk 2016-09-29 14:52:27 +03:00 committed by Alexander Tivelkov
parent ccba1ae810
commit 235c44e7a5
2 changed files with 61 additions and 0 deletions

View File

@ -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

View File

@ -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'])