Merge "Fix 'createImage' server actions for V2.1 API"
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"create_image" : {
|
||||
"createImage" : {
|
||||
"name" : "foo-image",
|
||||
"metadata": {
|
||||
"meta_var": "meta_val"
|
||||
|
||||
@@ -934,17 +934,17 @@ class ServersController(wsgi.Controller):
|
||||
|
||||
@extensions.expected_errors((400, 403, 404, 409))
|
||||
@wsgi.response(202)
|
||||
@wsgi.action('create_image')
|
||||
@wsgi.action('createImage')
|
||||
@common.check_snapshots_enabled
|
||||
def _action_create_image(self, req, id, body):
|
||||
"""Snapshot a server instance."""
|
||||
context = req.environ['nova.context']
|
||||
entity = body.get("create_image", {})
|
||||
entity = body.get("createImage", {})
|
||||
|
||||
image_name = entity.get("name")
|
||||
|
||||
if not image_name:
|
||||
msg = _("create_image entity requires name attribute")
|
||||
msg = _("createImage entity requires name attribute")
|
||||
raise exc.HTTPBadRequest(explanation=msg)
|
||||
|
||||
props = {}
|
||||
@@ -986,7 +986,7 @@ class ServersController(wsgi.Controller):
|
||||
extra_properties=props)
|
||||
except exception.InstanceInvalidState as state_error:
|
||||
common.raise_http_conflict_for_instance_invalid_state(state_error,
|
||||
'create_image')
|
||||
'createImage')
|
||||
except exception.Invalid as err:
|
||||
raise exc.HTTPBadRequest(explanation=err.format_message())
|
||||
|
||||
|
||||
@@ -818,7 +818,7 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
|
||||
def test_create_image(self):
|
||||
body = {
|
||||
'create_image': {
|
||||
'createImage': {
|
||||
'name': 'Snapshot 1',
|
||||
},
|
||||
}
|
||||
@@ -832,7 +832,7 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
def test_create_image_name_too_long(self):
|
||||
long_name = 'a' * 260
|
||||
body = {
|
||||
'create_image': {
|
||||
'createImage': {
|
||||
'name': long_name,
|
||||
},
|
||||
}
|
||||
@@ -847,10 +847,10 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
def _fake_id(x):
|
||||
return '%s-%s-%s-%s' % (x * 8, x * 4, x * 4, x * 12)
|
||||
|
||||
body = dict(create_image=dict(name='snapshot_of_volume_backed'))
|
||||
body = dict(createImage=dict(name='snapshot_of_volume_backed'))
|
||||
|
||||
if extra_properties:
|
||||
body['create_image']['metadata'] = extra_properties
|
||||
body['createImage']['metadata'] = extra_properties
|
||||
|
||||
image_service = glance.get_default_image_service()
|
||||
|
||||
@@ -941,9 +941,9 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
def _fake_id(x):
|
||||
return '%s-%s-%s-%s' % (x * 8, x * 4, x * 4, x * 12)
|
||||
|
||||
body = dict(create_image=dict(name='snapshot_of_volume_backed'))
|
||||
body = dict(createImage=dict(name='snapshot_of_volume_backed'))
|
||||
if extra_metadata:
|
||||
body['create_image']['metadata'] = extra_metadata
|
||||
body['createImage']['metadata'] = extra_metadata
|
||||
|
||||
image_service = glance.get_default_image_service()
|
||||
|
||||
@@ -1011,7 +1011,7 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
"""
|
||||
self.flags(allow_instance_snapshots=False)
|
||||
body = {
|
||||
'create_image': {
|
||||
'createImage': {
|
||||
'name': 'Snapshot 1',
|
||||
},
|
||||
}
|
||||
@@ -1022,7 +1022,7 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
|
||||
def test_create_image_with_metadata(self):
|
||||
body = {
|
||||
'create_image': {
|
||||
'createImage': {
|
||||
'name': 'Snapshot 1',
|
||||
'metadata': {'key': 'asdf'},
|
||||
},
|
||||
@@ -1036,13 +1036,13 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
|
||||
def test_create_image_with_too_much_metadata(self):
|
||||
body = {
|
||||
'create_image': {
|
||||
'createImage': {
|
||||
'name': 'Snapshot 1',
|
||||
'metadata': {},
|
||||
},
|
||||
}
|
||||
for num in range(CONF.quota_metadata_items + 1):
|
||||
body['create_image']['metadata']['foo%i' % num] = "bar"
|
||||
body['createImage']['metadata']['foo%i' % num] = "bar"
|
||||
|
||||
req = fakes.HTTPRequestV3.blank(self.url)
|
||||
self.assertRaises(webob.exc.HTTPForbidden,
|
||||
@@ -1051,7 +1051,7 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
|
||||
def test_create_image_no_name(self):
|
||||
body = {
|
||||
'create_image': {},
|
||||
'createImage': {},
|
||||
}
|
||||
req = fakes.HTTPRequestV3.blank(self.url)
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
@@ -1060,7 +1060,7 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
|
||||
def test_create_image_blank_name(self):
|
||||
body = {
|
||||
'create_image': {
|
||||
'createImage': {
|
||||
'name': '',
|
||||
}
|
||||
}
|
||||
@@ -1071,7 +1071,7 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
|
||||
def test_create_image_bad_metadata(self):
|
||||
body = {
|
||||
'create_image': {
|
||||
'createImage': {
|
||||
'name': 'geoff',
|
||||
'metadata': 'henry',
|
||||
},
|
||||
@@ -1089,7 +1089,7 @@ class ServerActionsControllerTest(test.TestCase):
|
||||
self.stubs.Set(compute_api.API, 'snapshot', snapshot)
|
||||
|
||||
body = {
|
||||
"create_image": {
|
||||
"createImage": {
|
||||
"name": "test_snapshot",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"create_image" : {
|
||||
"createImage" : {
|
||||
"name" : "%(name)s",
|
||||
"metadata": {
|
||||
"meta_var": "meta_val"
|
||||
|
||||
@@ -71,14 +71,13 @@ class ServersSampleAllExtensionJsonTest(ServersSampleJsonTest):
|
||||
class ServersActionsJsonTest(ServersSampleBase):
|
||||
sample_dir = 'servers'
|
||||
|
||||
def _test_server_action(self, uuid, action,
|
||||
def _test_server_action(self, uuid, action, req_tpl,
|
||||
subs=None, resp_tpl=None, code=202):
|
||||
subs = subs or {}
|
||||
subs.update({'action': action,
|
||||
'glance_host': self._get_glance_host()})
|
||||
response = self._do_post('servers/%s/action' % uuid,
|
||||
'server-action-%s' % action.replace('_',
|
||||
'-'),
|
||||
req_tpl,
|
||||
subs)
|
||||
if resp_tpl:
|
||||
subs.update(self._get_regexes())
|
||||
@@ -90,11 +89,13 @@ class ServersActionsJsonTest(ServersSampleBase):
|
||||
def test_server_reboot_hard(self):
|
||||
uuid = self._post_server()
|
||||
self._test_server_action(uuid, "reboot",
|
||||
'server-action-reboot',
|
||||
{"type": "HARD"})
|
||||
|
||||
def test_server_reboot_soft(self):
|
||||
uuid = self._post_server()
|
||||
self._test_server_action(uuid, "reboot",
|
||||
'server-action-reboot',
|
||||
{"type": "SOFT"})
|
||||
|
||||
def test_server_rebuild(self):
|
||||
@@ -106,7 +107,9 @@ class ServersActionsJsonTest(ServersSampleBase):
|
||||
'pass': 'seekr3t',
|
||||
'hostid': '[a-f0-9]+',
|
||||
}
|
||||
self._test_server_action(uuid, 'rebuild', subs,
|
||||
self._test_server_action(uuid, 'rebuild',
|
||||
'server-action-rebuild',
|
||||
subs,
|
||||
'server-action-rebuild-resp')
|
||||
|
||||
def _test_server_rebuild_preserve_ephemeral(self, value):
|
||||
@@ -142,21 +145,25 @@ class ServersActionsJsonTest(ServersSampleBase):
|
||||
self.flags(allow_resize_to_same_host=True)
|
||||
uuid = self._post_server()
|
||||
self._test_server_action(uuid, "resize",
|
||||
'server-action-resize',
|
||||
{"id": 2,
|
||||
"host": self._get_host()})
|
||||
return uuid
|
||||
|
||||
def test_server_revert_resize(self):
|
||||
uuid = self.test_server_resize()
|
||||
self._test_server_action(uuid, "revert_resize")
|
||||
self._test_server_action(uuid, "revert_resize",
|
||||
'server-action-revert-resize')
|
||||
|
||||
def test_server_confirm_resize(self):
|
||||
uuid = self.test_server_resize()
|
||||
self._test_server_action(uuid, "confirm_resize")
|
||||
self._test_server_action(uuid, "confirm_resize",
|
||||
'server-action-confirm-resize')
|
||||
|
||||
def test_server_create_image(self):
|
||||
uuid = self._post_server()
|
||||
self._test_server_action(uuid, 'create_image',
|
||||
self._test_server_action(uuid, 'createImage',
|
||||
'server-action-create-image',
|
||||
{'name': 'foo-image'})
|
||||
|
||||
|
||||
@@ -177,4 +184,4 @@ class ServerStartStopJsonTest(ServersSampleBase):
|
||||
|
||||
def test_server_stop(self):
|
||||
uuid = self._post_server()
|
||||
self._test_server_action(uuid, 'os-stop', 'server-action-stop')
|
||||
self._test_server_action(uuid, 'os-stop', 'server-action-stop')
|
||||
|
||||
Reference in New Issue
Block a user