X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=nm.py;h=55315541f1cb3e4d3f8c5acd42b282424730dc70;hb=e57f1eed3dbd95226c1febfefb0e78536b23798b;hp=b4b0d6baa1ff746a7d368d939acb109b7f57f911;hpb=caa7e7414b08f12391b761ce293bf9163cfca589;p=nodemanager.git diff --git a/nm.py b/nm.py index b4b0d6b..5531554 100755 --- a/nm.py +++ b/nm.py @@ -31,12 +31,7 @@ savedargv = sys.argv[:] # NOTE: modules listed here should also be loaded in this order known_modules=['net','conf_files', 'sm', 'bwmon'] -# Deal with plugins directory plugin_path = "/usr/share/NodeManager/plugins" -if os.path.exists(plugin_path): - sys.path.append(plugin_path) - known_modules += [i[:-3] for i in os.listdir(plugin_path) if i.endswith(".py") and (i[:-3] not in known_modules)] - parser = optparse.OptionParser() parser.add_option('-d', '--daemon', action='store_true', dest='daemon', default=False, help='run daemonized') @@ -59,7 +54,7 @@ if os.path.exists(options.path): modules = [] -def GetSlivers(plc, config): +def GetSlivers(config, plc): '''Run call backs defined in modules''' try: logger.log("Syncing w/ PLC") @@ -75,7 +70,7 @@ def GetSlivers(plc, config): for module in modules: try: callback = getattr(module, 'GetSlivers') - callback(plc, data, config) + callback(data, config, plc) except: logger.log_exc() @@ -90,7 +85,10 @@ def getPLCDefaults(data, config): if len(attr_dict): logger.verbose("Found default slice overrides.\n %s" % attr_dict) config.OVERRIDES = attr_dict - return + return + # NOTE: if an _default slice existed, it would have been found above and + # the routine would return. Thus, if we've gotten here, then no default + # slice is bound to this node. if 'OVERRIDES' in dir(config): del config.OVERRIDES @@ -139,10 +137,22 @@ def run(): 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!") + + while True: # Main NM Loop logger.verbose('mainloop - nm:getSlivers - period=%d random=%d'%(iperiod,irandom)) - GetSlivers(plc, config) + GetSlivers(config, plc) delay=iperiod + random.randrange(0,irandom) logger.verbose('mainloop - sleeping for %d s'%delay) time.sleep(delay) @@ -151,13 +161,6 @@ def run(): if __name__ == '__main__': logger.log("Entering nm.py "+id) - stacklim = 512*1024 # 0.5 MiB - curlim = resource.getrlimit(resource.RLIMIT_STACK)[0] # soft limit - if curlim > stacklim: - resource.setrlimit(resource.RLIMIT_STACK, (stacklim, stacklim)) - # for some reason, doesn't take effect properly without the exec() - python = '/usr/bin/python' - os.execv(python, [python] + savedargv) run() else: # This is for debugging purposes. Open a copy of Python and import nm