Merge "Bring up secondary IPs on member networks" into stable/queens
This commit is contained in:
commit
36e138cd11
|
@ -143,11 +143,6 @@ class BaseOS(object):
|
||||||
text = template_port.render(interface=netns_interface)
|
text = template_port.render(interface=netns_interface)
|
||||||
else:
|
else:
|
||||||
for index, fixed_ip in enumerate(fixed_ips, -1):
|
for index, fixed_ip in enumerate(fixed_ips, -1):
|
||||||
if index == -1:
|
|
||||||
netns_ip_interface = netns_interface
|
|
||||||
else:
|
|
||||||
netns_ip_interface = "{int}:{ip}".format(
|
|
||||||
int=netns_interface, ip=index)
|
|
||||||
try:
|
try:
|
||||||
ip_addr = fixed_ip['ip_address']
|
ip_addr = fixed_ip['ip_address']
|
||||||
cidr = fixed_ip['subnet_cidr']
|
cidr = fixed_ip['subnet_cidr']
|
||||||
|
@ -164,7 +159,7 @@ class BaseOS(object):
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return webob.Response(
|
return webob.Response(
|
||||||
json=dict(message="Invalid network IP"), status=400)
|
json=dict(message="Invalid network IP"), status=400)
|
||||||
new_text = template_port.render(interface=netns_ip_interface,
|
new_text = template_port.render(interface=netns_interface,
|
||||||
ipv6=ip.version is 6,
|
ipv6=ip.version is 6,
|
||||||
ip_address=ip.exploded,
|
ip_address=ip.exploded,
|
||||||
broadcast=broadcast,
|
broadcast=broadcast,
|
||||||
|
|
|
@ -161,11 +161,8 @@ class TestPlugNetwork(base.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestPlugNetwork, self).setUp()
|
super(TestPlugNetwork, self).setUp()
|
||||||
self.mock_platform = mock.patch("platform.linux_distribution").start()
|
self.mock_platform = mock.patch("platform.linux_distribution").start()
|
||||||
self.mock_platform.return_value = ("Ubuntu",)
|
|
||||||
self.osutil = osutils.BaseOS.get_os_util()
|
|
||||||
self.test_plug = plug.Plug(self.osutil)
|
|
||||||
|
|
||||||
def test__generate_network_file_text_static_ip_ubuntu(self):
|
def __generate_network_file_text_static_ip(self):
|
||||||
netns_interface = 'eth1234'
|
netns_interface = 'eth1234'
|
||||||
FIXED_IP = '192.0.2.2'
|
FIXED_IP = '192.0.2.2'
|
||||||
BROADCAST = '192.0.2.255'
|
BROADCAST = '192.0.2.255'
|
||||||
|
@ -206,3 +203,84 @@ class TestPlugNetwork(base.TestCase):
|
||||||
dest2=DEST2,
|
dest2=DEST2,
|
||||||
nexthop=NEXTHOP)
|
nexthop=NEXTHOP)
|
||||||
self.assertEqual(expected_text, text)
|
self.assertEqual(expected_text, text)
|
||||||
|
|
||||||
|
def __generate_network_file_text_two_static_ips(self):
|
||||||
|
netns_interface = 'eth1234'
|
||||||
|
FIXED_IP = '192.0.2.2'
|
||||||
|
BROADCAST = '192.0.2.255'
|
||||||
|
SUBNET_CIDR = '192.0.2.0/24'
|
||||||
|
NETMASK = '255.255.255.0'
|
||||||
|
DEST1 = '198.51.100.0/24'
|
||||||
|
DEST2 = '203.0.113.0/24'
|
||||||
|
NEXTHOP = '192.0.2.1'
|
||||||
|
MTU = 1450
|
||||||
|
FIXED_IP_IPV6 = '2001:0db8:0000:0000:0000:0000:0000:0001'
|
||||||
|
BROADCAST_IPV6 = '2001:0db8:ffff:ffff:ffff:ffff:ffff:ffff'
|
||||||
|
SUBNET_CIDR_IPV6 = '2001:db8::/32'
|
||||||
|
NETMASK_IPV6 = '32'
|
||||||
|
fixed_ips = [{'ip_address': FIXED_IP,
|
||||||
|
'subnet_cidr': SUBNET_CIDR,
|
||||||
|
'host_routes': [
|
||||||
|
{'destination': DEST1, 'nexthop': NEXTHOP},
|
||||||
|
{'destination': DEST2, 'nexthop': NEXTHOP}
|
||||||
|
]},
|
||||||
|
{'ip_address': FIXED_IP_IPV6,
|
||||||
|
'subnet_cidr': SUBNET_CIDR_IPV6,
|
||||||
|
'host_routes': []}
|
||||||
|
]
|
||||||
|
format_text = (
|
||||||
|
'\n\n# Generated by Octavia agent\n'
|
||||||
|
'auto {netns_interface}\n'
|
||||||
|
'iface {netns_interface} inet static\n'
|
||||||
|
'address {fixed_ip}\n'
|
||||||
|
'broadcast {broadcast}\n'
|
||||||
|
'netmask {netmask}\n'
|
||||||
|
'mtu {mtu}\n'
|
||||||
|
'up route add -net {dest1} gw {nexthop} dev {netns_interface}\n'
|
||||||
|
'down route del -net {dest1} gw {nexthop} dev {netns_interface}\n'
|
||||||
|
'up route add -net {dest2} gw {nexthop} dev {netns_interface}\n'
|
||||||
|
'down route del -net {dest2} gw {nexthop} dev {netns_interface}\n'
|
||||||
|
'\n\n# Generated by Octavia agent\n'
|
||||||
|
'auto {netns_interface}\n'
|
||||||
|
'iface {netns_interface} inet6 static\n'
|
||||||
|
'address {fixed_ip_ipv6}\n'
|
||||||
|
'broadcast {broadcast_ipv6}\n'
|
||||||
|
'netmask {netmask_ipv6}\n'
|
||||||
|
'mtu {mtu}\n')
|
||||||
|
|
||||||
|
template_port = osutils.j2_env.get_template('plug_port_ethX.conf.j2')
|
||||||
|
text = self.test_plug._osutils._generate_network_file_text(
|
||||||
|
netns_interface, fixed_ips, MTU, template_port)
|
||||||
|
expected_text = format_text.format(netns_interface=netns_interface,
|
||||||
|
fixed_ip=FIXED_IP,
|
||||||
|
broadcast=BROADCAST,
|
||||||
|
netmask=NETMASK,
|
||||||
|
mtu=MTU,
|
||||||
|
dest1=DEST1,
|
||||||
|
dest2=DEST2,
|
||||||
|
nexthop=NEXTHOP,
|
||||||
|
fixed_ip_ipv6=FIXED_IP_IPV6,
|
||||||
|
broadcast_ipv6=BROADCAST_IPV6,
|
||||||
|
netmask_ipv6=NETMASK_IPV6)
|
||||||
|
self.assertEqual(expected_text, text)
|
||||||
|
|
||||||
|
def _setup(self, os):
|
||||||
|
self.mock_platform.return_value = [os]
|
||||||
|
self.osutil = osutils.BaseOS.get_os_util()
|
||||||
|
self.test_plug = plug.Plug(self.osutil)
|
||||||
|
|
||||||
|
def test__generate_network_file_text_static_ip_ubuntu(self):
|
||||||
|
self._setup("Ubuntu")
|
||||||
|
self.__generate_network_file_text_static_ip()
|
||||||
|
|
||||||
|
def test__generate_network_file_text_static_ip_centos(self):
|
||||||
|
self._setup("centos")
|
||||||
|
self.__generate_network_file_text_static_ip()
|
||||||
|
|
||||||
|
def test__generate_network_file_text_two_static_ips_ubuntu(self):
|
||||||
|
self._setup("Ubuntu")
|
||||||
|
self.__generate_network_file_text_two_static_ips()
|
||||||
|
|
||||||
|
def test__generate_network_file_text_two_static_ips_centos(self):
|
||||||
|
self._setup("centos")
|
||||||
|
self.__generate_network_file_text_two_static_ips()
|
||||||
|
|
Loading…
Reference in New Issue