blob: df7d916f2015f63fbdf71786b5f11e652b368d29 [file] [log] [blame]
Nikolay Pliashechnikovb053aab2013-11-05 06:06:44 -08001# Copyright 2014 OpenStack Foundation
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
Doug Hellmann583ce2c2015-03-11 14:55:46 +000016from oslo_serialization import jsonutils as json
Matthew Treinish89128142015-04-23 10:44:30 -040017from six.moves.urllib import parse as urllib
Doug Hellmann583ce2c2015-03-11 14:55:46 +000018
Ken'ichi Ohmichi9086eea2016-03-02 09:44:09 -080019from tempest.lib.common import rest_client
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000020
Nikolay Pliashechnikovb053aab2013-11-05 06:06:44 -080021
Ken'ichi Ohmichi9086eea2016-03-02 09:44:09 -080022class TelemetryClient(rest_client.RestClient):
Nikolay Pliashechnikovb053aab2013-11-05 06:06:44 -080023
Ken'ichi Ohmichid5dba1c2015-01-23 02:23:22 +000024 version = '2'
25 uri_prefix = "v2"
Nikolay Pliashechnikovb053aab2013-11-05 06:06:44 -080026
27 def deserialize(self, body):
28 return json.loads(body.replace("\n", ""))
29
30 def serialize(self, body):
31 return json.dumps(body)
32
Nikolay Pliashechnikovb053aab2013-11-05 06:06:44 -080033 def create_sample(self, meter_name, sample_list):
34 uri = "%s/meters/%s" % (self.uri_prefix, meter_name)
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000035 body = self.serialize(sample_list)
36 resp, body = self.post(uri, body)
David Kranz20d06f42015-02-09 14:54:15 -050037 self.expected_success(200, resp.status)
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000038 body = self.deserialize(body)
Ken'ichi Ohmichi9086eea2016-03-02 09:44:09 -080039 return rest_client.ResponseBody(resp, body)
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000040
Ken'ichi Ohmichi976a3292015-04-07 23:35:55 +000041 def _helper_list(self, uri, query=None, period=None):
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000042 uri_dict = {}
43 if query:
44 uri_dict = {'q.field': query[0],
45 'q.op': query[1],
46 'q.value': query[2]}
47 if period:
48 uri_dict['period'] = period
49 if uri_dict:
50 uri += "?%s" % urllib.urlencode(uri_dict)
51 resp, body = self.get(uri)
David Kranz20d06f42015-02-09 14:54:15 -050052 self.expected_success(200, resp.status)
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000053 body = self.deserialize(body)
Ken'ichi Ohmichi9086eea2016-03-02 09:44:09 -080054 return rest_client.ResponseBodyList(resp, body)
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000055
56 def list_resources(self, query=None):
57 uri = '%s/resources' % self.uri_prefix
Ken'ichi Ohmichi976a3292015-04-07 23:35:55 +000058 return self._helper_list(uri, query)
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000059
60 def list_meters(self, query=None):
61 uri = '%s/meters' % self.uri_prefix
Ken'ichi Ohmichi976a3292015-04-07 23:35:55 +000062 return self._helper_list(uri, query)
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000063
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000064 def list_statistics(self, meter, period=None, query=None):
65 uri = "%s/meters/%s/statistics" % (self.uri_prefix, meter)
Ken'ichi Ohmichi976a3292015-04-07 23:35:55 +000066 return self._helper_list(uri, query, period)
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000067
68 def list_samples(self, meter_id, query=None):
69 uri = '%s/meters/%s' % (self.uri_prefix, meter_id)
Ken'ichi Ohmichi976a3292015-04-07 23:35:55 +000070 return self._helper_list(uri, query)
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000071
gordon chungee23ddb2015-02-11 20:05:07 -050072 def list_events(self, query=None):
73 uri = '%s/events' % self.uri_prefix
74 return self._helper_list(uri, query)
75
Ken'ichi Ohmichie5cdc722015-04-07 23:44:26 +000076 def show_resource(self, resource_id):
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000077 uri = '%s/resources/%s' % (self.uri_prefix, resource_id)
78 resp, body = self.get(uri)
David Kranz20d06f42015-02-09 14:54:15 -050079 self.expected_success(200, resp.status)
Ken'ichi Ohmichi553b6672014-12-22 01:37:47 +000080 body = self.deserialize(body)
Ken'ichi Ohmichi9086eea2016-03-02 09:44:09 -080081 return rest_client.ResponseBody(resp, body)