""" This example: 1. Connects to current model and resets it. 2. Deploys a git unit. 3. Runs an action against the unit. 4. Waits for the action results to come back, then exits. """ import logging from juju import loop from juju.model import Model async def run_action(unit): logging.debug('Running action on unit %s', unit.name) # unit.run() returns a juju.action.Action instance action = await unit.run_action('add-repo', repo='myrepo') # wait for the action to complete action = await action.wait() logging.debug("Action results: %s", action.results) async def main(): model = Model() # connect to current model with current user, per Juju CLI await model.connect() app = await model.deploy( 'git', application_name='git', series='trusty', channel='stable', ) for unit in app.units: await run_action(unit) await model.disconnect() if __name__ == '__main__': logging.basicConfig(level=logging.DEBUG) ws_logger = logging.getLogger('websockets.protocol') ws_logger.setLevel(logging.INFO) loop.run(main())