summaryrefslogtreecommitdiff
path: root/kvmd
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2021-02-16 09:07:51 +0300
committerDevaev Maxim <[email protected]>2021-02-16 09:07:51 +0300
commit3e289262f8a08042cd81eb7ebd8b75404020d945 (patch)
treebc46b8eea354d2e1e9544ac7f3595200e1c7d220 /kvmd
parent70fb46d4287e33d34dbf72156372a5c55cb273f7 (diff)
additional cmd options
Diffstat (limited to 'kvmd')
-rw-r--r--kvmd/apps/__init__.py17
-rw-r--r--kvmd/apps/kvmd/streamer.py6
-rw-r--r--kvmd/apps/otgnet/__init__.py16
-rw-r--r--kvmd/tools.py10
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,
+ ]