Minor cleanups. Added todo list of next work.
[osm/N2VC.git] / examples / relate.py
1 """
2 This example:
3
4 1. Connects to the current model
5 2. Resets it
6 3. Deploys two charms and relates them
7 4. Waits for units to be idle, then exits
8
9 """
10 import asyncio
11 import logging
12
13 from juju.model import Model, ModelObserver
14
15
16 class MyModelObserver(ModelObserver):
17 async def on_change(self, delta, old, new, model):
18 if model.all_units_idle():
19 logging.debug('All units idle, disconnecting')
20 await model.disconnect()
21 model.loop.stop()
22
23
24 async def run():
25 model = Model()
26 await model.connect_current()
27
28 await model.reset(force=True)
29 model.add_observer(MyModelObserver())
30
31 await model.deploy(
32 'ubuntu-0',
33 service_name='ubuntu',
34 series='trusty',
35 channel='stable',
36 )
37 await model.deploy(
38 'nrpe-11',
39 service_name='nrpe',
40 series='trusty',
41 channel='stable',
42 num_units=0,
43 )
44 await model.add_relation(
45 'ubuntu',
46 'nrpe',
47 )
48
49 logging.basicConfig(level=logging.DEBUG)
50 ws_logger = logging.getLogger('websockets.protocol')
51 ws_logger.setLevel(logging.INFO)
52 loop = asyncio.get_event_loop()
53 loop.set_debug(False)
54 loop.create_task(run())
55 loop.run_forever()