Merge "Add get_server_external_ipv6() to meta"
This commit is contained in:
commit
3f72462afc
|
@ -121,6 +121,21 @@ def get_server_external_ipv4(cloud, server):
|
|||
return None
|
||||
|
||||
|
||||
def get_server_external_ipv6(server):
|
||||
""" Get an IPv6 address reachable from outside the cloud.
|
||||
|
||||
This function assumes that if a server has an IPv6 address, that address
|
||||
is reachable from outside the cloud.
|
||||
|
||||
:param server: the server from which we want to get an IPv6 address
|
||||
:return: a string containing the IPv6 address or None
|
||||
"""
|
||||
addresses = find_nova_addresses(addresses=server.addresses, version=6)
|
||||
if addresses:
|
||||
return addresses[0]
|
||||
return None
|
||||
|
||||
|
||||
def get_groups_from_server(cloud, server, server_vars):
|
||||
groups = []
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ from shade.tests import fakes
|
|||
|
||||
PRIVATE_V4 = '198.51.100.3'
|
||||
PUBLIC_V4 = '192.0.2.99'
|
||||
PUBLIC_V6 = '2001:0db8:face:0da0:face::0b00:1c' # rfc3849
|
||||
|
||||
|
||||
class FakeCloud(object):
|
||||
|
@ -78,6 +79,28 @@ class TestMeta(testtools.TestCase):
|
|||
['198.51.100.2'], meta.find_nova_addresses(addrs, ext_tag='fixed'))
|
||||
self.assertEqual([], meta.find_nova_addresses(addrs, ext_tag='foo'))
|
||||
|
||||
def test_find_nova_addresses_key_name_and_ext_tag(self):
|
||||
addrs = {'public': [{'OS-EXT-IPS:type': 'fixed',
|
||||
'addr': '198.51.100.2',
|
||||
'version': 4}]}
|
||||
self.assertEqual(
|
||||
['198.51.100.2'], meta.find_nova_addresses(
|
||||
addrs, key_name='public', ext_tag='fixed'))
|
||||
self.assertEqual([], meta.find_nova_addresses(
|
||||
addrs, key_name='public', ext_tag='foo'))
|
||||
self.assertEqual([], meta.find_nova_addresses(
|
||||
addrs, key_name='bar', ext_tag='fixed'))
|
||||
|
||||
def test_find_nova_addresses_all(self):
|
||||
addrs = {'public': [{'OS-EXT-IPS:type': 'fixed',
|
||||
'addr': '198.51.100.2',
|
||||
'version': 4}]}
|
||||
self.assertEqual(
|
||||
['198.51.100.2'], meta.find_nova_addresses(
|
||||
addrs, key_name='public', ext_tag='fixed', version=4))
|
||||
self.assertEqual([], meta.find_nova_addresses(
|
||||
addrs, key_name='public', ext_tag='fixed', version=6))
|
||||
|
||||
def test_get_server_ip(self):
|
||||
srv = FakeServer()
|
||||
self.assertEqual(PRIVATE_V4, meta.get_server_private_ip(srv))
|
||||
|
@ -167,6 +190,19 @@ class TestMeta(testtools.TestCase):
|
|||
self.assertTrue(mock_get_server_ip.called)
|
||||
self.assertTrue(mock_is_globally_routable_ipv4.called)
|
||||
|
||||
def test_get_server_external_ipv6(self):
|
||||
srv = fakes.FakeServer(
|
||||
id='test-id', name='test-name', status='ACTIVE',
|
||||
addresses={
|
||||
'test-net': [
|
||||
{'addr': PUBLIC_V4, 'version': 4},
|
||||
{'addr': PUBLIC_V6, 'version': 6}
|
||||
]
|
||||
}
|
||||
)
|
||||
ip = meta.get_server_external_ipv6(srv)
|
||||
self.assertEqual(PUBLIC_V6, ip)
|
||||
|
||||
def test_get_groups_from_server(self):
|
||||
server_vars = {'flavor': 'test-flavor',
|
||||
'image': 'test-image',
|
||||
|
|
Loading…
Reference in New Issue