blob: 5d6b48d2c128dbf37d0d94854a88fa9e54db4fbf [file] [log] [blame]
Units
=====
For api docs, see :class:`juju.unit.Unit`.
Running Commands
----------------
Run arbitrary commands on a unit with the
:meth:`juju.unit.Unit.run` method. This method blocks
the current coroutine until a result is available, and
returns a :class:`juju.action.Action` instance.
.. code:: python
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
:meth:`juju.unit.Unit.run_action` method. This method
returns a :class:`juju.action.Action` instance immediately. To block until
the action completes, use the :meth:`juju.action.Action.wait` method, as
in the example below.
.. code:: python
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)