Add SSL support to utils.generate_glance_url().

Since glance now supports SSL, we need to take
this into consideration when generating the URL.
Also updates and adds a test.

A new config option 'glance_protocol' was added
that defaults to 'http' since that's what the
glance options, '*_client_protocol', default to.
Set to 'https' for SSL.

Change-Id: Id231a1fd4c4d8e221ae0cf6541181e5572dff02b
This commit is contained in:
Josh Kearney 2012-11-26 13:06:10 -06:00
parent a6d8554fa3
commit eae906f8a8
4 changed files with 21 additions and 7 deletions

View File

@ -37,7 +37,8 @@
<jmckenty@gmail.com> <jmckenty@yyj-dhcp171.corp.flock.com>
<jmckenty@gmail.com> <joshua.mckenty@nasa.gov>
<johannes.erdfelt@rackspace.com> <johannes@compute3.221.st>
<josh@jk0.org> <josh.kearney@rackspace.com>
<josh.kearney@pistoncloud.com> <josh.kearney@rackspace.com>
<josh.kearney@pistoncloud.com> <josh@jk0.org>
<justin@fathomdb.com> <justinsb@justinsb-desktop>
<kshileev@gmail.com> <kshileev@griddynamics.com>
<lorin@nimbisservices.com> <lorin@isi.edu>

View File

@ -86,6 +86,10 @@ global_opts = [
cfg.IntOpt('glance_port',
default=9292,
help='default glance port'),
cfg.StrOpt('glance_protocol',
default='http',
help='Default protocol to use when connecting to glance. '
'Set to https for SSL.'),
cfg.ListOpt('glance_api_servers',
default=['$glance_host:$glance_port'],
help='A list of the glance api servers available to nova. '

View File

@ -34,7 +34,9 @@ from nova import test
from nova import utils
CONF = cfg.CONF
CONF.import_opt('glance_host', 'nova.config')
CONF.import_opt('glance_port', 'nova.config')
CONF.import_opt('glance_protocol', 'nova.config')
class ByteConversionTest(test.TestCase):
@ -379,10 +381,16 @@ class GenericUtilsTestCase(test.TestCase):
self.assertFalse(utils.bool_from_str(None))
self.assertFalse(utils.bool_from_str('junk'))
def test_generate_glance_url(self):
def test_generate_glance_http_url(self):
generated_url = utils.generate_glance_url()
actual_url = "http://%s:%d" % (CONF.glance_host, CONF.glance_port)
self.assertEqual(generated_url, actual_url)
http_url = "http://%s:%d" % (CONF.glance_host, CONF.glance_port)
self.assertEqual(generated_url, http_url)
def test_generate_glance_https_url(self):
self.flags(glance_protocol="https")
generated_url = utils.generate_glance_url()
https_url = "https://%s:%d" % (CONF.glance_host, CONF.glance_port)
self.assertEqual(generated_url, https_url)
def test_read_cached_file(self):
self.mox.StubOutWithMock(os.path, "getmtime")

View File

@ -59,7 +59,9 @@ CONF = cfg.CONF
CONF.register_opt(
cfg.BoolOpt('disable_process_locking', default=False,
help='Whether to disable inter-process locks'))
CONF.import_opt('glance_host', 'nova.config')
CONF.import_opt('glance_port', 'nova.config')
CONF.import_opt('glance_protocol', 'nova.config')
CONF.import_opt('instance_usage_audit_period', 'nova.config')
CONF.import_opt('monkey_patch', 'nova.config')
CONF.import_opt('rootwrap_config', 'nova.config')
@ -905,9 +907,8 @@ def timefunc(func):
def generate_glance_url():
"""Generate the URL to glance."""
# TODO(jk0): This will eventually need to take SSL into consideration
# when supported in glance.
return "http://%s:%d" % (CONF.glance_host, CONF.glance_port)
return "%s://%s:%d" % (CONF.glance_protocol, CONF.glance_host,
CONF.glance_port)
def generate_image_url(image_ref):