remove temporary GlanceEndpoint object

We've now converted all the code in parts to use urls, the
GlanceEndpoint scaffolding can be removed.

Change-Id: If963b5c7abc132afab259783b13c6d771d2e2897
This commit is contained in:
Sean Dague 2015-12-11 08:27:20 -05:00
parent acfe1d2625
commit 451b2e040f
4 changed files with 31 additions and 94 deletions

View File

@ -128,7 +128,7 @@ def _glanceclient_from_endpoint(context, endpoint, version=1):
# NOTE(sdague): even if we aren't using keystone, it doesn't
# hurt to send these headers.
params['identity_headers'] = generate_identity_headers(context)
if endpoint.use_ssl:
if endpoint.startswith('https://'):
# https specific params
params['insecure'] = CONF.glance.api_insecure
params['ssl_compression'] = False
@ -139,7 +139,7 @@ def _glanceclient_from_endpoint(context, endpoint, version=1):
params['key_file'] = CONF.ssl.key_file
if CONF.ssl.ca_file:
params['cacert'] = CONF.ssl.ca_file
return glanceclient.Client(str(version), endpoint.url, **params)
return glanceclient.Client(str(version), endpoint, **params)
def _determine_curr_major_version(endpoint):
@ -180,7 +180,7 @@ def get_api_servers():
"please update [glance] api_servers with fully "
"qualified url including scheme (http / https)"),
api_server)
api_servers.append(GlanceEndpoint(url=api_server))
api_servers.append(api_server)
random.shuffle(api_servers)
return itertools.cycle(api_servers)
@ -190,7 +190,6 @@ class GlanceClientWrapper(object):
def __init__(self, context=None, endpoint=None, version=1):
if endpoint is not None:
endpoint = GlanceEndpoint(url=endpoint)
self.client = self._create_static_client(context,
endpoint,
version)
@ -247,54 +246,6 @@ class GlanceClientWrapper(object):
time.sleep(1)
class GlanceEndpoint(object):
"""Provides a container to encapsulate glance endpoints.
In transitioning from handing around metadata that lets us build
an endpoint url, to actually just handing around the url, we need
a container which can encapsulate either. This allows for a
smoother transition to new code.
"""
def __init__(self, **kwargs):
self.url = kwargs.get('url', None)
if self.url is None:
host = kwargs['host']
self.url = '%s://%s:%s' % (
'https' if kwargs.get('use_ssl', False) else 'http',
'[' + host + ']' if netutils.is_valid_ipv6(host) else host,
kwargs['port'])
def as_tuple(self):
parts = urlparse.urlparse(self.url)
host = parts.netloc.rsplit(':', 1)[0]
if host[0] == '[' and host[-1] == ']':
host = host[1:-1]
use_ssl = (parts.scheme == 'https')
port = parts.port or (443 if use_ssl else 80)
return (host, port, use_ssl)
@property
def host(self):
"""Compute the host"""
return self.as_tuple()[0]
@property
def port(self):
"""Compute the port"""
return self.as_tuple()[1]
@property
def use_ssl(self):
"""Compute the use_ssl value"""
return self.as_tuple()[2]
def __str__(self):
return self.url
class GlanceImageService(object):
"""Provides storage and retrieval of disk image objects within Glance."""

View File

@ -196,7 +196,6 @@ class TestCreateGlanceClient(test.NoDBTestCase):
ctx = context.RequestContext('fake', 'fake', auth_token=auth_token)
expected_endpoint = 'http://host4:9295'
endpoint = glance.GlanceEndpoint(url=expected_endpoint)
expected_params = {
'identity_headers': {
'X-Auth-Token': 'token',
@ -206,7 +205,7 @@ class TestCreateGlanceClient(test.NoDBTestCase):
'X-Identity-Status': 'Confirmed'
}
}
glance._glanceclient_from_endpoint(ctx, endpoint)
glance._glanceclient_from_endpoint(ctx, expected_endpoint)
init_mock.assert_called_once_with('1', expected_endpoint,
**expected_params)
@ -224,7 +223,7 @@ class TestCreateGlanceClient(test.NoDBTestCase):
'X-Identity-Status': 'Confirmed'
}
}
glance._glanceclient_from_endpoint(ctx, endpoint, version=2)
glance._glanceclient_from_endpoint(ctx, expected_endpoint, version=2)
init_mock.assert_called_once_with('2', expected_endpoint,
**expected_params)
@ -235,8 +234,7 @@ class TestCreateGlanceClient(test.NoDBTestCase):
ipv6_mock.return_value = True
expected_endpoint = 'http://[host4]:9295'
endpoint = glance.GlanceEndpoint(url=expected_endpoint)
glance._glanceclient_from_endpoint(ctx, endpoint)
glance._glanceclient_from_endpoint(ctx, expected_endpoint)
init_mock.assert_called_once_with('1', expected_endpoint,
**expected_params)
@ -388,8 +386,7 @@ class TestGlanceClientWrapper(test.NoDBTestCase):
self.flags(ca_file='foo.cert', cert_file='bar.cert',
key_file='wut.key', group='ssl')
ctxt = mock.sentinel.ctx
endpoint = glance.GlanceEndpoint(url='https://host4:9295')
glance._glanceclient_from_endpoint(ctxt, endpoint)
glance._glanceclient_from_endpoint(ctxt, 'https://host4:9295')
client_mock.assert_called_once_with(
'1', 'https://host4:9295', insecure=False, ssl_compression=False,
cert_file='bar.cert', key_file='wut.key', cacert='foo.cert',
@ -1213,32 +1210,19 @@ class TestGlanceUrl(test.NoDBTestCase):
class TestGlanceApiServers(test.NoDBTestCase):
def test_get_ipv4_api_servers(self):
self.flags(api_servers=['10.0.1.1:9292',
'https://10.0.0.1:9293',
'http://10.0.2.2:9294'], group='glance')
glance_host = ['10.0.1.1', '10.0.0.1',
'10.0.2.2']
def test_get_api_servers(self):
glance_servers = ['10.0.1.1:9292',
'https://10.0.0.1:9293',
'http://10.0.2.2:9294']
expected_servers = ['http://10.0.1.1:9292',
'https://10.0.0.1:9293',
'http://10.0.2.2:9294']
self.flags(api_servers=glance_servers, group='glance')
api_servers = glance.get_api_servers()
i = 0
for server in api_servers:
i += 1
self.assertIn(server.host, glance_host)
if i > 2:
break
def test_get_ipv6_api_servers(self):
self.flags(api_servers=['[2001:2012:1:f101::1]:9292',
'https://[2010:2013:1:f122::1]:9293',
'http://[2001:2011:1:f111::1]:9294'],
group='glance')
glance_host = ['2001:2012:1:f101::1', '2010:2013:1:f122::1',
'2001:2011:1:f111::1']
api_servers = glance.get_api_servers()
i = 0
for server in api_servers:
i += 1
self.assertIn(server.host, glance_host)
self.assertIn(server, expected_servers)
if i > 2:
break
@ -1249,21 +1233,21 @@ class TestGlanceNoApiServers(test.NoDBTestCase):
host="10.0.0.1",
port=9292)
api_servers = glance.get_api_servers()
self.assertEqual("http://10.0.0.1:9292", str(next(api_servers)))
self.assertEqual("http://10.0.0.1:9292", next(api_servers))
self.flags(group='glance',
host="10.0.0.1",
protocol="https",
port=9292)
api_servers = glance.get_api_servers()
self.assertEqual("https://10.0.0.1:9292", str(next(api_servers)))
self.assertEqual("https://10.0.0.1:9292", next(api_servers))
self.flags(group='glance',
host="f000::c0de",
protocol="https",
port=9292)
api_servers = glance.get_api_servers()
self.assertEqual("https://[f000::c0de]:9292", str(next(api_servers)))
self.assertEqual("https://[f000::c0de]:9292", next(api_servers))
class TestUpdateGlanceImage(test.NoDBTestCase):

View File

@ -108,14 +108,16 @@ class TestGlanceStore(stubs.XenAPITestBaseNoDB):
mock.call('glance', 'download_vhd2',
endpoint='http://10.0.0.1:9293',
**params)]
log_calls = [mock.call(mock.ANY, {'callback_result': '10.0.1.1',
'attempts': 3, 'attempt': 1,
'fn': 'download_vhd2',
'plugin': 'glance'}),
mock.call(mock.ANY, {'callback_result': '10.0.0.1',
'attempts': 3, 'attempt': 2,
'fn': 'download_vhd2',
'plugin': 'glance'})]
log_calls = [mock.call(mock.ANY,
{'callback_result': 'http://10.0.1.1:9292',
'attempts': 3, 'attempt': 1,
'fn': 'download_vhd2',
'plugin': 'glance'}),
mock.call(mock.ANY,
{'callback_result': 'http://10.0.0.1:9293',
'attempts': 3, 'attempt': 2,
'fn': 'download_vhd2',
'plugin': 'glance'})]
glance_api_servers = ['10.0.1.1:9292',
'http://10.0.0.1:9293']

View File

@ -37,9 +37,9 @@ class GlanceStore(object):
def pick_glance(kwargs):
server = next(glance_api_servers)
kwargs['endpoint'] = server.url
kwargs['endpoint'] = server
# NOTE(sdague): is the return significant here at all?
return server.host
return server
def retry_cb(context, instance, exc=None):
if exc: