From 8ad5e2a230e49fdc238ae0a25427eecfb49839f8 Mon Sep 17 00:00:00 2001 From: MOIS3Y Date: Thu, 6 Jun 2024 00:08:10 +0900 Subject: [PATCH] Refactoring: move API init statments to settings --- mgrctl/api/base.py | 61 +++++++++++-------------------------- mgrctl/settings/api.py | 27 +++++++++++++--- mgrctl/settings/platform.py | 20 ++++++------ 3 files changed, 50 insertions(+), 58 deletions(-) diff --git a/mgrctl/api/base.py b/mgrctl/api/base.py index 2a28b19..6a0fd04 100644 --- a/mgrctl/api/base.py +++ b/mgrctl/api/base.py @@ -3,52 +3,25 @@ import json import urllib import requests -from mgrctl.settings.api import INPUT_URL, HEADERS -from mgrctl.settings.platform import ( - PLATFORM_TYPE, - PLATFORM_VERIFY_SSL, - PLATFORM_DUMMY, - PLATFORM_DUMMY_VM6_API_URL, - PLATFORM_DUMMY_VM6_EMAIL, - PLATFORM_DUMMY_VM6_PASSWORD, - PLATFORM_DUMMY_VM6_TOKEN, - PLATFORM_DUMMY_DCI6_API_URL, - PLATFORM_DUMMY_DCI6_EMAIL, - PLATFORM_DUMMY_DCI6_PASSWORD, - PLATFORM_DUMMY_DCI6_TOKEN +from mgrctl.settings.api import ( + API_URL, + API_HEADERS, + API_EMAIL, + API_PASSWORD, + API_VERIFY_SSL ) class BaseAPI(object): def __init__(self): """Announces required parameters""" - if PLATFORM_TYPE == 'vm': - if PLATFORM_DUMMY: - self.API_URL = PLATFORM_DUMMY_VM6_API_URL - self.AUTH_TYPE = 'Public' - self.HEADERS = {'x-xsrf-token': PLATFORM_DUMMY_VM6_TOKEN} - self.EMAIL = PLATFORM_DUMMY_VM6_EMAIL - self.PASSWORD = PLATFORM_DUMMY_VM6_PASSWORD - else: - self.API_URL = INPUT_URL - self.AUTH_TYPE = 'Internal' - self.HEADERS = HEADERS - - if PLATFORM_TYPE == 'dci': - if PLATFORM_DUMMY: - self.API_URL = PLATFORM_DUMMY_DCI6_API_URL - self.AUTH_TYPE = 'Public' - self.HEADERS = {'x-xsrf-token': PLATFORM_DUMMY_DCI6_TOKEN} - self.EMAIL = PLATFORM_DUMMY_DCI6_EMAIL - self.PASSWORD = PLATFORM_DUMMY_DCI6_PASSWORD - else: - self.API_URL = INPUT_URL - self.AUTH_TYPE = 'Internal' - self.HEADERS = HEADERS - + self.API_URL = API_URL + self.API_HEADERS = API_HEADERS + self.API_EMAIL = API_EMAIL + self.API_PASSWORD = API_PASSWORD + self.API_VERIFY_SSL = API_VERIFY_SSL self.API_VERSION = 'v3' self.API_DEFINITION = 'api' - self.VERIFY_SSL = PLATFORM_VERIFY_SSL def _gen_request_url(self, url): return f'{self.API_URL}/{self.API_DEFINITION}/{self.API_VERSION}{url}' @@ -58,21 +31,21 @@ class BaseAPI(object): with requests.Session() as session: try: url = self._gen_request_url(url) - headers = self.HEADERS if not headers else headers + headers = self.API_HEADERS if not headers else headers params_str = urllib.parse.urlencode(data, safe="+'()") if method == 'POST': api_request = session.post( url=url, json=data, headers=headers, - verify=self.VERIFY_SSL + verify=self.API_VERIFY_SSL ) if method == 'GET': url = f'{url}?{params_str}' if params_str else url api_request = session.get( url=url, headers=headers, - verify=self.VERIFY_SSL + verify=self.API_VERIFY_SSL ) except Exception as error: api_request = { @@ -103,8 +76,8 @@ class BaseAuthAPI(BaseAPI): self.API_DEFINITION = 'auth' def get_auth_token(self, email=None, password=None) -> dict: - email = self.EMAIL if not email else email - password = self.PASSWORD if not password else password + email = self.API_EMAIL if not email else email + password = self.API_PASSWORD if not password else password return self.call_api( url='/public/token', method='POST', @@ -113,7 +86,7 @@ class BaseAuthAPI(BaseAPI): def get_auth_key(self, token=None, user=None) -> dict: headers = {} - user = self.EMAIL if not user else user + user = self.API_EMAIL if not user else user if token: headers = self.make_auth_header(token) return self.call_api( diff --git a/mgrctl/settings/api.py b/mgrctl/settings/api.py index 0543ee7..28610c8 100644 --- a/mgrctl/settings/api.py +++ b/mgrctl/settings/api.py @@ -1,20 +1,30 @@ from requests.packages import urllib3 + from mgrctl.settings.platform import ( PLATFORM_TYPE, - PLATFORM_VERIFY_SSL_WARNING + PLATFORM_VERIFY_SSL, + PLATFORM_VERIFY_SSL_WARNING, + PLATFORM_DUMMY, + PLATFORM_DUMMY_API_URL, + PLATFORM_DUMMY_EMAIL, + PLATFORM_DUMMY_PASSWORD, + PLATFORM_DUMMY_TOKEN, ) # Name of nginx container: -INPUT_HOSTNAME = 'input' if PLATFORM_TYPE == 'vm' else 'dci_input_1' +API_INPUT_HOSTNAME = 'input' if PLATFORM_TYPE == 'vm' else 'dci_input_1' # Port that nginx container is listening: -INPUT_PORT = '1500' +API_INPUT_PORT = '1500' # Internal API url: -INPUT_URL = f'http://{INPUT_HOSTNAME}:{INPUT_PORT}' +API_URL = f'http://{API_INPUT_HOSTNAME}:{API_INPUT_PORT}' # Headers for internal auth: -HEADERS = {"Internal-Auth": "on", "Accept": "application/json"} +API_HEADERS = {"Internal-Auth": "on", "Accept": "application/json"} + +# Alias for import: +API_VERIFY_SSL = PLATFORM_VERIFY_SSL # Suppress warning from urllib3: if not PLATFORM_VERIFY_SSL_WARNING: @@ -23,3 +33,10 @@ if not PLATFORM_VERIFY_SSL_WARNING: urllib3.disable_warnings( category=urllib3.exceptions.InsecureRequestWarning ) + +# Development mode: +if PLATFORM_DUMMY: + API_URL = PLATFORM_DUMMY_API_URL + API_HEADERS = {'x-xsrf-token': PLATFORM_DUMMY_TOKEN} + API_EMAIL = PLATFORM_DUMMY_EMAIL + API_PASSWORD = PLATFORM_DUMMY_PASSWORD diff --git a/mgrctl/settings/platform.py b/mgrctl/settings/platform.py index b8cdfaf..8d79a8b 100644 --- a/mgrctl/settings/platform.py +++ b/mgrctl/settings/platform.py @@ -22,12 +22,14 @@ PLATFORM_URL = env.str( # Development mode: PLATFORM_DUMMY = env.bool('PLATFORM_DUMMY', False) -PLATFORM_DUMMY_VM6_API_URL = env.str('PLATFORM_DUMMY_VM6_API_URL', '') -PLATFORM_DUMMY_VM6_EMAIL = env.str('PLATFORM_DUMMY_VM6_EMAIL', '') -PLATFORM_DUMMY_VM6_PASSWORD = env.str('PLATFORM_DUMMY_VM6_PASSWORD', '') -PLATFORM_DUMMY_VM6_TOKEN = env.str('PLATFORM_DUMMY_VM6_TOKEN', '') - -PLATFORM_DUMMY_DCI6_API_URL = env.str('PLATFORM_DUMMY_DCI6_API_URL', '') -PLATFORM_DUMMY_DCI6_EMAIL = env.str('PLATFORM_DUMMY_DCI6_EMAIL', '') -PLATFORM_DUMMY_DCI6_PASSWORD = env.str('PLATFORM_DUMMY_DCI6_PASSWORD', '') -PLATFORM_DUMMY_DCI6_TOKEN = env.str('PLATFORM_DUMMY_DCI6_TOKEN', '') +if PLATFORM_DUMMY: + if PLATFORM_TYPE == 'vm': + PLATFORM_DUMMY_API_URL = env.str('PLATFORM_DUMMY_VM6_API_URL', '') + PLATFORM_DUMMY_EMAIL = env.str('PLATFORM_DUMMY_VM6_EMAIL', '') + PLATFORM_DUMMY_PASSWORD = env.str('PLATFORM_DUMMY_VM6_PASSWORD', '') + PLATFORM_DUMMY_TOKEN = env.str('PLATFORM_DUMMY_VM6_TOKEN', '') + if PLATFORM_TYPE == 'dci': + PLATFORM_DUMMY_API_URL = env.str('PLATFORM_DUMMY_DCI6_API_URL', '') + PLATFORM_DUMMY_EMAIL = env.str('PLATFORM_DUMMY_DCI6_EMAIL', '') + PLATFORM_DUMMY_PASSWORD = env.str('PLATFORM_DUMMY_DCI6_PASSWORD', '') + PLATFORM_DUMMY_TOKEN = env.str('PLATFORM_DUMMY_DCI6_TOKEN', '')