juju.application

Summary

Reference

class juju.application.Application(entity_id, model, history_index=-1, connected=True)[source]

Bases: ModelEntity

Represents the current state of a deployed application.

In the current library version, as well entire 2.x and 3.x series, the data is supplied by Juju AllWatcher notifications, also known as deltas for the specific application. The fields are declared here: https://github.com/juju/juju/blob/be8a779/core/multiwatcher/types.go#L191-L209

The fields marked deprecated below will be removed in version 4.0 because a different API must be used against Juju 4.

coroutine add_relation(local_relation, remote_relation)[source]

Deprecated since version 2.9.9: Use relate() instead

coroutine add_unit(count=1, to=None, attach_storage=[])[source]

Add one or more units to this application.

Parameters:
  • count (int) – Number of units to add

  • attach_storage ([str]) – Existing storage to attach to the deployed unit

(not available on k8s models) :param str to: Placement directive, e.g.:

'23' - machine 23
'lxc:7' - new lxc container on machine 7
'24/lxc/3' - lxc container 3 or machine 24

If None, a new machine is provisioned.
coroutine add_units(count=1, to=None, attach_storage=[])

Add one or more units to this application.

Parameters:
  • count (int) – Number of units to add

  • attach_storage ([str]) – Existing storage to attach to the deployed unit

(not available on k8s models) :param str to: Placement directive, e.g.:

'23' - machine 23
'lxc:7' - new lxc container on machine 7
'24/lxc/3' - lxc container 3 or machine 24

If None, a new machine is provisioned.
attach_resource(resource_name, file_name, file_obj)[source]

Updates the resource for an application by uploading file from local disk to the Juju controller.

Parameters:
  • resource_name (str) – Name of the resource to be updated.

  • file_name (str) – Name of the local file to be uploaded.

  • file_obj (TextIOWrapper) – Actual object to be read for data.

property charm_name

Get the charm name of this application

Return str:

The name of the charm

property charm_url

Get the charm url for this application

Return str:

The charm url

property constraints: Dict[str, Union[str, int, bool]]
coroutine destroy(destroy_storage=False, force=False, no_wait=False)[source]

Remove this application from the model.

Parameters:
  • destroy_storage (bool) – Destroy storage attached to application unit. (=false)

  • force (bool) – Completely remove an application and all its dependencies. (=false)

  • no_wait (bool) – Rush through application removal without waiting for each individual step to complete (=false)

  • block (bool) – Blocks until the application is removed from the model

coroutine destroy_relation(local_relation, remote_relation, block_until_done: bool = False)[source]

Remove a relation to another application.

Parameters:
  • local_relation (str) – Name of relation on this application

  • remote_relation (str) – Name of relation on the other application in the form ‘<application>[:<relation_name>]’

  • block_until_done (bool) – Wait until the relation is completely removed.

coroutine destroy_unit(*unit_names)[source]

Destroy units by name.

coroutine destroy_units(*unit_names)

Destroy units by name.

coroutine expose(exposed_endpoints=None)[source]

Make a subset of the application endpoints or the entire application available over the network.

If the exposed_endpoints argument is not provided, all opened port ranges for the application will become reachable from 0.0.0.0/0.

On juju 2.9 and onwards, the exposed_endpoints argument may be used to specify a list of spaces and or CIDRs that should be able to reach the port ranges opened for a particular subnet. The exposed_endpoints parameter is a map where keys are endpoint names or the empty string (“”) which works as a wildcard for all endpoints and values are ExposedEndpoint instances.

When targeting an older juju controller, the exposed_endpoints param is not supported and an error will be raised if it is provided.

property exposed: bool
coroutine get_actions(schema=False)[source]

Get actions defined for this application.

Parameters:

schema (bool) – Return the full action schema

Return dict:

The charms actions, empty dict if none are defined.

coroutine get_annotations()[source]

Get annotations on this application.

Return dict:

The annotations for this application

coroutine get_config()[source]

Return the configuration settings dict for this application.

coroutine get_constraints()[source]

Return the machine constraints dict for this application.

coroutine get_metrics()[source]

Get metrics for this application’s units.

Returns:

Dictionary of unit_name:metrics

coroutine get_resources()[source]

Return resources for this application.

Returns a dict mapping resource name to CharmResource instances.

coroutine get_series()[source]

Return the series on which the application is deployed

Returns:

str series

coroutine get_status()[source]

Get the application status using info from the FullStatus as well, because it might be more up to date than our model

Returns:

str status

coroutine get_trusted()[source]

Return the trusted configuration setting for this application.

property life: str
coroutine local_refresh(*, charm_origin: CharmOrigin, force: bool, force_series: bool, force_units: bool, path: Union[Path, str], resources: Optional[Dict[str, str]])[source]

Refresh the charm for this application with a local charm.

Parameters:
  • charm_origin (dict) – The charm origin of the destination charm we’re refreshing to

  • force (bool) – Refresh even if validation checks fail

  • force_series (bool) – Refresh even if series of deployed application is not supported by the new charm

  • force_units (bool) – Refresh all units immediately, even if in error state

  • path (Path|str) – Refresh to a charm located at path

  • resources (dict) – Dictionary of resource name/filepath pairs

property min_units: int
property name: str
on_unit_add(callable_)[source]

Add a “unit added” observer to this entity, which will be called whenever a unit is added to this application.

on_unit_remove(callable_)[source]

Add a “unit removed” observer to this entity, which will be called whenever a unit is removed from this application.

property owner_tag: str
coroutine refresh(channel: Optional[str] = None, force: bool = False, force_series: bool = False, force_units: bool = False, path: Optional[Union[Path, str]] = None, resources: Optional[Dict[str, str]] = None, revision: Optional[int] = None, switch: Optional[str] = None)[source]

Refresh the charm for this application.

Parameters:
  • channel (str|None) – Channel to use when getting the charm from the charm store, e.g. ‘development’

  • force_series (bool) – Refresh even if series of deployed application is not supported by the new charm

  • force_units (bool) – Refresh all units immediately, even if in error state

  • path (Path|str|None) – Refresh to a charm located at path

  • resources (dict[str,str]|None) – Dictionary of resource name/filepath pairs

  • revision (int|None) – Explicit refresh revision

  • switch (str|None) – URL of a different charm to cross-grade to

coroutine relate(local_relation, remote_relation)[source]

Add a relation to another application.

Parameters:
  • local_relation (str) – Name of relation on this application

  • remote_relation (str) – Name of relation on the other application in the form ‘<application>[:<relation_name>]’

related_applications(endpoint_name=None)[source]
property relations: List[Relation]
coroutine remove(destroy_storage=False, force=False, no_wait=False)

Remove this application from the model.

Parameters:
  • destroy_storage (bool) – Destroy storage attached to application unit. (=false)

  • force (bool) – Completely remove an application and all its dependencies. (=false)

  • no_wait (bool) – Rush through application removal without waiting for each individual step to complete (=false)

  • block (bool) – Blocks until the application is removed from the model

coroutine remove_relation(local_relation, remote_relation, block_until_done: bool = False)

Remove a relation to another application.

Parameters:
  • local_relation (str) – Name of relation on this application

  • remote_relation (str) – Name of relation on the other application in the form ‘<application>[:<relation_name>]’

  • block_until_done (bool) – Wait until the relation is completely removed.

coroutine reset_config(to_default)[source]

Restore application config to default values.

Parameters:

to_default (list) – A list of config options to be reset to their

default value.

coroutine run(command, timeout=None)[source]

Run command on all units for this application.

Parameters:
  • command (str) – The command to run

  • timeout (int) – Time to wait before command is considered failed

coroutine scale(scale=None, scale_change=None)[source]

Set or adjust the scale of this (K8s) application.

One or the other of scale or scale_change must be provided.

Parameters:
  • scale (int) – Scale to which to set this application.

  • scale_change (int) – Amount by which to adjust the scale of this application (can be positive or negative).

coroutine set_annotations(annotations)[source]

Set annotations on this application.

Parameters:

map[string]string (annotations) – the annotations as key/value pairs.

coroutine set_config(config)[source]

Set configuration options for this application.

Parameters:

config – Dict of configuration to set

coroutine set_constraints(constraints)[source]

Set machine constraints for this application.

Parameters:

constraints (dict) – Dict of machine constraints

coroutine set_trusted(trust)[source]

Set the trusted configuration of the application.

Parameters:

trust (bool) – Trust the application or not

property status

Get the application status.

If the application is unknown it will attempt to derive the unit workload status and highlight the most relevant (severity).

property status_message

Get the application status message, as set by the charm’s leader.

property subordinate: bool
property subordinate_units

Returns the subordinate units of this application

supports_granular_expose_parameters()[source]

Returns true if the controller supports granular, per-endpoint expose parameters.

property tag
coroutine unexpose(exposed_endpoints=None)[source]

Prevent a subset of the application endpoints or the entire application from being reached over the network.

If the exposed_endpoints argument is not provided, the entire application will be unexposed.

On juju 2.9 and onwards, the exposed_endpoints argument may be used to specify a list of endpoint names whose port ranges should be unexposed.

When targeting an older juju controller, the exposed_endpoints param is not supported and an error will be raised if it is provided.

property units
coroutine upgrade_charm(channel: Optional[str] = None, force: bool = False, force_series: bool = False, force_units: bool = False, path: Optional[Union[Path, str]] = None, resources: Optional[Dict[str, str]] = None, revision: Optional[int] = None, switch: Optional[str] = None)

Refresh the charm for this application.

Parameters:
  • channel (str|None) – Channel to use when getting the charm from the charm store, e.g. ‘development’

  • force_series (bool) – Refresh even if series of deployed application is not supported by the new charm

  • force_units (bool) – Refresh all units immediately, even if in error state

  • path (Path|str|None) – Refresh to a charm located at path

  • resources (dict[str,str]|None) – Dictionary of resource name/filepath pairs

  • revision (int|None) – Explicit refresh revision

  • switch (str|None) – URL of a different charm to cross-grade to

property workload_version: str
class juju.application.ExposedEndpoint(to_spaces=None, to_cidrs=None)[source]

Bases: object

ExposedEndpoint stores the list of CIDRs and space names which should be allowed access to the port ranges that the application has opened for a particular endpoint. Both lists are optional; if empty, the opened port ranges will be reachable from any source IP address.

classmethod from_dict(data)[source]
includes_non_wildcard_cidrs()[source]
includes_spaces()[source]
to_dict()[source]