mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-04-18 21:44:02 +03:00
[add] cluster api client class [fix] cli cluster_app using cluster api client [add] ClusterAction Enum [add] toggle_cluster_state function to reduce code duplication
91 lines
3.7 KiB
Python
91 lines
3.7 KiB
Python
"""Module contains constants values for cmapi, failover and other .py files.
|
|
|
|
TODO: move main constant paths here and replace in files in next releases.
|
|
"""
|
|
import os
|
|
from typing import NamedTuple
|
|
|
|
|
|
# default MARIADB ColumnStore config path
|
|
MCS_ETC_PATH = '/etc/columnstore'
|
|
DEFAULT_MCS_CONF_PATH = os.path.join(MCS_ETC_PATH, 'Columnstore.xml')
|
|
|
|
# default Storage Manager config path
|
|
DEFAULT_SM_CONF_PATH = os.path.join(MCS_ETC_PATH, 'storagemanager.cnf')
|
|
|
|
# MCSDATADIR (in mcs engine code) and related paths
|
|
MCS_DATA_PATH = '/var/lib/columnstore'
|
|
MCS_MODULE_FILE_PATH = os.path.join(MCS_DATA_PATH, 'local/module')
|
|
EM_PATH_SUFFIX = 'data1/systemFiles/dbrm'
|
|
MCS_EM_PATH = os.path.join(MCS_DATA_PATH, EM_PATH_SUFFIX)
|
|
MCS_BRM_CURRENT_PATH = os.path.join(MCS_EM_PATH, 'BRM_saves_current')
|
|
S3_BRM_CURRENT_PATH = os.path.join(EM_PATH_SUFFIX, 'BRM_saves_current')
|
|
# keys file for CEJ password encryption\decryption
|
|
# (CrossEngineSupport section in Columnstore.xml)
|
|
MCS_SECRETS_FILE_PATH = os.path.join(MCS_DATA_PATH, '.secrets')
|
|
|
|
# CMAPI SERVER
|
|
CMAPI_CONFIG_FILENAME = 'cmapi_server.conf'
|
|
CMAPI_ROOT_PATH = os.path.dirname(__file__)
|
|
PROJECT_PATH = os.path.dirname(CMAPI_ROOT_PATH)
|
|
# path to VERSION file
|
|
VERSION_PATH = os.path.join(PROJECT_PATH, 'VERSION')
|
|
CMAPI_LOG_CONF_PATH = os.path.join(CMAPI_ROOT_PATH, 'cmapi_logger.conf')
|
|
# path to CMAPI default config
|
|
CMAPI_DEFAULT_CONF_PATH = os.path.join(CMAPI_ROOT_PATH, CMAPI_CONFIG_FILENAME)
|
|
# CMAPI config path
|
|
CMAPI_CONF_PATH = os.path.join(MCS_ETC_PATH, CMAPI_CONFIG_FILENAME)
|
|
|
|
# TOTP secret key
|
|
SECRET_KEY = 'MCSIsTheBestEver' # not just a random string! (base32)
|
|
|
|
|
|
# network constants
|
|
LOCALHOSTS = ('localhost', '127.0.0.1', '::1')
|
|
|
|
CMAPI_INSTALL_PATH = '/usr/share/columnstore/cmapi/'
|
|
CMAPI_PYTHON_BIN = os.path.join(CMAPI_INSTALL_PATH, "python/bin/python3")
|
|
CMAPI_PYTHON_DEPS_PATH = os.path.join(CMAPI_INSTALL_PATH, "deps")
|
|
CMAPI_PYTHON_BINARY_DEPS_PATH = os.path.join(CMAPI_PYTHON_DEPS_PATH, "bin")
|
|
CMAPI_SINGLE_NODE_XML = os.path.join(
|
|
CMAPI_INSTALL_PATH, 'cmapi_server/SingleNode.xml'
|
|
)
|
|
|
|
# constants for dispatchers
|
|
class ProgInfo(NamedTuple):
|
|
"""NamedTuple for some additional info about handling mcs processes."""
|
|
stop_priority: int # priority for building stop sequence
|
|
service_name: str # systemd service name
|
|
subcommand: str # subcommand for process run in docker container
|
|
only_primary: bool # use this process only on primary
|
|
delay: int = 0 # delay after process start in docker container
|
|
|
|
# mcs-loadbrm and mcs-savebrm are dependencies for workernode and resolved
|
|
# on top level of process handling
|
|
# mcs-storagemanager starts conditionally inside mcs-loadbrm, but should be
|
|
# stopped using cmapi
|
|
ALL_MCS_PROGS = {
|
|
# workernode starts on primary and non primary node with 1 or 2 added
|
|
# to subcommand (DBRM_Worker1 - on primary, DBRM_Worker2 - non primary)
|
|
'StorageManager': ProgInfo(15, 'mcs-storagemanager', '', False, 1),
|
|
'workernode': ProgInfo(13, 'mcs-workernode', 'DBRM_Worker{}', False, 1),
|
|
'controllernode': ProgInfo(11, 'mcs-controllernode', 'fg', True),
|
|
'PrimProc': ProgInfo(5, 'mcs-primproc', '', False, 1),
|
|
'ExeMgr': ProgInfo(9, 'mcs-exemgr', '', False, 1),
|
|
'WriteEngineServer': ProgInfo(7, 'mcs-writeengineserver', '', False, 3),
|
|
'DMLProc': ProgInfo(3, 'mcs-dmlproc', '', False),
|
|
'DDLProc': ProgInfo(1, 'mcs-ddlproc', '', False),
|
|
}
|
|
|
|
# constants for docker container dispatcher
|
|
MCS_INSTALL_BIN = '/usr/bin'
|
|
IFLAG = os.path.join(MCS_ETC_PATH, 'container-initialized')
|
|
LIBJEMALLOC_DEFAULT_PATH = os.path.join(MCS_DATA_PATH, 'libjemalloc.so.2')
|
|
MCS_LOG_PATH = '/var/log/mariadb/columnstore'
|
|
|
|
|
|
# client constants
|
|
CMAPI_PORT = 8640 #TODO: use it in all places
|
|
CURRENT_NODE_CMAPI_URL = f'https://localhost:{CMAPI_PORT}'
|
|
REQUEST_TIMEOUT: float = 30.0
|
|
TRANSACTION_TIMEOUT: float = 300.0 # 5 minutes |