Fix getting not registered images

Return only registered images in Sahara API

Change-Id: If86ad7c7d237d162886b99865f0e17f3e0b6679d
Closes-bug: #1414000
This commit is contained in:
Sergey Reshetnyak 2015-01-26 18:27:56 +03:00
parent f6217cfdb6
commit d3600f900c
5 changed files with 24 additions and 2 deletions

View File

@ -201,7 +201,7 @@ def images_list():
@acl.enforce("images:get") @acl.enforce("images:get")
@v.check_exists(api.get_image, id='image_id') @v.check_exists(api.get_image, id='image_id')
def images_get(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/<image_id>') @rest.post('/images/<image_id>')

View File

@ -305,3 +305,12 @@ class Forbidden(SaharaException):
if message: if message:
self.message = message self.message = message
super(Forbidden, self).__init__() 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__()

View File

@ -212,6 +212,10 @@ def get_image(**kwargs):
return nova.client().images.find(**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): def register_image(image_id, username, description=None):
client = nova.client() client = nova.client()
client.images.set_description(image_id, username, description) client.images.set_description(image_id, username, description)

View File

@ -270,8 +270,8 @@ class JobExecutionTest(base.BaseDataProcessingTest):
@test.services('data_processing') @test.services('data_processing')
def test_job_executions(self): def test_job_executions(self):
image_id = CONF.data_processing.fake_image_id image_id = CONF.data_processing.fake_image_id
self._check_image_get(image_id)
self._check_register_image(image_id) self._check_register_image(image_id)
self._check_image_get(image_id)
self._check_image_list(image_id) self._check_image_list(image_id)
self._check_adding_tags(image_id) self._check_adding_tags(image_id)

View File

@ -15,6 +15,8 @@
from novaclient.v1_1 import images from novaclient.v1_1 import images
from sahara import exceptions as exc
PROP_DESCR = '_sahara_description' PROP_DESCR = '_sahara_description'
PROP_USERNAME = '_sahara_username' PROP_USERNAME = '_sahara_username'
@ -121,3 +123,10 @@ class SaharaImageManager(images.ImageManager):
tags = _ensure_tags(tags) tags = _ensure_tags(tags)
return [i for i in self.list() return [i for i in self.list()
if i.username and set(tags).issubset(i.tags)] 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)