X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=modules%2Flibjuju%2Fexamples%2Faction.py;fp=modules%2Flibjuju%2Fexamples%2Faction.py;h=f839f1122dc1a597a3df1e6e4fec14b63c75a63f;hp=0000000000000000000000000000000000000000;hb=e2051cca7dac12aa09f6ed33555dcc4548c4b52b;hpb=9d18c22a0dc9e295adda50601fc5e2f45d2c9b8a diff --git a/modules/libjuju/examples/action.py b/modules/libjuju/examples/action.py new file mode 100644 index 0000000..f839f11 --- /dev/null +++ b/modules/libjuju/examples/action.py @@ -0,0 +1,49 @@ +""" +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())