summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Simpson <tim.simpson@rackspace.com>2011-08-22 15:21:31 -0500
committerTim Simpson <tim.simpson@rackspace.com>2011-08-22 15:21:31 -0500
commit51344d7be195f9342d24d461f4c07fa1c9141da4 (patch)
tree14a9d7cb4b0e3ecd0d2374ecb23567b4aeee504d
parent1b9cc046e9ae2bc5d0c1bd015d4e3304541ebd3c (diff)
downloadnova-51344d7be195f9342d24d461f4c07fa1c9141da4.tar.gz
nova-51344d7be195f9342d24d461f4c07fa1c9141da4.tar.xz
nova-51344d7be195f9342d24d461f4c07fa1c9141da4.zip
Changed list_notifier to call sys.exit if a notification driver could not be found.
-rw-r--r--nova/notifier/list_notifier.py15
-rw-r--r--nova/tests/notifier/test_list_notifier.py15
2 files changed, 14 insertions, 16 deletions
diff --git a/nova/notifier/list_notifier.py b/nova/notifier/list_notifier.py
index 78d51628c..21067df55 100644
--- a/nova/notifier/list_notifier.py
+++ b/nova/notifier/list_notifier.py
@@ -13,6 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.
+import sys
+
from nova import flags
from nova import log as logging
from nova import utils
@@ -29,15 +31,6 @@ LOG = logging.getLogger('nova.notifier.list_notifier')
drivers = None
-class ImportFailureNotifier(object):
-
- def __init__(self, exception):
- self.exception = exception
-
- def notify(message):
- raise self.exception
-
-
def _get_drivers():
"""Instantiates and returns drivers based on the flag values."""
global drivers
@@ -46,8 +39,8 @@ def _get_drivers():
for notification_driver in FLAGS.list_notifier_drivers:
try:
drivers.append(utils.import_object(notification_driver))
- except ClassNotFound as e:
- drivers.append(ImportFailureNotifier(e))
+ except ClassNotFound:
+ sys.exit(1)
return drivers
def notify(message):
diff --git a/nova/tests/notifier/test_list_notifier.py b/nova/tests/notifier/test_list_notifier.py
index ca8b3e0a7..bab1a0ab8 100644
--- a/nova/tests/notifier/test_list_notifier.py
+++ b/nova/tests/notifier/test_list_notifier.py
@@ -14,18 +14,15 @@
# under the License.
import stubout
+import sys
import nova
-from nova import context
-from nova import flags
from nova import log as logging
-from nova import rpc
import nova.notifier.api
from nova.notifier.api import notify
from nova.notifier import log_notifier
from nova.notifier import no_op_notifier
from nova.notifier import list_notifier
-from nova.notifier import rabbit_notifier
from nova import test
@@ -51,6 +48,11 @@ class NotifierListTestCase(test.TestCase):
def mock_notify2(cls, *args):
raise RuntimeError("Bad notifier.")
self.stubs.Set(nova.notifier.log_notifier, 'notify', mock_notify2)
+ # mock sys.exit so we don't actually kill the program during our tests.
+ self.sys_exit_code = 0
+ def mock_sys_exit(code):
+ self.sys_exit_code += code
+ self.stubs.Set(sys, 'exit', mock_sys_exit)
def tearDown(self):
self.stubs.UnsetAll()
@@ -65,6 +67,7 @@ class NotifierListTestCase(test.TestCase):
nova.notifier.api.WARN, dict(a=3))
self.assertEqual(self.notify_count, 2)
self.assertEqual(self.exception_count, 0)
+ self.assertEqual(self.sys_exit_code, 0)
def test_send_notifications_with_errors(self):
@@ -74,6 +77,7 @@ class NotifierListTestCase(test.TestCase):
notify('publisher_id', 'event_type', nova.notifier.api.WARN, dict(a=3))
self.assertEqual(self.notify_count, 1)
self.assertEqual(self.exception_count, 1)
+ self.assertEqual(self.sys_exit_code, 0)
def test_when_driver_fails_to_import(self):
self.flags(notification_driver='nova.notifier.list_notifier',
@@ -81,5 +85,6 @@ class NotifierListTestCase(test.TestCase):
'nova.notifier.logo_notifier',
'fdsjgsdfhjkhgsfkj'])
notify('publisher_id', 'event_type', nova.notifier.api.WARN, dict(a=3))
- self.assertEqual(self.exception_count, 2)
+ self.assertEqual(self.exception_count, 0)
self.assertEqual(self.notify_count, 1)
+ self.assertEqual(self.sys_exit_code, 2)