X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=docs%2Fnarrative%2Fmodel.rst;h=57dbc810f07aab33b339f418b05d6b2a57ea4b80;hb=546f9ef4d42473d33fcceb04e9ab410c7a4ec7a4;hp=79df011bfe15fe144916ce3637b1f80aa0ba937d;hpb=3ee4eb7dcbee8c08a020909c741f055a5c728ac6;p=osm%2FN2VC.git diff --git a/docs/narrative/model.rst b/docs/narrative/model.rst index 79df011..57dbc81 100644 --- a/docs/narrative/model.rst +++ b/docs/narrative/model.rst @@ -131,6 +131,63 @@ Example of creating a new model and then destroying it. See model = None +Adding Machines and Containers +------------------------------ +To add a machine or container, connect to a model and then call its +:meth:`~juju.model.Model.add_machine` method. A +:class:`~juju.machine.Machine` instance is returned. The machine id +can be used to deploy a charm to a specific machine or container. + +.. code:: python + + from juju.model import Model + + MB = 1 + GB = 1024 + + + model = Model() + await model.connect_current() + + # add a new default machine + machine1 = await model.add_machine() + + # add a machine with constraints, disks, and series specified + machine2 = await model.add_machine( + constraints={ + 'mem': 256 * MB, + }, + disks=[{ + 'pool': 'rootfs', + 'size': 10 * GB, + 'count': 1, + }], + series='xenial', + ) + + # add a lxd container to machine2 + machine3 = await model.add_machine( + 'lxd:{}'.format(machine2.id)) + + # deploy charm to the lxd container + application = await model.deploy( + 'ubuntu-10', + application_name='ubuntu', + series='xenial', + channel='stable', + to=machine3.id + ) + + # remove application + await application.remove() + + # destroy machines - note that machine3 must be destroyed before machine2 + # since it's a container on machine2 + await machine3.destroy(force=True) + await machine2.destroy(force=True) + await machine1.destroy(force=True) + + Reacting to Changes in a Model ------------------------------ To watch for and respond to changes in a model, register an observer with the