X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=examples%2Fdeploy.py;h=8442e9ae244849136319a30bae6406d1c384e931;hb=afb309d17dadc062017ee3d6425491193181138e;hp=7887d249239633cee2dca25323cb94e74f77a162;hpb=b64327bb58139f1e1f770b16492968423f011eab;p=osm%2FN2VC.git diff --git a/examples/deploy.py b/examples/deploy.py index 7887d24..8442e9a 100644 --- a/examples/deploy.py +++ b/examples/deploy.py @@ -2,65 +2,38 @@ 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 +2. Deploy a charm and waits until it reports itself active +3. Destroys the unit and application """ -import asyncio -import logging +from juju import loop +from juju.model import Model -from juju.model import Model, ModelObserver - -class MyModelObserver(ModelObserver): - async def on_unit_add(self, delta, old, new, model): - logging.info( - 'New unit added: %s', new.name) - - async def on_change(self, delta, old, new, model): - for unit in model.units.values(): - unit_status = unit.data['agent-status']['current'] - logging.info( - 'Unit %s status: %s', unit.name, unit_status) - if unit_status == 'idle': - logging.info( - 'Destroying unit %s', unit.name) - loop.create_task(unit.destroy()) - - 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(): +async def main(): model = Model() + print('Connecting to model') await model.connect_current() - await model.reset(force=True) - model.add_observer(MyModelObserver()) + try: + print('Deploying ubuntu') + application = await model.deploy( + 'ubuntu-10', + application_name='ubuntu', + series='trusty', + channel='stable', + ) + + print('Waiting for active') + await model.block_until( + lambda: all(unit.workload_status == 'active' + for unit in application.units)) - await model.deploy( - 'ubuntu-0', - application_name='ubuntu', - series='trusty', - channel='stable', - ) + print('Removing ubuntu') + await application.remove() + finally: + print('Disconnecting from model') + await model.disconnect() -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() +loop.run(main())