]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Strip square brackets from IPv6 addresses
authorAlexey I. Froloff <raorn@raorn.name>
Tue, 2 Dec 2014 12:43:25 +0000 (15:43 +0300)
committerAlexey I. Froloff <raorn@raorn.name>
Tue, 2 Dec 2014 12:43:25 +0000 (15:43 +0300)
When releasing old DHCP leases, square brackets around IPv6 addresses
should be stripped while reading dnsmasq hosts file.

Change-Id: Ia1e6d3a3cba30c94a1faa157d1d83da7beb523c4
Closes-bug: #1398380

neutron/agent/linux/dhcp.py
neutron/tests/unit/test_linux_dhcp.py

index cc57c780618252df7c3d226702e6a522d5dd843a..d4426abbff15de3e5ac582de1f3479fba71dea40 100644 (file)
@@ -532,7 +532,7 @@ class Dnsmasq(DhcpLocalProcess):
             with open(filename) as f:
                 for l in f.readlines():
                     host = l.strip().split(',')
-                    leases.add((host[2], host[0]))
+                    leases.add((host[2].strip('[]'), host[0]))
         return leases
 
     def _release_unused_leases(self):
index 39edd30a8fd55ab6e37eb387c96adfbd0139f7ac..35ddd286c0186cc9e70523542e8f726f881afec8 100644 (file)
@@ -1274,13 +1274,16 @@ tag:tag0,option:router""".lstrip()
             with mock.patch('__builtin__.open') as mock_open:
                 mock_open.return_value.__enter__ = lambda s: s
                 mock_open.return_value.__exit__ = mock.Mock()
-                lines = ["00:00:80:aa:bb:cc,inst-name,192.168.0.1"]
+                lines = ["00:00:80:aa:bb:cc,inst-name,192.168.0.1",
+                         "00:00:80:aa:bb:cc,inst-name,[fdca:3ba5:a17a::1]"]
                 mock_open.return_value.readlines.return_value = lines
 
                 dnsmasq = dhcp.Dnsmasq(self.conf, FakeDualNetwork())
                 leases = dnsmasq._read_hosts_file_leases(filename)
 
-        self.assertEqual(set([("192.168.0.1", "00:00:80:aa:bb:cc")]), leases)
+        self.assertEqual(set([("192.168.0.1", "00:00:80:aa:bb:cc"),
+                              ("fdca:3ba5:a17a::1", "00:00:80:aa:bb:cc")]),
+                         leases)
         mock_exists.assert_called_once_with(filename)
         mock_open.assert_called_once_with(filename)