#!/usr/bin/python3 # # Obtaining a node session key. Usually, the Boot # Manager obtains it, then writes it to /etc/planetlab/session. # # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # import os, sys import getopt from config import Config from plcapi import PLCAPI def main(): # Defaults config = None node_id = None key = None # Help def usage(): print("Usage: %s [OPTION]..." % sys.argv[0]) print("Options:") print(" -f, --config=FILE PLC configuration file (default: /etc/planetlab/plc_config)") print(" -n, --node-id=FILE Node ID (or file)") print(" -k, --key=FILE Node key (or file)") print(" --help This message") sys.exit(1) # Get options try: (opts, argv) = getopt.getopt(sys.argv[1:], "f:n:k:h", ["config=", "cfg=", "file=", "node=", "nodeid=", "node-id", "node_id", "key=", "help"]) except getopt.GetoptError as err: print("Error: " + err.msg) usage() for (opt, optval) in opts: if opt == "-f" or opt == "--config" or opt == "--cfg" or opt == "--file": config = Config(optval) elif opt == "-n" or opt == "--node" or opt == "--nodeid" or opt == "--node-id" or opt == "--node_id": if os.path.exists(optval): with open(optval) as optfile: node_id = optfile.read().strip() else: node_id = int(optval) elif opt == "-k" or opt == "--key": if os.path.exists(optval): with open(optval) as optfile: key = optfile.read().strip() else: key = optval else: usage() if config is None: config = Config() if node_id is None or \ key is None: usage() # Authenticate as the Boot Manager would and get a session key plc = PLCAPI(config.plc_api_uri, config.cacert, (node_id, key)) session = plc.BootGetNodeDetails()['session'] plc = PLCAPI(config.plc_api_uri, config.cacert, session) assert session == plc.GetSession() print(session) if __name__ == '__main__': main()