README

Juju logo

Juju is a model-driven Operator Lifecycle Manager (OLM). Juju greatly improves the experience of running Kubernetes operators, especially in projects that integrate many operators from different publishers.

Why Juju

A Kubernetes operator is a container that drives the config and operation of a workload. By encapsulating ops code as a reusable container, the operator pattern moves beyond traditional config management to allow much more agile operations for complex cloud workloads.

Shared, open source operators take infra as code to the next level with community-driven ops and integration code. Reuse of ops code improves quality and encourages wider community engagement and contribution. Operators also improve security through consistent automation. Juju operators are a community-driven devsecops approach to open source operations.

Juju implements the Kubernetes operator pattern, but is also a universal OLM that extends the operator pattern to traditional applications (without Kubernetes) on Linux and Windows. Such machine operators can work on bare metal, virtual machines or cloud instances, enabling multi cloud and hybrid cloud operations. Juju allows you to embrace the operator pattern on both container and legacy estate. An operator for machine-based environments can share 95% of its code with a Kubernetes operator for the same app.

Juju excels at application integration. Instead of simply focusing on lifecycle management, the Juju OLM provides a rich application graph model that tells operators how to integrate with one another. This dramatically simplifies the operations of large deployments.

A key focus for Juju is to simplify operator design, development and usage. Instead of making very complex operators for specific scenarios, Juju encourages devops to make composable operators, each of which drives a single Docker image, and which can be reused in different settings. Composable operators enable very rich scenarios to be constructed out of simpler operators that do one thing and do it well.

The OLM provides a central mechanism for operator instantiation, configuration, upgrades, integration and administration. The OLM provides a range of operator lifecycle services including leader election and persistent state. Instead of manually deploying and configuring operators, the OLM manages all the operators in a model at the direction of the administrator.

Open Operator Collection

The world's largest collection of operators all use Juju as their OLM. The Charmhub community emphasizes quality, collaboration and consistency. Publish your own operator and share integration code for other operators to connect to your application.

The Open Operator Manifesto outlines the values of the community and describe the ideal behaviour of operators, to shape contributions and discussions.

Multi cloud and hybrid operations across ARM and x86 infrastructure

The Juju OLM supports AWS, Azure, Google, Oracle, OpenStack, VMware and bare metal machines, as well as any conformant Kubernetes cluster. Integrate operators across clouds, and across machines and containers, just as easily. A single scenario can include applications on Kubernetes, as well as applications on a range of clouds and bare metal instances, all integrated automatically.

Juju operators support multiple CPU architectures. Connect applications on ARM with applications on x86 and take advantage of silicon-specific optimisations. It is good practice for operators to adapt to their environment and accelerate workloads accordingly.

Pure Python operators

The Python Operator Framework makes it easy to write an operator. The framework handles all the details of communication between integrated operators, so you can focus on your own application lifecycle management.

Code sharing between operator publishers is simplified making it much faster to collaborate on distributed systems involving components from many different publishers and upstreams. Your operator is a Python event handler. Lifecycle management, configuration and integration are all events delivered to your charm by the framework.

Architecture

The Juju client, server and agent are all written in Golang. The standard Juju packaging includes an embedded database for centralised logging and persistence, but there is no need to manage that database separately.

Operators can be written in any language but we do encourage new authors to use the Python Operator Framework for ease of contribution, support and community participation.

Production grade

The Juju server has built-in support for high availability when scaled out to three instances. It can monitor itself and grow additional instances in the event of failure, within predetermined limits. Juju supports backup, restore, and rolling upgrade operations appropriate for large-scale centralised enterprise grade management and operations systems.

Get started

Our community hangs out at the Charmhub discourse which serves as a combination mailing list and web forum. Keep up with the news and get a feel for operator engineering and usage there. Get the Juju CLI on Windows, macOS or Linux with the install instructions and try the tutorials. All you need is a small K8s cluster, or an Ubuntu machine or VM to run MicroK8s.

Read the documentation for a comprehensive reference of commands and usage.

Contributing

Follow our code and contribution guidelines to learn how to make code changes. File bugs in Launchpad or ask questions on our Freenode IRC channel.

Expand ▾ Collapse ▴

Documentation

Overview

    Package juju is devops distilled.

    Project homepage: https://github.com/juju/juju

    For more information please refer to the README file in this directory.

    Source Files

    Directories

    Path Synopsis
    acceptancetests
    api
    application
    Package application provides access to the application api facade.
    Package application provides access to the application api facade.
    base/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    bundle
    Package bundle provides access to the bundle api facade.
    Package bundle provides access to the bundle api facade.
    charms
    Package charms provides a client for accessing the charms API.
    Package charms provides a client for accessing the charms API.
    common/charms
    charms provides a client for accessing the charms API.
    charms provides a client for accessing the charms API.
    hostkeyreporter
    Package hostkeyreporter implements the client-side API facade used by the hostkeyreporter worker.
    Package hostkeyreporter implements the client-side API facade used by the hostkeyreporter worker.
    instancemutater/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    leadership
    Package leadership implements the client to the analog leadership service.
    Package leadership implements the client to the analog leadership service.
    logsender
    Package logsender implements the API for storing log messages on the API server.
    Package logsender implements the API for storing log messages on the API server.
    machineactions
    machineactions implements the the api side of running actions on machines
    machineactions implements the the api side of running actions on machines
    meterstatus
    Package meterstatus contains an implementation of the api facade to watch the meter status of a unit for changes and return the current meter status.
    Package meterstatus contains an implementation of the api facade to watch the meter status of a unit for changes and return the current meter status.
    metricsadder
    Package metricsadder contains an implementation of the api facade to add metrics to the state.
    Package metricsadder contains an implementation of the api facade to add metrics to the state.
    metricsdebug
    The metricsdebug package contains the implementation of a client to access metrics debug functions within state.
    The metricsdebug package contains the implementation of a client to access metrics debug functions within state.
    metricsmanager
    The metricsmanager package contains implementation for an api facade to access metrics functions within state
    The metricsmanager package contains implementation for an api facade to access metrics functions within state
    migrationtarget
    Package migrationtarget defines the client side API facade for use by the migration master worker when communicating with the target controller.
    Package migrationtarget defines the client side API facade for use by the migration master worker when communicating with the target controller.
    provisioner/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    pubsub
    Package pubsub implements the API for streaming pubsub messages between api servers.
    Package pubsub implements the API for streaming pubsub messages between api servers.
    common/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    common/networkingcommon/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    common/storagecommon
    Package storagecommon provides common storage-related services for API server facades.
    Package storagecommon provides common storage-related services for API server facades.
    facade/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/agent/hostkeyreporter
    Package hostkeyreporter implements the API facade used by the hostkeyreporter worker.
    Package hostkeyreporter implements the API facade used by the hostkeyreporter worker.
    facades/agent/instancemutater/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/agent/machine
    The machiner package implements the API interface used by the machiner worker.
    The machiner package implements the API interface used by the machiner worker.
    facades/agent/machineactions
    machineactions implements the the apiserver side of running actions on machines
    machineactions implements the the apiserver side of running actions on machines
    facades/agent/meterstatus
    Package meterstatus provides the meter status API facade.
    Package meterstatus provides the meter status API facade.
    facades/agent/meterstatus/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/agent/metricsender
    Package metricsender contains functions for sending metrics from a controller to a remote metric collector.
    Package metricsender contains functions for sending metrics from a controller to a remote metric collector.
    facades/agent/migrationminion
    Package migrationminion defines the API facade for use by the migration minion worker to monitor the progress of, and interact with, model migrations.
    Package migrationminion defines the API facade for use by the migration minion worker to monitor the progress of, and interact with, model migrations.
    facades/agent/provisioner
    Package provisioner supplies the API facade used by the provisioner worker.
    Package provisioner supplies the API facade used by the provisioner worker.
    facades/agent/provisioner/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/agent/uniter
    Package uniter implements the API interface used by the uniter worker.
    Package uniter implements the API interface used by the uniter worker.
    facades/agent/uniter/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/agent/upgradesteps/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/client/application
    Package application contains api calls for functionality related to deploying and managing applications and their related charms.
    Package application contains api calls for functionality related to deploying and managing applications and their related charms.
    facades/client/application/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/client/bundle
    Package bundle defines an API endpoint for functions dealing with bundles.
    Package bundle defines an API endpoint for functions dealing with bundles.
    facades/client/charms/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/client/cloud
    Package cloud defines an API end point for functions dealing with the controller's cloud definition, and cloud credentials.
    Package cloud defines an API end point for functions dealing with the controller's cloud definition, and cloud credentials.
    facades/client/controller
    The controller package defines an API end point for functions dealing with controllers as a whole.
    The controller package defines an API end point for functions dealing with controllers as a whole.
    facades/client/machinemanager/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/client/metricsdebug
    Package metricsdebug contains the implementation of an api endpoint for metrics debug functionality.
    Package metricsdebug contains the implementation of an api endpoint for metrics debug functionality.
    facades/client/modelgeneration/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/client/modelmanager
    Package modelmanager defines an API end point for functions dealing with models.
    Package modelmanager defines an API end point for functions dealing with models.
    facades/client/modelmanager/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/client/resources/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/client/sshclient
    Package sshclient implements the API endpoint required for Juju clients that wish to make SSH connections to Juju managed machines.
    Package sshclient implements the API endpoint required for Juju clients that wish to make SSH connections to Juju managed machines.
    facades/client/storage
    Package storage provides an API server facade for managing storage entities.
    Package storage provides an API server facade for managing storage entities.
    facades/client/subnets/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/controller/charmrevisionupdater/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/controller/metricsmanager
    Package metricsmanager contains the implementation of an api endpoint for calling metrics functions in state.
    Package metricsmanager contains the implementation of an api endpoint for calling metrics functions in state.
    facades/controller/migrationmaster
    This package defines the API facade for use by the migration master worker when communicating with its own controller.
    This package defines the API facade for use by the migration master worker when communicating with its own controller.
    facades/controller/migrationmaster/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    facades/controller/migrationtarget
    This package defines the API facade for use by the migration master worker when interacting with the target controller during a migration.
    This package defines the API facade for use by the migration master worker when interacting with the target controller during a migration.
    facades/controller/resumer
    The resumer package implements the API interface used by the resumer worker.
    The resumer package implements the API interface used by the resumer worker.
    httpattachment
    Package httpattachment provides facilities for attaching a streaming blob of data and associated metadata to an HTTP API request, and for reading that blob on the server side.
    Package httpattachment provides facilities for attaching a streaming blob of data and associated metadata to an HTTP API request, and for reading that blob on the server side.
    logsink/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    observer/metricobserver
    Package metricobserver provides an implementation of apiserver/observer.ObserverFactory that maintains Prometheus metrics.
    Package metricobserver provides an implementation of apiserver/observer.ObserverFactory that maintains Prometheus metrics.
    observer/metricobserver/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    ecs
    ecs/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    kubernetes/provider/exec/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    kubernetes/provider/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    kubernetes/provider/resources/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    kubernetes/provider/specs/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    Package cloud provides functionality to parse information describing clouds, including regions, supported auth types etc.
    Package cloud provides functionality to parse information describing clouds, including regions, supported auth types etc.
    cloudinit
    The cloudinit package implements a way of creating a cloud-init configuration file.
    The cloudinit package implements a way of creating a cloud-init configuration file.
    providerinit
    This package offers userdata in a gzipped format to be used by different cloud providers
    This package offers userdata in a gzipped format to be used by different cloud providers
    providerinit/renderers
    The renderers package implements a way to encode the userdata depending on the OS and the provider.
    The renderers package implements a way to encode the userdata depending on the OS and the provider.
    cmd
    containeragent/initialize/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    containeragent/utils/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/application/bundle/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/application/deployer/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/application/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/application/store/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/application/utils/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/caas/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/charmhub/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/commands/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/controller
    The controller package groups various commands that are based on talking directly to the controller, and not environments in the controller.
    The controller package groups various commands that are based on talking directly to the controller, and not environments in the controller.
    juju/interact
    Package interact provides helper methods for interacting with the CLI user at command run time.
    Package interact provides helper methods for interacting with the CLI user at command run time.
    juju/machine/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/model/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/romulus/budget
    Package budget defines the command used to update budgets.
    Package budget defines the command used to update budgets.
    juju/romulus/commands
    Package commands provides functionality for registering all the romulus commands.
    Package commands provides functionality for registering all the romulus commands.
    juju/romulus/listplans
    The listplans package contains implementation of the command that can be used to list plans that are available for a charm.
    The listplans package contains implementation of the command that can be used to list plans that are available for a charm.
    juju/romulus/setplan
    The setplan package contains the implementation of the juju set-plan command.
    The setplan package contains the implementation of the juju set-plan command.
    juju/romulus/sla
    The sla package contains the implementation of the juju sla command.
    The sla package contains the implementation of the juju sla command.
    juju/space/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    juju/storage
    The storage command provides a storage management interface, for manipulating and inspecting storage entities (volumes, filesystems, charm storage).
    The storage command provides a storage management interface, for manipulating and inspecting storage entities (volumes, filesystems, charm storage).
    jujud/reboot/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    output/progress/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    plugins/juju-wait-for/api
    Package api exists because we can't generate mocks in the main namespace.
    Package api exists because we can't generate mocks in the main namespace.
    plugins/juju-wait-for/api/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    component
    all
    The all package facilitates the registration of Juju components into the relevant machinery.
    The all package facilitates the registration of Juju components into the relevant machinery.
    broker/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    kvm
    Package kvm provides the facilities to deploy to kvm instances.
    Package kvm provides the facilities to deploy to kvm instances.
    lxd
    lxd/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    lxd/testing
    Package testing is a generated GoMock package.
    Package testing is a generated GoMock package.
    testing
    Package testing is a generated GoMock package.
    Package testing is a generated GoMock package.
    modelmanager
    Package modelmanager provides the business logic for model management operations in the controller.
    Package modelmanager provides the business logic for model management operations in the controller.
    Package core exists to hold concepts and pure logic pertaining to juju's domain.
    Package core exists to hold concepts and pure logic pertaining to juju's domain.
    cache
    Package cache is responsible for keeping an in memory representation of the controller's models.
    Package cache is responsible for keeping an in memory representation of the controller's models.
    leadership
    Package leadership holds code pertaining to application leadership in juju.
    Package leadership holds code pertaining to application leadership in juju.
    leadership/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    lxdprofile
    Package lxdprofile defines a set of functions and constants that can interact with LXD Profiles.
    Package lxdprofile defines a set of functions and constants that can interact with LXD Profiles.
    lxdprofile/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    paths/transientfile
    Package transientfile provides helpers for creating files that do not survive machine reboots.
    Package transientfile provides helpers for creating files that do not survive machine reboots.
    presence
    The presence package works on the premise that an agent it alive if it has a current connection to one of the API servers.
    The presence package works on the premise that an agent it alive if it has a current connection to one of the API servers.
    imagedownloads
    Package imagedownloads implements image-downloads metadata from simplestreams.
    Package imagedownloads implements image-downloads metadata from simplestreams.
    imagemetadata
    The imagemetadata package supports locating, parsing, and filtering Ubuntu image metadata in simplestreams format.
    The imagemetadata package supports locating, parsing, and filtering Ubuntu image metadata in simplestreams format.
    mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    simplestreams
    The simplestreams package supports locating, parsing, and filtering metadata in simplestreams format.
    The simplestreams package supports locating, parsing, and filtering metadata in simplestreams format.
    testing
    Package testing is a generated GoMock package.
    Package testing is a generated GoMock package.
    tools
    The tools package supports locating, parsing, and filtering Ubuntu tools metadata in simplestreams format.
    The tools package supports locating, parsing, and filtering Ubuntu tools metadata in simplestreams format.
    Package feature package defines the names of the current feature flags.
    Package feature package defines the names of the current feature flags.
    This package contains functional tests only.
    This package contains functional tests only.
    schemagen/gen
    Package gen is a generated GoMock package.
    Package gen is a generated GoMock package.
    The logfwd package contains the tools needed to do log record forwarding in juju.
    The logfwd package contains the tools needed to do log record forwarding in juju.
    syslog
    The syslog package holds the tools needed to perform log forwarding from Juju to a remote syslog (RFC 5424) host.
    The syslog package holds the tools needed to perform log forwarding from Juju to a remote syslog (RFC 5424) host.
    mongometrics
    Package mongometrics contains MongodB-related Prometheus metric collectors.
    Package mongometrics contains MongodB-related Prometheus metric collectors.
    ssh
    The payload package (and subpackages) contain the implementation of the charm payload feature component.
    The payload package (and subpackages) contain the implementation of the charm payload feature component.
    api
    pki
    tls
    provider
    all
    common/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    dummy
    The dummy provider implements an environment provider for testing purposes, registered with environs under the name "dummy".
    The dummy provider implements an environment provider for testing purposes, registered with environs under the name "dummy".
    ec2
    gce
    lxd
    lxd/lxdnames
    Package lxdnames provides names for the lxd provider.
    Package lxdnames provides names for the lxd provider.
    oci
    oci/testing
    Package testing is a generated GoMock package.
    Package testing is a generated GoMock package.
    vsphere/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    pubsub
    agent
    Package agent contains messages for all agents rather than controllers.
    Package agent contains messages for all agents rather than controllers.
    The resource package provides the functionality of the "resources" feature in Juju.
    The resource package provides the functionality of the "resources" feature in Juju.
    resourceadapters/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    resourcetesting
    This package provides helpers for testing with resources.
    This package provides helpers for testing with resources.
    rpc
    jsoncodec
    The jsoncodec package provides a JSON codec for the rpc package.
    The jsoncodec package provides a JSON codec for the rpc package.
    scripts
    mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    snap
    Package snap is a minimal service.Service implementation, derived from the on service/upstart package.
    Package snap is a minimal service.Service implementation, derived from the on service/upstart package.
    backups
    Package backups contains all the stand-alone backup-related functionality for juju state.
    Package backups contains all the stand-alone backup-related functionality for juju state.
    bakerystorage
    Package bakerystorage provides an implementation of the bakery Storage interface that uses MongoDB to store items.
    Package bakerystorage provides an implementation of the bakery Storage interface that uses MongoDB to store items.
    globalclock
    Package globalclock provides clients for updating and reading the global virtual time, stored in the MongoDB database.
    Package globalclock provides clients for updating and reading the global virtual time, stored in the MongoDB database.
    mgo
    migrations
    Package migrations aims to create an intermediate state between state and the description package.
    Package migrations aims to create an intermediate state between state and the description package.
    mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    stateenvirons
    Package stateenvirons provides types and functions that interface the state and environs packages.
    Package stateenvirons provides types and functions that interface the state and environs packages.
    watcher
    The watcher package provides an interface for observing changes to arbitrary MongoDB documents that are maintained via the mgo/txn transaction package.
    The watcher package provides an interface for observing changes to arbitrary MongoDB documents that are maintained via the mgo/txn transaction package.
    Package storage defines structures and functions relating to charm storage.
    Package storage defines structures and functions relating to charm storage.
    Package testcharms holds a corpus of charms for testing.
    Package testcharms holds a corpus of charms for testing.
    MACHINE GENERATED BY github.com/juju/juju/generate/certgen.
    MACHINE GENERATED BY github.com/juju/juju/generate/certgen.
    The upgrades package provides infrastructure to upgrade previous Juju deployments to the current Juju version.
    The upgrades package provides infrastructure to upgrade previous Juju deployments to the current Juju version.
    mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    utils
    Package version contains versioning information for juju.
    Package version contains versioning information for juju.
    watcher
    legacy
    Package legacy contains state-watcher-tuned worker harnesses; the canonical implementations are in the watcher package, but aren't type-compatible with original-style watchers -- such as those returned from state methods -- which we still have a couple of uses for (and the certupdater use might even be legitimate).
    Package legacy contains state-watcher-tuned worker harnesses; the canonical implementations are in the watcher package, but aren't type-compatible with original-style watchers -- such as those returned from state methods -- which we still have a couple of uses for (and the certupdater use might even be legitimate).
    caasapplicationprovisioner/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    caasfirewallerembedded/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    caasoperator/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    containerbroker/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    diskmanager
    Package diskmanager defines a worker that periodically lists block devices on the machine it runs on.
    Package diskmanager defines a worker that periodically lists block devices on the machine it runs on.
    fortress
    Package fortress implements a convenient metaphor for an RWLock.
    Package fortress implements a convenient metaphor for an RWLock.
    gate
    package gate provides a mechanism by which independent workers can wait for one another to finish a task, without introducing explicit dependencies between those workers.
    package gate provides a mechanism by which independent workers can wait for one another to finish a task, without introducing explicit dependencies between those workers.
    instancemutater/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    instancepoller/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    introspection
    Package introspection defines the worker that can report internal agent state through the use of a machine local socket.
    Package introspection defines the worker that can report internal agent state through the use of a machine local socket.
    introspection/pprof
    Package pprof is a fork of net/http/pprof modified to communicate over a unix socket.
    Package pprof is a fork of net/http/pprof modified to communicate over a unix socket.
    logsender/logsendertest
    Package logsendertest provides testing utilities related to the logsender package.
    Package logsendertest provides testing utilities related to the logsender package.
    machineactions/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    meterstatus
    Package meterstatus provides a worker that executes the meter-status-changed hook periodically.
    Package meterstatus provides a worker that executes the meter-status-changed hook periodically.
    meterstatus/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    metrics/collect
    Package collect provides a worker that executes the collect-metrics hook periodically, as long as the workload has been started (between start and stop hooks).
    Package collect provides a worker that executes the collect-metrics hook periodically, as long as the workload has been started (between start and stop hooks).
    metrics/sender
    Package sender contains the implementation of the metric sender manifold.
    Package sender contains the implementation of the metric sender manifold.
    metrics/spool
    Package spool contains the implementation of a worker that extracts the spool directory path from the agent config and enables other workers to write and read metrics to and from a the spool directory using a writer and a reader.
    Package spool contains the implementation of a worker that extracts the spool directory path from the agent config and enables other workers to write and read metrics to and from a the spool directory using a writer and a reader.
    mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    multiwatcher
    Package multiwatcher provides watchers that watch the entire model.
    Package multiwatcher provides watchers that watch the entire model.
    provisioner/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    pruner/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    storageprovisioner
    Package storageprovisioner provides a worker that manages the provisioning and deprovisioning of storage volumes and filesystems, and attaching them to and detaching them from machines.
    Package storageprovisioner provides a worker that manages the provisioning and deprovisioning of storage volumes and filesystems, and attaching them to and detaching them from machines.
    uniter/hook
    Package hook provides types that define the hooks known to the Uniter
    Package hook provides types that define the hooks known to the Uniter
    uniter/operation/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    uniter/relation
    relation implements persistent local storage of a unit's relation state, and translation of relation changes into hooks that need to be run.
    relation implements persistent local storage of a unit's relation state, and translation of relation changes into hooks that need to be run.
    uniter/relation/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    uniter/runner/context
    Package context contains the ContextFactory and Context definitions.
    Package context contains the ContextFactory and Context definitions.
    uniter/runner/context/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    uniter/runner/jujuc
    The worker/uniter/runner/jujuc package implements the server side of the jujuc proxy tool, which forwards command invocations to the unit agent process so that they can be executed against specific state.
    The worker/uniter/runner/jujuc package implements the server side of the jujuc proxy tool, which forwards command invocations to the unit agent process so that they can be executed against specific state.
    uniter/runner/jujuc/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    uniter/storage
    Package storage contains the storage subsystem for the uniter, responding to changes in storage attachments (lifecycle, volume/filesystem details) by queuing hooks and managing the storage attachments' lifecycle.
    Package storage contains the storage subsystem for the uniter, responding to changes in storage attachments (lifecycle, volume/filesystem details) by queuing hooks and managing the storage attachments' lifecycle.
    upgradedatabase/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.
    upgradeseries/mocks
    Package mocks is a generated GoMock package.
    Package mocks is a generated GoMock package.