X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=nm.py;h=482f610f389a34de2d0ededf84391d43e3094b2b;hb=7ad7efcc3865f3feb58269fbd53f47efc4ec1327;hp=562a52d7971a4615226c718c6697d75d300055da;hpb=03f66cf8adc284a6e4fa221b60d321807c27f624;p=nodemanager.git diff --git a/nm.py b/nm.py index 562a52d..482f610 100644 --- a/nm.py +++ b/nm.py @@ -15,7 +15,7 @@ import tools from config import Config from plcapi import PLCAPI - +import random savedargv = sys.argv[:] @@ -24,7 +24,7 @@ parser.add_option('-d', '--daemon', action='store_true', dest='daemon', default= parser.add_option('-s', '--startup', action='store_true', dest='startup', default=False, help='run all sliver startup scripts') parser.add_option('-f', '--config', action='store', dest='config', default='/etc/planetlab/plc_config', help='PLC configuration file') parser.add_option('-k', '--session', action='store', dest='session', default='/etc/planetlab/session', help='API session key (or file)') -parser.add_option('-p', '--period', action='store', dest='period', default=900, help='Polling interval (sec)') +parser.add_option('-p', '--period', action='store', dest='period', default=600, help='Polling interval (sec)') (options, args) = parser.parse_args() modules = [] @@ -39,6 +39,12 @@ def GetSlivers(plc): callback = getattr(module, 'GetSlivers') callback(data) +def UpdateHostKey(plc): + logger.log('Trying to update ssh host key at PLC...') + ssh_host_key = open('/etc/ssh/ssh_host_rsa_key.pub').read().strip() + plc.BootUpdateNode(dict(ssh_host_key=ssh_host_key)) + logger.log('Host key update succeeded') + def run(): try: if options.daemon: tools.daemon() @@ -55,7 +61,7 @@ def run(): print "Warning while writing PID file:", err # Load and start modules - for module in ['net', 'proper', 'conf_files', 'sm']: + for module in ['net', 'proper', 'conf_files', 'sm', 'bwmon']: try: m = __import__(module) m.start(options, config) @@ -73,9 +79,11 @@ def run(): plc = PLCAPI(config.plc_api_uri, config.cacert, session, timeout=options.period/2) while True: + try: UpdateHostKey(plc) + except: logger.log_exc() try: GetSlivers(plc) except: logger.log_exc() - time.sleep(options.period) + time.sleep(options.period + random.randrange(0,301)) except: logger.log_exc()