-
-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():