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.
# 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)