From a5a8ecc3c0f153c929464cb3850774e4ae29c7e4 Mon Sep 17 00:00:00 2001 From: mischa Date: Tue, 21 Jun 2022 18:44:33 +0200 Subject: [PATCH] simplified structure, little more generic and possible to push individual JSON files --- push-debug.py | 51 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/push-debug.py b/push-debug.py index e28e821..279bb8d 100755 --- a/push-debug.py +++ b/push-debug.py @@ -3,6 +3,7 @@ # Copyright 2022, Mischa Peters , Alkira. # push-debug.py # Version 0.1 - 20220617 - initial release +# Version 0.2 - 20220621 - simplified structure, generic # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -40,7 +41,7 @@ if len(sys.argv)==1: try: args = parser.parse_args() ALKIRA_CONFIG = args.tenant - json_file = args.file + connector = args.file except argparse.ArgumentError as e: print(str(e)) sys.exit() @@ -110,6 +111,14 @@ service_global_cidr = [ "chkpfwservices" ] +# Credential Types +credential_types = { + "awsvpc": "", + "azurevnet": "", + "gcpvpc": "", + "ocivcn": "", + } + # Authenticate logging.info('=== Authenticating') body = {'userName': ALKIRA_USERNAME, @@ -128,12 +137,24 @@ tenantName = data[0]['name'] logging.info(f'Tenant Name: {tenantName}') logging.info(f'Tenant ID: {tenantNetworkId}') +# Get Credentials +logging.info('=== Fetching Credentials') +url = f'{ALKIRA_BASE_URI}/credentials' +response = session.get(url, headers=headers) +data = response.json() +logging.debug(json.dumps(data)) +for key in data: + if key['credentialType'].lower() in credential_types: + logging.debug(f"CredentialType: {key['credentialType']} - CredentialId: {key['credentialId']}") + credential_types[key['credentialType'].lower()] = key['credentialId'] + # Push connector logging.info('=== Push Connector') -connector_result = re.match(r'(\w+)(\d+)', json_file) -connector_name = connector_result.group(1) -connector_number = connector_result.group(2) -logging.debug(f'Connector Name: {connector_name} - Number: {connector_number}') +connector_result = re.match(r'(\w+)(connectors|services)(\d+)', connector) +connector_type = connector_result.group(1) +connector_name = f'{connector_type}{connector_result.group(2)}' +connector_number = connector_result.group(3) +print(f'{connector_name}{connector_number}.txt') if connector_name in service_credentials.keys(): print('=== Create Credentials') @@ -200,21 +221,24 @@ if connector_name in service_global_cidr: global_cidr_id = json_body['id'] print(f'global cidr id: {global_cidr_id}') -with open (json_file, 'r') as f: +with open (connector, 'r') as f: body = json.load(f) -if connector_name in url_exceptions.keys(): - connector_name = url_exceptions[connector_name] +if 'connectors' in connector_name and connector_type in credential_types and credential_types[connector_type]: + if 'credentialId' in body: + logging.debug(f"JSON credentialid: {body['credentialId']}") + logging.debug(f'API credentialid: {credential_types[connector_type]}') + body['credentialId'] = credential_types[connector_type] -if 'credentialId' in body: +if 'services' in connector_name and 'credentialId' in body: body['credentialId'] = service_credentialid print(f'JSON credentialId: {service_credentialid}') -if 'instances' in body: +if 'services' in connector_name and 'instances' in body: body['instances'][0]['credentialId'] = service_instance_credentialid print(f'JSON credentialId: {service_instance_credentialid}') -if 'managementServer' in body: +if 'services' in connector_name and 'managementServer' in body: body['managementServer']['globalCidrListId'] = global_cidr_id print(f'JSON globalCidrListId: {global_cidr_id}') @@ -223,7 +247,10 @@ if args.pretty: else: print(json.dumps(body)) -print('=== Create FW Instance') +if connector_name in url_exceptions.keys(): + connector_name = url_exceptions[connector_name] + +print(f'=== Create {connector_name}') url = f'{ALKIRA_BASE_URI}/tenantnetworks/{tenantNetworkId}/{connector_name}' response = session.post(url, data=json.dumps(body), headers=headers) print(response.status_code)