Compare commits

..

No commits in common. "8ad5e2a230e49fdc238ae0a25427eecfb49839f8" and "72bfeb9193346a0e3233a3dbd51b331a2cb90c59" have entirely different histories.

4 changed files with 62 additions and 55 deletions

View File

@ -3,11 +3,11 @@
# ! To start development you need to create a directory ./dummy_platform. # ! To start development you need to create a directory ./dummy_platform.
# ? Place files from the test platform into it: # ? Place files from the test platform into it:
# ? VM6: # ? VM6:
# ? ./dummy_platform/opt/ispsystem/vm/config.json - configuration file # ? /opt/ispsystem/vm/config.json - configuration file
# ? ./dummy_platform/opt/ispsystem/vm/mysql - database directory # ? /opt/ispsystem/vm/mysql - database directory
# ? DCI6: # ? DCI6:
# ? ./dummy_platform/opt/ispsystem/dci/config.json - configuration file # ? /opt/ispsystem/dci/config.json - configuration file
# ? ./dummy_platform/opt/ispsystem/dci/mysql - database directory # ? /opt/ispsystem/dci/mysql - database directory
# ? Create ./.env file and fill it with required vars: # ? Create ./.env file and fill it with required vars:
# ? PLATFORM_TYPE='vm' # ? PLATFORM_TYPE='vm'
@ -56,5 +56,4 @@ services:
networks: networks:
vm_box_net: vm_box_net:
name: vm_box_net
driver: bridge driver: bridge

View File

@ -3,25 +3,52 @@ import json
import urllib import urllib
import requests import requests
from mgrctl.settings.api import ( from mgrctl.settings.api import INPUT_URL, HEADERS
API_URL, from mgrctl.settings.platform import (
API_HEADERS, PLATFORM_TYPE,
API_EMAIL, PLATFORM_VERIFY_SSL,
API_PASSWORD, PLATFORM_DUMMY,
API_VERIFY_SSL 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
) )
class BaseAPI(object): class BaseAPI(object):
def __init__(self): def __init__(self):
"""Announces required parameters""" """Announces required parameters"""
self.API_URL = API_URL if PLATFORM_TYPE == 'vm':
self.API_HEADERS = API_HEADERS if PLATFORM_DUMMY:
self.API_EMAIL = API_EMAIL self.API_URL = PLATFORM_DUMMY_VM6_API_URL
self.API_PASSWORD = API_PASSWORD self.AUTH_TYPE = 'Public'
self.API_VERIFY_SSL = API_VERIFY_SSL 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_VERSION = 'v3' self.API_VERSION = 'v3'
self.API_DEFINITION = 'api' self.API_DEFINITION = 'api'
self.VERIFY_SSL = PLATFORM_VERIFY_SSL
def _gen_request_url(self, url): def _gen_request_url(self, url):
return f'{self.API_URL}/{self.API_DEFINITION}/{self.API_VERSION}{url}' return f'{self.API_URL}/{self.API_DEFINITION}/{self.API_VERSION}{url}'
@ -31,21 +58,21 @@ class BaseAPI(object):
with requests.Session() as session: with requests.Session() as session:
try: try:
url = self._gen_request_url(url) url = self._gen_request_url(url)
headers = self.API_HEADERS if not headers else headers headers = self.HEADERS if not headers else headers
params_str = urllib.parse.urlencode(data, safe="+'()") params_str = urllib.parse.urlencode(data, safe="+'()")
if method == 'POST': if method == 'POST':
api_request = session.post( api_request = session.post(
url=url, url=url,
json=data, json=data,
headers=headers, headers=headers,
verify=self.API_VERIFY_SSL verify=self.VERIFY_SSL
) )
if method == 'GET': if method == 'GET':
url = f'{url}?{params_str}' if params_str else url url = f'{url}?{params_str}' if params_str else url
api_request = session.get( api_request = session.get(
url=url, url=url,
headers=headers, headers=headers,
verify=self.API_VERIFY_SSL verify=self.VERIFY_SSL
) )
except Exception as error: except Exception as error:
api_request = { api_request = {
@ -76,8 +103,8 @@ class BaseAuthAPI(BaseAPI):
self.API_DEFINITION = 'auth' self.API_DEFINITION = 'auth'
def get_auth_token(self, email=None, password=None) -> dict: def get_auth_token(self, email=None, password=None) -> dict:
email = self.API_EMAIL if not email else email email = self.EMAIL if not email else email
password = self.API_PASSWORD if not password else password password = self.PASSWORD if not password else password
return self.call_api( return self.call_api(
url='/public/token', url='/public/token',
method='POST', method='POST',
@ -86,7 +113,7 @@ class BaseAuthAPI(BaseAPI):
def get_auth_key(self, token=None, user=None) -> dict: def get_auth_key(self, token=None, user=None) -> dict:
headers = {} headers = {}
user = self.API_EMAIL if not user else user user = self.EMAIL if not user else user
if token: if token:
headers = self.make_auth_header(token) headers = self.make_auth_header(token)
return self.call_api( return self.call_api(

View File

@ -1,30 +1,20 @@
from requests.packages import urllib3 from requests.packages import urllib3
from mgrctl.settings.platform import ( from mgrctl.settings.platform import (
PLATFORM_TYPE, PLATFORM_TYPE,
PLATFORM_VERIFY_SSL, PLATFORM_VERIFY_SSL_WARNING
PLATFORM_VERIFY_SSL_WARNING,
PLATFORM_DUMMY,
PLATFORM_DUMMY_API_URL,
PLATFORM_DUMMY_EMAIL,
PLATFORM_DUMMY_PASSWORD,
PLATFORM_DUMMY_TOKEN,
) )
# Name of nginx container: # Name of nginx container:
API_INPUT_HOSTNAME = 'input' if PLATFORM_TYPE == 'vm' else 'dci_input_1' INPUT_HOSTNAME = 'input' if PLATFORM_TYPE == 'vm' else 'dci_input_1'
# Port that nginx container is listening: # Port that nginx container is listening:
API_INPUT_PORT = '1500' INPUT_PORT = '1500'
# Internal API url: # Internal API url:
API_URL = f'http://{API_INPUT_HOSTNAME}:{API_INPUT_PORT}' INPUT_URL = f'http://{INPUT_HOSTNAME}:{INPUT_PORT}'
# Headers for internal auth: # Headers for internal auth:
API_HEADERS = {"Internal-Auth": "on", "Accept": "application/json"} HEADERS = {"Internal-Auth": "on", "Accept": "application/json"}
# Alias for import:
API_VERIFY_SSL = PLATFORM_VERIFY_SSL
# Suppress warning from urllib3: # Suppress warning from urllib3:
if not PLATFORM_VERIFY_SSL_WARNING: if not PLATFORM_VERIFY_SSL_WARNING:
@ -33,10 +23,3 @@ if not PLATFORM_VERIFY_SSL_WARNING:
urllib3.disable_warnings( urllib3.disable_warnings(
category=urllib3.exceptions.InsecureRequestWarning 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

View File

@ -22,14 +22,12 @@ PLATFORM_URL = env.str(
# Development mode: # Development mode:
PLATFORM_DUMMY = env.bool('PLATFORM_DUMMY', False) PLATFORM_DUMMY = env.bool('PLATFORM_DUMMY', False)
if PLATFORM_DUMMY: PLATFORM_DUMMY_VM6_API_URL = env.str('PLATFORM_DUMMY_VM6_API_URL', '')
if PLATFORM_TYPE == 'vm': PLATFORM_DUMMY_VM6_EMAIL = env.str('PLATFORM_DUMMY_VM6_EMAIL', '')
PLATFORM_DUMMY_API_URL = env.str('PLATFORM_DUMMY_VM6_API_URL', '') PLATFORM_DUMMY_VM6_PASSWORD = env.str('PLATFORM_DUMMY_VM6_PASSWORD', '')
PLATFORM_DUMMY_EMAIL = env.str('PLATFORM_DUMMY_VM6_EMAIL', '') PLATFORM_DUMMY_VM6_TOKEN = env.str('PLATFORM_DUMMY_VM6_TOKEN', '')
PLATFORM_DUMMY_PASSWORD = env.str('PLATFORM_DUMMY_VM6_PASSWORD', '')
PLATFORM_DUMMY_TOKEN = env.str('PLATFORM_DUMMY_VM6_TOKEN', '') PLATFORM_DUMMY_DCI6_API_URL = env.str('PLATFORM_DUMMY_DCI6_API_URL', '')
if PLATFORM_TYPE == 'dci': PLATFORM_DUMMY_DCI6_EMAIL = env.str('PLATFORM_DUMMY_DCI6_EMAIL', '')
PLATFORM_DUMMY_API_URL = env.str('PLATFORM_DUMMY_DCI6_API_URL', '') PLATFORM_DUMMY_DCI6_PASSWORD = env.str('PLATFORM_DUMMY_DCI6_PASSWORD', '')
PLATFORM_DUMMY_EMAIL = env.str('PLATFORM_DUMMY_DCI6_EMAIL', '') PLATFORM_DUMMY_DCI6_TOKEN = env.str('PLATFORM_DUMMY_DCI6_TOKEN', '')
PLATFORM_DUMMY_PASSWORD = env.str('PLATFORM_DUMMY_DCI6_PASSWORD', '')
PLATFORM_DUMMY_TOKEN = env.str('PLATFORM_DUMMY_DCI6_TOKEN', '')