Merge "Bring up secondary IPs on member networks"
This commit is contained in:
commit
5f07d61cd8
|
@ -158,11 +158,6 @@ class BaseOS(object):
|
|||
text = template_port.render(interface=netns_interface)
|
||||
else:
|
||||
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:
|
||||
ip_addr = fixed_ip['ip_address']
|
||||
cidr = fixed_ip['subnet_cidr']
|
||||
|
@ -179,7 +174,7 @@ class BaseOS(object):
|
|||
except ValueError:
|
||||
return webob.Response(
|
||||
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 == 6,
|
||||
ip_address=ip.exploded,
|
||||
broadcast=broadcast,
|
||||
|
|
|
@ -183,11 +183,8 @@ class TestPlugNetwork(base.TestCase):
|
|||
def setUp(self):
|
||||
super(TestPlugNetwork, self).setUp()
|
||||
self.mock_platform = mock.patch("distro.id").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'
|
||||
FIXED_IP = '192.0.2.2'
|
||||
BROADCAST = '192.0.2.255'
|
||||
|
@ -232,3 +229,92 @@ class TestPlugNetwork(base.TestCase):
|
|||
dest2=DEST2,
|
||||
nexthop=NEXTHOP)
|
||||
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'
|
||||
'post-up /sbin/iptables -t nat -A POSTROUTING -p udp -o '
|
||||
'{netns_interface} -j MASQUERADE\n'
|
||||
'post-down /sbin/iptables -t nat -D POSTROUTING -p udp -o '
|
||||
'{netns_interface} -j MASQUERADE\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'
|
||||
'post-up /sbin/ip6tables -t nat -A POSTROUTING -p udp -o '
|
||||
'{netns_interface} -j MASQUERADE\n'
|
||||
'post-down /sbin/ip6tables -t nat -D POSTROUTING -p udp -o '
|
||||
'{netns_interface} -j MASQUERADE\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