diff options
author | Stuart Mackie <wsmackie@juniper.net> | 2016-01-29 16:00:57 -0800 |
---|---|---|
committer | Stuart Mackie <wsmackie@juniper.net> | 2016-01-29 16:00:57 -0800 |
commit | 82f1a7eb5535b30a95b1e71ff18c315d40d1e6f0 (patch) | |
tree | f930c90f75846ec8d8e33cf27325ff8fafc85d5c /Testcases/cfgm_common/analytics_client.py | |
parent | 5c04f2e22eb6b5e7a671bc02ba53a438eb66e90d (diff) |
OpenContrail test suitestable/colorado
Change-Id: I61168093a2a05d47377ef47c8638ae1554b1a999
Signed-off-by: Stuart Mackie <wsmackie@juniper.net>
Diffstat (limited to 'Testcases/cfgm_common/analytics_client.py')
-rw-r--r-- | Testcases/cfgm_common/analytics_client.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Testcases/cfgm_common/analytics_client.py b/Testcases/cfgm_common/analytics_client.py new file mode 100644 index 0000000..c5d14a0 --- /dev/null +++ b/Testcases/cfgm_common/analytics_client.py @@ -0,0 +1,63 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright (c) 2014 Cloudwatt +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# @author: Sylvain Afchain, eNovance. + +import requests +import six +from six.moves.urllib import parse as urlparse + + +class OpenContrailAPIFailed(Exception): + pass + + +class Client(object): + """Opencontrail Base Statistics REST API Client.""" + #TODO: use a pool of servers + + def __init__(self, endpoint, data={}): + self.endpoint = endpoint + self.data = data + + def request(self, path, fqdn_uuid, data=None): + req_data = dict(self.data) + if data: + req_data.update(data) + + req_params = self._get_req_params(data=req_data) + + url = urlparse.urljoin(self.endpoint, path + fqdn_uuid) + resp = requests.get(url, **req_params) + + if resp.status_code != 200: + raise OpenContrailAPIFailed( + ('Opencontrail API returned %(status)s %(reason)s') % + {'status': resp.status_code, 'reason': resp.reason}) + + return resp.json() + + def _get_req_params(self, data=None): + req_params = { + 'headers': { + 'Accept': 'application/json' + }, + 'data': data, + 'allow_redirects': False, + } + + return req_params |