-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprovision.py
62 lines (45 loc) · 1.31 KB
/
provision.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from MiniMonkey import MiniMonkey
import click
import yaml
import time
def paus(mm):
time.sleep(0.1)
print(mm.recv())
@click.command()
@click.option('--host', default='localhost')
@click.option('--token', default='myToken')
@click.option('--config', default='provision.yaml')
def main(host, token, config):
mm = MiniMonkey()
mm.start()
mm.auth(token)
paus(mm)
data = yaml.safe_load(open(config))
tokens = {}
for name, info in data['users'].items():
tokens[name] = info['token']
for name, info in data['devices'].items():
tokens[name] = info['token']
for token in tokens.values():
print(token)
mm.add_login(token)
paus(mm)
for name, info in data['rooms'].items():
mm.enter(name)
paus(mm)
if 'publishers' in info:
for publisher in info['publishers']:
mm.add_publish(tokens[publisher])
paus(mm)
if 'subscribers' in info:
for subscriber in info['subscribers']:
mm.add_subscribe(tokens[subscriber])
paus(mm)
if 'links' in info:
for link in info['links']:
mm.link_room(link)
paus(mm)
time.sleep(2)
mm.should_run = False
if __name__ == '__main__':
main()