summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorCerberus <matt.dietz@rackspace.com>2010-09-28 12:56:01 -0500
committerCerberus <matt.dietz@rackspace.com>2010-09-28 12:56:01 -0500
commit663ed27a2d7b3cb3a5290e0516eb8d602d7e65ba (patch)
tree001beaee902b6c55909e5540aa73fb765908710f /nova
parent7e25838ea1965231df09f29675fc3ab40e194483 (diff)
downloadnova-663ed27a2d7b3cb3a5290e0516eb8d602d7e65ba.tar.gz
nova-663ed27a2d7b3cb3a5290e0516eb8d602d7e65ba.tar.xz
nova-663ed27a2d7b3cb3a5290e0516eb8d602d7e65ba.zip
Testing testing testing
Diffstat (limited to 'nova')
-rw-r--r--nova/api/rackspace/_id_translator.py2
-rw-r--r--nova/api/rackspace/servers.py22
-rw-r--r--nova/tests/api/rackspace/servers.py37
-rw-r--r--nova/tests/api/rackspace/test_helper.py22
4 files changed, 69 insertions, 14 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()
diff --git a/nova/tests/api/rackspace/servers.py b/nova/tests/api/rackspace/servers.py
index 674dab0b6..a22736dd2 100644
--- a/nova/tests/api/rackspace/servers.py
+++ b/nova/tests/api/rackspace/servers.py
@@ -80,9 +80,19 @@ class ServersTest(unittest.TestCase):
self.assertEqual(s.get('imageId', None), None)
i += 1
- def test_create_instance(self):
- pass
-
+ #def test_create_instance(self):
+ # test_helper.stub_out_image_translator(self.stubs)
+ # body = dict(server=dict(
+ # name='server_test', imageId=2, flavorId=2, metadata={},
+ # personality = {}
+ # ))
+ # req = webob.Request.blank('/v1.0/servers')
+ # req.method = 'POST'
+ # req.body = json.dumps(body)
+
+ # res = req.get_response(nova.api.API())
+
+ # print res
def test_update_server_password(self):
pass
@@ -119,22 +129,37 @@ class ServersTest(unittest.TestCase):
i += 1
def test_server_reboot(self):
+ body = dict(server=dict(
+ name='server_test', imageId=2, flavorId=2, metadata={},
+ personality = {}
+ ))
req = webob.Request.blank('/v1.0/servers/1/action')
req.method = 'POST'
+ req.content_type= 'application/json'
+ req.body = json.dumps(body)
res = req.get_response(nova.api.API())
- res_dict = json.loads(res.body)
def test_server_rebuild(self):
+ body = dict(server=dict(
+ name='server_test', imageId=2, flavorId=2, metadata={},
+ personality = {}
+ ))
req = webob.Request.blank('/v1.0/servers/1/action')
req.method = 'POST'
+ req.content_type= 'application/json'
+ req.body = json.dumps(body)
res = req.get_response(nova.api.API())
- res_dict = json.loads(res.body)
def test_server_resize(self):
+ body = dict(server=dict(
+ name='server_test', imageId=2, flavorId=2, metadata={},
+ personality = {}
+ ))
req = webob.Request.blank('/v1.0/servers/1/action')
req.method = 'POST'
+ req.content_type= 'application/json'
+ req.body = json.dumps(body)
res = req.get_response(nova.api.API())
- res_dict = json.loads(res.body)
def test_delete_server_instance(self):
req = webob.Request.blank('/v1.0/servers/1')
diff --git a/nova/tests/api/rackspace/test_helper.py b/nova/tests/api/rackspace/test_helper.py
index d44b8c30e..09ff26ac7 100644
--- a/nova/tests/api/rackspace/test_helper.py
+++ b/nova/tests/api/rackspace/test_helper.py
@@ -1,10 +1,12 @@
-from nova import utils
+import json
import webob
import webob.dec
import datetime
+import nova.api.rackspace.auth
+import nova.api.rackspace._id_translator
from nova.wsgi import Router
from nova import auth
-import nova.api.rackspace.auth
+from nova import utils
from nova import flags
FLAGS = flags.FLAGS
@@ -32,8 +34,24 @@ def fake_auth_init(self):
@webob.dec.wsgify
def fake_wsgi(self, req):
req.environ['nova.context'] = dict(user=dict(id=1))
+ if req.body:
+ req.environ['inst_dict'] = json.loads(req.body)
return self.application
+def stub_out_image_translator(stubs):
+ class FakeTranslator(object):
+ def __init__(self, id_type, service_name):
+ pass
+
+ def to_rs_id(self, id):
+ return id
+
+ def from_rs_id(self, id):
+ return id
+
+ stubs.Set(nova.api.rackspace._id_translator,
+ 'RackspaceAPIIdTranslator', FakeTranslator)
+
def stub_out_auth(stubs):
def fake_auth_init(self, app):
self.application = app