summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorSandy Walsh <sandy.walsh@rackspace.com>2011-05-30 16:18:11 -0700
committerSandy Walsh <sandy.walsh@rackspace.com>2011-05-30 16:18:11 -0700
commit544ec189a7fddc4b4491774b62071a4884e8e895 (patch)
tree2b4bad5664337a6d14ec5c4220e41e3523f32d30 /nova/api
parent318e307c268bb554d24ba441b2484790f2a08798 (diff)
zone-boot working
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/create_instance_controller.py15
-rw-r--r--nova/api/openstack/servers.py15
-rw-r--r--nova/api/openstack/zones.py12
3 files changed, 24 insertions, 18 deletions
diff --git a/nova/api/openstack/create_instance_controller.py b/nova/api/openstack/create_instance_controller.py
index 52c1e444e..1c4098a08 100644
--- a/nova/api/openstack/create_instance_controller.py
+++ b/nova/api/openstack/create_instance_controller.py
@@ -52,6 +52,12 @@ class OpenstackCreateInstanceController(common.OpenstackController):
self._image_service = utils.import_object(FLAGS.image_service)
super(OpenstackCreateInstanceController, self).__init__()
+ def _image_id_from_req_data(self, data):
+ raise NotImplementedError()
+
+ def _flavor_id_from_req_data(self, data):
+ raise NotImplementedError()
+
def create_instance(self, req, create_method):
"""Creates a new server for the given user. The approach
used depends on the create_method. For example, the standard
@@ -164,6 +170,15 @@ class OpenstackCreateInstanceController(common.OpenstackController):
else:
return self._deserialize(request.body, request.get_content_type())
+ def _validate_server_name(self, value):
+ if not isinstance(value, basestring):
+ msg = _("Server name is not a string or unicode")
+ raise exc.HTTPBadRequest(msg)
+
+ if value.strip() == '':
+ msg = _("Server name is an empty string")
+ raise exc.HTTPBadRequest(msg)
+
def _get_server_admin_password(self, server):
""" Determine the admin password for a server on creation """
password = server.get('adminPass')
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py
index cbf284d60..6e86c2956 100644
--- a/nova/api/openstack/servers.py
+++ b/nova/api/openstack/servers.py
@@ -73,12 +73,6 @@ class Controller(controller.OpenstackCreateInstanceController):
""" Returns a list of server details for a given user """
return self._items(req, is_detail=True)
- def _image_id_from_req_data(self, data):
- raise NotImplementedError()
-
- def _flavor_id_from_req_data(self, data):
- raise NotImplementedError()
-
def _get_view_builder(self, req):
raise NotImplementedError()
@@ -193,15 +187,6 @@ class Controller(controller.OpenstackCreateInstanceController):
return exc.HTTPNoContent()
- def _validate_server_name(self, value):
- if not isinstance(value, basestring):
- msg = _("Server name is not a string or unicode")
- raise exc.HTTPBadRequest(msg)
-
- if value.strip() == '':
- msg = _("Server name is an empty string")
- raise exc.HTTPBadRequest(msg)
-
def _parse_update(self, context, id, inst_dict, update_dict):
pass
diff --git a/nova/api/openstack/zones.py b/nova/api/openstack/zones.py
index 51ce315dc..91531aa97 100644
--- a/nova/api/openstack/zones.py
+++ b/nova/api/openstack/zones.py
@@ -21,9 +21,11 @@ from nova import db
from nova import exception
from nova import flags
from nova import log as logging
-from nova.api.openstack import create_instance_controller as controller
+
+from nova.compute import api as compute
from nova.scheduler import api
+from nova.api.openstack import create_instance_controller as controller
FLAGS = flags.FLAGS
@@ -64,6 +66,10 @@ class Controller(controller.OpenstackCreateInstanceController):
"attributes": {
"zone": ["id", "api_url", "name", "capabilities"]}}}
+ def __init__(self):
+ self.compute_api = compute.API()
+ super(Controller, self).__init__()
+
def index(self, req):
"""Return all zones in brief"""
# Ask the ZoneManager in the Scheduler for most recent data,
@@ -122,8 +128,8 @@ class Controller(controller.OpenstackCreateInstanceController):
Returns a reservation ID (a UUID).
"""
- reservation_id = \
- common.create(req, self.compute_api.create_all_at_once)
+ extra_values, reservation_id = \
+ self.create_instance(req, self.compute_api.create_all_at_once)
return {'reservation_id': reservation_id}