]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Configures RADVD to send managed flag in RA
authorsinghannie <aniruddha.gautam@hp.com>
Wed, 31 Dec 2014 11:47:38 +0000 (03:47 -0800)
committersinghannie <aniruddha.gautam@hp.com>
Tue, 3 Feb 2015 07:02:17 +0000 (23:02 -0800)
for DHCP_STATEFUL

RADVD process is configured so that it sends
managed flag in RA for the subnets with
ra_mode set to DHCP_STATEFUL. UT case is
updated to check the presence of managed
flag in config file of RADVD for
DHCP_STATEFUL.

Change-Id: If685846c0c0f67bf4c40f4f268b9d03bfa2b1654
Closes-Bug: #1377843

neutron/agent/linux/ra.py
neutron/tests/unit/test_l3_agent.py

index af721cca1b4d64fc80b60d444b93567d941821a8..10a9f53a1ce7dc654bb39ee21534cfc320109f65 100644 (file)
@@ -44,6 +44,10 @@ CONFIG_TEMPLATE = jinja2.Template("""interface {{ interface_name }}
    AdvOtherConfigFlag on;
    {% endif %}
 
+   {% if ra_mode == constants.DHCPV6_STATEFUL %}
+   AdvManagedFlag on;
+   {% endif %}
+
    {% if ra_mode in (constants.IPV6_SLAAC, constants.DHCPV6_STATELESS) %}
    prefix {{ prefix }}
    {
index 28a5568fe115fc64f74d73a9606995ca7e5114d0..a3d6bff517f351a140b0eb65dedb613768cbcef1 100644 (file)
@@ -2195,13 +2195,17 @@ vrrp_instance VR_1 {
         self.assertIn(_join('-p', pidfile), cmd)
         self.assertIn(_join('-m', 'syslog'), cmd)
 
-    def test_generate_radvd_conf_other_flag(self):
+    def test_generate_radvd_conf_other_and_managed_flag(self):
+        _skip_check = object()
+        skip = lambda flag: True if flag is _skip_check else False
+
+        expected = {l3_constants.IPV6_SLAAC: (False, False),
+                    l3_constants.DHCPV6_STATELESS: (True, False),
         # we don't check other flag for stateful since it's redundant
         # for this mode and can be ignored by clients, as per RFC4861
-        expected = {l3_constants.IPV6_SLAAC: False,
-                    l3_constants.DHCPV6_STATELESS: True}
+                    l3_constants.DHCPV6_STATEFUL: (_skip_check, True)}
 
-        for ra_mode, flag_set in expected.iteritems():
+        for ra_mode, flags_set in expected.iteritems():
             router = prepare_router_data()
             ri = self._process_router_ipv6_interface_added(router,
                                                            ra_mode=ra_mode)
@@ -2209,9 +2213,18 @@ vrrp_instance VR_1 {
             ra._generate_radvd_conf(ri.router['id'],
                                     router[l3_constants.INTERFACE_KEY],
                                     mock.Mock())
-            asserter = self.assertIn if flag_set else self.assertNotIn
-            asserter('AdvOtherConfigFlag on;',
-                     self.utils_replace_file.call_args[0][1])
+
+            def assertFlag(flag):
+                return (self.assertIn if flag else self.assertNotIn)
+
+            other_flag, managed_flag = flags_set
+            if not skip(other_flag):
+                assertFlag(other_flag)('AdvOtherConfigFlag on;',
+                    self.utils_replace_file.call_args[0][1])
+
+            if not skip(managed_flag):
+                assertFlag(managed_flag)('AdvManagedFlag on',
+                    self.utils_replace_file.call_args[0][1])
 
 
 class TestL3AgentEventHandler(base.BaseTestCase):