Wrap IPv6 address with brackets
If IPv6 address is not wrapped with brackets OpenFlow rules are not properly installed. Change-Id: Ib5836b004fd47671c4cdaa382c9376380beee448 Closes-Bug: #1863892
This commit is contained in:
parent
17b1d9d573
commit
a6122e33da
|
@ -790,11 +790,12 @@ class OvnProviderHelper(object):
|
|||
return pool_key
|
||||
|
||||
def _extract_member_info(self, member):
|
||||
mem_info = ''
|
||||
mem_info = []
|
||||
if member:
|
||||
for mem in member.split(','):
|
||||
mem_info += str(mem.split('_')[2]) + ','
|
||||
return mem_info[:-1] # Remove the last ','
|
||||
mem_ip_port = mem.split('_')[2]
|
||||
mem_info.append(tuple(mem_ip_port.rsplit(':', 1)))
|
||||
return mem_info
|
||||
|
||||
def _get_member_key(self, member, old_convention=False):
|
||||
member_info = ''
|
||||
|
@ -865,11 +866,22 @@ class OvnProviderHelper(object):
|
|||
if pool_id not in lb_external_ids or not lb_external_ids[pool_id]:
|
||||
continue
|
||||
|
||||
ips = self._extract_member_info(lb_external_ids[pool_id])
|
||||
vip_ips[lb_vip + ':' + vip_port] = ips
|
||||
ips = []
|
||||
for member_ip, member_port in self._extract_member_info(
|
||||
lb_external_ids[pool_id]):
|
||||
if netaddr.IPNetwork(member_ip).version == 6:
|
||||
ips.append('[%s]:%s' % (member_ip, member_port))
|
||||
else:
|
||||
ips.append('%s:%s' % (member_ip, member_port))
|
||||
|
||||
if netaddr.IPNetwork(lb_vip).version == 6:
|
||||
lb_vip = '[%s]' % lb_vip
|
||||
vip_ips[lb_vip + ':' + vip_port] = ','.join(ips)
|
||||
|
||||
if vip_fip:
|
||||
vip_ips[vip_fip + ':' + vip_port] = ips
|
||||
if netaddr.IPNetwork(vip_fip).version == 6:
|
||||
vip_fip = '[%s]' % vip_fip
|
||||
vip_ips[vip_fip + ':' + vip_port] = ','.join(ips)
|
||||
|
||||
return vip_ips
|
||||
|
||||
|
|
|
@ -2772,3 +2772,25 @@ class TestOvnProviderHelper(TestOvnOctaviaBase):
|
|||
def test__get_existing_pool_members(self):
|
||||
ret = self.helper._get_existing_pool_members(self.pool_id)
|
||||
self.assertEqual(ret, self.member_line)
|
||||
|
||||
def test__frame_lb_vips(self):
|
||||
ret = self.helper._frame_vip_ips(self.ovn_lb.external_ids)
|
||||
expected = {'10.22.33.4:80': '192.168.2.149:1010',
|
||||
'123.123.123.123:80': '192.168.2.149:1010'}
|
||||
self.assertEqual(expected, ret)
|
||||
|
||||
def test__frame_lb_vips_ipv6(self):
|
||||
self.member_address = '2001:db8::1'
|
||||
self.member_line = (
|
||||
'member_%s_%s:%s_%s' %
|
||||
(self.member_id, self.member_address,
|
||||
self.member_port, self.member_subnet_id))
|
||||
self.ovn_lb.external_ids = {
|
||||
ovn_const.LB_EXT_IDS_VIP_KEY: 'fc00::',
|
||||
ovn_const.LB_EXT_IDS_VIP_FIP_KEY: '2002::',
|
||||
'pool_%s' % self.pool_id: self.member_line,
|
||||
'listener_%s' % self.listener_id: '80:pool_%s' % self.pool_id}
|
||||
ret = self.helper._frame_vip_ips(self.ovn_lb.external_ids)
|
||||
expected = {'[2002::]:80': '[2001:db8::1]:1010',
|
||||
'[fc00::]:80': '[2001:db8::1]:1010'}
|
||||
self.assertEqual(expected, ret)
|
||||
|
|
Loading…
Reference in New Issue