Add jail_is_running checks
This commit is contained in:
parent
a53f698311
commit
d59251d6de
25
jlmkr.py
25
jlmkr.py
|
@ -35,7 +35,7 @@ IT COMES WITHOUT WARRANTY AND IS NOT SUPPORTED BY IXSYSTEMS.{NORMAL}"""
|
||||||
DESCRIPTION = "Create persistent Linux 'jails' on TrueNAS SCALE, with full access to all files \
|
DESCRIPTION = "Create persistent Linux 'jails' on TrueNAS SCALE, with full access to all files \
|
||||||
via bind mounts, thanks to systemd-nspawn!"
|
via bind mounts, thanks to systemd-nspawn!"
|
||||||
|
|
||||||
VERSION = '0.0.8'
|
VERSION = '0.0.9'
|
||||||
|
|
||||||
JAILS_DIR_PATH = 'jails'
|
JAILS_DIR_PATH = 'jails'
|
||||||
JAIL_CONFIG_NAME = 'config'
|
JAIL_CONFIG_NAME = 'config'
|
||||||
|
@ -742,6 +742,11 @@ def create_jail(jail_name):
|
||||||
start_jail(jail_name)
|
start_jail(jail_name)
|
||||||
|
|
||||||
|
|
||||||
|
def jail_is_running(jail_name):
|
||||||
|
return subprocess.run(["machinectl", "show", jail_name], stdout=subprocess.DEVNULL,
|
||||||
|
stderr=subprocess.DEVNULL).returncode == 0
|
||||||
|
|
||||||
|
|
||||||
def edit_jail(jail_name):
|
def edit_jail(jail_name):
|
||||||
"""
|
"""
|
||||||
Edit jail with given name.
|
Edit jail with given name.
|
||||||
|
@ -751,7 +756,8 @@ def edit_jail(jail_name):
|
||||||
eprint(f"A jail with name {jail_name} does not exist.")
|
eprint(f"A jail with name {jail_name} does not exist.")
|
||||||
else:
|
else:
|
||||||
os.system(f'nano {get_jail_config_path(jail_name)}')
|
os.system(f'nano {get_jail_config_path(jail_name)}')
|
||||||
print("Restart the jail for edits to apply (if you made any).")
|
if jail_is_running(jail_name):
|
||||||
|
print("Restart the jail for edits to apply (if you made any).")
|
||||||
|
|
||||||
|
|
||||||
def remove_jail(jail_name):
|
def remove_jail(jail_name):
|
||||||
|
@ -767,12 +773,15 @@ def remove_jail(jail_name):
|
||||||
f'\nCAUTION: Type "{jail_name}" to confirm jail deletion!\n\n') or ""
|
f'\nCAUTION: Type "{jail_name}" to confirm jail deletion!\n\n') or ""
|
||||||
if check == jail_name:
|
if check == jail_name:
|
||||||
jail_path = get_jail_path(jail_name)
|
jail_path = get_jail_path(jail_name)
|
||||||
print(f"\nTrying to stop {jail_name} if it was running...")
|
if jail_is_running(jail_name):
|
||||||
subprocess.run(['machinectl', 'stop', jail_name])
|
print(f"\nWait for {jail_name} to stop...", end="")
|
||||||
# Need to sleep since deleting immediately after stop causes problems...
|
subprocess.run(['machinectl', 'stop', jail_name])
|
||||||
# TODO: actually wait until the jail has completely stopped... shutdown may take more than 1s
|
# Need to sleep since deleting immediately after stop causes problems...
|
||||||
time.sleep(1)
|
while jail_is_running(jail_name):
|
||||||
print(f"Cleaning up: {jail_path}")
|
time.sleep(1)
|
||||||
|
print(".", end="", flush=True)
|
||||||
|
|
||||||
|
print(f"\nCleaning up: {jail_path}")
|
||||||
shutil.rmtree(jail_path)
|
shutil.rmtree(jail_path)
|
||||||
else:
|
else:
|
||||||
eprint("Wrong name, nothing happened.")
|
eprint("Wrong name, nothing happened.")
|
||||||
|
|
Loading…
Reference in New Issue