Explicit error for wrong resource metadata format
When creating sample with wrong resource metadata format, Ceilometer CLI will return a ValueError about json decoding, this change provide a more explicit error info. Change-Id: I18e757ddb319fbf0ffad13c07528355785ea5e9a Closes-Bug: 1465193
This commit is contained in:
@@ -576,6 +576,16 @@ class ShellSampleCreateCommandTest(utils.BaseTestCase):
|
||||
+-------------------+---------------------------------------------+
|
||||
''', sys.stdout.getvalue())
|
||||
|
||||
def test_sample_create_with_invalid_resource_metadata(self):
|
||||
self.args.resource_metadata = 'foo=bar'
|
||||
with mock.patch('ceilometerclient.exc.CommandError') as e:
|
||||
e.return_value = exc.BaseException()
|
||||
self.assertRaises(exc.BaseException,
|
||||
ceilometer_shell.do_sample_create,
|
||||
self.cc, self.args)
|
||||
e.assert_called_with('Invalid resource metadata, it should be a'
|
||||
' json string, like: \'{"foo":"bar"}\'')
|
||||
|
||||
|
||||
class ShellSampleCreateListCommandTest(utils.BaseTestCase):
|
||||
|
||||
|
@@ -231,7 +231,12 @@ def do_sample_create(cc, args={}):
|
||||
k, v = var[0], var[1]
|
||||
if v is not None:
|
||||
if k == 'resource_metadata':
|
||||
fields[k] = json.loads(v)
|
||||
try:
|
||||
fields[k] = json.loads(v)
|
||||
except ValueError:
|
||||
msg = ('Invalid resource metadata, it should be a json'
|
||||
' string, like: \'{"foo":"bar"}\'')
|
||||
raise exc.CommandError(msg)
|
||||
else:
|
||||
fields[arg_to_field_mapping.get(k, k)] = v
|
||||
sample = cc.samples.create(**fields)
|
||||
|
Reference in New Issue
Block a user