simplified structure, little more generic and possible to push individual JSON files

This commit is contained in:
mischa 2022-06-21 18:44:33 +02:00
parent 8d11159f42
commit a5a8ecc3c0
1 changed files with 39 additions and 12 deletions

View File

@ -3,6 +3,7 @@
# Copyright 2022, Mischa Peters <mischa AT alkira DOT net>, Alkira. # Copyright 2022, Mischa Peters <mischa AT alkira DOT net>, Alkira.
# push-debug.py # push-debug.py
# Version 0.1 - 20220617 - initial release # Version 0.1 - 20220617 - initial release
# Version 0.2 - 20220621 - simplified structure, generic
# #
# Permission to use, copy, modify, and distribute this software for any # Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above # purpose with or without fee is hereby granted, provided that the above
@ -40,7 +41,7 @@ if len(sys.argv)==1:
try: try:
args = parser.parse_args() args = parser.parse_args()
ALKIRA_CONFIG = args.tenant ALKIRA_CONFIG = args.tenant
json_file = args.file connector = args.file
except argparse.ArgumentError as e: except argparse.ArgumentError as e:
print(str(e)) print(str(e))
sys.exit() sys.exit()
@ -110,6 +111,14 @@ service_global_cidr = [
"chkpfwservices" "chkpfwservices"
] ]
# Credential Types
credential_types = {
"awsvpc": "",
"azurevnet": "",
"gcpvpc": "",
"ocivcn": "",
}
# Authenticate # Authenticate
logging.info('=== Authenticating') logging.info('=== Authenticating')
body = {'userName': ALKIRA_USERNAME, body = {'userName': ALKIRA_USERNAME,
@ -128,12 +137,24 @@ tenantName = data[0]['name']
logging.info(f'Tenant Name: {tenantName}') logging.info(f'Tenant Name: {tenantName}')
logging.info(f'Tenant ID: {tenantNetworkId}') 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 # Push connector
logging.info('=== Push Connector') logging.info('=== Push Connector')
connector_result = re.match(r'(\w+)(\d+)', json_file) connector_result = re.match(r'(\w+)(connectors|services)(\d+)', connector)
connector_name = connector_result.group(1) connector_type = connector_result.group(1)
connector_number = connector_result.group(2) connector_name = f'{connector_type}{connector_result.group(2)}'
logging.debug(f'Connector Name: {connector_name} - Number: {connector_number}') connector_number = connector_result.group(3)
print(f'{connector_name}{connector_number}.txt')
if connector_name in service_credentials.keys(): if connector_name in service_credentials.keys():
print('=== Create Credentials') print('=== Create Credentials')
@ -200,21 +221,24 @@ if connector_name in service_global_cidr:
global_cidr_id = json_body['id'] global_cidr_id = json_body['id']
print(f'global cidr id: {global_cidr_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) body = json.load(f)
if connector_name in url_exceptions.keys(): if 'connectors' in connector_name and connector_type in credential_types and credential_types[connector_type]:
connector_name = url_exceptions[connector_name]
if 'credentialId' in body: 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 'services' in connector_name and 'credentialId' in body:
body['credentialId'] = service_credentialid body['credentialId'] = service_credentialid
print(f'JSON 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 body['instances'][0]['credentialId'] = service_instance_credentialid
print(f'JSON 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 body['managementServer']['globalCidrListId'] = global_cidr_id
print(f'JSON globalCidrListId: {global_cidr_id}') print(f'JSON globalCidrListId: {global_cidr_id}')
@ -223,7 +247,10 @@ if args.pretty:
else: else:
print(json.dumps(body)) 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}' url = f'{ALKIRA_BASE_URI}/tenantnetworks/{tenantNetworkId}/{connector_name}'
response = session.post(url, data=json.dumps(body), headers=headers) response = session.post(url, data=json.dumps(body), headers=headers)
print(response.status_code) print(response.status_code)