#!/usr/bin/env python3 import os import sys import re import json import time import logging import requests import configparser import argparse # Parse all arguments parser = argparse.ArgumentParser(description="Push JSON connfig to AlkirAPI") parser.add_argument("-t", "--tenant", type=str, default='alkira.cnf', help="location of alikira.cnf (default: alkira.cnf") parser.add_argument("-f", "--file", type=str, help="location of the JSON connector file") parser.add_argument("-p", "--pretty", help="make the JSON pretty!", action="store_true") if len(sys.argv)==1: parser.print_help(sys.stderr) sys.exit(1) try: args = parser.parse_args() ALKIRA_CONFIG = args.tenant json_file = args.file except argparse.ArgumentError as e: print(str(e)) sys.exit() ############################################### # Tenant config if not os.path.isfile(ALKIRA_CONFIG): logging.error(f"The config file {ALKIRA_CONFIG} doesn't exist") sys.exit(1) alkira = configparser.RawConfigParser() alkira.read(ALKIRA_CONFIG) ALKIRA_TENANT = alkira.get('alkira', 'ALKIRA_TENANT') ALKIRA_USERNAME = alkira.get('alkira', 'ALKIRA_USERNAME') ALKIRA_PASSWORD = alkira.get('alkira', 'ALKIRA_PASSWORD') ALKIRA_BASE_URI = f'https://{ALKIRA_TENANT}/api' ############################################### # Set default headers headers = {'Content-Type': "application/json"} # Authenticate body = {'userName': ALKIRA_USERNAME, 'password': ALKIRA_PASSWORD} url = f'{ALKIRA_BASE_URI}/login' session = requests.session() response = session.post(url, data=json.dumps(body), headers=headers) # Get TenantID url = f'{ALKIRA_BASE_URI}/tenantnetworks' response = session.get(url, headers=headers) data = response.json() tenantNetworkId = data[0]['id'] tenantName = data[0]['name'] logging.info(f'Tenant Name: {tenantName}') logging.info(f'Tenant ID: {tenantNetworkId}') print(json_file) # Do Things connector_result = re.match(r'(.*)\/?(\w+)(\d+)', json_file) connector_name = connector_result.group(1) connector_number = connector_result.group(2) with open (json_file, 'r') as f: body = json.load(f) if args.pretty: print(json.dumps(body, indent=4)) else: print(json.dumps(body)) url = f'{ALKIRA_BASE_URI}/tenantnetworks/{tenantNetworkId}/{connector_name}' response = session.post(url, data=json.dumps(body), headers=headers) print(response.status_code) print(response.content)