diff options
author | Devaev Maxim <[email protected]> | 2021-02-16 09:07:51 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2021-02-16 09:07:51 +0300 |
commit | 3e289262f8a08042cd81eb7ebd8b75404020d945 (patch) | |
tree | bc46b8eea354d2e1e9544ac7f3595200e1c7d220 /kvmd | |
parent | 70fb46d4287e33d34dbf72156372a5c55cb273f7 (diff) |
additional cmd options
Diffstat (limited to 'kvmd')
-rw-r--r-- | kvmd/apps/__init__.py | 17 | ||||
-rw-r--r-- | kvmd/apps/kvmd/streamer.py | 6 | ||||
-rw-r--r-- | kvmd/apps/otgnet/__init__.py | 16 | ||||
-rw-r--r-- | kvmd/tools.py | 10 |
4 files changed, 37 insertions, 12 deletions
diff --git a/kvmd/apps/__init__.py b/kvmd/apps/__init__.py index 80fc82ec..ed6a3101 100644 --- a/kvmd/apps/__init__.py +++ b/kvmd/apps/__init__.py @@ -516,7 +516,10 @@ def _get_config_scheme() -> Dict: }, "commands": { - "pre_start_cmd": Option(["/bin/true", "pre-start"], type=valid_command), + "pre_start_cmd": Option(["/bin/true", "pre-start"], type=valid_command), + "pre_start_cmd_remove": Option([], type=valid_options), + "pre_start_cmd_append": Option([], type=valid_options), + "post_start_cmd": Option([ "/usr/bin/systemd-run", "--unit=kvmd-otgnet-dnsmasq", @@ -532,12 +535,20 @@ def _get_config_scheme() -> Dict: "--dhcp-option=6", "--keep-in-foreground", ], type=valid_command), - "pre_stop_cmd": Option([ + "post_start_cmd_remove": Option([], type=valid_options), + "post_start_cmd_append": Option([], type=valid_options), + + "pre_stop_cmd": Option([ "/usr/bin/systemctl", "stop", "kvmd-otgnet-dnsmasq", ], type=valid_command), - "post_stop_cmd": Option(["/bin/true", "post-stop"], type=valid_command), + "pre_stop_cmd_remove": Option([], type=valid_options), + "pre_stop_cmd_append": Option([], type=valid_options), + + "post_stop_cmd": Option(["/bin/true", "post-stop"], type=valid_command), + "post_stop_cmd_remove": Option([], type=valid_options), + "post_stop_cmd_append": Option([], type=valid_options), }, }, diff --git a/kvmd/apps/kvmd/streamer.py b/kvmd/apps/kvmd/streamer.py index b7f57797..ea14e41a 100644 --- a/kvmd/apps/kvmd/streamer.py +++ b/kvmd/apps/kvmd/streamer.py @@ -179,11 +179,7 @@ class Streamer: # pylint: disable=too-many-instance-attributes self.__process_name_prefix = process_name_prefix - self.__cmd = [ - cmd[0], # Executable - *filter((lambda item: item not in cmd_remove), cmd[1:]), - *cmd_append, - ] + self.__cmd = tools.build_cmd(cmd, cmd_remove, cmd_append) self.__params = _StreamerParams(**params_kwargs) diff --git a/kvmd/apps/otgnet/__init__.py b/kvmd/apps/otgnet/__init__.py index d3b32549..ac5b007e 100644 --- a/kvmd/apps/otgnet/__init__.py +++ b/kvmd/apps/otgnet/__init__.py @@ -35,6 +35,7 @@ from ...logging import get_logger from ...yamlconf import Section from ... import env +from ... import tools from ... import aioproc from .. import init @@ -74,10 +75,17 @@ class _Service: # pylint: disable=too-many-instance-attributes self.__forward_iface: str = config.otgnet.firewall.forward_iface self.__iptables_cmd: List[str] = config.otgnet.firewall.iptables_cmd - self.__pre_start_cmd: List[str] = config.otgnet.commands.pre_start_cmd - self.__post_start_cmd: List[str] = config.otgnet.commands.post_start_cmd - self.__pre_stop_cmd: List[str] = config.otgnet.commands.pre_stop_cmd - self.__post_stop_cmd: List[str] = config.otgnet.commands.post_stop_cmd + def build_cmd(key: str) -> List[str]: + return tools.build_cmd( + getattr(config.otgnet.commands, key), + getattr(config.otgnet.commands, f"{key}_remove"), + getattr(config.otgnet.commands, f"{key}_append"), + ) + + self.__pre_start_cmd: List[str] = build_cmd("pre_start_cmd") + self.__post_start_cmd: List[str] = build_cmd("post_start_cmd") + self.__pre_stop_cmd: List[str] = build_cmd("pre_stop_cmd") + self.__post_stop_cmd: List[str] = build_cmd("post_stop_cmd") self.__gadget: str = config.otg.gadget self.__driver: str = config.otg.devices.ethernet.driver diff --git a/kvmd/tools.py b/kvmd/tools.py index 8857796d..d6077938 100644 --- a/kvmd/tools.py +++ b/kvmd/tools.py @@ -73,3 +73,13 @@ def clear_queue(q: multiprocessing.queues.Queue) -> None: # pylint: disable=inv q.get_nowait() except queue.Empty: break + + +# ===== +def build_cmd(cmd: List[str], cmd_remove: List[str], cmd_append: List[str]) -> List[str]: + assert len(cmd) >= 1, cmd + return [ + cmd[0], # Executable + *filter((lambda item: item not in cmd_remove), cmd[1:]), + *cmd_append, + ] |