summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-06-03 19:04:19 +0000
committerGerrit Code Review <review@openstack.org>2015-06-03 19:04:19 +0000
commit6e01e5134a41514513344068a30fdf5a6962a66d (patch)
treebb4bcefefb2abe052ee2c757cd66ae2675208fb6
parent7ba8aa333bbd66e57f407a1f36d1e6e9d78b1e2c (diff)
parentec491131546f8a9d50c912d3f8f81587937e50e6 (diff)
downloadpython-ceilometerclient-6e01e5134a41514513344068a30fdf5a6962a66d.tar.gz
Merge "Catch missing 404 exceptions in client"
-rw-r--r--ceilometerclient/common/base.py6
-rw-r--r--ceilometerclient/tests/unit/v2/test_shell.py2
-rw-r--r--ceilometerclient/v2/shell.py14
3 files changed, 16 insertions, 6 deletions
diff --git a/ceilometerclient/common/base.py b/ceilometerclient/common/base.py
index 7e8f80f..19d4e8a 100644
--- a/ceilometerclient/common/base.py
+++ b/ceilometerclient/common/base.py
@@ -21,6 +21,7 @@ import copy
from ceilometerclient import exc
from ceilometerclient.openstack.common.apiclient import base
+from ceilometerclient.openstack.common.apiclient import exceptions
# Python 2.4 compat
try:
@@ -65,7 +66,10 @@ class Manager(object):
def _list(self, url, response_key=None, obj_class=None, body=None,
expect_single=False):
- resp = self.api.get(url)
+ try:
+ resp = self.api.get(url)
+ except exceptions.NotFound:
+ raise exc.HTTPNotFound
if not resp.content:
raise exc.HTTPNotFound
body = resp.json()
diff --git a/ceilometerclient/tests/unit/v2/test_shell.py b/ceilometerclient/tests/unit/v2/test_shell.py
index 109cb56..f568ebd 100644
--- a/ceilometerclient/tests/unit/v2/test_shell.py
+++ b/ceilometerclient/tests/unit/v2/test_shell.py
@@ -511,7 +511,7 @@ class ShellSampleShowCommandTest(utils.BaseTestCase):
@mock.patch('sys.stdout', new=six.StringIO())
def test_sample_show_raises_command_err(self):
- self.cc.new_samples.get.return_value = None
+ self.cc.new_samples.get.side_effect = exc.HTTPNotFound
self.assertRaises(exc.CommandError, ceilometer_shell.do_sample_show,
self.cc, self.args)
diff --git a/ceilometerclient/v2/shell.py b/ceilometerclient/v2/shell.py
index a02ae1d..224e189 100644
--- a/ceilometerclient/v2/shell.py
+++ b/ceilometerclient/v2/shell.py
@@ -170,9 +170,9 @@ def _do_sample_list(cc, args):
help='ID (aka message ID) of the sample to show.')
def do_sample_show(cc, args):
'''Show an sample.'''
- sample = cc.new_samples.get(args.sample_id)
-
- if sample is None:
+ try:
+ sample = cc.new_samples.get(args.sample_id)
+ except exc.HTTPNotFound:
raise exc.CommandError('Sample not found: %s' % args.sample_id)
fields = ['id', 'meter', 'volume', 'type', 'unit', 'source',
@@ -405,6 +405,8 @@ def _display_alarm(alarm):
def do_alarm_show(cc, args={}):
"""Show an alarm."""
alarm = cc.alarms.get(args.alarm_id)
+ # alarm.get actually catches the HTTPNotFound exception and turns the
+ # result into None if the alarm wasn't found.
if alarm is None:
raise exc.CommandError('Alarm not found: %s' % args.alarm_id)
else:
@@ -1046,7 +1048,11 @@ def do_event_list(cc, args={}):
help='The ID of the event. Should be a UUID.')
def do_event_show(cc, args={}):
"""Show a particular event."""
- event = cc.events.get(args.message_id)
+ try:
+ event = cc.events.get(args.message_id)
+ except exc.HTTPNotFound:
+ raise exc.CommandError('Event not found: %s' % args.message_id)
+
fields = ['event_type', 'generated', 'traits', 'raw']
data = dict([(f, getattr(event, f, '')) for f in fields])
utils.print_dict(data, wrap=72)