Add support for local charms
[osm/N2VC.git] / examples / localcharm.py
1 """
2 This example shows how to deploy a local charm. It:
3
4 1. Connects to current model.
5 2. Uploads a local charm (directory on filesystem) to the model.
6 3. Deploys the uploaded charm.
7
8 """
9 import asyncio
10 import logging
11
12 from juju.model import Model
13
14
15 async def run():
16 model = Model()
17 await model.connect_current()
18
19 # Upload local charm to the model.
20 # The returned 'local:' url can be used to deploy the charm.
21 charm_url = await model.add_local_charm_dir(
22 '/home/tvansteenburgh/src/charms/ubuntu', 'trusty')
23
24 # Deploy the charm using the 'local:' charm.
25 await model.deploy(
26 charm_url,
27 application_name='ubuntu',
28 )
29
30 await model.disconnect()
31 model.loop.stop()
32
33
34 logging.basicConfig(level=logging.DEBUG)
35 ws_logger = logging.getLogger('websockets.protocol')
36 ws_logger.setLevel(logging.INFO)
37 loop = asyncio.get_event_loop()
38 loop.set_debug(False)
39 loop.create_task(run())
40 loop.run_forever()