summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 cb83023bcb..9c0d41fa05 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 d4ab8ce3ce..82dcd20496 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 2e570e8a46..5276e1312f 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 b5fba2dfab..6a25720a92 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