feat: individual node deploy options in menu

This commit is contained in:
admin 2026-08-03 15:38:42 +00:00
parent 95e66f21c8
commit c6e163a767

View file

@ -139,37 +139,42 @@ def main():
while True:
undeployed = [k for k in cfg if k not in deployed]
opts = []
if undeployed: opts.append(("Deploy pending", '1'))
opts.append(("Add a new node", '2'))
if deployed: opts.append(("Show status", '3'))
if deployed: opts.append(("Remove a node", '4'))
opts.append(("Remote tunnel", '5'))
opts.append(("Quit", 'q'))
print("\n─── Menu ───")
if undeployed: print(f" Pending: {', '.join(undeployed)}")
for label, key in opts:
print(f" [{key}] {label}")
print(" [1] Add a new node")
# List undeployed nodes as individual options
n = 2
node_map = {}
for name in undeployed:
print(f" [{n}] Deploy {name} (port {cfg[name].get('port','?')})")
node_map[str(n)] = name
n += 1
if deployed:
print(f" [{n}] Show status"); n += 1
print(f" [{n}] Remove a node"); n += 1
print(f" [{n}] Remote tunnel"); n += 1
print(" [q] Quit")
c = input("\nChoice: ").strip()
if c == "1" and undeployed:
for name in undeployed:
if c == "1":
add_node()
cfg = load_config()
deployed = {n["name"] for n in load_state().get("nodes", [])}
elif c in node_map:
name = node_map[c]
nc = cfg[name]
deploy_container(name, nc["token"], nc.get("cloud","EU"),
str(nc.get("port","8081")), nc.get("upstream_ip",""),
str(nc.get("upstream_port","80")), "",
nc.get("mode","monitoring"))
elif c == "2":
add_node()
cfg = load_config()
deployed = {n["name"] for n in load_state().get("nodes", [])}
elif c == "3" and deployed:
deployed.add(name)
elif c == str(n-3) and deployed:
container_status()
elif c == "4" and deployed:
elif c == str(n-2) and deployed:
remove_menu()
elif c == "5":
elif c == str(n-1):
start_tunnel()
elif c.lower() == "q":
break