From be4c0fbc03d103c2b41b55400a031fc14da3dea0 Mon Sep 17 00:00:00 2001 From: mischa Date: Tue, 14 Jun 2022 17:00:00 +0200 Subject: [PATCH] add clean.py --- api-02.py | 8 +--- clean.py | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 7 deletions(-) create mode 100755 clean.py diff --git a/api-02.py b/api-02.py index 4dcdb5f..edcc94a 100755 --- a/api-02.py +++ b/api-02.py @@ -78,7 +78,7 @@ data = r.json() print(data[0]['name']) print(data[0]['id']) -#body = {"email": "john@abcde.com", "firstName": "John", "lastName": "Doe", "password": "string", "roles": ["netadmin"], "userName": "john2"} +#body = {userName": "john", "email": "john@abcde.com", "firstName": "John", "lastName": "Doe", "password": "string", "roles": ["netadmin"], "userName": "john2"} #r = alkira_post(s, '/users', body) #print(r.status_code) @@ -96,9 +96,3 @@ for item in data: r = alkira_delete(s, f'/users/{user_id}') print(r.status_code) - - - - - - diff --git a/clean.py b/clean.py new file mode 100755 index 0000000..e3c0627 --- /dev/null +++ b/clean.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python3 + +import os +import sys +import re +import json +import time +import logging +import requests +import configparser + +############################################### + +CONFIG_FILE = "/Users/mischa/Alkira/xDev/alkira.cnf" +if not os.path.isfile(CONFIG_FILE): + logging.error(f"The config file {CONFIG_FILE} doesn't exist") + sys.exit(1) +config = configparser.RawConfigParser() +config.read(CONFIG_FILE) + +ALKIRA_TENANT = config.get('alkira', 'ALKIRA_TENANT') +ALKIRA_USERNAME = config.get('alkira', 'ALKIRA_USERNAME') +ALKIRA_PASSWORD = config.get('alkira', 'ALKIRA_PASSWORD') +ALKIRA_BASE_URI = f'https://{ALKIRA_TENANT}/api' + +############################################### + +# Set default headers +headers = {'Content-Type': "application/json"} + +# Set logging.INFO to logging.DEBUG for debug information +logging.basicConfig(level=logging.INFO) +logging = logging.getLogger('AlkiraAPI') + +def alkira_login(): + body = {'userName': ALKIRA_USERNAME, + 'password': ALKIRA_PASSWORD} + session = requests.session() + response = alkira_post(session, '/login', body) + return session + +def alkira_post(session, uri, body): + url = f'{ALKIRA_BASE_URI}{uri}' + try: + response = session.post(url, data=json.dumps(body), headers=headers) + response.raise_for_status() + except Exception as e: + logging.error(f'Error: {str(e)}') + sys.exit(1) + return response + +def alkira_get(session, uri): + url = f'{ALKIRA_BASE_URI}{uri}' + try: + response = session.get(url, headers=headers) + response.raise_for_status() + except Exception as e: + logging.error(f'Error: {str(e)}') + sys.exit(1) + return response + +def alkira_delete(session, uri): + url = f'{ALKIRA_BASE_URI}{uri}' + try: + response = session.delete(url, headers=headers) + response.raise_for_status() + except Exception as e: + logging.error(f'Error: {str(e)}') + sys.exit(1) + return response + +# Authenticate +s = alkira_login() +logging.debug(s) + +# Get TenantID +r = alkira_get(s, '/tenantnetworks') +data = r.json() +print('Tenant Name:', data[0]['name']) +print('Tenant ID:', data[0]['id']) +tenantNetworkId = data[0]['id'] + +r = alkira_get(s, f'/tenantnetworks/{tenantNetworkId}/connectors') +data = r.json() +#print(json.dumps(data, indent=4)) +for item in data: + #print("ID:", item.get('id')) + #print("Name:", item.get('name')) + #print("Type:", item.get('type')) + name = item.get('name') + connectorId = item.get('id') + type = item.get('type').lower().replace('_', '') + if (type == 'saas'): + type = 'internet' + #print(f'/tenantnetworks/{tenantNetworkId}/{type}connectors/{connectorId}') + logging.info(f'Removing {name}') + r = alkira_delete(s, f'/tenantnetworks/{tenantNetworkId}/{type}connectors/{connectorId}') + logging.info(r.status_code) + +r = alkira_get(s, f'/tenantnetworks/{tenantNetworkId}/services') +data = r.json() +#print(json.dumps(data, indent=4)) +for item in data: + #print("ID:", item.get('id')) + #print("Name:", item.get('name')) + ##print("Type:", item.get('type')) + name = item.get('name') + serviceId = item.get('id') + type = item.get('type').lower() + if (type == 'pan'): + type = 'panfw' + if (type == 'ftntfw'): + type = 'ftnt-fw-' + #print(f'/tenantnetworks/{tenantNetworkId}/{type}services/{serviceId}') + logging.info(f'Removing {name}') + r = alkira_delete(s, f'/tenantnetworks/{tenantNetworkId}/{type}services/{serviceId}') + logging.info(r.status_code) +