3a492c4fc6ba63c2ceeec4ee6e92ebbefbf53b48
[osm/N2VC.git] / examples / controller.py
1 """
2 This example:
3
4 1. Connects to current controller.
5 2. Creates a new model.
6 3. Deploys an application on the new model.
7
8 Note: 'cloudcred' format to add a model should be:
9 cloudcred-<cloudname>_<user>_<credentialname>
10
11 """
12 import asyncio
13 import logging
14
15 from juju.model import Model, ModelObserver
16 from juju.controller import Controller
17
18
19 class MyModelObserver(ModelObserver):
20 async def on_change(self, delta, old, new, model):
21 pass
22
23
24 async def run():
25 controller = Controller()
26 await controller.connect_current()
27 model = await controller.add_model(
28 'libjuju-test',
29 'cloud-aws',
30 'cloudcred-aws_tvansteenburgh@external_aws-tim',
31 )
32 await model.deploy(
33 'ubuntu-0',
34 service_name='ubuntu',
35 series='trusty',
36 channel='stable',
37 )
38 await model.disconnect()
39 await controller.disconnect()
40 model.loop.stop()
41
42
43 logging.basicConfig(level=logging.DEBUG)
44 ws_logger = logging.getLogger('websockets.protocol')
45 ws_logger.setLevel(logging.INFO)
46 loop = asyncio.get_event_loop()
47 loop.set_debug(False)
48 loop.create_task(run())
49 loop.run_forever()