From eae906f8a84023ff0f0f3af1196d2af112765501 Mon Sep 17 00:00:00 2001 From: Josh Kearney Date: Mon, 26 Nov 2012 13:06:10 -0600 Subject: 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 --- .mailmap | 3 ++- nova/config.py | 4 ++++ nova/tests/test_utils.py | 14 +++++++++++--- nova/utils.py | 7 ++++--- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/.mailmap b/.mailmap index ac6f75f88..f97171d8d 100644 --- a/.mailmap +++ b/.mailmap @@ -37,7 +37,8 @@ - + + diff --git a/nova/config.py b/nova/config.py index 5755009e1..d1878365b 100644 --- a/nova/config.py +++ b/nova/config.py @@ -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. ' diff --git a/nova/tests/test_utils.py b/nova/tests/test_utils.py index 8bf6df8b5..2ee0bd36f 100644 --- a/nova/tests/test_utils.py +++ b/nova/tests/test_utils.py @@ -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") diff --git a/nova/utils.py b/nova/utils.py index c94cd2c3e..640080a43 100644 --- a/nova/utils.py +++ b/nova/utils.py @@ -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): -- cgit