From 2808518988f2e60aa41cbb8d1b8f536c386f62da Mon Sep 17 00:00:00 2001 From: Federico Barcelona Date: Tue, 27 Oct 2020 13:48:25 +0100 Subject: [PATCH] feat: Add retry strategy with backoff of 0.5s --- sdcclient/_common.py | 104 ++++++++++++++++--------- sdcclient/_monitor.py | 22 +++--- sdcclient/_monitor_v1.py | 12 ++- sdcclient/_scanning.py | 85 ++++++++++---------- sdcclient/_secure.py | 91 +++++++++++----------- sdcclient/_secure_v1.py | 19 +++-- sdcclient/ibm_auth_helper.py | 4 +- sdcclient/monitor/_dashboards_v2.py | 26 +++---- sdcclient/monitor/_dashboards_v3.py | 24 +++--- sdcclient/monitor/_events_v1.py | 8 +- sdcclient/monitor/_events_v2.py | 8 +- sdcclient/secure/_policy_events_old.py | 4 +- sdcclient/secure/_policy_events_v1.py | 4 +- 13 files changed, 209 insertions(+), 202 deletions(-) diff --git a/sdcclient/_common.py b/sdcclient/_common.py index d0025b6c..72f50066 100644 --- a/sdcclient/_common.py +++ b/sdcclient/_common.py @@ -2,6 +2,29 @@ import os import requests +from requests.adapters import HTTPAdapter +from requests.packages.urllib3.util.retry import Retry + + +class SysdigHTTPAdapter(HTTPAdapter): + def __init__(self, *args, **kwargs): + retry_strategy = Retry( + total=3, + status_forcelist=[403, 404, 429, 500, 502, 503, 504], + method_whitelist=["HEAD", "GET", "OPTIONS", "PUSH", "PUT"], + backoff_factor=0.5 + ) + kwargs["max_retries"] = retry_strategy + + self.ssl_verify = kwargs.get("ssl_verify", True) + del kwargs["ssl_verify"] + + super().__init__(*args, **kwargs) + + def send(self, request, **kwargs): + kwargs["verify"] = kwargs.get("verify", self.ssl_verify) + + return super().send(request, **kwargs) class _SdcCommon(object): @@ -29,6 +52,11 @@ def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=T if self.ssl_verify.lower() in ['true', 'false']: self.ssl_verify = self.ssl_verify.lower() == 'true' + adapter = SysdigHTTPAdapter(ssl_verify=self.ssl_verify) + self.http = requests.Session() + self.http.mount("https://", adapter) + self.http.mount("http://", adapter) + def __get_headers(self, custom_headers): headers = { 'Content-Type': 'application/json', @@ -79,7 +107,7 @@ def get_user_info(self): **Example** `examples/print_user_info.py `_ ''' - res = requests.get(self.url + '/api/user/me', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/user/me', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_user_token(self): @@ -89,7 +117,7 @@ def get_user_token(self): **Success Return Value** A string containing the user token. ''' - res = requests.get(self.url + '/api/token', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/token', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] tkinfo = res.json() @@ -103,7 +131,7 @@ def get_connected_agents(self): **Success Return Value** A list of the agents with all their attributes. ''' - res = requests.get(self.url + '/api/agents/connected', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/agents/connected', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] data = res.json() @@ -116,7 +144,7 @@ def get_n_connected_agents(self): **Success Return Value** An integer number. ''' - res = requests.get(self.url + '/api/agents/connected', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/agents/connected', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] data = res.json() @@ -132,7 +160,7 @@ def list_notification_channels(self): **Success Return Value** A JSON representation of all the notification channels ''' - res = requests.get(self.url + '/api/notificationChannels', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/notificationChannels', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_notification_ids(self, channels=None): @@ -150,7 +178,7 @@ def get_notification_ids(self, channels=None): - `examples/restore_alerts.py `_ ''' - res = requests.get(self.url + '/api/notificationChannels', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/notificationChannels', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr @@ -227,7 +255,7 @@ def create_email_notification_channel(self, channel_name, email_recipients): } } - res = requests.post(self.url + '/api/notificationChannels', headers=self.hdrs, data=json.dumps(channel_json), + res = self.http.post(self.url + '/api/notificationChannels', headers=self.hdrs, data=json.dumps(channel_json), verify=self.ssl_verify) return self._request_result(res) @@ -240,13 +268,13 @@ def create_notification_channel(self, channel): 'notificationChannel': channel } - res = requests.post(self.url + '/api/notificationChannels', headers=self.hdrs, data=json.dumps(channel_json), + res = self.http.post(self.url + '/api/notificationChannels', headers=self.hdrs, data=json.dumps(channel_json), verify=self.ssl_verify) return self._request_result(res) def get_notification_channel(self, id): - res = requests.get(self.url + '/api/notificationChannels/' + str(id), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/notificationChannels/' + str(id), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr @@ -256,7 +284,7 @@ def update_notification_channel(self, channel): if 'id' not in channel: return [False, "Invalid channel format"] - res = requests.put(self.url + '/api/notificationChannels/' + str(channel['id']), headers=self.hdrs, + res = self.http.put(self.url + '/api/notificationChannels/' + str(channel['id']), headers=self.hdrs, data=json.dumps({"notificationChannel": channel}), verify=self.ssl_verify) return self._request_result(res) @@ -264,7 +292,7 @@ def delete_notification_channel(self, channel): if 'id' not in channel: return [False, "Invalid channel format"] - res = requests.delete(self.url + '/api/notificationChannels/' + str(channel['id']), headers=self.hdrs, + res = self.http.delete(self.url + '/api/notificationChannels/' + str(channel['id']), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr @@ -280,7 +308,7 @@ def get_data_retention_info(self): **Example** `examples/print_data_retention_info.py `_ ''' - res = requests.get(self.url + '/api/history/timelines/', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/history/timelines/', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_topology_map(self, grouping_hierarchy, time_window_s, sampling_time_s): @@ -358,7 +386,7 @@ def get_topology_map(self, grouping_hierarchy, time_window_s, sampling_time_s): # # Fire the request # - res = requests.post(self.url + '/api/data?format=map', headers=self.hdrs, + res = self.http.post(self.url + '/api/data?format=map', headers=self.hdrs, data=json.dumps(req_json), verify=self.ssl_verify) return self._request_result(res) @@ -407,7 +435,7 @@ def get_data(self, metrics, start_ts, end_ts=0, sampling_s=0, if sampling_s != 0: reqbody['sampling'] = sampling_s - res = requests.post(self.url + '/api/data/', headers=self.hdrs, data=json.dumps(reqbody), + res = self.http.post(self.url + '/api/data/', headers=self.hdrs, data=json.dumps(reqbody), verify=self.ssl_verify) return self._request_result(res) @@ -432,7 +460,7 @@ def get_sysdig_captures(self, from_sec=None, to_sec=None, scope_filter=None): frm="&from=%d" % (from_sec * 10 ** 6) if from_sec else "", to="&to=%d" % (to_sec * 10 ** 6) if to_sec else "", scopeFilter="&scopeFilter=%s" % scope_filter if scope_filter else "") - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def poll_sysdig_capture(self, capture): @@ -453,7 +481,7 @@ def poll_sysdig_capture(self, capture): url = '{url}/api/sysdig/{id}?source={source}'.format( url=self.url, id=capture['id'], source=self.product) - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def create_sysdig_capture(self, hostname, capture_name, duration, capture_filter='', folder='/'): @@ -497,7 +525,7 @@ def create_sysdig_capture(self, hostname, capture_name, duration, capture_filter 'source': self.product } - res = requests.post(self.url + '/api/sysdig', headers=self.hdrs, data=json.dumps(data), verify=self.ssl_verify) + res = self.http.post(self.url + '/api/sysdig', headers=self.hdrs, data=json.dumps(data), verify=self.ssl_verify) return self._request_result(res) def download_sysdig_capture(self, capture_id): @@ -512,7 +540,7 @@ def download_sysdig_capture(self, capture_id): ''' url = '{url}/api/sysdig/{id}/download?_product={product}'.format( url=self.url, id=capture_id, product=self.product) - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr @@ -537,7 +565,7 @@ def create_user_invite(self, user_email, first_name=None, last_name=None, system ''' # Look up the list of users to see if this exists, do not create if one exists - res = requests.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] data = res.json() @@ -552,7 +580,7 @@ def create_user_invite(self, user_email, first_name=None, last_name=None, system 'systemRole': system_role} user_json = {k: v for k, v in options.items() if v is not None} - res = requests.post(self.url + '/api/users', headers=self.hdrs, data=json.dumps(user_json), + res = self.http.post(self.url + '/api/users', headers=self.hdrs, data=json.dumps(user_json), verify=self.ssl_verify) return self._request_result(res) @@ -570,13 +598,13 @@ def delete_user(self, user_email): if res[0] == False: return res userid = res[1][0] - res = requests.delete(self.url + '/api/users/' + str(userid), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + '/api/users/' + str(userid), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, None] def get_user(self, user_email): - res = requests.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] for u in res.json()['users']: @@ -591,7 +619,7 @@ def get_users(self): **Success Return Value** A list user objects ''' - res = requests.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, res.json()['users']] @@ -618,7 +646,7 @@ def edit_user(self, user_email, firstName=None, lastName=None, systemRole=None): else: reqbody['lastName'] = lastName - res = requests.put(self.url + '/api/users/' + str(user['id']), headers=self.hdrs, data=json.dumps(reqbody), + res = self.http.put(self.url + '/api/users/' + str(user['id']), headers=self.hdrs, data=json.dumps(reqbody), verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -634,7 +662,7 @@ def get_teams(self, team_filter=''): **Success Return Value** The teams that match the filter. ''' - res = requests.get(self.url + '/api/teams', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/teams', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] ret = [t for t in res.json()['teams'] if team_filter in t['name']] @@ -662,21 +690,21 @@ def get_team(self, name): return [False, 'Could not find team'] def get_team_ids(self, teams): - res = requests.get(self.url + '/api/teams', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/teams', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] u = [x for x in res.json()['teams'] if x['name'] in teams] return [True, [x['id'] for x in u]] def _get_user_id_dict(self, users): - res = requests.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] u = [x for x in res.json()['users'] if x['username'] in users] return [True, dict((user['username'], user['id']) for user in u)] def _get_id_user_dict(self, user_ids): - res = requests.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/users', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] u = [x for x in res.json()['users'] if x['id'] in user_ids] @@ -740,7 +768,7 @@ def create_team(self, name, memberships=None, filter='', description='', show='h if filter != '': reqbody['filter'] = filter - res = requests.post(self.url + '/api/teams', headers=self.hdrs, data=json.dumps(reqbody), + res = self.http.post(self.url + '/api/teams', headers=self.hdrs, data=json.dumps(reqbody), verify=self.ssl_verify) return self._request_result(res) @@ -812,7 +840,7 @@ def edit_team(self, name, memberships=None, filter=None, description=None, show= elif 'filter' in list(t.keys()): reqbody['filter'] = t['filter'] - res = requests.put(self.url + '/api/teams/' + str(t['id']), headers=self.hdrs, data=json.dumps(reqbody), + res = self.http.put(self.url + '/api/teams/' + str(t['id']), headers=self.hdrs, data=json.dumps(reqbody), verify=self.ssl_verify) return self._request_result(res) @@ -831,7 +859,7 @@ def delete_team(self, name): return res t = res[1] - res = requests.delete(self.url + '/api/teams/' + str(t['id']), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + '/api/teams/' + str(t['id']), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, None] @@ -932,7 +960,7 @@ def list_access_keys(self): **Example** `examples/list_access_keys.py `_ ''' - res = requests.get(self.url + '/api/customer/accessKeys', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/customer/accessKeys', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def create_access_key(self): @@ -943,7 +971,7 @@ def create_access_key(self): **Reslut** The access keys object ''' - res = requests.post(self.url + '/api/customer/accessKeys', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.post(self.url + '/api/customer/accessKeys', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def disable_access_key(self, access_key): @@ -957,7 +985,7 @@ def disable_access_key(self, access_key): **Reslut** The access keys object ''' - res = requests.post(self.url + '/api/customer/accessKeys/' + access_key + "/disable/", headers=self.hdrs, + res = self.http.post(self.url + '/api/customer/accessKeys/' + access_key + "/disable/", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -972,19 +1000,19 @@ def enable_access_key(self, access_key): **Reslut** The access keys object ''' - res = requests.post(self.url + '/api/customer/accessKeys/' + access_key + "/enable/", headers=self.hdrs, + res = self.http.post(self.url + '/api/customer/accessKeys/' + access_key + "/enable/", headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_agents_config(self): - res = requests.get(self.url + '/api/agents/config', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/agents/config', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] data = res.json() return [True, data] def set_agents_config(self, config): - res = requests.put(self.url + '/api/agents/config', headers=self.hdrs, data=json.dumps(config), + res = self.http.put(self.url + '/api/agents/config', headers=self.hdrs, data=json.dumps(config), verify=self.ssl_verify) return self._request_result(res) @@ -999,7 +1027,7 @@ def get_user_api_token(self, username, teamname): t = res[1] - res = requests.get(self.url + '/api/token/%s/%d' % (username, t['id']), headers=self.hdrs, + res = self.http.get(self.url + '/api/token/%s/%d' % (username, t['id']), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] diff --git a/sdcclient/_monitor.py b/sdcclient/_monitor.py index bd420e93..d9ddf669 100644 --- a/sdcclient/_monitor.py +++ b/sdcclient/_monitor.py @@ -1,8 +1,6 @@ import json import re -import requests - from sdcclient._common import _SdcCommon from sdcclient.monitor import EventsClientV2, DashboardsClientV3 @@ -24,7 +22,7 @@ def get_alerts(self): **Example** `examples/list_alerts.py `_ ''' - res = requests.get(self.url + '/api/alerts', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/alerts', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_notifications(self, from_ts, to_ts, state=None, resolved=None): @@ -57,7 +55,7 @@ def get_notifications(self, from_ts, to_ts, state=None, resolved=None): if resolved is not None: params['resolved'] = resolved - res = requests.get(self.url + '/api/notifications', headers=self.hdrs, params=params, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/notifications', headers=self.hdrs, params=params, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, res.json()] @@ -82,7 +80,7 @@ def update_notification_resolution(self, notification, resolved): notification['resolved'] = resolved data = {'notification': notification} - res = requests.put(self.url + '/api/notifications/' + str(notification['id']), headers=self.hdrs, data=json.dumps(data), verify=self.ssl_verify) + res = self.http.put(self.url + '/api/notifications/' + str(notification['id']), headers=self.hdrs, data=json.dumps(data), verify=self.ssl_verify) return self._request_result(res) def create_alert(self, name=None, description=None, severity=None, for_atleast_s=None, condition=None, @@ -121,7 +119,7 @@ def create_alert(self, name=None, description=None, severity=None, for_atleast_s # # Get the list of alerts from the server # - res = requests.get(self.url + '/api/alerts', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/alerts', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] res.json() @@ -167,7 +165,7 @@ def create_alert(self, name=None, description=None, severity=None, for_atleast_s # # Create the new alert # - res = requests.post(self.url + '/api/alerts', headers=self.hdrs, data=json.dumps(alert_json), verify=self.ssl_verify) + res = self.http.post(self.url + '/api/alerts', headers=self.hdrs, data=json.dumps(alert_json), verify=self.ssl_verify) return self._request_result(res) def update_alert(self, alert): @@ -186,7 +184,7 @@ def update_alert(self, alert): if 'id' not in alert: return [False, "Invalid alert format"] - res = requests.put(self.url + '/api/alerts/' + str(alert['id']), headers=self.hdrs, data=json.dumps({"alert": alert}), verify=self.ssl_verify) + res = self.http.put(self.url + '/api/alerts/' + str(alert['id']), headers=self.hdrs, data=json.dumps({"alert": alert}), verify=self.ssl_verify) return self._request_result(res) def delete_alert(self, alert): @@ -205,7 +203,7 @@ def delete_alert(self, alert): if 'id' not in alert: return [False, 'Invalid alert format'] - res = requests.delete(self.url + '/api/alerts/' + str(alert['id']), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + '/api/alerts/' + str(alert['id']), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -221,7 +219,7 @@ def get_explore_grouping_hierarchy(self): **Example** `examples/print_explore_grouping.py `_ ''' - res = requests.get(self.url + '/api/groupConfigurations', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/groupConfigurations', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -259,7 +257,7 @@ def set_explore_grouping_hierarchy(self, new_hierarchy): for item in new_hierarchy: body['groups'][0]['groupBy'].append({'metric': item}) - res = requests.put(self.url + '/api/groupConfigurations/explore', headers=self.hdrs, + res = self.http.put(self.url + '/api/groupConfigurations/explore', headers=self.hdrs, data=json.dumps(body), verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -277,7 +275,7 @@ def get_metrics(self): **Example** `examples/list_metrics.py `_ ''' - res = requests.get(self.url + '/api/data/metrics', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/data/metrics', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @staticmethod diff --git a/sdcclient/_monitor_v1.py b/sdcclient/_monitor_v1.py index ebf5ec24..9d78a549 100644 --- a/sdcclient/_monitor_v1.py +++ b/sdcclient/_monitor_v1.py @@ -1,7 +1,5 @@ -import json import copy -import requests -import re +import json from sdcclient._monitor import SdMonitorClient @@ -75,7 +73,7 @@ def create_dashboard_from_template(self, dashboard_name, template, scope, shared # # Create the new dashboard # - res = requests.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, data=json.dumps({'dashboard': template}), verify=self.ssl_verify) + res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, data=json.dumps({'dashboard': template}), verify=self.ssl_verify) return self._request_result(res) def create_dashboard(self, name): @@ -101,7 +99,7 @@ def create_dashboard(self, name): # # Create the new dashboard # - res = requests.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, data=json.dumps({'dashboard': dashboard_configuration}), + res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, data=json.dumps({'dashboard': dashboard_configuration}), verify=self.ssl_verify) return self._request_result(res) @@ -242,7 +240,7 @@ def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, # # Update dashboard # - res = requests.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, data=json.dumps({'dashboard': dashboard_configuration}), + res = self.http.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, data=json.dumps({'dashboard': dashboard_configuration}), verify=self.ssl_verify) return self._request_result(res) @@ -283,7 +281,7 @@ def filter_fn(panel): # # Update dashboard # - res = requests.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, data=json.dumps({'dashboard': dashboard_configuration}), + res = self.http.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, data=json.dumps({'dashboard': dashboard_configuration}), verify=self.ssl_verify) return self._request_result(res) else: diff --git a/sdcclient/_scanning.py b/sdcclient/_scanning.py index 6cc7ce02..89396305 100644 --- a/sdcclient/_scanning.py +++ b/sdcclient/_scanning.py @@ -4,7 +4,6 @@ import time from warnings import warn -import requests from requests_toolbelt.multipart.encoder import MultipartEncoder try: @@ -50,7 +49,7 @@ def add_image(self, image, force=False, dockerfile=None, annotations={}, autosub autosubscribe=str(autosubscribe), force="&force=true" if force else "") - res = requests.post(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.post(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -81,7 +80,7 @@ def get_image(self, image, show_history=False): 'imageDigest': '/{}'.format(image) }.get(itype, '') - res = requests.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -98,7 +97,7 @@ def list_images(self): A JSON object containing all the images. ''' url = self.url + "/api/scanning/v1/anchore/images" - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -122,7 +121,7 @@ def list_whitelisted_cves(self): "list_vulnerability_exception_bundles and get_vulnerability_exception_bundle methods", DeprecationWarning, 3) url = self.url + "/api/scanning/v1/whitelists/global?bundle=default" - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -195,7 +194,7 @@ def query_images_by_vulnerability(self, vulnerability_id, namespace=None, packag severity="&severity={}".format(severity) if severity else "", vendor_only=vendor_only) - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -219,7 +218,7 @@ def query_images_by_package(self, name, version=None, package_type=None): version="&version={}".format(version) if version else "", package_type="&package_type={}".format(package_type) if package_type else "") - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -240,7 +239,7 @@ def _query_image(self, image, query_group="", query_type="", vendor_only=True): query_type=query_type if query_type else '', vendor_only="?vendor_only={}".format(vendor_only) if query_group == 'vuln' else '') - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -258,7 +257,7 @@ def delete_image(self, image, force=False): return [False, "cannot use input image string: no discovered imageDigest"] url = self.url + "/api/scanning/v1/anchore/images/" + image_digest - res = requests.delete(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -295,7 +294,7 @@ def check_image_evaluation(self, image, show_history=False, detail=False, tag=No tag=thetag, policy_id=("&policyId=%s" % policy) if policy else "") - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -327,7 +326,7 @@ def get_pdf_report(self, image, tag=None, date=None): tag=image_tag, at=("&at=%s" % date) if date else "") - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -349,7 +348,7 @@ def get_latest_pdf_report_by_digest(self, image_digest, full_tag=None): image_digest=image_digest, tag=full_tag) - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -378,7 +377,7 @@ def import_image(self, infile, image_id, digest_id, image_name, sync=False): headers = {'Authorization': 'Bearer ' + self.token, 'Content-Type': m.content_type, 'imageId': image_id, 'digestId': digest_id, 'imageName': image_name} - res = requests.post(url, data=m, headers=headers, verify=self.ssl_verify) + res = self.http.post(url, data=m, headers=headers, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -398,7 +397,7 @@ def get_anchore_users_account(self): A JSON object containing user account information. ''' url = self.url + "/api/scanning/v1/account" - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -421,7 +420,7 @@ def get_image_scan_result_by_id(self, image_id, full_tag_name, detail): image_id=image_id, full_tag_name=full_tag_name, detail=detail) - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -463,7 +462,7 @@ def add_registry(self, registry, registry_user, registry_pass, insecure=False, r base_url=self.url, validate=validate) - res = requests.post(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.post(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -500,7 +499,7 @@ def update_registry(self, registry, registry_user, registry_pass, insecure=False registry=registry, validate=validate) - res = requests.put(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.put(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -519,7 +518,7 @@ def delete_registry(self, registry): "input registry name cannot contain '/' characters - valid registry names are of the form : where : is optional"] url = self.url + "/api/scanning/v1/anchore/registries/" + registry - res = requests.delete(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -536,7 +535,7 @@ def list_registry(self): A JSON object representing the list of registries. ''' url = self.url + "/api/scanning/v1/anchore/registries" - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -557,7 +556,7 @@ def get_registry(self, registry): "input registry name cannot contain '/' characters - valid registry names are of the form : where : is optional"] url = self.url + "/api/scanning/v1/anchore/registries/" + registry - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -589,7 +588,7 @@ def add_repo(self, repo, autosubscribe=True, lookuptag=None): autosubscribe=autosubscribe, lookuptag="&lookuptag={}".format(lookuptag) if lookuptag else "") - res = requests.post(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.post(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -670,7 +669,7 @@ def add_policy(self, name, rules, comment="", bundleid=None): url = self.url + '/api/scanning/v1/policies' data = json.dumps(policy) - res = requests.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) + res = self.http.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -680,7 +679,7 @@ def list_policy_bundles(self, detail=False): url = "{base_url}/api/scanning/v1/anchore/policies?detail={detail}".format( base_url=self.url, detail=str(detail)) - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -700,7 +699,7 @@ def list_policies(self, bundleid=None): if bundleid: url += '?bundleId=' + bundleid - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -740,7 +739,7 @@ def update_policy(self, policyid, policy_description): ''' url = self.url + '/api/scanning/v1/policies/' + policyid data = json.dumps(policy_description) - res = requests.put(url, headers=self.hdrs, data=data, verify=self.ssl_verify) + res = self.http.put(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -758,7 +757,7 @@ def delete_policy(self, policyid, bundleid=None): if bundleid: url += '?bundleId=' + bundleid - res = requests.delete(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -792,7 +791,7 @@ def add_alert(self, name, description=None, scope="", triggers={'failed': True, url = self.url + '/api/scanning/v1/alerts' data = json.dumps(alert) - res = requests.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) + res = self.http.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -815,7 +814,7 @@ def list_alerts(self, limit=None, cursor=None): if cursor: url += '&cursor=' + cursor - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -832,7 +831,7 @@ def get_alert(self, alertid): A JSON object containing the alert description. ''' url = self.url + '/api/scanning/v1/alerts/' + alertid - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -851,7 +850,7 @@ def update_alert(self, alertid, alert_description): ''' url = self.url + '/api/scanning/v1/alerts/' + alertid data = json.dumps(alert_description) - res = requests.put(url, headers=self.hdrs, data=data, verify=self.ssl_verify) + res = self.http.put(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -865,7 +864,7 @@ def delete_alert(self, policyid): - alertid: Unique identifier associated with this alert. ''' url = self.url + '/api/scanning/v1/alerts/' + policyid - res = requests.delete(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -890,7 +889,7 @@ def get_subscriptions(self, subscription_type=None, subscription_key=None): url += "subscription_key={}&".format(subscription_key) if subscription_type: url += "subscription_type={}".format(subscription_type) - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -941,7 +940,7 @@ def delete_subscription(self, subscription_type, subscription_key): except Exception as err: return [False, err] - res = requests.delete(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -954,7 +953,7 @@ def _update_subscription(self, subscription_type, subscription_key, activate): return [False, err] payload = {'active': activate, 'subscription_key': subscription_key, 'subscription_type': subscription_type} - res = requests.put(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.put(url, data=json.dumps(payload), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -1010,7 +1009,7 @@ def list_runtime(self, scope="", skip_policy_evaluation=True, start_time=None, e url = self.url + '/api/scanning/v1/query/containers' data = json.dumps(containers) - res = requests.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) + res = self.http.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -1066,7 +1065,7 @@ def get_vulnerability_details(self, id): "id": id, } - res = requests.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -1088,7 +1087,7 @@ def add_vulnerability_exception_bundle(self, name, comment=""): } data = json.dumps(params) - res = requests.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) + res = self.http.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -1098,7 +1097,7 @@ def delete_vulnerability_exception_bundle(self, id): url = self.url + f"/api/scanning/v1/vulnexceptions/{id}" - res = requests.delete(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -1111,7 +1110,7 @@ def list_vulnerability_exception_bundles(self): "bundleId": "default", } - res = requests.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -1124,7 +1123,7 @@ def get_vulnerability_exception_bundle(self, bundle): "bundleId": "default", } - res = requests.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, params=params, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -1145,7 +1144,7 @@ def add_vulnerability_exception(self, bundle, cve, note=None, expiration_date=No } data = json.dumps(params) - res = requests.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) + res = self.http.post(url, headers=self.hdrs, data=data, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -1160,7 +1159,7 @@ def delete_vulnerability_exception(self, bundle, id): "bundleId": "default", } - res = requests.delete(url, params=params, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(url, params=params, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -1181,7 +1180,7 @@ def update_vulnerability_exception(self, bundle, id, cve, enabled, note, expirat "bundleId": "default", } - res = requests.put(url, data=json.dumps(data), params=params, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.put(url, data=json.dumps(data), params=params, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] diff --git a/sdcclient/_secure.py b/sdcclient/_secure.py index 96f7727f..75785281 100644 --- a/sdcclient/_secure.py +++ b/sdcclient/_secure.py @@ -3,7 +3,6 @@ import shutil import time -import requests import yaml from sdcclient._common import _SdcCommon @@ -24,12 +23,12 @@ def policy_v2(self): True if policy V2 API is available ''' if self._policy_v2 is None: - res = requests.get(self.url + '/api/v2/policies/default', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/v2/policies/default', headers=self.hdrs, verify=self.ssl_verify) self._policy_v2 = res.status_code != 404 return self._policy_v2 def _get_falco_rules(self, kind): - res = requests.get(self.url + '/api/settings/falco/{}RulesFile'.format(kind), headers=self.hdrs, + res = self.http.get(self.url + '/api/settings/falco/{}RulesFile'.format(kind), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -69,7 +68,7 @@ def get_user_falco_rules(self): return res if not ok else [True, res["customFalcoRulesFiles"]["files"][0]["variants"][0]["content"]] def _get_user_falco_rules(self): - res = requests.get(self.url + '/api/settings/falco/customRulesFiles', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/settings/falco/customRulesFiles', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -84,7 +83,7 @@ def _set_falco_rules(self, kind, rules_content): payload[1]["{}RulesFile".format(kind)]["content"] = rules_content # pylint: disable=unsubscriptable-object - res = requests.put(self.url + '/api/settings/falco/{}RulesFile'.format(kind), headers=self.hdrs, + res = self.http.put(self.url + '/api/settings/falco/{}RulesFile'.format(kind), headers=self.hdrs, data=json.dumps(payload[1]), verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -127,7 +126,7 @@ def set_user_falco_rules(self, rules_content): res["customFalcoRulesFiles"]["files"][0]["variants"][0]["content"] = rules_content - res = requests.put(self.url + '/api/settings/falco/customRulesFiles', headers=self.hdrs, + res = self.http.put(self.url + '/api/settings/falco/customRulesFiles', headers=self.hdrs, data=json.dumps(res), verify=self.ssl_verify) if not self._checkResponse(res): @@ -139,7 +138,7 @@ def set_user_falco_rules(self, rules_content): # Only one kind for now called "default", but might add a "custom" kind later. def _get_falco_rules_files(self, kind): - res = requests.get(self.url + '/api/settings/falco/{}RulesFiles'.format(kind), headers=self.hdrs, + res = self.http.get(self.url + '/api/settings/falco/{}RulesFiles'.format(kind), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -302,7 +301,7 @@ def _set_falco_rules_files(self, kind, rules_files): if "defaultPolicies" in rules_files: obj["defaultPolicies"] = rules_files["defaultPolicies"] - res = requests.put(self.url + '/api/settings/falco/{}RulesFiles'.format(kind), headers=self.hdrs, + res = self.http.put(self.url + '/api/settings/falco/{}RulesFiles'.format(kind), headers=self.hdrs, data=json.dumps(payload[1]), verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -416,7 +415,7 @@ def create_default_policies(self): `examples/create_default_policies.py `_ ''' - res = requests.post(self.url + '/api/v2/policies/default', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.post(self.url + '/api/v2/policies/default', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def delete_all_policies(self): @@ -458,7 +457,7 @@ def list_policies(self): `examples/list_policies.py `_ ''' - res = requests.get(self.url + '/api/v2/policies', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/v2/policies', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_policy(self, name): @@ -499,7 +498,7 @@ def get_policy_id(self, id): A JSON object containing the description of the policy. If there is no policy with the given name, returns False. ''' - res = requests.get(self.url + '/api/v2/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/v2/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def add_policy(self, name, description, rule_names=[], actions=[], scope=None, severity=0, enabled=True, @@ -530,7 +529,7 @@ def add_policy(self, name, description, rule_names=[], actions=[], scope=None, s "enabled": enabled, "notificationChannelIds": notification_channels } - res = requests.post(self.url + '/api/v2/policies', headers=self.hdrs, data=json.dumps(policy), + res = self.http.post(self.url + '/api/v2/policies', headers=self.hdrs, data=json.dumps(policy), verify=self.ssl_verify) return self._request_result(res) @@ -556,7 +555,7 @@ def add_policy_json(self, policy_json): except Exception as e: return [False, "policy json is not valid json: {}".format(str(e))] - res = requests.post(self.url + '/api/v2/policies', headers=self.hdrs, data=json.dumps(policy_obj), + res = self.http.post(self.url + '/api/v2/policies', headers=self.hdrs, data=json.dumps(policy_obj), verify=self.ssl_verify) return self._request_result(res) @@ -601,7 +600,7 @@ def update_policy(self, id, name=None, description=None, rule_names=None, action if notification_channels is not None: policy["notificationChannelIds"] = notification_channels - res = requests.put(self.url + '/api/v2/policies/{}'.format(id), headers=self.hdrs, data=json.dumps(policy), + res = self.http.put(self.url + '/api/v2/policies/{}'.format(id), headers=self.hdrs, data=json.dumps(policy), verify=self.ssl_verify) return self._request_result(res) @@ -630,7 +629,7 @@ def update_policy_json(self, policy_json): if "id" not in policy_obj: return [False, "Policy Json does not have an 'id' field"] - res = requests.put(self.url + '/api/v2/policies/{}'.format(policy_obj["id"]), headers=self.hdrs, + res = self.http.put(self.url + '/api/v2/policies/{}'.format(policy_obj["id"]), headers=self.hdrs, data=json.dumps(policy_obj), verify=self.ssl_verify) return self._request_result(res) @@ -673,7 +672,7 @@ def delete_policy_id(self, id): `examples/delete_policy.py `_ ''' - res = requests.delete(self.url + '/api/v2/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + '/api/v2/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def list_rules(self): @@ -688,7 +687,7 @@ def list_rules(self): **Success Return Value** A JSON object representing the list of rules. ''' - res = requests.get(self.url + '/api/secure/rules/summaries', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/secure/rules/summaries', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_rules_group(self, name): @@ -703,7 +702,7 @@ def get_rules_group(self, name): **Success Return Value** A JSON object representing the list of rules. ''' - res = requests.get(self.url + '/api/secure/rules/groups?name={}'.format(name), headers=self.hdrs, + res = self.http.get(self.url + '/api/secure/rules/groups?name={}'.format(name), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -717,7 +716,7 @@ def get_rule_id(self, id): **Success Return Value** A JSON object representing the rule. ''' - res = requests.get(self.url + '/api/secure/rules/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/secure/rules/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def add_rule(self, name, details={}, description="", tags=[]): @@ -739,7 +738,7 @@ def add_rule(self, name, details={}, description="", tags=[]): "details": details, "tags": tags } - res = requests.post(self.url + '/api/secure/rules', data=json.dumps(rule), headers=self.hdrs, + res = self.http.post(self.url + '/api/secure/rules', data=json.dumps(rule), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -767,7 +766,7 @@ def update_rule(self, id, details={}, description="", tags=[]): rule['description'] = description if tags: rule['tags'] = tags - res = requests.put(self.url + '/api/secure/rules/{}'.format(id), data=json.dumps(rule), headers=self.hdrs, + res = self.http.put(self.url + '/api/secure/rules/{}'.format(id), data=json.dumps(rule), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -781,7 +780,7 @@ def delete_rule(self, id): **Success Return Value** A JSON object representing the rule. ''' - res = requests.delete(self.url + '/api/secure/rules/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + '/api/secure/rules/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def list_falco_macros(self): @@ -796,7 +795,7 @@ def list_falco_macros(self): **Success Return Value** A JSON object representing the list of falco macros. ''' - res = requests.get(self.url + '/api/secure/falco/macros/summaries', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/secure/falco/macros/summaries', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_falco_macros_group(self, name): @@ -811,7 +810,7 @@ def get_falco_macros_group(self, name): **Success Return Value** A JSON object representing the list of falco macros. ''' - res = requests.get(self.url + '/api/secure/falco/macros/groups?name={}'.format(name), headers=self.hdrs, + res = self.http.get(self.url + '/api/secure/falco/macros/groups?name={}'.format(name), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -825,7 +824,7 @@ def get_falco_macro_id(self, id): **Success Return Value** A JSON object representing the falco macro. ''' - res = requests.get(self.url + '/api/secure/falco/macros/{}'.format(id), headers=self.hdrs, + res = self.http.get(self.url + '/api/secure/falco/macros/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -848,7 +847,7 @@ def add_falco_macro(self, name, condition, append=False): }, "append": append } - res = requests.post(self.url + '/api/secure/falco/macros', data=json.dumps(macro), headers=self.hdrs, + res = self.http.post(self.url + '/api/secure/falco/macros', data=json.dumps(macro), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -869,7 +868,7 @@ def update_falco_macro(self, id, condition): macro = res macro['condition']['condition'] = condition - res = requests.put(self.url + '/api/secure/falco/macros/{}'.format(id), data=json.dumps(macro), + res = self.http.put(self.url + '/api/secure/falco/macros/{}'.format(id), data=json.dumps(macro), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -883,7 +882,7 @@ def delete_falco_macro(self, id): **Success Return Value** A JSON object representing the macro. ''' - res = requests.delete(self.url + '/api/secure/falco/macros/{}'.format(id), headers=self.hdrs, + res = self.http.delete(self.url + '/api/secure/falco/macros/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -899,7 +898,7 @@ def list_falco_lists(self): **Success Return Value** A JSON object representing the list of falco lists. ''' - res = requests.get(self.url + '/api/secure/falco/lists/summaries', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/secure/falco/lists/summaries', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_falco_lists_group(self, name): @@ -914,7 +913,7 @@ def get_falco_lists_group(self, name): **Success Return Value** A JSON object representing the list of falco lists. ''' - res = requests.get(self.url + '/api/secure/falco/lists/groups?name={}'.format(name), headers=self.hdrs, + res = self.http.get(self.url + '/api/secure/falco/lists/groups?name={}'.format(name), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -928,7 +927,7 @@ def get_falco_list_id(self, id): **Success Return Value** A JSON object representing the falco list. ''' - res = requests.get(self.url + '/api/secure/falco/lists/{}'.format(id), headers=self.hdrs, + res = self.http.get(self.url + '/api/secure/falco/lists/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -950,7 +949,7 @@ def add_falco_list(self, name, items, append=False): }, "append": append } - res = requests.post(self.url + '/api/secure/falco/lists', data=json.dumps(flist), headers=self.hdrs, + res = self.http.post(self.url + '/api/secure/falco/lists', data=json.dumps(flist), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -971,7 +970,7 @@ def update_falco_list(self, id, items): flist = res flist['items']['items'] = items - res = requests.put(self.url + '/api/secure/falco/lists/{}'.format(id), data=json.dumps(flist), + res = self.http.put(self.url + '/api/secure/falco/lists/{}'.format(id), data=json.dumps(flist), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -985,7 +984,7 @@ def delete_falco_list(self, id): **Success Return Value** A JSON object representing the list. ''' - res = requests.delete(self.url + '/api/secure/falco/lists/{}'.format(id), headers=self.hdrs, + res = self.http.delete(self.url + '/api/secure/falco/lists/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -1012,7 +1011,7 @@ def add_compliance_task(self, name, module_name='docker-bench-security', schedul "scope": scope, "schedule": schedule } - res = requests.post(self.url + '/api/complianceTasks', data=json.dumps(task), headers=self.hdrs, + res = self.http.post(self.url + '/api/complianceTasks', data=json.dumps(task), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -1026,7 +1025,7 @@ def list_compliance_tasks(self): **Success Return Value** A JSON list with the representation of each compliance task. ''' - res = requests.get(self.url + '/api/complianceTasks', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/complianceTasks', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_compliance_task(self, id): @@ -1039,7 +1038,7 @@ def get_compliance_task(self, id): **Success Return Value** A JSON representation of the compliance task. ''' - res = requests.get(self.url + '/api/complianceTasks/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/complianceTasks/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def update_compliance_task(self, id, name=None, module_name=None, schedule=None, scope=None, enabled=None): @@ -1070,7 +1069,7 @@ def update_compliance_task(self, id, name=None, module_name=None, schedule=None, 'enabled': enabled } task.update({k: v for k, v in options.items() if v is not None}) - res = requests.put(self.url + '/api/complianceTasks/{}'.format(id), data=json.dumps(task), headers=self.hdrs, + res = self.http.put(self.url + '/api/complianceTasks/{}'.format(id), data=json.dumps(task), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -1081,7 +1080,7 @@ def delete_compliance_task(self, id): **Arguments** - id: the id of the compliance task to delete ''' - res = requests.delete(self.url + '/api/complianceTasks/{}'.format(id), headers=self.hdrs, + res = self.http.delete(self.url + '/api/complianceTasks/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr @@ -1107,7 +1106,7 @@ def list_compliance_results(self, limit=50, direction=None, cursor=None, filter= direction="&direction=%s" % direction if direction else "", cursor="=%d" % cursor if cursor is not None else "", filter=filter) - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_compliance_results(self, id): @@ -1120,7 +1119,7 @@ def get_compliance_results(self, id): **Success Return Value** A JSON representation of the compliance task run result. ''' - res = requests.get(self.url + '/api/complianceResults/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/complianceResults/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_compliance_results_csv(self, id): @@ -1133,7 +1132,7 @@ def get_compliance_results_csv(self, id): **Success Return Value** A CSV representation of the compliance task run result. ''' - res = requests.get(self.url + '/api/complianceResults/{}/csv'.format(id), headers=self.hdrs, + res = self.http.get(self.url + '/api/complianceResults/{}/csv'.format(id), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return False, self.lasterr @@ -1170,7 +1169,7 @@ def list_commands_audit(self, from_sec=None, to_sec=None, scope_filter=None, com scope="&scopeFilter=" + scope_filter if scope_filter else "", commandFilter="&commandFilter=" + command_filter if command_filter else "", metrics="&metrics=" + json.dumps(metrics) if metrics else "") - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_command_audit(self, id, metrics=[]): @@ -1188,7 +1187,7 @@ def get_command_audit(self, id, metrics=[]): id=id, to=int(time.time() * 10 ** 6), metrics="&metrics=" + json.dumps(metrics) if metrics else "") - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def list_image_profiles(self): @@ -1206,7 +1205,7 @@ def list_image_profiles(self): url=self.url ) - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_image_profile(self, profileId): @@ -1258,7 +1257,7 @@ def get_image_profile(self, profileId): profileId=matched_profiles[0]['profileId'] ) - res = requests.get(url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(url, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) # Collision detected. The full profile IDs are returned diff --git a/sdcclient/_secure_v1.py b/sdcclient/_secure_v1.py index 9fad6c74..aeba49dd 100644 --- a/sdcclient/_secure_v1.py +++ b/sdcclient/_secure_v1.py @@ -1,5 +1,4 @@ import json -import requests from sdcclient._secure import SdSecureClient @@ -22,7 +21,7 @@ def create_default_policies(self): **Success Return Value** JSON containing details on any new policies that were added. ''' - res = requests.post(self.url + '/api/policies/createDefault', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.post(self.url + '/api/policies/createDefault', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def delete_all_policies(self): @@ -35,7 +34,7 @@ def delete_all_policies(self): **Success Return Value** The string "Policies Deleted" ''' - res = requests.post(self.url + '/api/policies/deleteAll', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.post(self.url + '/api/policies/deleteAll', headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -51,7 +50,7 @@ def list_policies(self): **Success Return Value** A JSON object containing the number and details of each policy. ''' - res = requests.get(self.url + '/api/policies', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/policies', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def get_policy_priorities(self): @@ -65,7 +64,7 @@ def get_policy_priorities(self): A JSON object representing the list of policy ids. ''' - res = requests.get(self.url + '/api/policies/priorities', headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/policies/priorities', headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def set_policy_priorities(self, priorities_json): @@ -84,7 +83,7 @@ def set_policy_priorities(self, priorities_json): except Exception as e: return [False, "priorities json is not valid json: {}".format(str(e))] - res = requests.put(self.url + '/api/policies/priorities', headers=self.hdrs, data=priorities_json, verify=self.ssl_verify) + res = self.http.put(self.url + '/api/policies/priorities', headers=self.hdrs, data=priorities_json, verify=self.ssl_verify) return self._request_result(res) def get_policy(self, name): @@ -122,7 +121,7 @@ def get_policy_id(self, id): A JSON object containing the description of the policy. If there is no policy with the given name, returns False. ''' - res = requests.get(self.url + '/api/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def add_policy(self, policy_json): @@ -141,7 +140,7 @@ def add_policy(self, policy_json): return [False, "policy json is not valid json: {}".format(str(e))] body = {"policy": policy_obj} - res = requests.post(self.url + '/api/policies', headers=self.hdrs, data=json.dumps(body), verify=self.ssl_verify) + res = self.http.post(self.url + '/api/policies', headers=self.hdrs, data=json.dumps(body), verify=self.ssl_verify) return self._request_result(res) def update_policy(self, policy_json): @@ -166,7 +165,7 @@ def update_policy(self, policy_json): body = {"policy": policy_obj} - res = requests.put(self.url + '/api/policies/{}'.format(policy_obj["id"]), headers=self.hdrs, data=json.dumps(body), verify=self.ssl_verify) + res = self.http.put(self.url + '/api/policies/{}'.format(policy_obj["id"]), headers=self.hdrs, data=json.dumps(body), verify=self.ssl_verify) return self._request_result(res) def delete_policy_name(self, name): @@ -200,5 +199,5 @@ def delete_policy_id(self, id): **Success Return Value** The JSON object representing the now-deleted policy. ''' - res = requests.delete(self.url + '/api/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + '/api/policies/{}'.format(id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) diff --git a/sdcclient/ibm_auth_helper.py b/sdcclient/ibm_auth_helper.py index 71af793d..406b19c8 100644 --- a/sdcclient/ibm_auth_helper.py +++ b/sdcclient/ibm_auth_helper.py @@ -1,5 +1,3 @@ -import requests - class IbmAuthHelper(): '''Authenticate with IBM Cloud IAM. @@ -34,7 +32,7 @@ def __get_iam_endpoint(url): @staticmethod def __get_iam_token(url, apikey): env_url = IbmAuthHelper.__get_iam_endpoint(url) - response = requests.post( + response = self.http.post( 'https://' + env_url + '/identity/token', data={ 'grant_type': 'urn:ibm:params:oauth:grant-type:apikey', diff --git a/sdcclient/monitor/_dashboards_v2.py b/sdcclient/monitor/_dashboards_v2.py index 7ef9fcb4..cc563507 100644 --- a/sdcclient/monitor/_dashboards_v2.py +++ b/sdcclient/monitor/_dashboards_v2.py @@ -1,8 +1,6 @@ import copy import json -import requests - from sdcclient._common import _SdcCommon from sdcclient.monitor.dashboard_converters import convert_dashboard_between_versions from sdcclient.monitor.dashboard_converters._dashboard_scope import convert_scope_string_to_expression @@ -17,7 +15,7 @@ def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=T self._default_dashboards_api_endpoint = '/api/{}/defaultDashboards'.format(self._dashboards_api_version) def get_views_list(self): - res = requests.get(self.url + self._default_dashboards_api_endpoint, headers=self.hdrs, + res = self.http.get(self.url + self._default_dashboards_api_endpoint, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -40,7 +38,7 @@ def get_view(self, name): if not id: return [False, 'view ' + name + ' not found'] - res = requests.get(self.url + self._default_dashboards_api_endpoint + '/' + id, headers=self.hdrs, + res = self.http.get(self.url + self._default_dashboards_api_endpoint + '/' + id, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -54,7 +52,7 @@ def get_dashboards(self): **Example** `examples/list_dashboards.py `_ ''' - res = requests.get(self.url + self._dashboards_api_endpoint, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + self._dashboards_api_endpoint, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) def update_dashboard(self, dashboard_data): @@ -67,7 +65,7 @@ def update_dashboard(self, dashboard_data): **Example** `examples/dashboard_basic_crud.py `_ ''' - res = requests.put(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_data['id']), + res = self.http.put(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_data['id']), headers=self.hdrs, verify=self.ssl_verify, data=json.dumps({'dashboard': dashboard_data})) return self._request_result(res) @@ -105,7 +103,7 @@ def create_dashboard_with_configuration(self, configuration): if 'version' in configuration_clone: del configuration_clone['version'] - res = requests.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, + res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, data=json.dumps({'dashboard': configuration_clone}), verify=self.ssl_verify) return self._request_result(res) @@ -136,7 +134,7 @@ def create_dashboard(self, name): # # Create the new dashboard # - res = requests.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, + res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, data=json.dumps({'dashboard': dashboard_configuration}), verify=self.ssl_verify) return self._request_result(res) @@ -284,7 +282,7 @@ def add_dashboard_panel(self, dashboard, name, panel_type, metrics, scope=None, # # Update dashboard # - res = requests.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, + res = self.http.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, data=json.dumps({'dashboard': dashboard_configuration}), verify=self.ssl_verify) return self._request_result(res) @@ -326,7 +324,7 @@ def filter_fn(panel): # # Update dashboard # - res = requests.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, + res = self.http.put(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, data=json.dumps({'dashboard': dashboard_configuration}), verify=self.ssl_verify) return self._request_result(res) @@ -388,7 +386,7 @@ def create_dashboard_from_template(self, dashboard_name, template, scope, shared # # Create the new dashboard # - res = requests.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, + res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, data=json.dumps({'dashboard': template}), verify=self.ssl_verify) return self._request_result(res) @@ -437,7 +435,7 @@ def get_dashboard(self, dashboard_id): **Example** `examples/dashboard_basic_crud.py `_ ''' - res = requests.get(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), headers=self.hdrs, + res = self.http.get(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -461,7 +459,7 @@ def create_dashboard_from_dashboard(self, newdashname, templatename, filter, sha # # Get the list of dashboards from the server # - res = requests.get(self.url + self._dashboards_api_endpoint, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(self.url + self._dashboards_api_endpoint, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -581,7 +579,7 @@ def delete_dashboard(self, dashboard): if 'id' not in dashboard: return [False, "Invalid dashboard format"] - res = requests.delete(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, + res = self.http.delete(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] diff --git a/sdcclient/monitor/_dashboards_v3.py b/sdcclient/monitor/_dashboards_v3.py index cbf3e5ab..d809ec3d 100644 --- a/sdcclient/monitor/_dashboards_v3.py +++ b/sdcclient/monitor/_dashboards_v3.py @@ -1,8 +1,6 @@ import copy import json -import requests - from sdcclient._common import _SdcCommon from sdcclient.monitor.dashboard_converters import convert_dashboard_between_versions, \ convert_scope_string_to_expression @@ -20,7 +18,7 @@ def __init__(self, token="", sdc_url='https://app.sysdigcloud.com', ssl_verify=T self._default_dashboards_api_endpoint = '/api/{}/dashboards/templates'.format(self._dashboards_api_version) def get_views_list(self): - res = requests.get(self.url + self._default_dashboards_api_endpoint, headers=self.hdrs, + res = self.http.get(self.url + self._default_dashboards_api_endpoint, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -43,7 +41,7 @@ def get_view(self, name): if not id: return [False, 'view ' + name + ' not found'] - res = requests.get(self.url + self._default_dashboards_api_endpoint + '/' + id, headers=self.hdrs, + res = self.http.get(self.url + self._default_dashboards_api_endpoint + '/' + id, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -60,7 +58,7 @@ def get_dashboards(self, light=True): params = { "light": light } - res = requests.get(self.url + self._dashboards_api_endpoint, params=params, + res = self.http.get(self.url + self._dashboards_api_endpoint, params=params, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -75,7 +73,7 @@ def update_dashboard(self, dashboard_data): **Example** `examples/dashboard_basic_crud.py `_ ''' - res = requests.put(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_data['id']), + res = self.http.put(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_data['id']), headers=self.hdrs, verify=self.ssl_verify, data=json.dumps({'dashboard': dashboard_data})) return self._request_result(res) @@ -113,7 +111,7 @@ def create_dashboard_with_configuration(self, configuration): if 'version' in configuration_clone: del configuration_clone['version'] - res = requests.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, + res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, data=json.dumps({'dashboard': configuration_clone}), verify=self.ssl_verify) return self._request_result(res) @@ -146,7 +144,7 @@ def create_dashboard(self, name): # # Create the new dashboard # - res = requests.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, + res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, data=json.dumps({'dashboard': dashboard_configuration}), verify=self.ssl_verify) return self._request_result(res) @@ -306,7 +304,7 @@ def create_dashboard_from_template(self, dashboard_name, template, scope=None, s # # Create the new dashboard # - res = requests.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, + res = self.http.post(self.url + self._dashboards_api_endpoint, headers=self.hdrs, data=json.dumps({'dashboard': template}), verify=self.ssl_verify) return self._request_result(res) @@ -378,7 +376,7 @@ def get_dashboard(self, dashboard_id): **Example** `examples/dashboard_basic_crud.py `_ ''' - res = requests.get(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), headers=self.hdrs, + res = self.http.get(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -402,7 +400,7 @@ def create_dashboard_from_dashboard(self, newdashname, templatename, filter=None # # Get the list of dashboards from the server # - dashboard = requests.get(self.url + self._dashboards_api_endpoint, params={"light": "true"}, headers=self.hdrs, + dashboard = self.http.get(self.url + self._dashboards_api_endpoint, params={"light": "true"}, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(dashboard): return [False, self.lasterr] @@ -433,7 +431,7 @@ def create_dashboard_from_dashboard(self, newdashname, templatename, filter=None def favorite_dashboard(self, dashboard_id, favorite): data = {"dashboard": {"favorite": favorite}} - res = requests.patch(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), json=data, + res = self.http.patch(self.url + self._dashboards_api_endpoint + "/" + str(dashboard_id), json=data, headers=self.hdrs, verify=self.ssl_verify) return self._request_result(res) @@ -549,7 +547,7 @@ def delete_dashboard(self, dashboard): if 'id' not in dashboard: return [False, "Invalid dashboard format"] - res = requests.delete(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, + res = self.http.delete(self.url + self._dashboards_api_endpoint + '/' + str(dashboard['id']), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] diff --git a/sdcclient/monitor/_events_v1.py b/sdcclient/monitor/_events_v1.py index d7587534..ebfbc251 100644 --- a/sdcclient/monitor/_events_v1.py +++ b/sdcclient/monitor/_events_v1.py @@ -1,7 +1,5 @@ import json -import requests - from sdcclient._common import _SdcCommon @@ -35,7 +33,7 @@ def get_events(self, from_s=None, to_s=None, last_s=None): "last": last_s, } params = {k: v for k, v in options.items() if v is not None} - res = requests.get(self.url + '/api/events/', headers=self.hdrs, params=params, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/events/', headers=self.hdrs, params=params, verify=self.ssl_verify) return self._request_result(res) def post_event(self, name, description=None, severity=None, event_filter=None, tags=None): @@ -66,7 +64,7 @@ def post_event(self, name, description=None, severity=None, event_filter=None, t edata = { 'event': {k: v for k, v in options.items() if v is not None} } - res = requests.post(self.url + '/api/events/', headers=self.hdrs, data=json.dumps(edata), + res = self.http.post(self.url + '/api/events/', headers=self.hdrs, data=json.dumps(edata), verify=self.ssl_verify) return self._request_result(res) @@ -86,7 +84,7 @@ def delete_event(self, event): if 'id' not in event: return [False, "Invalid event format"] - res = requests.delete(self.url + '/api/events/' + str(event['id']), headers=self.hdrs, verify=self.ssl_verify) + res = self.http.delete(self.url + '/api/events/' + str(event['id']), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] return [True, None] diff --git a/sdcclient/monitor/_events_v2.py b/sdcclient/monitor/_events_v2.py index 9dab3ae9..8d071225 100644 --- a/sdcclient/monitor/_events_v2.py +++ b/sdcclient/monitor/_events_v2.py @@ -1,7 +1,5 @@ import json -import requests - from sdcclient._common import _SdcCommon @@ -60,7 +58,7 @@ def get_events(self, name=None, category=None, direction='before', status=None, 'filter': name, } params = {k: v for k, v in options.items() if v is not None} - res = requests.get(self.url + '/api/v2/events/', headers=self.hdrs, params=params, verify=self.ssl_verify) + res = self.http.get(self.url + '/api/v2/events/', headers=self.hdrs, params=params, verify=self.ssl_verify) return self._request_result(res) def delete_event(self, event): @@ -79,7 +77,7 @@ def delete_event(self, event): if 'id' not in event: return [False, "Invalid event format"] - res = requests.delete(self.url + '/api/v2/events/' + str(event['id']), headers=self.hdrs, + res = self.http.delete(self.url + '/api/v2/events/' + str(event['id']), headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] @@ -113,6 +111,6 @@ def post_event(self, name, description=None, severity=None, event_filter=None, t edata = { 'event': {k: v for k, v in options.items() if v is not None} } - res = requests.post(self.url + '/api/v2/events/', headers=self.hdrs, data=json.dumps(edata), + res = self.http.post(self.url + '/api/v2/events/', headers=self.hdrs, data=json.dumps(edata), verify=self.ssl_verify) return self._request_result(res) diff --git a/sdcclient/secure/_policy_events_old.py b/sdcclient/secure/_policy_events_old.py index 19ec0e7b..d6bd792c 100644 --- a/sdcclient/secure/_policy_events_old.py +++ b/sdcclient/secure/_policy_events_old.py @@ -2,8 +2,6 @@ import json from warnings import warn -import requests - from sdcclient._common import _SdcCommon @@ -29,7 +27,7 @@ def _get_policy_events_int(self, ctx): scope='&scopeFilter=%s' % ctx['scopeFilter'] if "scopeFilter" in ctx else "", filter='&eventFilter=%s' % ctx['eventFilter'] if "eventFilter" in ctx else "") - res = requests.get(policy_events_url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(policy_events_url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr] diff --git a/sdcclient/secure/_policy_events_v1.py b/sdcclient/secure/_policy_events_v1.py index 5c128f2a..8746cf56 100644 --- a/sdcclient/secure/_policy_events_v1.py +++ b/sdcclient/secure/_policy_events_v1.py @@ -1,7 +1,5 @@ import datetime -import requests - from sdcclient._common import _SdcCommon @@ -22,7 +20,7 @@ def _get_policy_events_int(self, ctx): filter=f'&filter={ctx["filter"]}' if "filter" in ctx else "", cursor=f'&cursor={ctx["cursor"]}' if "cursor" in ctx else "") - res = requests.get(policy_events_url, headers=self.hdrs, verify=self.ssl_verify) + res = self.http.get(policy_events_url, headers=self.hdrs, verify=self.ssl_verify) if not self._checkResponse(res): return [False, self.lasterr]