Units¶
For api docs, see juju.unit.Unit
.
Running Commands¶
Run arbitrary commands on a unit with the
juju.unit.Unit.run()
method. This method blocks
the current coroutine until a result is available, and
returns a juju.action.Action
instance.
from juju.model import Model
model = Model()
await model.connect_current()
app = await model.deploy(
'ubuntu',
application_name='ubuntu',
series='trusty',
channel='stable',
)
for unit in app.units:
action = await unit.run('unit-get public-address')
print(action.results)
action = await unit.run('uname -a')
print(action.results)
Running Actions¶
Run actions on a unit with the
juju.unit.Unit.run_action()
method. This method
returns a juju.action.Action
instance immediately. To block until
the action completes, use the juju.action.Action.wait()
method, as
in the example below.
from juju.model import Model
model = Model()
await model.connect_current()
app = await model.deploy(
'git',
application_name='git',
series='trusty',
channel='stable',
)
for unit in app.units:
# run the 'add-repo' action, passing a 'repo' param
action = await unit.run_action('add-repo', repo='myrepo')
# wait for the action to complete
action = await action.wait()
print(action.results)