summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/rackspace/_id_translator.py2
-rw-r--r--nova/api/rackspace/servers.py22
2 files changed, 18 insertions, 6 deletions
diff --git a/nova/api/rackspace/_id_translator.py b/nova/api/rackspace/_id_translator.py
index aec5fb6a5..333aa8434 100644
--- a/nova/api/rackspace/_id_translator.py
+++ b/nova/api/rackspace/_id_translator.py
@@ -37,6 +37,6 @@ class RackspaceAPIIdTranslator(object):
# every int id be used.)
return int(self._store.hget(self._fwd_key, str(opaque_id)))
- def from_rs_id(self, strategy_name, rs_id):
+ def from_rs_id(self, rs_id):
"""Convert a Rackspace id to a strategy-specific one."""
return self._store.hget(self._rev_key, rs_id)
diff --git a/nova/api/rackspace/servers.py b/nova/api/rackspace/servers.py
index becac9140..dec369ef0 100644
--- a/nova/api/rackspace/servers.py
+++ b/nova/api/rackspace/servers.py
@@ -85,7 +85,11 @@ class Controller(wsgi.Controller):
return exc.HTTPNotFound()
def create(self, req):
+ if not req.environ.has_key('inst_dict'):
+ return exc.HTTPUnprocessableEntity()
+
inst = self._build_server_instance(req)
+
rpc.cast(
FLAGS.compute_topic, {
"method": "run_instance",
@@ -93,6 +97,9 @@ class Controller(wsgi.Controller):
return _entity_inst(inst)
def update(self, req, id):
+ if not req.environ.has_key('inst_dict'):
+ return exc.HTTPUnprocessableEntity()
+
instance = self.db.instance_get(None, id)
if not instance:
return exc.HTTPNotFound()
@@ -105,25 +112,30 @@ class Controller(wsgi.Controller):
def action(self, req, id):
""" multi-purpose method used to reboot, rebuild, and
resize a server """
- return {}
+ if not req.environ.has_key('inst_dict'):
+ return exc.HTTPUnprocessableEntity()
- def _id_translator(self):
+ def translator_instance(self):
service = nova.image.service.ImageService.load()
return _id_translator.RackspaceAPIIdTranslator(
- "image", self.service.__class__.__name__)
+ "image", service.__class__.__name__)
def _build_server_instance(self, req):
"""Build instance data structure and save it to the data store."""
ltime = time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime())
inst = {}
+ env = req.environ['inst_dict']
+
image_id = env['server']['imageId']
- opaque_id = self._id_translator.from_rs_id(image_id)
+ opaque_id = self.translator_instance().from_rs_id(image_id)
inst['name'] = env['server']['name']
inst['image_id'] = opaque_id
inst['instance_type'] = env['server']['flavorId']
- inst['user_id'] = env['user']['id']
+
+ user_id = req.environ['nova.context']['user']['id']
+ inst['user_id'] = user_id
inst['launch_time'] = ltime
inst['mac_address'] = utils.generate_mac()