Merge "Improve exception handling during enviroment editing"
This commit is contained in:
commit
a01eedba31
@ -204,6 +204,21 @@ Update Environment
|
|||||||
"version": 0
|
"version": 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+----------------+-----------------------------------------------------------+
|
||||||
|
| Code | Description |
|
||||||
|
+================+===========================================================+
|
||||||
|
| 200 | Edited environment |
|
||||||
|
+----------------+-----------------------------------------------------------+
|
||||||
|
| 400 | Environment name must contain only alphanumeric or '_-.' |
|
||||||
|
| | characters, must start with alpha |
|
||||||
|
+----------------+-----------------------------------------------------------+
|
||||||
|
| 401 | User is not authorized to access environment |
|
||||||
|
+----------------+-----------------------------------------------------------+
|
||||||
|
| 404 | Environment not found |
|
||||||
|
+----------------+-----------------------------------------------------------+
|
||||||
|
| 409 | Environment with specified name already exists |
|
||||||
|
+----------------+-----------------------------------------------------------+
|
||||||
|
|
||||||
Get Environment Details
|
Get Environment Details
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
@ -126,8 +126,13 @@ class Controller(object):
|
|||||||
|
|
||||||
LOG.debug('ENV NAME: {0}>'.format(body['name']))
|
LOG.debug('ENV NAME: {0}>'.format(body['name']))
|
||||||
if VALID_NAME_REGEX.match(str(body['name'])):
|
if VALID_NAME_REGEX.match(str(body['name'])):
|
||||||
environment.update(body)
|
try:
|
||||||
environment.save(session)
|
environment.update(body)
|
||||||
|
environment.save(session)
|
||||||
|
except db_exc.DBDuplicateEntry:
|
||||||
|
msg = _('Environment with specified name already exists')
|
||||||
|
LOG.exception(msg)
|
||||||
|
raise exc.HTTPConflict(explanation=msg)
|
||||||
else:
|
else:
|
||||||
msg = _('Environment name must contain only alphanumeric '
|
msg = _('Environment name must contain only alphanumeric '
|
||||||
'or "_-." characters, must start with alpha')
|
'or "_-." characters, must start with alpha')
|
||||||
|
@ -196,6 +196,63 @@ class TestEnvironmentApi(tb.ControllerTest, tb.MuranoApiTestCase):
|
|||||||
|
|
||||||
self.assertEqual(expected, json.loads(result.body))
|
self.assertEqual(expected, json.loads(result.body))
|
||||||
|
|
||||||
|
def test_update_environment_with_existing_name(self):
|
||||||
|
self._set_policy_rules(
|
||||||
|
{'update_environment': '@'}
|
||||||
|
)
|
||||||
|
|
||||||
|
fake_now = timeutils.utcnow()
|
||||||
|
timeutils.utcnow.override_time = fake_now
|
||||||
|
|
||||||
|
expected = dict(
|
||||||
|
id='111',
|
||||||
|
name='env1',
|
||||||
|
version=0,
|
||||||
|
networking={},
|
||||||
|
created=fake_now,
|
||||||
|
updated=fake_now,
|
||||||
|
tenant_id=self.tenant,
|
||||||
|
description={
|
||||||
|
'Objects': {
|
||||||
|
'?': {'id': '111'}
|
||||||
|
},
|
||||||
|
'Attributes': []
|
||||||
|
}
|
||||||
|
)
|
||||||
|
e = models.Environment(**expected)
|
||||||
|
test_utils.save_models(e)
|
||||||
|
|
||||||
|
fake_now = timeutils.utcnow()
|
||||||
|
timeutils.utcnow.override_time = fake_now
|
||||||
|
|
||||||
|
expected = dict(
|
||||||
|
id='222',
|
||||||
|
name='env2',
|
||||||
|
version=0,
|
||||||
|
networking={},
|
||||||
|
created=fake_now,
|
||||||
|
updated=fake_now,
|
||||||
|
tenant_id=self.tenant,
|
||||||
|
description={
|
||||||
|
'Objects': {
|
||||||
|
'?': {'id': '222'}
|
||||||
|
},
|
||||||
|
'Attributes': []
|
||||||
|
}
|
||||||
|
)
|
||||||
|
e = models.Environment(**expected)
|
||||||
|
test_utils.save_models(e)
|
||||||
|
|
||||||
|
self.expect_policy_check('update_environment',
|
||||||
|
{'environment_id': '111'})
|
||||||
|
|
||||||
|
body = {
|
||||||
|
'name': 'env2'
|
||||||
|
}
|
||||||
|
req = self._put('/environments/111', json.dumps(body))
|
||||||
|
result = req.get_response(self.api)
|
||||||
|
self.assertEqual(409, result.status_code)
|
||||||
|
|
||||||
def test_delete_environment(self):
|
def test_delete_environment(self):
|
||||||
"""Test that environment deletion results in the correct rpc call."""
|
"""Test that environment deletion results in the correct rpc call."""
|
||||||
self._set_policy_rules(
|
self._set_policy_rules(
|
||||||
|
Loading…
Reference in New Issue
Block a user