forked from ISPsystem/isp-maintenance
		
	Update: dockerize app, rename pkg to mgrctl, fix imports
This commit is contained in:
		
							parent
							
								
									34e8118327
								
							
						
					
					
						commit
						0f96d0f956
					
				
							
								
								
									
										5
									
								
								.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.dockerignore
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | docker-compose.yml | ||||||
|  | .gitignore | ||||||
|  | .env | ||||||
|  | .git | ||||||
|  | .cache | ||||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -163,3 +163,4 @@ cython_debug/ | |||||||
| 
 | 
 | ||||||
| # Project specific | # Project specific | ||||||
| config.json | config.json | ||||||
|  | **/dummy_platform | ||||||
|  | |||||||
							
								
								
									
										61
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										61
									
								
								Dockerfile
									
									
									
									
									
								
							| @ -1,10 +1,59 @@ | |||||||
|  | # app/Dockerfile | ||||||
|  | 
 | ||||||
|  | # pull the official docker image | ||||||
|  | FROM python:3.11-alpine as poetry-base | ||||||
|  | 
 | ||||||
|  | # default build args | ||||||
|  | ARG APP_VERSION=0.1.0 \ | ||||||
|  |     APP_DIR=/app \ | ||||||
|  |     SRC_DIR=./mgrctl \ | ||||||
|  |     PKG_NAME=mgrctl \ | ||||||
|  |     PKG_VERSION=0.1.0 | ||||||
|  | 
 | ||||||
|  | # set env variables | ||||||
|  | ENV APP_NAME=mgrctl \ | ||||||
|  |     # Python3: | ||||||
|  |     PYTHONFAULTHANDLER=1 \ | ||||||
|  |     PYTHONUNBUFFERED=1 \ | ||||||
|  |     PYTHONHASHSEED=random \ | ||||||
|  |     # Pip: | ||||||
|  |     PIP_NO_CACHE_DIR=on \ | ||||||
|  |     PIP_DISABLE_PIP_VERSION_CHECK=on \ | ||||||
|  |     PIP_ROOT_USER_ACTION=ignore \ | ||||||
|  |     PIP_DEFAULT_TIMEOUT=100 \ | ||||||
|  |     # Poetry: | ||||||
|  |     POETRY_NO_INTERACTION=1 \ | ||||||
|  |     POETRY_VIRTUALENVS_CREATE=false \ | ||||||
|  |     POETRY_CACHE_DIR='/var/cache/pypoetry' \ | ||||||
|  |     POETRY_HOME='/usr/local' \ | ||||||
|  |     POETRY_VERSION=1.7.1 | ||||||
|  | 
 | ||||||
|  | # install system deps | ||||||
|  | RUN apk --no-cache add curl \ | ||||||
|  |     && curl -sSL https://install.python-poetry.org | python3 - \ | ||||||
|  |     && mkdir ${APP_DIR} | ||||||
|  | 
 | ||||||
|  | COPY ./pyproject.toml ./poetry.lock ./README.md ${APP_DIR} | ||||||
|  | COPY ${SRC_DIR} ${APP_DIR}/${PKG_NAME} | ||||||
|  | 
 | ||||||
|  | # set workdir | ||||||
|  | WORKDIR ${APP_DIR} | ||||||
|  | 
 | ||||||
|  | # build pkg whl | ||||||
|  | RUN poetry build --format wheel \ | ||||||
|  |     && pip install ${APP_DIR}/dist/${PKG_NAME}-${PKG_VERSION}-py3-none-any.whl \ | ||||||
|  |     && rm -r /usr/local/venv | ||||||
|  | 
 | ||||||
|  | # now multistage builds | ||||||
| FROM python:3.11-alpine | FROM python:3.11-alpine | ||||||
| 
 | 
 | ||||||
| WORKDIR /app | # copy app and dependences | ||||||
|  | COPY --from=poetry-base /usr/local/ /usr/local/ | ||||||
| 
 | 
 | ||||||
| COPY requirements.txt ./ | # install bash and mgrctl shell completion | ||||||
| RUN pip install --no-cache-dir --root-user-action=ignore -r requirements.txt | RUN apk --no-cache add bash \ | ||||||
|  |     && echo 'eval "$(_MGRCTL_COMPLETE=bash_source mgrctl)"' > ~/.bashrc | ||||||
| 
 | 
 | ||||||
| COPY main.py . | # "demonize" container | ||||||
| 
 | # use docker attach mgrctl or docker exec -it mgrctl mgrctl --help for example | ||||||
| CMD [ "python", "-u", "main.py" ] | CMD [ "bash"] | ||||||
|  | |||||||
							
								
								
									
										59
									
								
								docker-compose.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								docker-compose.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | |||||||
|  | # ? docker-compose.yml for development environment | ||||||
|  | 
 | ||||||
|  | # ! To start development you need to create a directory ./dummy_platform. | ||||||
|  | # ? Place files from the test platform into it: | ||||||
|  | # ? VM6: | ||||||
|  | # ?     /opt/ispsystem/vm/config.json - configuration file | ||||||
|  | # ?     /opt/ispsystem/vm/mysql - database directory | ||||||
|  | # ? DCI6: | ||||||
|  | # ?     /opt/ispsystem/dci/config.json - configuration file | ||||||
|  | # ?     /opt/ispsystem/dci/mysql - database directory | ||||||
|  | 
 | ||||||
|  | # ? Create ./.env file and fill it with required vars: | ||||||
|  | # ? PLATFORM_TYPE='vm' | ||||||
|  | # ? Database container: | ||||||
|  | # ? MYSQL_DATABASE="database name" | ||||||
|  | # ? MYSQL_ROOT_PASSWORD="super secret password from config.json" | ||||||
|  | 
 | ||||||
|  | # ? Launch:  | ||||||
|  | # ?     docker-compose up -d --force-recreate | ||||||
|  | # ?     docker attach mgrctl | ||||||
|  | 
 | ||||||
|  | services: | ||||||
|  |   mgrctl: | ||||||
|  |     container_name: mgrctl | ||||||
|  |     restart: unless-stopped | ||||||
|  |     build: | ||||||
|  |       context: . | ||||||
|  |       args: | ||||||
|  |         - APP_VERSION=${APP_VERSION} | ||||||
|  |         - APP_DIR=${APP_DIR} | ||||||
|  |         - SRC_DIR=${SRC_DIR} | ||||||
|  |         - PKG_NAME=${PKG_NAME} | ||||||
|  |         - PKG_VERSION=${PKG_VERSION} | ||||||
|  |     networks: | ||||||
|  |       vm_box_net: null | ||||||
|  |     volumes: | ||||||
|  |       - type: bind | ||||||
|  |         source: ./dummy_platform/opt/ispsystem/${PLATFORM_TYPE}/config.json | ||||||
|  |         target: /opt/ispsystem/${PLATFORM_TYPE}/config.json | ||||||
|  |     env_file: | ||||||
|  |       - ./.env | ||||||
|  |     tty: true | ||||||
|  |     stdin_open: true | ||||||
|  |   mysql: | ||||||
|  |     container_name: mysql | ||||||
|  |     image: docker-registry.ispsystem.com/mysql:5 | ||||||
|  |     volumes: | ||||||
|  |       - ./dummy_platform/opt/ispsystem/${PLATFORM_TYPE}/mysql:/var/lib/mysql | ||||||
|  |     env_file: | ||||||
|  |       - ./.env | ||||||
|  |     labels: | ||||||
|  |       autoconf_mysql: "true" | ||||||
|  |     networks: | ||||||
|  |       vm_box_net: null | ||||||
|  |     command: --group-concat-max-len=131072 --max-connections=1000 --optimizer-search-depth=0 | ||||||
|  | 
 | ||||||
|  | networks: | ||||||
|  |   vm_box_net: | ||||||
|  |     driver: bridge | ||||||
| @ -1,12 +0,0 @@ | |||||||
| import click |  | ||||||
| from cli.lazy_group import LazyGroup |  | ||||||
| from settings.general import INSTALLED_APPS |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| @click.group( |  | ||||||
|     cls=LazyGroup, |  | ||||||
|     lazy_subcommands=INSTALLED_APPS['vm6'], |  | ||||||
|     help='vm6 command for lazy example', |  | ||||||
| ) |  | ||||||
| def cli(): |  | ||||||
|     pass |  | ||||||
| @ -1,13 +0,0 @@ | |||||||
| import click |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| @click.group(help='nodes command for lazy example') |  | ||||||
| def cli(): |  | ||||||
|     pass |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| @cli.command(name='list') |  | ||||||
| def nodes_list(): |  | ||||||
|     click.echo('NODES LIST: etc...') |  | ||||||
|     for num in range(1, 10): |  | ||||||
|         click.echo(num) |  | ||||||
| @ -1,21 +0,0 @@ | |||||||
| #!/usr/bin/env python3 |  | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| import click |  | ||||||
| 
 |  | ||||||
| from cli.lazy_group import LazyGroup |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| @click.group( |  | ||||||
|     cls=LazyGroup, |  | ||||||
|     lazy_subcommands={ |  | ||||||
|         'vm6': 'apps.vm6.commands.cli', |  | ||||||
|         'dci6': 'apps.dci6.commands.cli', |  | ||||||
|     }, |  | ||||||
|     help='main CLI command for lazy example', |  | ||||||
| ) |  | ||||||
| def cli(): |  | ||||||
|     pass |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| if __name__ == '__main__': |  | ||||||
|     cli() |  | ||||||
| @ -1,13 +0,0 @@ | |||||||
| from settings.environment import env |  | ||||||
| from settings.general import BASE_DIR |  | ||||||
| from utils.helpers import parse_json_file |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| PLATFORM_TYPE = env.str('PLATFORM_TYPE', 'vm') |  | ||||||
| 
 |  | ||||||
| PLATFORM_CONFIG = parse_json_file(f'{BASE_DIR}/config.json') |  | ||||||
| 
 |  | ||||||
| PLATFORM_URL = env.url( |  | ||||||
|     'PLATFORM_URL', |  | ||||||
|     f"https://{PLATFORM_CONFIG.get('DomainName' ,'replace.me')}" |  | ||||||
| ) |  | ||||||
							
								
								
									
										15
									
								
								mgrctl/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								mgrctl/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | # █▀▄▀█ █▀▀ ▀█▀ ▄▀█ ▀ | ||||||
|  | # █░▀░█ ██▄ ░█░ █▀█ ▄ | ||||||
|  | # -- -- -- -- -- -- - | ||||||
|  | __author__ = "MOIS3Y, a.garaev, Failak3, Ann_M" | ||||||
|  | __credits__ = [ | ||||||
|  |     "Stepan Zhukovsky", | ||||||
|  |     "Arthur Garaev", | ||||||
|  |     "Vladislav Shmidt", | ||||||
|  |     "Anna Moskovkina" | ||||||
|  | ] | ||||||
|  | __license__ = "MIT" | ||||||
|  | __version__ = "0.1.0" | ||||||
|  | __maintainer__ = "Stepan Zhukovsky" | ||||||
|  | __email__ = "stepan@zhukovsky.me" | ||||||
|  | __status__ = "Development" | ||||||
| @ -3,7 +3,7 @@ import json | |||||||
| import urllib | import urllib | ||||||
| import requests | import requests | ||||||
| 
 | 
 | ||||||
| from settings.api import INPUT_HOSTNAME, INPUT_PORT, HEADERS | from mgrctl.settings.api import INPUT_HOSTNAME, INPUT_PORT, HEADERS | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class BaseAPI(object): | class BaseAPI(object): | ||||||
| @ -61,6 +61,12 @@ class BaseAPI(object): | |||||||
|             print(response) |             print(response) | ||||||
|             raise sys.exit() |             raise sys.exit() | ||||||
| 
 | 
 | ||||||
|  |     def get(self, url, headers={}, data={}): | ||||||
|  |         return self.call_api(url, headers, data, method='GET') | ||||||
|  | 
 | ||||||
|  |     def post(self, url, headers={}, data={}): | ||||||
|  |         return self.call_api(url, headers, data, method='POST') | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| class BaseAuthAPI(BaseAPI): | class BaseAuthAPI(BaseAPI): | ||||||
|     def __init__(self, api_url=None, verify_ssl=True): |     def __init__(self, api_url=None, verify_ssl=True): | ||||||
| @ -1,4 +1,4 @@ | |||||||
| from api.base import BaseAPI, BaseAuthAPI, BaseDnsProxyAPI, BaseIpAPI | from mgrctl.api.base import BaseAPI, BaseAuthAPI, BaseDnsProxyAPI, BaseIpAPI | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class AuthAPI(BaseAuthAPI): | class AuthAPI(BaseAuthAPI): | ||||||
| @ -1,4 +1,4 @@ | |||||||
| from api.base import BaseAPI, BaseAuthAPI, BaseDnsProxyAPI, BaseIpAPI | from mgrctl.api.base import BaseAPI, BaseAuthAPI, BaseDnsProxyAPI, BaseIpAPI | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class AuthAPI(BaseAuthAPI): | class AuthAPI(BaseAuthAPI): | ||||||
							
								
								
									
										15
									
								
								mgrctl/apps/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								mgrctl/apps/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | # █▀▄▀█ █▀▀ ▀█▀ ▄▀█ ▀ | ||||||
|  | # █░▀░█ ██▄ ░█░ █▀█ ▄ | ||||||
|  | # -- -- -- -- -- -- - | ||||||
|  | __author__ = "MOIS3Y, a.garaev, Failak3, Ann_M" | ||||||
|  | __credits__ = [ | ||||||
|  |     "Stepan Zhukovsky", | ||||||
|  |     "Arthur Garaev", | ||||||
|  |     "Vladislav Shmidt", | ||||||
|  |     "Anna Moskovkina" | ||||||
|  | ] | ||||||
|  | __license__ = "MIT" | ||||||
|  | __version__ = "0.1.0" | ||||||
|  | __maintainer__ = "Stepan Zhukovsky" | ||||||
|  | __email__ = "stepan@zhukovsky.me" | ||||||
|  | __status__ = "Development" | ||||||
							
								
								
									
										15
									
								
								mgrctl/apps/dci6/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								mgrctl/apps/dci6/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | # █▀▄▀█ █▀▀ ▀█▀ ▄▀█ ▀ | ||||||
|  | # █░▀░█ ██▄ ░█░ █▀█ ▄ | ||||||
|  | # -- -- -- -- -- -- - | ||||||
|  | __author__ = "MOIS3Y, a.garaev, Failak3, Ann_M" | ||||||
|  | __credits__ = [ | ||||||
|  |     "Stepan Zhukovsky", | ||||||
|  |     "Arthur Garaev", | ||||||
|  |     "Vladislav Shmidt", | ||||||
|  |     "Anna Moskovkina" | ||||||
|  | ] | ||||||
|  | __license__ = "MIT" | ||||||
|  | __version__ = "0.1.0" | ||||||
|  | __maintainer__ = "Stepan Zhukovsky" | ||||||
|  | __email__ = "stepan@zhukovsky.me" | ||||||
|  | __status__ = "Development" | ||||||
| @ -1,7 +1,7 @@ | |||||||
| import click | import click | ||||||
| 
 | 
 | ||||||
| from cli.lazy_group import LazyGroup | from mgrctl.cli.lazy_group import LazyGroup | ||||||
| from settings.general import INSTALLED_APPS | from mgrctl.settings.general import INSTALLED_APPS | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @click.group( | @click.group( | ||||||
							
								
								
									
										15
									
								
								mgrctl/apps/vm6/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								mgrctl/apps/vm6/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | # █▀▄▀█ █▀▀ ▀█▀ ▄▀█ ▀ | ||||||
|  | # █░▀░█ ██▄ ░█░ █▀█ ▄ | ||||||
|  | # -- -- -- -- -- -- - | ||||||
|  | __author__ = "MOIS3Y, a.garaev, Failak3, Ann_M" | ||||||
|  | __credits__ = [ | ||||||
|  |     "Stepan Zhukovsky", | ||||||
|  |     "Arthur Garaev", | ||||||
|  |     "Vladislav Shmidt", | ||||||
|  |     "Anna Moskovkina" | ||||||
|  | ] | ||||||
|  | __license__ = "MIT" | ||||||
|  | __version__ = "0.1.0" | ||||||
|  | __maintainer__ = "Stepan Zhukovsky" | ||||||
|  | __email__ = "stepan@zhukovsky.me" | ||||||
|  | __status__ = "Development" | ||||||
							
								
								
									
										10
									
								
								mgrctl/apps/vm6/auth/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								mgrctl/apps/vm6/auth/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | # █▀▄▀█ █▀▀ ▀█▀ ▄▀█ ▀ | ||||||
|  | # █░▀░█ ██▄ ░█░ █▀█ ▄ | ||||||
|  | # -- -- -- -- -- -- - | ||||||
|  | __author__ = "MOIS3Y" | ||||||
|  | __credits__ = ["Stepan Zhukovsky"] | ||||||
|  | __license__ = "MIT" | ||||||
|  | __version__ = "0.1.0" | ||||||
|  | __maintainer__ = "Stepan Zhukovsky" | ||||||
|  | __email__ = "stepan@zhukovsky.me" | ||||||
|  | __status__ = "Development" | ||||||
| @ -1,10 +1,17 @@ | |||||||
| import click | import click | ||||||
| 
 | 
 | ||||||
| from db.vm6.databases import isp_database | from mgrctl.db.vm6.databases import isp_database | ||||||
| from db.vm6.models import AuthUser | from mgrctl.db.vm6.models import AuthUser | ||||||
|  | 
 | ||||||
|  | from mgrctl.apps.vm6.auth import __version__ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @click.group(help='access command for lazy example') | @click.group(help='auth cmd for auth in VMmanager 6') | ||||||
|  | @click.version_option( | ||||||
|  |     version=__version__, | ||||||
|  |     package_name='mgrctl.apps.vm6.auth', | ||||||
|  |     message=__version__ | ||||||
|  | ) | ||||||
| def cli(): | def cli(): | ||||||
|     pass |     pass | ||||||
| 
 | 
 | ||||||
							
								
								
									
										19
									
								
								mgrctl/apps/vm6/commands.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								mgrctl/apps/vm6/commands.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | import click | ||||||
|  | 
 | ||||||
|  | from mgrctl.cli.lazy_group import LazyGroup | ||||||
|  | from mgrctl.settings.general import INSTALLED_APPS | ||||||
|  | from mgrctl.apps.vm6 import __version__ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @click.group( | ||||||
|  |     cls=LazyGroup, | ||||||
|  |     lazy_subcommands=INSTALLED_APPS['vm6'], | ||||||
|  |     help='vm6 command for lazy example', | ||||||
|  | ) | ||||||
|  | @click.version_option( | ||||||
|  |     version=__version__, | ||||||
|  |     package_name='mgrctl', | ||||||
|  |     message=__version__ | ||||||
|  | ) | ||||||
|  | def cli(): | ||||||
|  |     pass | ||||||
| @ -1,5 +1,5 @@ | |||||||
| from peewee import MySQLDatabase, PostgresqlDatabase | from peewee import MySQLDatabase, PostgresqlDatabase | ||||||
| from settings.db import ( | from mgrctl.settings.db import ( | ||||||
|     DB_ENGINE, |     DB_ENGINE, | ||||||
|     DB_HOST, |     DB_HOST, | ||||||
|     DB_PORT, |     DB_PORT, | ||||||
| @ -1,4 +1,4 @@ | |||||||
| from db.connection import guess_database | from mgrctl.db.connection import guess_database | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # The variable will contain an object of | # The variable will contain an object of | ||||||
| @ -11,8 +11,8 @@ from peewee import ( | |||||||
|     TextField, |     TextField, | ||||||
|     SQL |     SQL | ||||||
| ) | ) | ||||||
| from db.common import UnknownField | from mgrctl.db.common import UnknownField | ||||||
| from db.dci6.databases import auth_database | from mgrctl.db.dci6.databases import auth_database | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class BaseModel(Model): | class BaseModel(Model): | ||||||
| @ -1,4 +1,4 @@ | |||||||
| from db.connection import guess_database | from mgrctl.db.connection import guess_database | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # The variable will contain an object of | # The variable will contain an object of | ||||||
| @ -12,8 +12,8 @@ from peewee import ( | |||||||
|     TextField, |     TextField, | ||||||
|     SQL |     SQL | ||||||
| ) | ) | ||||||
| from db.common import UnknownField, JSONField | from mgrctl.db.common import UnknownField, JSONField | ||||||
| from db.vm6.databases import isp_database | from mgrctl.db.vm6.databases import isp_database | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class BaseModel(Model): | class BaseModel(Model): | ||||||
							
								
								
									
										32
									
								
								mgrctl/mgrctl.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										32
									
								
								mgrctl/mgrctl.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,32 @@ | |||||||
|  | #!/usr/bin/env python3 | ||||||
|  | # -*- coding: utf-8 -*- | ||||||
|  | 
 | ||||||
|  | # █▀▄▀█ █▀▀ █▀█ █▀▀ ▀█▀ █░░ ▀ | ||||||
|  | # █░▀░█ █▄█ █▀▄ █▄▄ ░█░ █▄▄ ▄ | ||||||
|  | # -- -- -- -- -- -- -- -- -- | ||||||
|  | 
 | ||||||
|  | import click | ||||||
|  | 
 | ||||||
|  | from mgrctl import __version__ | ||||||
|  | from mgrctl.cli.lazy_group import LazyGroup | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @click.group( | ||||||
|  |     cls=LazyGroup, | ||||||
|  |     lazy_subcommands={ | ||||||
|  |         'vm6': 'mgrctl.apps.vm6.commands.cli', | ||||||
|  |         'dci6': 'mgrctl.apps.dci6.commands.cli', | ||||||
|  |     }, | ||||||
|  |     help='main CLI command for lazy example', | ||||||
|  | ) | ||||||
|  | @click.version_option( | ||||||
|  |     version=__version__, | ||||||
|  |     package_name='mgrctl', | ||||||
|  |     message=__version__ | ||||||
|  | ) | ||||||
|  | def cli(): | ||||||
|  |     pass | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     cli() | ||||||
| @ -1,12 +1,12 @@ | |||||||
| from settings.general import BASE_DIR | from mgrctl.settings.general import BASE_DIR | ||||||
| 
 | 
 | ||||||
| from settings.platform import ( | from mgrctl.settings.platform import ( | ||||||
|     PLATFORM_TYPE, |     PLATFORM_TYPE, | ||||||
|     PLATFORM_URL, |     PLATFORM_URL, | ||||||
|     PLATFORM_CONFIG |     PLATFORM_CONFIG | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| from settings.db import( | from mgrctl.settings.db import( | ||||||
|     DB_ENGINE, |     DB_ENGINE, | ||||||
|     DB_HOST, |     DB_HOST, | ||||||
|     DB_PORT, |     DB_PORT, | ||||||
| @ -1,4 +1,4 @@ | |||||||
| from settings.platform import PLATFORM_TYPE | from mgrctl.settings.platform import PLATFORM_TYPE | ||||||
| 
 | 
 | ||||||
| # Name of nginx container: | # Name of nginx container: | ||||||
| INPUT_HOSTNAME = 'input' if PLATFORM_TYPE == 'vm' else 'dci_input_1' | INPUT_HOSTNAME = 'input' if PLATFORM_TYPE == 'vm' else 'dci_input_1' | ||||||
| @ -1,5 +1,5 @@ | |||||||
| from settings.environment import env | from mgrctl.settings.environment import env | ||||||
| from settings.platform import PLATFORM_CONFIG | from mgrctl.settings.platform import PLATFORM_CONFIG | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # ! Required because some instance use psql db: | # ! Required because some instance use psql db: | ||||||
| @ -6,10 +6,9 @@ BASE_DIR = pathlib.Path(__file__).resolve().parent.parent | |||||||
| 
 | 
 | ||||||
| INSTALLED_APPS = { | INSTALLED_APPS = { | ||||||
|     'vm6': { |     'vm6': { | ||||||
|         'access': 'apps.vm6.access.commands.cli', |         'auth': 'mgrctl.apps.vm6.auth.commands.cli', | ||||||
|         'nodes': 'apps.vm6.nodes.commands.cli', |  | ||||||
|     }, |     }, | ||||||
|     'dci6': { |     'dci6': { | ||||||
|         'access': 'apps.dci6.access.commands.cli', |         'auth': 'mgrctl.apps.dci6.auth.commands.cli', | ||||||
|     }, |     }, | ||||||
| } | } | ||||||
							
								
								
									
										17
									
								
								mgrctl/settings/platform.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								mgrctl/settings/platform.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | from mgrctl.settings.environment import env | ||||||
|  | from mgrctl.utils.helpers import parse_json_file | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | PLATFORM_TYPE = env.str('PLATFORM_TYPE', 'vm') | ||||||
|  | 
 | ||||||
|  | PLATFORM_CONFIG = env.str( | ||||||
|  |     'PLATFORM_CONFIG', | ||||||
|  |     f'/opt/ispsystem/{PLATFORM_TYPE}/config.json' | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | PLATFORM_CONFIG = parse_json_file(PLATFORM_CONFIG) | ||||||
|  | 
 | ||||||
|  | PLATFORM_URL = env.url( | ||||||
|  |     'PLATFORM_URL', | ||||||
|  |     f"https://{PLATFORM_CONFIG.get('DomainName' ,'replace.me')}" | ||||||
|  | ) | ||||||
| @ -1,8 +1,9 @@ | |||||||
| import json | import json | ||||||
| import sys | import sys | ||||||
|  | import click | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def parse_json_file(file_path):  | def parse_json_file(file_path: str) -> dict: | ||||||
|     """ |     """ | ||||||
|     Function read json file as usual config.json then parse it to python dict |     Function read json file as usual config.json then parse it to python dict | ||||||
| 
 | 
 | ||||||
| @ -16,5 +17,7 @@ def parse_json_file(file_path): | |||||||
|         with open(file_path, 'r') as f: |         with open(file_path, 'r') as f: | ||||||
|             return json.load(f) |             return json.load(f) | ||||||
|     except Exception as error: |     except Exception as error: | ||||||
|         print(error) |         click.echo(error) | ||||||
|  |         click.echo("Required: /opt/ispsystem/PLATFORM_TYPE/config.json") | ||||||
|  |         click.echo("Note: don't forget to mount this file into the container") | ||||||
|         sys.exit(1) |         sys.exit(1) | ||||||
| @ -1,8 +1,13 @@ | |||||||
| [tool.poetry] | [tool.poetry] | ||||||
| name = "isp-maintenance" | name = "mgrctl" | ||||||
| version = "0.1.0" | version = "0.1.0" | ||||||
| description = "Maintenance service for ISPsystem platforms" | description = "Maintenance service for ISPsystem platforms" | ||||||
| authors = ["MOIS3Y <s.zhukovskii@ispsystem.com>", "Failak3 <v.shmidt@ispsystem.com>", "a.garaev <a.garaev@ispsystem.com>", "Ann_M <a.moskovkina@ispsystem.com>"] | authors = [ | ||||||
|  |     "MOIS3Y <s.zhukovskii@ispsystem.com>", | ||||||
|  |     "Failak3 <v.shmidt@ispsystem.com>", | ||||||
|  |     "a.garaev <a.garaev@ispsystem.com>", | ||||||
|  |     "Ann_M <a.moskovkina@ispsystem.com>" | ||||||
|  | ] | ||||||
| license = "MIT" | license = "MIT" | ||||||
| readme = "README.md" | readme = "README.md" | ||||||
| 
 | 
 | ||||||
| @ -19,7 +24,9 @@ sh = "^2.0.7" | |||||||
| [tool.poetry.group.dev.dependencies] | [tool.poetry.group.dev.dependencies] | ||||||
| flake8 = "^7.0.0" | flake8 = "^7.0.0" | ||||||
| 
 | 
 | ||||||
|  | [tool.poetry.scripts] | ||||||
|  | mgrctl = 'mgrctl.mgrctl:cli' | ||||||
|  | 
 | ||||||
| [build-system] | [build-system] | ||||||
| requires = ["poetry-core"] | requires = ["poetry-core"] | ||||||
| build-backend = "poetry.core.masonry.api" | build-backend = "poetry.core.masonry.api" | ||||||
| 
 |  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user