]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Add error log for SystemExit in l3-agent
authorHui HX Xiang <xianghui@cn.ibm.com>
Mon, 23 Sep 2013 09:04:57 +0000 (02:04 -0700)
committerHui HX Xiang <xianghui@cn.ibm.com>
Fri, 27 Sep 2013 15:23:07 +0000 (08:23 -0700)
The SystemExit exception should be logged in l3-agent, the
operator may miss the useful exception messages to debug.

    * Add error log for SystemExit in l3-agent.
    * Add unit test for None and Wrong interface_driver.

Closes-Bug #1229105

Change-Id: I9ac60a528c1e88827078d552a30c8d571066d21c

neutron/agent/l3_agent.py
neutron/tests/unit/test_l3_agent.py

index 950344850b62362f0456aab0f8076c32899c937a..69b4ea0cede3ddcf01da0ad6d7d0de57228eb2c2 100644 (file)
@@ -205,6 +205,7 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback, manager.Manager):
         except Exception:
             msg = _("Error importing interface driver "
                     "'%s'") % self.conf.interface_driver
+            LOG.error(msg)
             raise SystemExit(msg)
 
         self.context = context.get_admin_context_without_session()
@@ -228,7 +229,9 @@ class L3NATAgent(firewall_l3_agent.FWaaSL3AgentRpcCallback, manager.Manager):
         The actual values are not verified for correctness.
         """
         if not self.conf.interface_driver:
-            raise SystemExit(_('An interface driver must be specified'))
+            msg = _('An interface driver must be specified')
+            LOG.error(msg)
+            raise SystemExit(msg)
 
         if not self.conf.use_namespaces and not self.conf.router_id:
             msg = _('Router id is required if not using namespaces.')
index 66bb0876b612d6ae9bfc624b891682b146db750b..ae4e3080179302536e7ee3087bec1abd3b8a4a21 100644 (file)
@@ -657,6 +657,21 @@ class TestBasicRouterOperations(base.BaseTestCase):
         agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
         self.assertEqual(['1234'], agent._router_ids())
 
+    def test_nonexistent_interface_driver(self):
+        self.conf.set_override('interface_driver', None)
+        with mock.patch.object(l3_agent, 'LOG') as log:
+            self.assertRaises(SystemExit, l3_agent.L3NATAgent,
+                              HOSTNAME, self.conf)
+            msg = 'An interface driver must be specified'
+            log.error.assert_called_once_with(msg)
+
+        self.conf.set_override('interface_driver', 'wrong_driver')
+        with mock.patch.object(l3_agent, 'LOG') as log:
+            self.assertRaises(SystemExit, l3_agent.L3NATAgent,
+                              HOSTNAME, self.conf)
+            msg = "Error importing interface driver 'wrong_driver'"
+            log.error.assert_called_once_with(msg)
+
 
 class TestL3AgentEventHandler(base.BaseTestCase):