comparison service/arduinoNode/arduinoNode.py @ 1148:8b4eda2cf0bd

fix pushconfig Ignore-this: 36fd12eb507fbe027b9a00dbd78f13af darcs-hash:a89764f2ad7791417d7c68d6ba30df92be97fe2c
author drewp <drewp@bigasterisk.com>
date Sat, 14 Apr 2018 23:46:54 -0700
parents f349fe25789c
children 12f9f1838fb5
comparison
equal deleted inserted replaced
1147:ef494fe0499f 1148:8b4eda2cf0bd
52 self.etcPrefix = 'arduino/' 52 self.etcPrefix = 'arduino/'
53 53
54 self.boards = [] 54 self.boards = []
55 self.reread() 55 self.reread()
56 56
57 self.rereadLater = None
58 deferToThread(self.watchEtcd) 57 deferToThread(self.watchEtcd)
59 58
60 def watchEtcd(self): 59 def watchEtcd(self):
61 events, cancel = etcd.watch_prefix(self.etcPrefix) 60 events, cancel = etcd.watch_prefix(self.etcPrefix)
62 reactor.addSystemEventTrigger('before', 'shutdown', cancel) 61 reactor.addSystemEventTrigger('before', 'shutdown', cancel)
63 for ev in events: 62 for ev in events:
64 log.info('%s changed', ev.key) 63 log.info('%s changed', ev.key)
65 reactor.callFromThread(self.configChanged) 64 reactor.callFromThread(self.configChanged)
66 65
67 def configChanged(self): 66 def configChanged(self):
68 if self.rereadLater: 67 self.cancelRead()
68 self.rereadLater = reactor.callLater(.1, self.reread)
69
70 def cancelRead(self):
71 if getattr(self, 'rereadLater', None):
69 self.rereadLater.cancel() 72 self.rereadLater.cancel()
70 self.rereadLater = reactor.callLater(.1, self.reread) 73 self.rereadLater = None
71 74
72 def reread(self): 75 def reread(self):
73 self.rereadLater = None 76 self.cancelRead()
74 log.info('read config') 77 log.info('read config')
75 self.configGraph = ConjunctiveGraph() 78 self.configGraph = ConjunctiveGraph()
76 for v, md in etcd.get_prefix(self.etcPrefix): 79 for v, md in etcd.get_prefix(self.etcPrefix):
77 log.info(' read file %r', md.key) 80 log.info(' read file %r', md.key)
78 self.configGraph.parse(StringInputSource(v), format='n3') 81 self.configGraph.parse(StringInputSource(v), format='n3')