summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Gundlach <michael.gundlach@rackspace.com>2010-10-08 12:21:26 -0400
committerMichael Gundlach <michael.gundlach@rackspace.com>2010-10-08 12:21:26 -0400
commitdb87fd5a8145d045c4767a8d02cde5a0750113f8 (patch)
tree3aa6c9a09fec377ecd2b198defe73483f2447e6f
parentdb331240afdbd43d63b0a71cc284fc8d37e7989a (diff)
Remove redis dependency from Images controller.
LocalImageService now works with integer ids, so there's no need for the translator. Once Glance exists we'll have to revisit this.
-rw-r--r--nova/api/rackspace/backup_schedules.py1
-rw-r--r--nova/api/rackspace/images.py10
-rw-r--r--nova/image/service.py16
-rw-r--r--nova/tests/api/rackspace/fakes.py1
4 files changed, 10 insertions, 18 deletions
diff --git a/nova/api/rackspace/backup_schedules.py b/nova/api/rackspace/backup_schedules.py
index cb83023bc..9c0d41fa0 100644
--- a/nova/api/rackspace/backup_schedules.py
+++ b/nova/api/rackspace/backup_schedules.py
@@ -19,7 +19,6 @@ import time
from webob import exc
from nova import wsgi
-from nova.api.rackspace import _id_translator
from nova.api.rackspace import faults
import nova.image.service
diff --git a/nova/api/rackspace/images.py b/nova/api/rackspace/images.py
index d4ab8ce3c..82dcd2049 100644
--- a/nova/api/rackspace/images.py
+++ b/nova/api/rackspace/images.py
@@ -20,7 +20,6 @@ from webob import exc
from nova import flags
from nova import utils
from nova import wsgi
-from nova.api.rackspace import _id_translator
import nova.api.rackspace
import nova.image.service
from nova.api.rackspace import faults
@@ -41,8 +40,6 @@ class Controller(wsgi.Controller):
def __init__(self):
self._service = utils.import_object(FLAGS.image_service)
- self._id_translator = _id_translator.RackspaceAPIIdTranslator(
- "image", self._service.__class__.__name__)
def index(self, req):
"""Return all public images in brief."""
@@ -53,16 +50,11 @@ class Controller(wsgi.Controller):
"""Return all public images in detail."""
data = self._service.index()
data = nova.api.rackspace.limited(data, req)
- for img in data:
- img['id'] = self._id_translator.to_rs_id(img['id'])
return dict(images=data)
def show(self, req, id):
"""Return data about the given image id."""
- opaque_id = self._id_translator.from_rs_id(id)
- img = self._service.show(opaque_id)
- img['id'] = id
- return dict(image=img)
+ return dict(image=self._service.show(id))
def delete(self, req, id):
# Only public images are supported for now.
diff --git a/nova/image/service.py b/nova/image/service.py
index 2e570e8a4..5276e1312 100644
--- a/nova/image/service.py
+++ b/nova/image/service.py
@@ -225,7 +225,9 @@ class GlanceImageService(BaseImageService):
class LocalImageService(BaseImageService):
- """Image service storing images to local disk."""
+ """Image service storing images to local disk.
+
+ It assumes that image_ids are integers."""
def __init__(self):
self._path = "/tmp/nova/images"
@@ -234,12 +236,12 @@ class LocalImageService(BaseImageService):
except OSError: # exists
pass
- def _path_to(self, image_id=''):
- return os.path.join(self._path, image_id)
+ def _path_to(self, image_id):
+ return os.path.join(self._path, str(image_id))
def _ids(self):
"""The list of all image ids."""
- return os.listdir(self._path)
+ return [int(i) for i in os.listdir(self._path)]
def index(self):
return [ self.show(id) for id in self._ids() ]
@@ -254,7 +256,7 @@ class LocalImageService(BaseImageService):
"""
Store the image data and return the new image id.
"""
- id = ''.join(random.choice(string.letters) for _ in range(20))
+ id = random.randint(0, 2**32-1)
data['id'] = id
self.update(id, data)
return id
@@ -279,5 +281,5 @@ class LocalImageService(BaseImageService):
"""
Clears out all images in local directory
"""
- for f in os.listdir(self._path):
- os.unlink(self._path_to(f))
+ for id in self._ids():
+ os.unlink(self._path_to(id))
diff --git a/nova/tests/api/rackspace/fakes.py b/nova/tests/api/rackspace/fakes.py
index b5fba2dfa..6a25720a9 100644
--- a/nova/tests/api/rackspace/fakes.py
+++ b/nova/tests/api/rackspace/fakes.py
@@ -28,7 +28,6 @@ from nova import utils
from nova import flags
from nova import exception as exc
import nova.api.rackspace.auth
-import nova.api.rackspace._id_translator
from nova.image import service
from nova.wsgi import Router