X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=examples%2Fdeploy.py;h=d7ca29a51bf17da2653b54ba105eb5956dd8d92e;hb=f70f1d38723997c6f35750f5d2d17fe1b74ba40d;hp=5c1aae58e80547bbfe3f578ff7459cdcaadc8263;hpb=2ed7314a9ea1240883655bc521b6e27f149aa485;p=osm%2FN2VC.git diff --git a/examples/deploy.py b/examples/deploy.py index 5c1aae5..d7ca29a 100644 --- a/examples/deploy.py +++ b/examples/deploy.py @@ -1,25 +1,24 @@ """ -Run this one against a model that has at least one unit deployed. +This example: + +1. Connects to the current model +2. Resets it +3. Deploy a charm and waits until it's idle +4. Destroys the unit and application """ import asyncio import logging from juju.model import Model, ModelObserver -from juju.client.connection import Connection - - -loop = asyncio.get_event_loop() -conn = loop.run_until_complete(Connection.connect_current()) -model = Model(conn) class MyModelObserver(ModelObserver): - def on_unit_add(self, delta, old, new, model): + async def on_unit_add(self, delta, old, new, model): logging.info( 'New unit added: %s', new.name) - def on_change(self, delta, old, new, model): + async def on_change(self, delta, old, new, model): for unit in model.units.values(): unit_status = unit.data['agent-status']['current'] logging.info( @@ -29,25 +28,39 @@ class MyModelObserver(ModelObserver): 'Destroying unit %s', unit.name) loop.create_task(unit.destroy()) - def on_unit_remove(self, delta, old, new, model): + async def on_unit_remove(self, delta, old, new, model): app_name = old.application app = model.applications[app_name] if not app.units: logging.info( 'Destroying application %s', app.name) loop.create_task(app.destroy()) + await model.block_until( + lambda: len(model.applications) == 0 + ) + await model.disconnect() + model.loop.stop() async def run(): + model = Model() + await model.connect_current() + + await model.reset(force=True) model.add_observer(MyModelObserver()) + await model.deploy( 'ubuntu-0', service_name='ubuntu', series='trusty', channel='stable', ) - await model.watch() -logging.basicConfig(level=logging.INFO) + +logging.basicConfig(level=logging.DEBUG) +ws_logger = logging.getLogger('websockets.protocol') +ws_logger.setLevel(logging.INFO) +loop = asyncio.get_event_loop() +loop.set_debug(False) loop.create_task(run()) loop.run_forever()