From 554c3335c7d193489db41f3a94483836c4197d5b Mon Sep 17 00:00:00 2001 From: ls1175 Date: Sat, 11 Jan 2014 21:43:44 +0800 Subject: [PATCH] return sample info when creating sample with CLI It will return nothing after creating a sample successfully with ceilometer CLI. The information of the sample created should be return, like other creating commands, such as "ceilometer alarm-create". Change-Id: I60229fefa91de83e4b715cf4f92d3650e0a0d162 Closes-bug: #1267713 --- ceilometerclient/tests/v2/test_shell.py | 62 +++++++++++++++++++++++++ ceilometerclient/v2/shell.py | 9 +++- 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/ceilometerclient/tests/v2/test_shell.py b/ceilometerclient/tests/v2/test_shell.py index 3b24b296..d4c5f336 100644 --- a/ceilometerclient/tests/v2/test_shell.py +++ b/ceilometerclient/tests/v2/test_shell.py @@ -304,3 +304,65 @@ class ShellSampleListCommandTest(utils.BaseTestCase): +--------------------------------------+----------+-------+----------------\ +------+---------------------+ ''') + + +class ShellSampleCreateCommandTest(utils.BaseTestCase): + + METER = 'instance' + METER_TYPE = 'gauge' + RESOURCE_ID = '0564c64c-3545-4e34-abfb-9d18e5f2f2f9' + SAMPLE_VOLUME = '1' + METER_UNIT = 'instance' + SAMPLE = [{ + u'counter_name': u'instance', + u'user_id': u'21b442b8101d407d8242b6610e0ed0eb', + u'resource_id': u'0564c64c-3545-4e34-abfb-9d18e5f2f2f9', + u'timestamp': u'2014-01-10T03: 05: 33.951170', + u'message_id': u'1247cbe6-79a4-11e3-a296-000c294c58e2', + u'source': u'384260c6987b451d8290e66e1f108082: openstack', + u'counter_unit': u'instance', + u'counter_volume': 1.0, + u'project_id': u'384260c6987b451d8290e66e1f108082', + u'resource_metadata': {}, + u'counter_type': u'gauge' + }] + + def setUp(self): + super(ShellSampleCreateCommandTest, self).setUp() + self.cc = mock.Mock() + self.args = mock.Mock() + self.args.meter_name = self.METER + self.args.meter_type = self.METER_TYPE + self.args.meter_unit = self.METER_UNIT + self.args.resource_id = self.RESOURCE_ID + self.args.sample_volume = self.SAMPLE_VOLUME + + def test_sample_create(self): + + ret_sample = [samples.Sample(mock.Mock(), sample) + for sample in self.SAMPLE] + self.cc.samples.create.return_value = ret_sample + org_stdout = sys.stdout + try: + sys.stdout = output = six.StringIO() + ceilometer_shell.do_sample_create(self.cc, self.args) + finally: + sys.stdout = org_stdout + + self.assertEqual(output.getvalue(), '''\ ++-------------------+---------------------------------------------+ +| Property | Value | ++-------------------+---------------------------------------------+ +| message_id | 1247cbe6-79a4-11e3-a296-000c294c58e2 | +| name | instance | +| project_id | 384260c6987b451d8290e66e1f108082 | +| resource_id | 0564c64c-3545-4e34-abfb-9d18e5f2f2f9 | +| resource_metadata | {} | +| source | 384260c6987b451d8290e66e1f108082: openstack | +| timestamp | 2014-01-10T03: 05: 33.951170 | +| type | gauge | +| unit | instance | +| user_id | 21b442b8101d407d8242b6610e0ed0eb | +| volume | 1.0 | ++-------------------+---------------------------------------------+ +''') diff --git a/ceilometerclient/v2/shell.py b/ceilometerclient/v2/shell.py index 598d3042..592b447f 100644 --- a/ceilometerclient/v2/shell.py +++ b/ceilometerclient/v2/shell.py @@ -117,7 +117,14 @@ def do_sample_create(cc, args={}): fields[k] = json.loads(v) else: fields[arg_to_field_mapping.get(k, k)] = v - cc.samples.create(**fields) + sample = cc.samples.create(**fields) + fields = ['counter_name', 'user_id', 'resource_id', + 'timestamp', 'message_id', 'source', 'counter_unit', + 'counter_volume', 'project_id', 'resource_metadata', + 'counter_type'] + data = dict([(f.replace('counter_', ''), getattr(sample[0], f, '')) + for f in fields]) + utils.print_dict(data, wrap=72) @utils.arg('-q', '--query', metavar='',