"""
import sys
+import json
import functools
USAGE = """
Valid commands are as follows:
- shutdown, reboot, poweron: Power management
+ - tty: Open TTY in GNU Screen
"""
-if len(sys.argv) != 3:
- print("Incorrect number of arguments")
+with open("config.json") as f:
+ CONFIG = json.load(f)
+print(CONFIG)
+
+def die_with_usage(message):
+ print(message)
print(USAGE)
sys.exit(1)
+if len(sys.argv) != 3:
+ die_with_usage("Incorrect number of arguments")
+
def get_server_handle(name):
# TODO: resolve based on config, SSH in, give self-contained handle?
return name
print("Setting server " + server + " to power state " + str(state))
COMMANDS = {
- "shutdown": functools.partial(set_server_power, 0),
- "poweron": functools.partial(set_server_power, 1),
+ # Power managemment
+
+ "shutdown": (False, functools.partial(set_server_power, 0)),
+ "poweron": (False, functools.partial(set_server_power, 1)),
+ "reboot": (False, lambda s: (set_server_power(0, s), set_server_power(1, s))),
+
+ # TTY access (or keyboard if wired as such)
+
+ "tty": (True, lambda s: print("Screening on " + s))
}
def issue_command(server_name, command):
server = get_server_handle(server_name)
print(server_name, command)
- COMMANDS[command](server_name)
+
+ try:
+ (visible_shell, callback) = COMMANDS[command]
+ except KeyError:
+ die_with_usage("Invalid command supplied")
+
+ print("Shell visible? " + str(visible_shell))
+ callback(server_name)
issue_command(sys.argv[1], sys.argv[2])