Entity Creation¶
This document describes the circumstances in which fundamental state entities are created, from the perspective of the CLI.
juju deploy¶
The juju deploy
command always creates services, may create relations, and
may also create units and machines.
New services can always be added.
If the created service’s charm defines any peer relations, a (runtime) peer relation will be created for each. BUG: this is not done in the same transaction as service creation; a connection failure at the wrong time will create a broken and unfixable service (because peer relations cannot be manipulated via the CLI).
If the created service’s charm is not subordinate, some number of units will be created; this number is controlled via the “–num-units” parameter which defaults to 1.
If units were created, machines may also be created, as below.
juju add-unit¶
The juju add-unit
command applies only to principal services. It always
creates units, and may create machines. Different providers assign units to
machines in different ways, and so machine creation can vary: for example, the
ec2 provider creates a new machine for each unit that cannot be placed on an
existing machine without assigned units.
New units can only be added to Alive services.
juju integrate¶
The juju integrate
command creates relations, and may – if the relation
has container scope, by virtue of one or more endpoints having container scope
– indirectly cause the creation of subordinate units. Subordinate units are in
fact created by principal unit agents, at the point when they enter scope of a
container-scoped relation and find that no suitable subordinate already exists.
New relations can only be added between Alive services.
New subordinate units will only be added as a consequence of an Alive principal unit’s participation in an Alive relation (implying an Alive subordinate service).