import tools
from config import Config
-from plcapi import PLCAPI
-
+from plcapi import PLCAPI
+import random
savedargv = sys.argv[:]
def GetSlivers(plc):
data = plc.GetSlivers()
+ # net needs access to API for i2 nodes.
for module in modules:
- callback = getattr(module, 'GetSlivers')
- callback(data)
+ if module.__name__ == 'net':
+ module.GetSlivers(plc, data)
+ else:
+ 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:
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()