+ # set log level
+ if (options.verbose):
+ logger.set_level(logger.LOG_VERBOSE)
+
+ # Load /etc/planetlab/plc_config
+ config = Config(options.config)
+
+ try:
+ other_pid = tools.pid_file()
+ if other_pid != None:
+ print """There might be another instance of the node manager running as pid %d. If this is not the case, please remove the pid file %s""" % (other_pid, tools.PID_FILE)
+ return
+ except OSError, err:
+ print "Warning while writing PID file:", err
+
+ # Load and start modules
+ if options.module:
+ assert options.module in known_modules
+ running_modules=[options.module]
+ logger.verbose('Running single module %s'%options.module)
+ else:
+ running_modules=known_modules
+ for module in running_modules:
+ try:
+ m = __import__(module)
+ m.start(options, config)
+ modules.append(m)
+ except ImportError, err:
+ print "Warning while loading module %s:" % module, err
+
+ # Load /etc/planetlab/session
+ if os.path.exists(options.session):
+ session = file(options.session).read().strip()
+ else:
+ session = None
+
+ # Initialize XML-RPC client
+ iperiod=int(options.period)
+ irandom=int(options.random)
+ plc = PLCAPI(config.plc_api_uri, config.cacert, session, timeout=iperiod/2)
+
+ #check auth
+ logger.log("Checking Auth.")
+ while plc.check_authentication() != True:
+ try:
+ plc.update_session()
+ logger.log("Authentication Failure. Retrying")
+ except:
+ logger.log("Retry Failed. Waiting")
+ time.sleep(iperiod)
+ logger.log("Authentication Succeeded!")