From f3165d2a48b039fb2d53ff2da72d57fe65fe3db3 Mon Sep 17 00:00:00 2001 From: Edgar Magana Date: Fri, 30 May 2014 16:27:35 -0700 Subject: [PATCH] Stop the dhcp-agent process when dnsmasq version is not determined When it is not possible to determinate the dnsmasq version or dnsmasq is not installed, neutron shows only a warning message. With this commit the dhcp-agent process will be stopped if the dnsmasq service is not installed. Modifies the dhcp version unit test with the expected SystemExit exception Change-Id: Ia26eaae6f432305f412a4b6a4a6b2b7b15d99d45 Closes-Bug: 1212401 --- neutron/agent/linux/dhcp.py | 7 ++++--- neutron/tests/unit/test_linux_dhcp.py | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/neutron/agent/linux/dhcp.py b/neutron/agent/linux/dhcp.py index d05cad16426..f0b0ec05e90 100644 --- a/neutron/agent/linux/dhcp.py +++ b/neutron/agent/linux/dhcp.py @@ -318,9 +318,10 @@ class Dnsmasq(DhcpLocalProcess): 'Please ensure that its version is %s ' 'or above!'), cls.MINIMUM_VERSION) except (OSError, RuntimeError, IndexError, ValueError): - LOG.warning(_('Unable to determine dnsmasq version. ' - 'Please ensure that its version is %s ' - 'or above!'), cls.MINIMUM_VERSION) + LOG.error(_('Unable to determine dnsmasq version. ' + 'Please ensure that its version is %s ' + 'or above!'), cls.MINIMUM_VERSION) + raise SystemExit(1) return float(ver) @classmethod diff --git a/neutron/tests/unit/test_linux_dhcp.py b/neutron/tests/unit/test_linux_dhcp.py index 9c009e3b4d9..e3479c5b144 100644 --- a/neutron/tests/unit/test_linux_dhcp.py +++ b/neutron/tests/unit/test_linux_dhcp.py @@ -18,6 +18,7 @@ import os import mock from oslo.config import cfg +import testtools from neutron.agent.common import config from neutron.agent.linux import dhcp @@ -1284,7 +1285,8 @@ tag:tag0,option:router""".lstrip() float(2.48)) def test_check_version_failed_cmd_execution(self): - self._check_version('Error while executing command', 0) + with testtools.ExpectedException(SystemExit): + self._check_version('Error while executing command', 0) def test_only_populates_dhcp_enabled_subnets(self): exp_host_name = '/dhcp/eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee/host'