def gen_responses(self, groups, payload): # converts groups of requests into a single list of responses headers = auth.headers() responses = reduce( lambda x, y: x + y, [self.get_metric_data(self.host, self.tenant, g, payload, headers) for g in groups] ) responses = responses or [] return responses
def logger(data): #print(json.dumps(data)) res = requests.post(url, data=json.dumps({'event': data}), headers=headers(), verify=False) if res.status_code != requests.codes.ok: print(res.json())
def gen_responses(self, groups, payload): #converts groups of requests into a single list of responses headers = auth.headers() responses = reduce(lambda x, y: x + y, [ self.get_metric_data(self.host, self.tenant, g, payload, headers) for g in groups ]) responses = responses or [] return responses
def find_metrics(self, query): print "BluefloodClient.find_metrics: " + str(query) payload = {'query': query} headers = auth.headers() endpoint = self.find_metrics_endpoint(self.bf_query_endpoint, self.tenant) r = self.make_request(endpoint, payload, headers) if r.status_code == 200: return [m['metric'] for m in r.json()] else: return []
def do_auth(self): payload = '{"auth":{"RAX-KSKEY:apiKeyCredentials"{"username":"******","apiKey":"%s"}}}' % ( self.username, self.apiKey) r = requests.post(IDENTITY_ENDPOINT + 'tokens', data=payload, headers=auth.headers()) jsonObj = r.json() self.token = jsonObj['access']['token']['id'] self.expiration_UTC = dateparse( jsonObj['access']['token']['expires']).replace( tzinfo=timezone('UTC'))
def do_auth(self): payload = '{"auth":{"RAX-KSKEY:apiKeyCredentials"{' \ '"username":"******","apiKey":"%s"}}}' % ( self.username, self.apiKey) r = requests.post(IDENTITY_ENDPOINT + 'tokens', data=payload, headers=auth.headers()) jsonObj = r.json() self.token = jsonObj['access']['token']['id'] self.expiration_UTC = dateparse( jsonObj['access']['token']['expires']).replace( tzinfo=timezone('UTC'))
def getEvents(self, start_time, end_time, tags): url = self.find_events_endpoint(self.bf_query_endpoint, self.tenant) payload = {"from": start_time * 1000, "until": end_time * 1000} if tags is not None: payload["tags"] = tags headers = auth.headers() r = self.make_request(url, payload, headers) r = r.json() for event in r: event["when"] = int(event["when"] / 1000) return r
def getEvents(self, start_time, end_time, tags): url = self.find_events_endpoint(self.bf_query_endpoint, self.tenant) payload = {'from': start_time * 1000, 'until': end_time * 1000} if tags is not None: payload['tags'] = tags headers = auth.headers() r = self.make_request(url, payload, headers) r = r.json() for event in r: event['when'] = int(event['when'] / 1000) return r
def find_metrics(self, query): payload = {'query': query} headers = auth.headers() r = self.make_request("%s/v2.0/%s/metrics/search" % (self.host, self.tenant), payload, headers) if r.status_code != 200: print str(r.status_code) + ' in find_metrics ' + r.url + ' ' + r.text return [] else: try: return r.json() except TypeError: # we need to parse the json ourselves. return json.loads(r.text) except ValueError: return ['there was an error']
def findMetrics(self, query): payload = {'query': query} headers = auth.headers() if auth.isActive(): headers['X-Auth-Token'] = auth.getToken() r = requests.get("%s/v2.0/%s/metrics/search" % (self.host, self.tenant), params=payload, headers=headers) if r.status_code is not 200: print str(r.status_code) + ' in findMetrics ' + r.text return [] else: try: return r.json() except TypeError: # we need to parse the json ourselves. return json.loads(r.text) except ValueError: return ['there was an error']
def find_metrics_with_enum_values(self, query): #BF search command that returns enum values as well as metric names logger.info("BluefloodClient.find_metrics: %s", str(query)) payload = {'query': query} headers = auth.headers() endpoint = self.find_metrics_endpoint(self.bf_query_endpoint, self.tenant) r = self.make_request(endpoint, payload, headers) ret_dict = {} if r.status_code == 200: for m in r.json(): if 'enum_values' in m: v = m['enum_values'] else: v = None ret_dict[m['metric']] = v return ret_dict else: return {}
def find_metrics_with_enum_values(self, query): # BF search command that returns enum values as well as metric names print "BluefloodClient.find_metrics: " + str(query) payload = {"query": query} headers = auth.headers() endpoint = self.find_metrics_endpoint(self.bf_query_endpoint, self.tenant) r = self.make_request(endpoint, payload, headers) ret_dict = {} if r.status_code == 200: for m in r.json(): if "enum_values" in m: v = m["enum_values"] else: v = None ret_dict[m["metric"]] = v return ret_dict else: return {}
def find_metrics(self, query): payload = {'query': query} headers = auth.headers() r = self.make_request( "%s/v2.0/%s/metrics/search" % (self.host, self.tenant), payload, headers) if r.status_code != 200: print str( r.status_code) + ' in find_metrics ' + r.url + ' ' + r.text return [] else: try: return r.json() except TypeError: # we need to parse the json ourselves. return json.loads(r.text) except ValueError: return ['there was an error']
def getValues(self, metric, start, stop): # make an educated guess about the likely number of data points returned. num_points = (stop - start) / 60 res = 'FULL' if num_points > 800: num_points = (stop - start) / SECONDS_IN_5MIN res = 'MIN5' if num_points > 800: num_points = (stop - start) / SECONDS_IN_20MIN res = 'MIN20' if num_points > 800: num_points = (stop - start) / SECONDS_IN_60MIN res = 'MIN60' if num_points > 800: num_points = (stop - start) / SECONDS_IN_240MIN res = 'MIN240' if num_points > 800: num_points = (stop - start) / SECONDS_IN_1440MIN res = 'MIN1440' payload = { 'from': start * 1000, 'to': stop * 1000, 'resolution': res } #print 'USING RES ' + res headers = auth.headers() if auth.isActive(): headers['X-Auth-Token'] = auth.getToken() r = requests.get("%s/v2.0/%s/views/%s" % (self.host, self.tenant, metric), params=payload, headers=headers) if r.status_code is not 200: print str(r.status_code) + ' in getValues ' + r.text return {'values': []} else: try: return r.json()['values'] except TypeError: # parse that json yo return json.loads(r.text)['values'] except ValueError: print 'ValueError in getValues' return {'values': []}
def find_metrics_with_enum_values(self, query): #BF search command that returns enum values as well as metric names print "BluefloodClient.find_metrics: " + str(query) payload = {'query': query} headers = auth.headers() endpoint = self.find_metrics_endpoint(self.bf_query_endpoint, self.tenant) r = self.make_request(endpoint, payload, headers) ret_dict = {} if r.status_code == 200: for m in r.json(): if 'enum_values' in m: v = m['enum_values'] else: v = None ret_dict[m['metric']] = v return ret_dict else: return {}
def get_values(self, metric, start, stop): # make an educated guess about the likely number of data points returned. num_points = (stop - start) / 60 res = 'FULL' if num_points > 800: num_points = (stop - start) / SECONDS_IN_5MIN res = 'MIN5' if num_points > 800: num_points = (stop - start) / SECONDS_IN_20MIN res = 'MIN20' if num_points > 800: num_points = (stop - start) / SECONDS_IN_60MIN res = 'MIN60' if num_points > 800: num_points = (stop - start) / SECONDS_IN_240MIN res = 'MIN240' if num_points > 800: num_points = (stop - start) / SECONDS_IN_1440MIN res = 'MIN1440' payload = {'from': start * 1000, 'to': stop * 1000, 'resolution': res} #print 'USING RES ' + res headers = auth.headers() r = self.make_request( "%s/v2.0/%s/views/%s" % (self.host, self.tenant, metric), payload, headers) if r.status_code != 200: print str(r.status_code) + ' in get_values ' + r.text return {'values': []} else: try: return r.json()['values'] except TypeError: # parse that json yo return json.loads(r.text)['values'] except ValueError: print 'ValueError in get_values' return {'values': []}
# coding: utf-8 import requests import json import auth url = "https://api-na.myconnectwise.net/v4_6_release/apis/3.0/finance/agreements/" response = requests.request(method="GET", url=url, headers=auth.headers()).json() dump = json.dumps(response) load = json.loads(dump) for i,v in enumerate(load): print "Start Date: ", load[i]['startDate'] print "End Date: ", load[i]['endDate'] print "SLA ID: ", load[i]['slaId'] print "Agreement ID: ", load[i]['id'] print load[i]['company']['id'] print load[i]['company']['identifier'] print "\n" print "-------------------------------------------"