Last active
May 28, 2020 05:26
-
-
Save relic7/fd33bab9fcb701449a083bed149e4b4d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Method to split up your lists into chunks | |
| def chunks(list, chunkSize): | |
| """Yield successive chunkSize-sized chunks from list.""" | |
| for i in range(0, len(list), chunkSize): | |
| yield list[i:i + chunkSize] | |
| # Use your `chunks` function to print out chunks of the same size | |
| import pprint | |
| pprint.pprint(list(chunks(range(10, 75), 10))) | |
| import configparser | |
| import sys | |
| import traceback | |
| import ast | |
| import logging | |
| import requests | |
| config = configparser.RawConfigParser() | |
| def snow_api(log_s, snow_host, snow_user, snow_pass, snow_proxy_dict, api, method, payload={}): | |
| try: | |
| log_s.info("Running SNOW %s API on %s" % (method, api)) | |
| URI = "https://%s/api/%s" % (snow_host, api) | |
| API_SESSION = requests.Session() | |
| API_SESSION.auth = (snow_user, snow_pass) | |
| API_SESSION.verify = False | |
| API_SESSION.headers = {'content-type': 'application/json'} | |
| requests.packages.urllib3.disable_warnings() | |
| if method.lower() == "post": | |
| results = API_SESSION.post(URI, proxies=snow_proxy_dict, json=payload) | |
| elif method.lower() == "put": | |
| results = API_SESSION.put(URI, proxies=snow_proxy_dict, json=payload) | |
| elif method.lower() == "patch": | |
| results = API_SESSION.patch(URI, proxies=snow_proxy_dict, json=payload) | |
| elif method.lower() == "delete": | |
| results = API_SESSION.delete(URI, proxies=snow_proxy_dict, json=payload) | |
| else: | |
| results = API_SESSION.get(URI, proxies=snow_proxy_dict) | |
| log_s.debug("Status: %s" % results.status_code) | |
| log_s.debug(results.json()) | |
| log_s.info("API %s call Success" % method) | |
| return results.status_code, results.json() | |
| except Exception: | |
| ie = traceback.format_exc() | |
| log_s.error(str(ie)) | |
| return 399, str(ie) | |
| if __name__ == "__main__": | |
| logc = logging.getLogger("console_logger") | |
| logc.setLevel(logging.INFO) | |
| ch = logging.StreamHandler(sys.stdout) | |
| ch.setLevel(logging.DEBUG) | |
| formatter = logging.Formatter('%(asctime)s\t%(levelname)s\t%(module)s\t%(lineno)d\t%(message)s') | |
| ch.setFormatter(formatter) | |
| logc.addHandler(ch) | |
| if len(sys.argv) < 3: | |
| logc.error("Not enough arguments passed, exiting script %s" % sys.argv[0]) | |
| logc.info( | |
| "Syntax: python3 %s snow_host snow_user snow_pass snow_proxy_dict api GET <payload>" % | |
| sys.argv[0]) | |
| sys.exit(1) | |
| if len(sys.argv) > 7: | |
| print(snow_api(logc, sys.argv[1], sys.argv[2], sys.argv[3], ast.literal_eval(sys.argv[4]), sys.argv[5], | |
| sys.argv[6], ast.literal_eval(sys.argv[7]))) | |
| else: | |
| print(snow_api(logc, sys.argv[1], sys.argv[2], sys.argv[3], ast.literal_eval(sys.argv[4]), sys.argv[5], | |
| sys.argv[6])) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment