From 6c151bfbfeb728d6e38f777640d483c1e344113d Mon Sep 17 00:00:00 2001 From: Naveed Massjouni Date: Wed, 18 May 2011 03:51:25 -0400 Subject: Removed all utils.import_object(FLAGS.image_service) and replaced with utils.get_default_image_service(). --- nova/utils.py | 60 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 29 insertions(+), 31 deletions(-) (limited to 'nova/utils.py') diff --git a/nova/utils.py b/nova/utils.py index fff916527..3c8c82281 100644 --- a/nova/utils.py +++ b/nova/utils.py @@ -35,6 +35,7 @@ import struct import sys import time import types +from urlparse import urlparse from xml.sax import saxutils from eventlet import event @@ -42,6 +43,7 @@ from eventlet import greenthread from eventlet import semaphore from eventlet.green import subprocess +import nova from nova import exception from nova import flags from nova import log as logging @@ -727,57 +729,53 @@ def parse_server_string(server_str): def is_int(x): - """ Return if passed in variable is integer or not """ return re.match(r'\d+$', str(x)) def parse_image_ref(image_ref): - """ - Parse an imageRef and return (id, host, port) + """Parse an image href into composite parts. If the image_ref passed in is an integer, it will return (image_ref, None, None), otherwise it will - return (id, host, port) + return (image_id, host, port) - image_ref - imageRef for an image + :param image_ref: href or id of an image """ - if is_int(image_ref): - return (image_ref, None, None) + return (int(image_ref), None, None) o = urlparse(image_ref) - # Default to port 80 if not passed, should this be 9292? - port = o.port or 80 + port = o.port host = o.netloc.split(':', 1)[0] - id = o.path.split('/')[-1] - - return (id, host, port) + image_id = o.path.split('/')[-1] + if is_int(image_id): + image_id = int(image_id) + else: + raise Exception(_('image_ref [%s] is missing a proper id') % image_ref) + return (image_id, host, port) -def get_image_service(image_ref=None): - """ - Get the proper image_service for an image_id - Returns (image_service, image_id) - image_ref - image ref/id for an image - """ +def get_default_image_service(): ImageService = import_class(FLAGS.image_service) + return ImageService() - if not image_ref: - return (ImageService(), None) - - (image_id, host, port) = parse_image_ref(image_ref) +def get_image_service(image_ref): + """Get the proper image_service and id for the given image_ref. - image_service = None + The image_ref param can be an href of the form + http://myglanceserver:9292/images/42, or just an int such as 42. If the + image_ref is an int, then the default image service is returned. - if host: - GlanceImageService = import_class(FLAGS.glance_image_service) - GlanceClient = import_class('glance.client.Client') + :param image_ref: image ref/id for an image + :returns: a tuple of the form (image_service, image_id) - glance_client = GlanceClient(host, port) - image_service = GlanceImageService(glance_client) - else: - image_service = ImageService() + """ + if is_int(image_ref): + return (get_default_image_service(), int(image_ref)) - return (image_service, id) + (image_id, host, port) = parse_image_ref(image_ref) + glance_client = nova.image.glance.GlanceClient(host, port) + image_service = nova.image.glance.GlanceImageService(glance_client) + return (image_service, image_id) -- cgit