#!/usr/bin/python3
#
# Obtaining a node session key. Usually, the Boot
# Manager obtains it, then writes it to /etc/planetlab/session.
#
# <NAME> <<EMAIL>>
# 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()

#!/usr/bin/python3
#
# Obtaining a node session key. Usually, the Boot
# Manager obtains it, then writes it to /etc/planetlab/session.
#
# <NAME> <<EMAIL>>
# 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()

#!/usr/bin/python3 # # Obtaining a node session key. Usually, the Boot # Manager obtains it, then writes it to /etc/planetlab/session. # # <NAME> <<EMAIL>> # Copyright (C) 2006 The Trustees of Princeton University # # Defaults # Help # Get options # Authenticate as the Boot Manager would and get a session key