annotate service/arduinoNode/pushConfig.py @ 1138:08615804ee0e

twisted pushConfig Ignore-this: b2dc9fbdc8652d4ba7afebf51d2e0319 darcs-hash:6f5c6af01008be44222140bc4dc1b0f004877a12
author drewp <drewp@bigasterisk.com>
date Sat, 03 Mar 2018 16:18:47 -0800
parents
children bb80182195c0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1138
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
1 from __future__ import division
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
2
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
3 from twisted.internet import reactor
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
4 from twisted.internet.task import react
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
5 from twisted.internet.defer import inlineCallbacks, returnValue
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
6 from twisted.python.filepath import FilePath
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
7
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
8 import txaioetcd
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
9 etcd = txaioetcd.Client(reactor, u'http://bang6:2379')
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
10
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
11 @inlineCallbacks
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
12 def main(*a):
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
13 prefix = b'arduino/'
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
14 existing = set(row.key for row in
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
15 (yield etcd.get(txaioetcd.KeySet(prefix, prefix=True))).kvs)
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
16 written = set()
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
17 root = FilePath('config')
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
18 for f in root.walk():
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
19 if f.isfile() and f.path.endswith('.n3'):
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
20 n3 = f.getContent()
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
21 key = prefix + b'/'.join(f.segmentsFrom(root))
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
22 yield etcd.set(key, n3)
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
23 written.add(key)
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
24 print 'wrote %s' % key
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
25 for k in existing - written:
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
26 yield etcd.delete(k)
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
27 print 'removed %s' % k
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
28
08615804ee0e twisted pushConfig
drewp <drewp@bigasterisk.com>
parents:
diff changeset
29 react(main)