summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/api/openstack/contrib/createserverext.py10
-rw-r--r--nova/api/openstack/servers.py8
-rw-r--r--nova/api/openstack/views/servers.py10
-rw-r--r--nova/tests/api/openstack/contrib/test_volumes.py3
-rw-r--r--nova/tests/api/openstack/test_servers.py41
-rw-r--r--nova/tests/integrated/test_servers.py4
6 files changed, 21 insertions, 55 deletions
diff --git a/nova/api/openstack/contrib/createserverext.py b/nova/api/openstack/contrib/createserverext.py
index da95164e8..ab5037304 100644
--- a/nova/api/openstack/contrib/createserverext.py
+++ b/nova/api/openstack/contrib/createserverext.py
@@ -21,10 +21,12 @@ from nova.api.openstack import wsgi
class CreateServerController(servers.Controller):
- def _build_view(self, req, instance, is_detail=False):
- server = super(CreateServerController, self)._build_view(req,
- instance,
- is_detail)
+ def _build_view(self, req, instance, is_detail=False, is_create=False):
+ server = super(CreateServerController, self).\
+ _build_view(req,
+ instance,
+ is_detail=is_detail,
+ is_create=is_create)
if is_detail:
self._build_security_groups(server['server'], instance)
return server
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py
index 29160c5ce..8c1eaae9d 100644
--- a/nova/api/openstack/servers.py
+++ b/nova/api/openstack/servers.py
@@ -497,7 +497,7 @@ class Controller(object):
instance['instance_type'] = inst_type
instance['image_ref'] = image_href
- server = self._build_view(req, instance, is_detail=True)
+ server = self._build_view(req, instance, is_create=True)
if '_is_precooked' in server['server']:
del server['server']['_is_precooked']
else:
@@ -748,7 +748,7 @@ class Controller(object):
return common.get_id_from_href(flavor_ref)
- def _build_view(self, req, instance, is_detail=False):
+ def _build_view(self, req, instance, is_detail=False, is_create=False):
context = req.environ['nova.context']
project_id = getattr(context, 'project_id', '')
base_url = req.application_url
@@ -757,7 +757,9 @@ class Controller(object):
addresses_builder = views_addresses.ViewBuilder()
builder = views_servers.ViewBuilder(context, addresses_builder,
flavor_builder, image_builder, base_url, project_id)
- return builder.build(instance, is_detail=is_detail)
+ return builder.build(instance,
+ is_detail=is_detail,
+ is_create=is_create)
def _build_list(self, req, instances, is_detail=False):
params = req.GET.copy()
diff --git a/nova/api/openstack/views/servers.py b/nova/api/openstack/views/servers.py
index 288730efe..4a0be46c1 100644
--- a/nova/api/openstack/views/servers.py
+++ b/nova/api/openstack/views/servers.py
@@ -41,13 +41,15 @@ class ViewBuilder(object):
self.base_url = base_url
self.project_id = project_id
- def build(self, inst, is_detail=False):
+ def build(self, inst, is_detail=False, is_create=False):
"""Return a dict that represenst a server."""
if inst.get('_is_precooked', False):
server = dict(server=inst)
else:
if is_detail:
server = self._build_detail(inst)
+ elif is_create:
+ server = self._build_create(inst)
else:
server = self._build_simple(inst)
@@ -59,6 +61,12 @@ class ViewBuilder(object):
"""Return a simple model of a server."""
return dict(server=dict(id=inst['uuid'], name=inst['display_name']))
+ def _build_create(self, inst):
+ """Return data that should be returned from a server create."""
+ server = dict(server=dict(id=inst['uuid']))
+ self._build_links(server['server'], inst)
+ return server
+
def _build_detail(self, inst):
"""Returns a detailed model of a server."""
vm_state = inst.get('vm_state', vm_states.BUILDING)
diff --git a/nova/tests/api/openstack/contrib/test_volumes.py b/nova/tests/api/openstack/contrib/test_volumes.py
index 0a3023e48..a130d1140 100644
--- a/nova/tests/api/openstack/contrib/test_volumes.py
+++ b/nova/tests/api/openstack/contrib/test_volumes.py
@@ -81,9 +81,6 @@ class BootFromVolumeTest(test.TestCase):
self.assertEqual(res.status_int, 200)
server = json.loads(res.body)['server']
self.assertEqual(FAKE_UUID, server['id'])
- self.assertEqual(2, int(server['flavor']['id']))
- self.assertEqual(u'test_server', server['name'])
- self.assertEqual(IMAGE_UUID, server['image']['id'])
self.assertEqual(FLAGS.password_length, len(server['adminPass']))
self.assertEqual(len(_block_device_mapping_seen), 1)
self.assertEqual(_block_device_mapping_seen[0]['volume_id'], 1)
diff --git a/nova/tests/api/openstack/test_servers.py b/nova/tests/api/openstack/test_servers.py
index e6e528535..4518ef8e2 100644
--- a/nova/tests/api/openstack/test_servers.py
+++ b/nova/tests/api/openstack/test_servers.py
@@ -1441,10 +1441,7 @@ class ServersControllerCreateTest(test.TestCase):
server = self.controller.create(req, body)['server']
self.assertEqual(FLAGS.password_length, len(server['adminPass']))
- self.assertEqual('server_test', server['name'])
self.assertEqual(FAKE_UUID, server['id'])
- self.assertEqual('2', server['flavor']['id'])
- self.assertEqual(image_uuid, server['image']['id'])
def test_create_multiple_instances(self):
"""Test creating multiple instances but not asking for
@@ -1613,12 +1610,6 @@ class ServersControllerCreateTest(test.TestCase):
server = res['server']
self.assertEqual(FLAGS.password_length, len(server['adminPass']))
self.assertEqual(FAKE_UUID, server['id'])
- self.assertEqual(0, server['progress'])
- self.assertEqual('server_test', server['name'])
- self.assertEqual(expected_flavor, server['flavor'])
- self.assertEqual(expected_image, server['image'])
- self.assertEqual(access_ipv4, server['accessIPv4'])
- self.assertEqual(access_ipv6, server['accessIPv6'])
def test_create_instance(self):
# proper local hrefs must start with 'http://localhost/v1.1/'
@@ -1670,13 +1661,6 @@ class ServersControllerCreateTest(test.TestCase):
server = res['server']
self.assertEqual(FLAGS.password_length, len(server['adminPass']))
self.assertEqual(FAKE_UUID, server['id'])
- self.assertEqual("BUILD", server["status"])
- self.assertEqual(0, server['progress'])
- self.assertEqual('server_test', server['name'])
- self.assertEqual(expected_flavor, server['flavor'])
- self.assertEqual(expected_image, server['image'])
- self.assertEqual('1.2.3.4', server['accessIPv4'])
- self.assertEqual('fead::1234', server['accessIPv6'])
def test_create_instance_invalid_key_name(self):
image_href = 'http://localhost/v1.1/images/2'
@@ -1777,7 +1761,6 @@ class ServersControllerCreateTest(test.TestCase):
server = res['server']
self.assertEqual(FAKE_UUID, server['id'])
- self.assertTrue(server['config_drive'])
def test_create_instance_with_config_drive_as_id(self):
self.config_drive = 2
@@ -1805,8 +1788,6 @@ class ServersControllerCreateTest(test.TestCase):
server = res['server']
self.assertEqual(FAKE_UUID, server['id'])
- self.assertTrue(server['config_drive'])
- self.assertEqual(2, server['config_drive'])
def test_create_instance_with_bad_config_drive(self):
self.config_drive = "asdf"
@@ -1859,7 +1840,6 @@ class ServersControllerCreateTest(test.TestCase):
server = res['server']
self.assertEqual(FAKE_UUID, server['id'])
- self.assertFalse(server['config_drive'])
def test_create_instance_bad_href(self):
image_href = 'asdf'
@@ -1879,24 +1859,6 @@ class ServersControllerCreateTest(test.TestCase):
def test_create_instance_local_href(self):
image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6'
flavor_ref = 'http://localhost/v1.1/flavors/3'
- expected_flavor = {
- "id": "3",
- "links": [
- {
- "rel": "bookmark",
- "href": 'http://localhost/fake/flavors/3',
- },
- ],
- }
- expected_image = {
- "id": image_uuid,
- "links": [
- {
- "rel": "bookmark",
- "href": 'http://localhost/fake/images/%s' % image_uuid,
- },
- ],
- }
body = {
'server': {
'name': 'server_test',
@@ -1912,8 +1874,7 @@ class ServersControllerCreateTest(test.TestCase):
res = self.controller.create(req, body)
server = res['server']
- self.assertEqual(expected_flavor, server['flavor'])
- self.assertEqual(expected_image, server['image'])
+ self.assertEqual(FAKE_UUID, server['id'])
def test_create_instance_admin_pass(self):
image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6'
diff --git a/nova/tests/integrated/test_servers.py b/nova/tests/integrated/test_servers.py
index 36f62ac01..58aca5778 100644
--- a/nova/tests/integrated/test_servers.py
+++ b/nova/tests/integrated/test_servers.py
@@ -292,10 +292,6 @@ class ServersTest(integrated_helpers._IntegratedTestBase):
self.assertTrue(created_server['id'])
created_server_id = created_server['id']
- # Reenable when bug fixed
- self.assertEqual(metadata, created_server.get('metadata'))
- # Check it's there
-
found_server = self.api.get_server(created_server_id)
self.assertEqual(created_server_id, found_server['id'])
self.assertEqual(metadata, found_server.get('metadata'))