Merge "Move image uploads out of ProviderManager"

This commit is contained in:
Jenkins 2015-02-14 00:29:34 +00:00 committed by Gerrit Code Review
commit 3ed9a79920
2 changed files with 40 additions and 48 deletions

View File

@ -204,49 +204,6 @@ class CreateImageTask(Task):
return str(client.servers.create_image(**self.args))
class UploadImageTask(Task):
def get_glance_client(self, provider):
keystone_kwargs = {'auth_url': provider.auth_url,
'username': provider.username,
'password': provider.password,
'tenant_name': provider.project_id}
glance_kwargs = {'service_type': 'image'}
if provider.region_name:
keystone_kwargs['region_name'] = provider.region_name
# get endpoint and authtoken
keystone = ksclient.Client(**keystone_kwargs)
glance_endpoint = keystone.service_catalog.url_for(
attr='region',
filter_value=keystone_kwargs['region_name'],
service_type='image')
glance_endpoint = glance_endpoint.replace('/v1.0', '')
# configure glance client
glance = glanceclient.client.Client('1', glance_endpoint,
token=keystone.auth_token,
**glance_kwargs)
return glance
def main(self, client):
if self.args['image_name'].startswith('fake-'):
image = fakeprovider.FakeGlanceClient()
image.update(data='fake')
else:
# configure glance and upload image. Note the meta flags
# are provided as custom glance properties
glanceclient = self.get_glance_client(self.args['provider'])
image = glanceclient.images.create(
name=self.args['image_name'], is_public=False,
disk_format=self.args['disk_format'],
container_format=self.args['container_format'],
**self.args['meta'])
image.update(data=open(self.args['filename'], 'rb'))
glanceclient = None
return image.id
class GetImageTask(Task):
def main(self, client):
try:
@ -530,12 +487,47 @@ class ProviderManager(TaskManager):
def getImage(self, image_id):
return self.submitTask(GetImageTask(image=image_id))
def get_glance_client(self, provider):
keystone_kwargs = {'auth_url': provider.auth_url,
'username': provider.username,
'password': provider.password,
'tenant_name': provider.project_id}
glance_kwargs = {'service_type': 'image'}
if provider.region_name:
keystone_kwargs['region_name'] = provider.region_name
# get endpoint and authtoken
keystone = ksclient.Client(**keystone_kwargs)
glance_endpoint = keystone.service_catalog.url_for(
attr='region',
filter_value=keystone_kwargs['region_name'],
service_type='image')
glance_endpoint = glance_endpoint.replace('/v1.0', '')
# configure glance client
glance = glanceclient.client.Client('1', glance_endpoint,
token=keystone.auth_token,
**glance_kwargs)
return glance
def uploadImage(self, image_name, filename, disk_format, container_format,
meta):
return self.submitTask(UploadImageTask(
image_name=image_name, filename='%s.%s' % (filename, disk_format),
disk_format=disk_format, container_format=container_format,
provider=self.provider, meta=meta))
if image_name.startswith('fake-'):
image = fakeprovider.FakeGlanceClient()
image.update(data='fake')
else:
# configure glance and upload image. Note the meta flags
# are provided as custom glance properties
glanceclient = self.get_glance_client(self.provider)
image = glanceclient.images.create(
name=image_name,
is_public=False,
disk_format=disk_format,
container_format=container_format,
**meta)
image.update(data=open(filename, 'rb'))
glanceclient = None
return image.id
def listExtensions(self):
return self.submitTask(ListExtensionsTask())

View File

@ -46,7 +46,7 @@ class TestNodepool(tests.DBTestCase):
'fake-dib-provider',
'fake-jenkins',
'fake-target',
'DiskImageBuilder queue',
'DiskImageBuilder queue'
]
while True: