]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
validate L3 HA min/max _l3_agents_per_router
authorvenkata anil <anil.venkata@enovance.com>
Tue, 9 Dec 2014 14:11:49 +0000 (14:11 +0000)
committervenkata anil <anil.venkata@enovance.com>
Tue, 23 Dec 2014 11:06:50 +0000 (11:06 +0000)
The below missing validation is added for L3 HA
max_l3_agents_per_router >= min_l3_agents_per_router

Closes-bug: #1400311
Change-Id: I1d548b9a0a04c8855ada42206c2a333597c2c85b

neutron/db/l3_hamode_db.py
neutron/extensions/l3_ext_ha_mode.py
neutron/tests/unit/db/test_l3_ha_db.py

index 7df53b57b810838897b8f147072cf544828758cb..d5e343e6e90b17dbd7bb3249456f2ed1e1e4b2fd 100644 (file)
@@ -131,7 +131,13 @@ class L3_HA_NAT_db_mixin(l3_dvr_db.L3_NAT_with_dvr_db_mixin):
         if ('/' not in self.ha_cidr or net.network != net.ip):
             raise l3_ha.HANetworkCIDRNotValid(cidr=self.ha_cidr)
 
-        if cfg.CONF.min_l3_agents_per_router < constants.MINIMUM_AGENTS_FOR_HA:
+        max_agents = cfg.CONF.max_l3_agents_per_router
+        min_agents = cfg.CONF.min_l3_agents_per_router
+        if max_agents < min_agents:
+            raise l3_ha.HAMaximumAgentsNumberNotValid(
+                max_agents=max_agents, min_agents=min_agents)
+
+        if min_agents < constants.MINIMUM_AGENTS_FOR_HA:
             raise l3_ha.HAMinimumAgentsNumberNotValid()
 
     def __init__(self):
index 115a8db81409e7ea73b4fe624607b1724eb30dda..444598873ded71c68f79e0cc179744412fac8ee7 100644 (file)
@@ -55,6 +55,12 @@ class HANotEnoughAvailableAgents(exceptions.NeutronException):
                 "required %(min_agents)s, available %(num_agents)s.")
 
 
+class HAMaximumAgentsNumberNotValid(exceptions.NeutronException):
+    message = _("max_l3_agents_per_router %(max_agents)s config parameter "
+                "is not valid. It has to be greater than or equal to "
+                "min_l3_agents_per_router %(min_agents)s.")
+
+
 class HAMinimumAgentsNumberNotValid(exceptions.NeutronException):
     message = (_("min_l3_agents_per_router config parameter is not valid. "
                  "It has to be equal to or more than %s for HA.") %
index 481cf41a78535187e773c002344ab05f04d9bc42..5084a78507ce3843f8dc6511ceaf886a77fffd9a 100644 (file)
@@ -114,12 +114,19 @@ class L3HATestCase(L3HATestFramework):
             l3_ext_ha_mode.HANetworkCIDRNotValid,
             self.plugin._verify_configuration)
 
-    def test_verify_conifguration_min_l3_agents_per_router_below_minimum(self):
+    def test_verify_configuration_min_l3_agents_per_router_below_minimum(self):
         cfg.CONF.set_override('min_l3_agents_per_router', 0)
         self.assertRaises(
             l3_ext_ha_mode.HAMinimumAgentsNumberNotValid,
             self.plugin._verify_configuration)
 
+    def test_verify_configuration_max_l3_agents_below_min_l3_agents(self):
+        cfg.CONF.set_override('max_l3_agents_per_router', 3)
+        cfg.CONF.set_override('min_l3_agents_per_router', 4)
+        self.assertRaises(
+            l3_ext_ha_mode.HAMaximumAgentsNumberNotValid,
+            self.plugin._verify_configuration)
+
     def test_ha_router_create(self):
         router = self._create_router()
         self.assertTrue(router['ha'])