Skip to content

Commit ff25d4e

Browse files
Restore edits after cherry-pick
1 parent 7199c97 commit ff25d4e

File tree

8 files changed

+32
-38
lines changed

8 files changed

+32
-38
lines changed

cmapi/cmapi_server/constants.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,17 +77,17 @@ class ProgInfo(NamedTuple):
7777
# on top level of process handling
7878
# mcs-storagemanager starts conditionally inside mcs-loadbrm, but should be
7979
# stopped using cmapi
80-
ALL_MCS_PROGS: dict[str, ProgInfo] = {
80+
ALL_MCS_PROGS: dict[MCSProgs, ProgInfo] = {
8181
# workernode starts on primary and non primary node with 1 or 2 added
8282
# to subcommand (DBRM_Worker1 - on primary, DBRM_Worker2 - non primary)
83-
MCSProgs.STORAGE_MANAGER.value: ProgInfo(15, 'mcs-storagemanager', '', False, 1),
84-
MCSProgs.WORKER_NODE.value: ProgInfo(13, 'mcs-workernode', 'DBRM_Worker{}', False, 1),
85-
MCSProgs.CONTROLLER_NODE.value: ProgInfo(11, 'mcs-controllernode', 'fg', True),
86-
MCSProgs.PRIM_PROC.value: ProgInfo(5, 'mcs-primproc', '', False, 1),
87-
MCSProgs.EXE_MGR.value: ProgInfo(9, 'mcs-exemgr', '', False, 1),
88-
MCSProgs.WRITE_ENGINE_SERVER.value: ProgInfo(7, 'mcs-writeengineserver', '', False, 3),
89-
MCSProgs.DML_PROC.value: ProgInfo(3, 'mcs-dmlproc', '', False),
90-
MCSProgs.DDL_PROC.value: ProgInfo(1, 'mcs-ddlproc', '', False),
83+
MCSProgs.STORAGE_MANAGER: ProgInfo(15, 'mcs-storagemanager', '', False, 1),
84+
MCSProgs.WORKER_NODE: ProgInfo(13, 'mcs-workernode', 'DBRM_Worker{}', False, 1),
85+
MCSProgs.CONTROLLER_NODE: ProgInfo(11, 'mcs-controllernode', 'fg', True),
86+
MCSProgs.PRIM_PROC: ProgInfo(5, 'mcs-primproc', '', False, 1),
87+
MCSProgs.EXE_MGR: ProgInfo(9, 'mcs-exemgr', '', False, 1),
88+
MCSProgs.WRITE_ENGINE_SERVER: ProgInfo(7, 'mcs-writeengineserver', '', False, 3),
89+
MCSProgs.DML_PROC: ProgInfo(3, 'mcs-dmlproc', '', False),
90+
MCSProgs.DDL_PROC: ProgInfo(1, 'mcs-ddlproc', '', False),
9191
}
9292

9393
# constants for docker container dispatcher

cmapi/cmapi_server/controllers/endpoints.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,6 @@ def put_config(self):
435435
is_primary=node_config.is_primary_node(),
436436
use_sudo=use_sudo,
437437
timeout=request_timeout,
438-
is_read_only=node_config.is_read_only(),
439438
)
440439
except CMAPIBasicError as err:
441440
raise_422_error(
@@ -705,7 +704,6 @@ def put_shutdown(self):
705704
is_primary=node_config.is_primary_node(),
706705
use_sudo=use_sudo,
707706
timeout=timeout,
708-
is_read_only=node_config.is_read_only(),
709707
)
710708
except CMAPIBasicError as err:
711709
raise_422_error(

cmapi/cmapi_server/failover_agent.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ def enterStandbyMode(self, test_mode = False):
9797
if not test_mode:
9898
MCSProcessManager.stop_node(
9999
is_primary=nc.is_primary_node(),
100-
is_read_only=nc.is_read_only(),
101100
)
102101
logger.info(
103102
'FA.enterStandbyMode(): successfully stopped node.'

cmapi/cmapi_server/helpers.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -540,11 +540,6 @@ def get_desired_nodes(config=DEFAULT_MCS_CONF_PATH):
540540
return [ node.text for node in nodes ]
541541

542542

543-
def get_read_only_nodes(root) -> list[str]:
544-
"""Get names of read only nodes from config"""
545-
return [node.text for node in root.findall('./ReadOnlyNodes/Node')]
546-
547-
548543
def in_maintenance_state(config=DEFAULT_MCS_CONF_PATH):
549544
nc = NodeConfig()
550545
root = nc.get_current_config_root(config, upgrade=False)

cmapi/cmapi_server/managers/process.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import psutil
88

99
from cmapi_server.exceptions import CMAPIBasicError
10-
from cmapi_server.constants import MCS_INSTALL_BIN, ALL_MCS_PROGS, MCSProgs
10+
from cmapi_server.constants import MCS_INSTALL_BIN, ALL_MCS_PROGS, MCSProgs, ProgInfo
1111
from cmapi_server.process_dispatchers.base import BaseDispatcher
1212
from cmapi_server.process_dispatchers.systemd import SystemdDispatcher
1313
from cmapi_server.process_dispatchers.container import (
@@ -33,7 +33,7 @@ class MCSProcessManager:
3333
e.g. re/-start or stop systemd services, run executable.
3434
"""
3535
CONTROLLER_MAX_RETRY = 30
36-
mcs_progs = {}
36+
mcs_progs: dict[str, ProgInfo] = {}
3737
mcs_version_info = None
3838
dispatcher_name = None
3939
process_dispatcher: BaseDispatcher = None
@@ -48,7 +48,7 @@ def _get_prog_name(cls, name: str) -> str:
4848
:rtype: str
4949
"""
5050
if cls.dispatcher_name == 'systemd':
51-
prog = MCSProgs[name]
51+
prog = MCSProgs(name)
5252
return ALL_MCS_PROGS[prog].service_name
5353
return name
5454

@@ -98,7 +98,8 @@ def _detect_processes(cls) -> None:
9898
if cls.mcs_progs:
9999
logging.warning('Mcs ProcessHandler already detected processes.')
100100

101-
for prog_name, prog_info in ALL_MCS_PROGS.items():
101+
for prog, prog_info in ALL_MCS_PROGS.items():
102+
prog_name = prog.value
102103
if os.path.exists(os.path.join(MCS_INSTALL_BIN, prog_name)):
103104
cls.mcs_progs[prog_name] = prog_info
104105

@@ -454,7 +455,6 @@ def stop_node(
454455
is_primary: bool,
455456
use_sudo: bool = True,
456457
timeout: int = 10,
457-
is_read_only: bool = False,
458458
):
459459
"""Stop mcs node processes.
460460
@@ -464,8 +464,6 @@ def stop_node(
464464
:type use_sudo: bool, optional
465465
:param timeout: timeout for DMLProc gracefully stop using DBRM, seconds
466466
:type timeout: int
467-
:param is_read_only: if true, doesn't stop WriteEngine
468-
:type is_read_only: bool, optional
469467
:raises CMAPIBasicError: immediately if one mcs process not stopped
470468
"""
471469
# Every time try to stop all processes no matter primary it or slave,
@@ -481,5 +479,5 @@ def stop_node(
481479
def restart_node(cls, is_primary: bool, use_sudo: bool, is_read_only: bool = False):
482480
"""TODO: For next releases."""
483481
if cls.get_running_mcs_procs():
484-
cls.stop_node(is_primary, use_sudo, is_read_only)
482+
cls.stop_node(is_primary, use_sudo)
485483
cls.start_node(is_primary, use_sudo, is_read_only)

cmapi/cmapi_server/process_dispatchers/container.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import psutil
1212

1313
from cmapi_server.constants import (
14-
IFLAG, LIBJEMALLOC_DEFAULT_PATH, MCS_INSTALL_BIN, ALL_MCS_PROGS
14+
IFLAG, LIBJEMALLOC_DEFAULT_PATH, MCS_INSTALL_BIN, ALL_MCS_PROGS, MCSProgs
1515
)
1616
from cmapi_server.exceptions import CMAPIBasicError
1717
from cmapi_server.process_dispatchers.base import BaseDispatcher
@@ -126,7 +126,8 @@ def _make_cmd(service: str) -> str:
126126
:return: command with arguments if needed
127127
:rtype: str
128128
"""
129-
service_info = ALL_MCS_PROGS[service]
129+
prog = MCSProgs(service)
130+
service_info = ALL_MCS_PROGS[prog]
130131
command = os.path.join(MCS_INSTALL_BIN, service)
131132

132133
if service_info.subcommand:
@@ -188,7 +189,8 @@ def start(
188189
env=env_vars
189190
)
190191
# TODO: any other way to detect service finished its initialisation?
191-
sleep(ALL_MCS_PROGS[service].delay)
192+
prog = MCSProgs(service)
193+
sleep(ALL_MCS_PROGS[prog].delay)
192194
logger.debug(f'Started "{service}".')
193195

194196
if is_primary and service == 'DDLProc':

cmapi/cmapi_server/test/test_node_manip.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
from cmapi_server import node_manipulation
99
from cmapi_server.constants import MCS_DATA_PATH
10-
from cmapi_server.helpers import get_read_only_nodes
1110
from cmapi_server.node_manipulation import add_dbroots_of_other_nodes, remove_dbroots_of_node
1211
from cmapi_server.test.unittest_global import BaseNodeManipTestCase, tmp_mcs_config_filename
1312
from mcs_node_control.models.node_config import NodeConfig

cmapi/mcs_node_control/models/node_config.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,23 @@
44
import pwd
55
import re
66
import socket
7-
from os import mkdir, replace, chown
7+
from os import chown, mkdir, replace
88
from pathlib import Path
99
from shutil import copyfile
10-
from xml.dom import minidom # to pick up pretty printing functionality
10+
from xml.dom import minidom # to pick up pretty printing functionality
1111

1212
from lxml import etree
1313

1414
from cmapi_server.constants import (
15-
DEFAULT_MCS_CONF_PATH, DEFAULT_SM_CONF_PATH,
15+
DEFAULT_MCS_CONF_PATH,
16+
DEFAULT_SM_CONF_PATH,
1617
MCS_MODULE_FILE_PATH,
1718
)
19+
1820
# from cmapi_server.managers.process import MCSProcessManager
19-
from mcs_node_control.models.misc import (
20-
read_module_id, get_dbroots_list
21-
)
21+
from mcs_node_control.models.misc import get_dbroots_list, read_module_id
2222
from mcs_node_control.models.network_ifaces import get_network_interfaces
2323

24-
2524
module_logger = logging.getLogger()
2625

2726

@@ -569,11 +568,15 @@ def get_all_dbroots(self, root):
569568

570569
return dbroots
571570

571+
def get_read_only_nodes(self, root=None) -> list[str]:
572+
"""Get names of read only nodes from config"""
573+
root = root or self.get_current_config_root()
574+
return [node.text for node in root.findall('./ReadOnlyNodes/Node')]
575+
572576
def is_read_only(self, root=None) -> bool:
573577
"""Checks if this node is in read-only mode"""
574-
from cmapi_server.helpers import get_read_only_nodes # Avoid circular import
575578

576579
root = root or self.get_current_config_root()
577-
read_only_nodes = set(get_read_only_nodes(root))
580+
read_only_nodes = set(self.get_read_only_nodes(root))
578581
my_names = set(self.get_network_addresses_and_names())
579582
return bool(read_only_nodes.intersection(my_names))

0 commit comments

Comments
 (0)