Application

In Juju, an application is a running abstraction of a charm in the Juju model. It is whatever software is defined by the charm. This could correspond to a traditional software package but it could also be less or more.

An application is always hosted within a model and consists of one or more units.

An application can have resources, a configuration, the ability to form relations, and actions.

Application endpoint

In Juju, an application endpoint is a struct defined in an application’s charm’s metadata.yaml / (since Charmcraft 2.5) charmcraft.yaml consisting of

  • a name (charm-specific),

  • a role (one of provides, requires = ‘can use’, or peers), and

  • an interface

whose purpose is to help define a relation.

For example, the MySQL application deployed from the mysql charm has an endpoint called mysql with role provides and interface mysql and this can be used to form a non-subordinate relation <non-subordinate-relation relation with WordPress.

All charms have an implicit (not in their metadata.yaml / charmcraft.yaml) endpoint with name juju-info, role provides, and interface juju-info which can be used to form subordinate relations with subordinate charms that have an explicit endpoint with name juju-info, role requires, and interface juju-info (e.g., mysql-router).