summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-08-10 15:20:46 +0000
committerGerrit Code Review <review@openstack.org>2015-08-10 15:20:46 +0000
commit1fc68877ff8c6f31867a39dbb647688db6b069c3 (patch)
tree7d048afbde488cf5716a56f0b98eb2cf7d62920d
parent803c59fbc7682dbfbd8f32c191c3e5e45d9fb8ca (diff)
parentd16d853da6f6e43a26e2a80a613d9ca0208b727d (diff)
downloadpython-ceilometerclient-1fc68877ff8c6f31867a39dbb647688db6b069c3.tar.gz
Merge "Add ceilometerclient support for api-no-pipeline"1.4.0
-rw-r--r--ceilometerclient/tests/unit/v2/test_samples.py31
-rw-r--r--ceilometerclient/tests/unit/v2/test_shell.py3
-rw-r--r--ceilometerclient/v2/samples.py8
-rw-r--r--ceilometerclient/v2/shell.py6
4 files changed, 44 insertions, 4 deletions
diff --git a/ceilometerclient/tests/unit/v2/test_samples.py b/ceilometerclient/tests/unit/v2/test_samples.py
index 9c79cd5..3a4cbd0 100644
--- a/ceilometerclient/tests/unit/v2/test_samples.py
+++ b/ceilometerclient/tests/unit/v2/test_samples.py
@@ -54,7 +54,9 @@ GET_SAMPLE = {
}
METER_URL = '/v2/meters/instance'
+METER_URL_DIRECT = '/v2/meters/instance?direct=True'
SECOND_METER_URL = '/v2/meters/image'
+SECOND_METER_URL_DIRECT = '/v2/meters/image?direct=True'
SAMPLE_URL = '/v2/samples'
QUERIES = ('q.field=resource_id&q.field=source&q.op=&q.op='
'&q.type=&q.type=&q.value=foo&q.value=bar')
@@ -71,12 +73,24 @@ OLD_SAMPLE_FIXTURES = {
[CREATE_SAMPLE],
),
},
+ METER_URL_DIRECT: {
+ 'POST': (
+ {},
+ [CREATE_SAMPLE],
+ )
+ },
SECOND_METER_URL: {
'POST': (
{},
[CREATE_LIST_SAMPLE] * 10,
),
},
+ SECOND_METER_URL_DIRECT: {
+ 'POST': (
+ {},
+ [CREATE_LIST_SAMPLE] * 10,
+ )
+ },
'%s?%s' % (METER_URL, QUERIES): {
'GET': (
{},
@@ -156,6 +170,14 @@ class OldSampleManagerTest(utils.BaseTestCase):
self.http_client.assert_called(*expect, body=[CREATE_SAMPLE])
self.assertIsNotNone(sample)
+ def test_create_directly(self):
+ sample = self.mgr.create(direct=True, **CREATE_SAMPLE)
+ expect = [
+ 'POST', '/v2/meters/instance?direct=True'
+ ]
+ self.http_client.assert_called(*expect, body=[CREATE_SAMPLE])
+ self.assertIsNotNone(sample)
+
def test_create_list(self):
test_samples = [CREATE_LIST_SAMPLE] * 10
samples = self.mgr.create_list(test_samples)
@@ -165,6 +187,15 @@ class OldSampleManagerTest(utils.BaseTestCase):
self.http_client.assert_called(*expect, body=test_samples)
self.assertEqual(10, len(samples))
+ def test_create_list_directly(self):
+ test_samples = [CREATE_LIST_SAMPLE] * 10
+ samples = self.mgr.create_list(test_samples, direct=True)
+ expect = [
+ 'POST', '/v2/meters/image?direct=True'
+ ]
+ self.http_client.assert_called(*expect, body=test_samples)
+ self.assertEqual(10, len(samples))
+
def test_limit(self):
samples = list(self.mgr.list(meter_name='instance', limit=1))
expect = ['GET', '/v2/meters/instance?limit=1']
diff --git a/ceilometerclient/tests/unit/v2/test_shell.py b/ceilometerclient/tests/unit/v2/test_shell.py
index 358e3a4..22334dc 100644
--- a/ceilometerclient/tests/unit/v2/test_shell.py
+++ b/ceilometerclient/tests/unit/v2/test_shell.py
@@ -619,7 +619,8 @@ class ShellSampleCreateListCommandTest(utils.BaseTestCase):
sample) for sample in self.samples]
self.cc.samples.create_list.return_value = ret_samples
ceilometer_shell.do_sample_create_list(self.cc, self.args)
- self.cc.samples.create_list.assert_called_with(self.samples)
+ self.cc.samples.create_list.assert_called_with(self.samples,
+ direct=mock.ANY)
self.assertEqual('''\
+--------------------------------------+-------+------------+--------+-------\
+----------------------------+
diff --git a/ceilometerclient/v2/samples.py b/ceilometerclient/v2/samples.py
index 17aa10b..e68a761 100644
--- a/ceilometerclient/v2/samples.py
+++ b/ceilometerclient/v2/samples.py
@@ -49,15 +49,18 @@ class OldSampleManager(base.Manager):
return self._list(options.build_url(path, q, params))
def create(self, **kwargs):
+ direct = kwargs.pop('direct', False)
new = dict((key, value) for (key, value) in kwargs.items()
if key in CREATION_ATTRIBUTES)
- url = self._path(counter_name=kwargs['counter_name'])
+ url = self._path(counter_name=kwargs['counter_name'])+(
+ '?direct=%s' % (str(direct)) if direct else '')
body = self.api.post(url, json=[new]).json()
if body:
return [OldSample(self, b) for b in body]
def create_list(self, sample_list=None, **kwargs):
sample_dict = {}
+ direct = kwargs.pop('direct', False)
for sample_body in sample_list:
sample = dict((key, value) for (key, value) in sample_body.items()
@@ -69,7 +72,8 @@ class OldSampleManager(base.Manager):
sample_return_list = []
for (counter_name, sample_body) in sample_dict.items():
- url = self._path(counter_name=counter_name)
+ url = self._path(counter_name=counter_name)+(
+ '?direct=%s' % (str(direct)) if direct else '')
body = self.api.post(url, json=sample_body).json()
if body:
diff --git a/ceilometerclient/v2/shell.py b/ceilometerclient/v2/shell.py
index 18719b9..f5c6365 100644
--- a/ceilometerclient/v2/shell.py
+++ b/ceilometerclient/v2/shell.py
@@ -216,6 +216,8 @@ def _restore_shadowed_arg(shadowed, observed):
'key-value pairs e.g. {"key":"value"}.')
@utils.arg('--timestamp', metavar='<TIMESTAMP>',
help='The sample timestamp.')
+@utils.arg('--direct', metavar='<DIRECT>', default=False,
+ help='Post sample to storage directly.')
@_restore_shadowed_arg('project_id', 'sample_project_id')
@_restore_shadowed_arg('user_id', 'sample_user_id')
def do_sample_create(cc, args={}):
@@ -265,10 +267,12 @@ def do_meter_list(cc, args={}):
@utils.arg('samples_list', metavar='<SAMPLES_LIST>', action=NotEmptyAction,
help='Json array with samples to create.')
+@utils.arg('--direct', metavar='<DIRECT>', default=False,
+ help='Post samples to storage directly.')
def do_sample_create_list(cc, args={}):
"""Create a sample list."""
sample_list_array = json.loads(args.samples_list)
- samples = cc.samples.create_list(sample_list_array)
+ samples = cc.samples.create_list(sample_list_array, direct=args.direct)
field_labels = ['Resource ID', 'Name', 'Type', 'Volume', 'Unit',
'Timestamp']
fields = ['resource_id', 'counter_name', 'counter_type',