summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2020-10-11 04:46:50 +0300
committerDevaev Maxim <[email protected]>2020-10-11 04:46:50 +0300
commita7f3773e0b47ddeeef5550859927fd4630b14da7 (patch)
treee793df2f4ac932ed1563cb22f6cc259ff413b5f9
parent51ac65d542e041c4f75f0428fe4e84a10ef1c356 (diff)
service --run
-rw-r--r--Makefile6
-rw-r--r--configs/os/services/kvmd-ipmi.service2
-rw-r--r--configs/os/services/kvmd-vnc.service2
-rw-r--r--configs/os/services/kvmd.service4
-rw-r--r--kvmd/apps/__init__.py12
-rw-r--r--kvmd/apps/cleanup/__init__.py1
-rw-r--r--kvmd/apps/ipmi/__init__.py1
-rw-r--r--kvmd/apps/kvmd/__init__.py1
-rw-r--r--kvmd/apps/vnc/__init__.py1
-rw-r--r--testenv/tests/apps/cleanup/test_main.py1
10 files changed, 24 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 3b4b13d3..c132e9f3 100644
--- a/Makefile
+++ b/Makefile
@@ -106,7 +106,7 @@ run: testenv $(TESTENV_GPIO)
&& cp /testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \
&& nginx -c /etc/kvmd/nginx/nginx.conf -g 'user http; error_log stderr;' \
&& ln -s $(TESTENV_VIDEO) /dev/kvmd-video \
- && $(if $(CMD),$(CMD),python -m kvmd.apps.kvmd) \
+ && $(if $(CMD),$(CMD),python -m kvmd.apps.kvmd --run) \
"
@@ -141,7 +141,7 @@ run-ipmi: testenv
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
&& cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),$(DEFAULT_PLATFORM)).yaml /etc/kvmd/main.yaml \
&& cp /testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \
- && $(if $(CMD),$(CMD),python -m kvmd.apps.ipmi) \
+ && $(if $(CMD),$(CMD),python -m kvmd.apps.ipmi --run) \
"
@@ -159,7 +159,7 @@ run-vnc: testenv
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
&& cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),$(DEFAULT_PLATFORM)).yaml /etc/kvmd/main.yaml \
&& cp /testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \
- && $(if $(CMD),$(CMD),python -m kvmd.apps.vnc) \
+ && $(if $(CMD),$(CMD),python -m kvmd.apps.vnc --run) \
"
diff --git a/configs/os/services/kvmd-ipmi.service b/configs/os/services/kvmd-ipmi.service
index df63df19..a6268c07 100644
--- a/configs/os/services/kvmd-ipmi.service
+++ b/configs/os/services/kvmd-ipmi.service
@@ -10,7 +10,7 @@ Restart=always
RestartSec=3
AmbientCapabilities=CAP_NET_BIND_SERVICE
-ExecStart=/usr/bin/kvmd-ipmi
+ExecStart=/usr/bin/kvmd-ipmi --run
TimeoutStopSec=3
[Install]
diff --git a/configs/os/services/kvmd-vnc.service b/configs/os/services/kvmd-vnc.service
index f72fc44e..b484625d 100644
--- a/configs/os/services/kvmd-vnc.service
+++ b/configs/os/services/kvmd-vnc.service
@@ -9,7 +9,7 @@ Type=simple
Restart=always
RestartSec=3
-ExecStart=/usr/bin/kvmd-vnc
+ExecStart=/usr/bin/kvmd-vnc --run
TimeoutStopSec=3
[Install]
diff --git a/configs/os/services/kvmd.service b/configs/os/services/kvmd.service
index b8adff7b..c15a02c3 100644
--- a/configs/os/services/kvmd.service
+++ b/configs/os/services/kvmd.service
@@ -10,8 +10,8 @@ Restart=always
RestartSec=3
AmbientCapabilities=CAP_NET_RAW
-ExecStart=/usr/bin/kvmd
-ExecStopPost=/usr/bin/kvmd-cleanup
+ExecStart=/usr/bin/kvmd --run
+ExecStopPost=/usr/bin/kvmd-cleanup --run
TimeoutStopSec=10
[Install]
diff --git a/kvmd/apps/__init__.py b/kvmd/apps/__init__.py
index 7cdaa53b..0318ac09 100644
--- a/kvmd/apps/__init__.py
+++ b/kvmd/apps/__init__.py
@@ -104,6 +104,7 @@ def init(
prog: Optional[str]=None,
description: Optional[str]=None,
add_help: bool=True,
+ check_run: bool=False,
argv: Optional[List[str]]=None,
**load: bool,
) -> Tuple[argparse.ArgumentParser, List[str], Section]:
@@ -118,6 +119,9 @@ def init(
help="Override config options list (like sec/sub/opt=value)")
args_parser.add_argument("-m", "--dump-config", dest="dump_config", action="store_true",
help="View current configuration (include all overrides)")
+ if check_run:
+ args_parser.add_argument("--run", dest="run", action="store_true",
+ help="Run the service")
(options, remaining) = args_parser.parse_known_args(argv)
if options.dump_config:
@@ -135,6 +139,14 @@ def init(
logging.captureWarnings(True)
logging.config.dictConfig(config.logging)
+
+ if check_run and not options.run:
+ raise SystemExit(
+ "To prevent accidental startup, you must specify the --run option to start.\n"
+ "Try the --help option to find out what this service does.\n"
+ "Make sure you understand exactly what you are doing!"
+ )
+
return (args_parser, remaining, config)
diff --git a/kvmd/apps/cleanup/__init__.py b/kvmd/apps/cleanup/__init__.py
index ec6a43c6..0d0ddb71 100644
--- a/kvmd/apps/cleanup/__init__.py
+++ b/kvmd/apps/cleanup/__init__.py
@@ -78,6 +78,7 @@ def main(argv: Optional[List[str]]=None) -> None:
config = init(
prog="kvmd-cleanup",
description="Kill KVMD and clear resources",
+ check_run=True,
argv=argv,
)[2].kvmd
diff --git a/kvmd/apps/ipmi/__init__.py b/kvmd/apps/ipmi/__init__.py
index 749f9750..0d1189c8 100644
--- a/kvmd/apps/ipmi/__init__.py
+++ b/kvmd/apps/ipmi/__init__.py
@@ -38,6 +38,7 @@ def main(argv: Optional[List[str]]=None) -> None:
config = init(
prog="kvmd-ipmi",
description="IPMI to KVMD proxy",
+ check_run=True,
argv=argv,
)[2].ipmi
diff --git a/kvmd/apps/kvmd/__init__.py b/kvmd/apps/kvmd/__init__.py
index 5e99919d..d11512b1 100644
--- a/kvmd/apps/kvmd/__init__.py
+++ b/kvmd/apps/kvmd/__init__.py
@@ -47,6 +47,7 @@ def main(argv: Optional[List[str]]=None) -> None:
prog="kvmd",
description="The main Pi-KVM daemon",
argv=argv,
+ check_run=True,
load_auth=True,
load_hid=True,
load_atx=True,
diff --git a/kvmd/apps/vnc/__init__.py b/kvmd/apps/vnc/__init__.py
index 534768a3..f252e404 100644
--- a/kvmd/apps/vnc/__init__.py
+++ b/kvmd/apps/vnc/__init__.py
@@ -39,6 +39,7 @@ def main(argv: Optional[List[str]]=None) -> None:
config = init(
prog="kvmd-vnc",
description="VNC to KVMD proxy",
+ check_run=True,
argv=argv,
)[2].vnc
diff --git a/testenv/tests/apps/cleanup/test_main.py b/testenv/tests/apps/cleanup/test_main.py
index f9b74a06..0af4949c 100644
--- a/testenv/tests/apps/cleanup/test_main.py
+++ b/testenv/tests/apps/cleanup/test_main.py
@@ -55,6 +55,7 @@ def test_ok(tmpdir) -> None: # type: ignore
"--set-options",
f"kvmd/server/unix={kvmd_sock_path}",
f"kvmd/streamer/unix={ustreamer_sock_path}",
+ "--run",
])
assert not os.path.exists(ustreamer_sock_path)