diff --git a/sahara/api/v10.py b/sahara/api/v10.py index 44da47d5..a6377c59 100644 --- a/sahara/api/v10.py +++ b/sahara/api/v10.py @@ -201,7 +201,7 @@ def images_list(): @acl.enforce("images:get") @v.check_exists(api.get_image, id='image_id') def images_get(image_id): - return u.render(api.get_image(id=image_id).wrapped_dict) + return u.render(api.get_registered_image(id=image_id).wrapped_dict) @rest.post('/images/') diff --git a/sahara/exceptions.py b/sahara/exceptions.py index 12854dde..927e9fb6 100644 --- a/sahara/exceptions.py +++ b/sahara/exceptions.py @@ -305,3 +305,12 @@ class Forbidden(SaharaException): if message: self.message = message super(Forbidden, self).__init__() + + +class ImageNotRegistered(SaharaException): + code = "IMAGE_NOT_REGISTERED" + message = _("Image %s is not registered in Sahara") + + def __init__(self, image): + self.message = self.message % image + super(ImageNotRegistered, self).__init__() diff --git a/sahara/service/api.py b/sahara/service/api.py index b4259af5..52876502 100644 --- a/sahara/service/api.py +++ b/sahara/service/api.py @@ -212,6 +212,10 @@ def get_image(**kwargs): return nova.client().images.find(**kwargs) +def get_registered_image(id): + return nova.client().images.get_registered_image(id) + + def register_image(image_id, username, description=None): client = nova.client() client.images.set_description(image_id, username, description) diff --git a/sahara/tests/tempest/scenario/data_processing/client_tests/test_job_executions.py b/sahara/tests/tempest/scenario/data_processing/client_tests/test_job_executions.py index 7886c3f4..7c34c446 100644 --- a/sahara/tests/tempest/scenario/data_processing/client_tests/test_job_executions.py +++ b/sahara/tests/tempest/scenario/data_processing/client_tests/test_job_executions.py @@ -270,8 +270,8 @@ class JobExecutionTest(base.BaseDataProcessingTest): @test.services('data_processing') def test_job_executions(self): image_id = CONF.data_processing.fake_image_id - self._check_image_get(image_id) self._check_register_image(image_id) + self._check_image_get(image_id) self._check_image_list(image_id) self._check_adding_tags(image_id) diff --git a/sahara/utils/openstack/images.py b/sahara/utils/openstack/images.py index b8dc1f72..326d8aa0 100644 --- a/sahara/utils/openstack/images.py +++ b/sahara/utils/openstack/images.py @@ -15,6 +15,8 @@ from novaclient.v1_1 import images +from sahara import exceptions as exc + PROP_DESCR = '_sahara_description' PROP_USERNAME = '_sahara_username' @@ -121,3 +123,10 @@ class SaharaImageManager(images.ImageManager): tags = _ensure_tags(tags) return [i for i in self.list() if i.username and set(tags).issubset(i.tags)] + + def get_registered_image(self, image): + img = self.get(image) + if img.username: + return img + else: + raise exc.ImageNotRegistered(image)