Merge "Make generic driver use only ipv4 addresses from service instances"

This commit is contained in:
Jenkins 2015-05-15 05:33:06 +00:00 committed by Gerrit Code Review
commit 36bc96be35
2 changed files with 57 additions and 25 deletions
manila
share/drivers
tests/share/drivers

@ -256,10 +256,16 @@ class ServiceInstanceManager(object):
'username': self.get_config_option('service_instance_user'),
'password': self.get_config_option('service_instance_password'),
'pk_path': self.path_to_private_key,
'ip': data['private_address'][0], # for handling
'public_address': data['public_address'][0], # for exports
'instance_id': data['instance']['id'],
}
for key in ('private_address', 'public_address'):
data[key + '_v4'] = None
for address in data[key]:
if netaddr.valid_ipv4(address):
data[key + '_v4'] = address
break
share_server['ip'] = data['private_address_v4']
share_server['public_address'] = data['public_address_v4']
return {'backend_details': share_server}
def _get_addresses_by_network_name(self, net_name, server):

@ -811,39 +811,65 @@ class ServiceInstanceManagerTestCase(test.TestCase):
fake_server_details)
@ddt.data(
{'s': 'fake_net_s', 't': 'fake_net_t'},
{'s': 'fake_net_s', 't': '12.34.56.78'},
{'s': '98.76.54.123', 't': 'fake_net_t'},
{'s': '98.76.54.123', 't': '12.34.56.78'})
*[{'s': s, 't': t, 'server': server}
for s, t in (
('fake_net_s', 'fake_net_t'),
('fake_net_s', '12.34.56.78'),
('98.76.54.123', 'fake_net_t'),
('98.76.54.123', '12.34.56.78'))
for server in (
{'networks': {
'fake_net_s': ['foo', '98.76.54.123', 'bar'],
'fake_net_t': ['baar', '12.34.56.78', 'quuz']}},
{'addresses': {
'fake_net_s': [
{'addr': 'fake1'},
{'addr': '98.76.54.123'},
{'addr': 'fake2'}],
'fake_net_t': [
{'addr': 'fake3'},
{'addr': '12.34.56.78'},
{'addr': 'fake4'}],
}})])
@ddt.unpack
def test_get_common_server_valid_cases(self, s, t):
self._get_common_server(s, t, True)
def test_get_common_server_valid_cases(self, s, t, server):
self._get_common_server(s, t, server, True)
@ddt.data(
{'s': 'fake_net_s', 't': 'fake'},
{'s': 'fake', 't': 'fake_net_t'},
{'s': 'fake', 't': 'fake'},
{'s': '98.76.54.123', 't': '12.12.12.1212'},
{'s': '12.12.12.1212', 't': '12.34.56.78'},
{'s': '12.12.12.1212', 't': '12.12.12.1212'})
*[{'s': s, 't': t, 'server': server}
for s, t in (
('fake_net_s', 'fake'),
('fake', 'fake_net_t'),
('fake', 'fake'),
('98.76.54.123', '12.12.12.1212'),
('12.12.12.1212', '12.34.56.78'),
('12.12.12.1212', '12.12.12.1212'))
for server in (
{'networks': {
'fake_net_s': ['foo', '98.76.54.123', 'bar'],
'fake_net_t': ['baar', '12.34.56.78', 'quuz']}},
{'addresses': {
'fake_net_s': [
{'addr': 'fake1'},
{'addr': '98.76.54.123'},
{'addr': 'fake2'}],
'fake_net_t': [
{'addr': 'fake3'},
{'addr': '12.34.56.78'},
{'addr': 'fake4'}],
}})])
@ddt.unpack
def test_get_common_server_invalid_cases(self, s, t):
self._get_common_server(s, t, False)
def test_get_common_server_invalid_cases(self, s, t, server):
self._get_common_server(s, t, server, False)
def _get_common_server(self, s, t, is_valid=True):
def _get_common_server(self, s, t, server, is_valid=True):
fake_instance_id = 'fake_instance_id'
fake_user = 'fake_user'
fake_pass = 'fake_pass'
fake_net_s = 'fake_net_s'
fake_addr_s = '98.76.54.123'
fake_net_t = 'fake_net_t'
fake_addr_t = '12.34.56.78'
fake_server = {
'id': fake_instance_id,
'networks': {fake_net_s: [fake_addr_s], fake_net_t: [fake_addr_t]},
'addresses': {fake_net_s: {'addr': fake_addr_s},
fake_net_t: {'addr': fake_addr_t}},
}
fake_server = {'id': fake_instance_id}
fake_server.update(server)
expected = {
'backend_details': {
'username': fake_user,