Skip to content

Instantly share code, notes, and snippets.

@relic7
Last active May 28, 2020 05:26
Show Gist options
  • Save relic7/fd33bab9fcb701449a083bed149e4b4d to your computer and use it in GitHub Desktop.
Save relic7/fd33bab9fcb701449a083bed149e4b4d to your computer and use it in GitHub Desktop.
# 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