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/repository/charms/fill-logs/actions
acceptancetests/repository/trusty/fill-logs/actions
agent
agent/agentbootstrap
agent/tools
api
api/action
api/agent
api/agenttools
api/annotations
api/application Package application provides access to the application api facade.
api/applicationoffers
api/applicationscaler
api/authentication
api/backups
api/base
api/base/mocks Package mocks is a generated GoMock package.
api/base/testing
api/block
api/bundle
api/caasadmission
api/caasagent
api/caasapplication
api/caasapplicationprovisioner
api/caasfirewaller
api/caasmodeloperator
api/caasoperator
api/caasoperatorprovisioner
api/caasoperatorupgrader
api/caasunitprovisioner
api/charmhub
api/charmrevisionupdater
api/charms charms provides a client for accessing the charms API.
api/cleaner
api/cloud
api/common
api/common/charm
api/common/charms charms provides a client for accessing the charms API.
api/common/cloudspec
api/common/stream
api/controller
api/credentialmanager
api/credentialvalidator
api/crosscontroller
api/crossmodelrelations
api/deployer
api/diskmanager
api/externalcontrollerupdater
api/fanconfigurer
api/firewaller
api/firewallrules
api/highavailability
api/hostkeyreporter Package hostkeyreporter implements the client-side API facade used by the hostkeyreporter worker.
api/http
api/imagemanager
api/imagemetadatamanager
api/instancemutater
api/instancemutater/mocks Package mocks is a generated GoMock package.
api/instancepoller
api/keymanager
api/keyupdater
api/leadership Package leadership implements the client to the analog leadership service.
api/lifeflag
api/logfwd
api/logger
api/logsender Package logsender implements the API for storing log messages on the API server.
api/logstream
api/machineactions machineactions implements the the api side of running actions on machines
api/machinemanager
api/machiner
api/machineundertaker
api/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.
api/metricsadder Package metricsadder contains an implementation of the api facade to add metrics to the state.
api/metricsdebug The metricsdebug package contains the implementation of a client to access metrics debug functions within state.
api/metricsmanager The metricsmanager package contains implementation for an api facade to access metrics functions within state
api/migrationflag
api/migrationmaster
api/migrationminion
api/migrationtarget Package migrationtarget defines the client side API facade for use by the migration master worker when communicating with the target controller.
api/modelconfig
api/modelgeneration
api/modelmanager
api/modelupgrader
api/provisioner
api/provisioner/mocks Package mocks is a generated GoMock package.
api/proxyupdater
api/pubsub Package pubsub implements the API for streaming pubsub messages between api servers.
api/reboot
api/remoterelations
api/resumer
api/retrystrategy
api/singular
api/spaces
api/sshclient
api/statushistory
api/storage
api/storageprovisioner
api/subnets
api/testing
api/undertaker
api/unitassigner
api/uniter
api/upgrader
api/upgradeseries
api/upgradesteps
api/usermanager
api/watcher
apiserver
apiserver/apiserverhttp
apiserver/authentication
apiserver/bakeryutil
apiserver/common
apiserver/common/apihttp
apiserver/common/charms
apiserver/common/cloudspec
apiserver/common/credentialcommon
apiserver/common/crossmodel
apiserver/common/firewall
apiserver/common/imagecommon
apiserver/common/mocks Package mocks is a generated GoMock package.
apiserver/common/networkingcommon
apiserver/common/networkingcommon/mocks Package mocks is a generated GoMock package.
apiserver/common/storagecommon Package storagecommon provides common storage-related services for API server facades.
apiserver/common/testing
apiserver/common/unitcommon
apiserver/errors
apiserver/facade
apiserver/facade/facadetest
apiserver/facade/mocks Package mocks is a generated GoMock package.
apiserver/facades/agent/agent
apiserver/facades/agent/caasadmission
apiserver/facades/agent/caasagent
apiserver/facades/agent/caasapplication
apiserver/facades/agent/caasoperator
apiserver/facades/agent/credentialvalidator
apiserver/facades/agent/deployer
apiserver/facades/agent/diskmanager
apiserver/facades/agent/fanconfigurer
apiserver/facades/agent/hostkeyreporter Package hostkeyreporter implements the API facade used by the hostkeyreporter worker.
apiserver/facades/agent/instancemutater
apiserver/facades/agent/instancemutater/mocks Package mocks is a generated GoMock package.
apiserver/facades/agent/keyupdater
apiserver/facades/agent/leadership
apiserver/facades/agent/logger
apiserver/facades/agent/machine The machiner package implements the API interface used by the machiner worker.
apiserver/facades/agent/machineactions machineactions implements the the apiserver side of running actions on machines
apiserver/facades/agent/meterstatus Package meterstatus provides the meter status API facade.
apiserver/facades/agent/meterstatus/mocks Package mocks is a generated GoMock package.
apiserver/facades/agent/meterstatus/testing
apiserver/facades/agent/metricsadder
apiserver/facades/agent/metricsender Package metricsender contains functions for sending metrics from a controller to a remote metric collector.
apiserver/facades/agent/metricsender/testing
apiserver/facades/agent/migrationflag
apiserver/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.
apiserver/facades/agent/payloadshookcontext
apiserver/facades/agent/provisioner Package provisioner supplies the API facade used by the provisioner worker.
apiserver/facades/agent/provisioner/mocks Package mocks is a generated GoMock package.
apiserver/facades/agent/proxyupdater
apiserver/facades/agent/reboot
apiserver/facades/agent/resourceshookcontext
apiserver/facades/agent/retrystrategy
apiserver/facades/agent/storageprovisioner
apiserver/facades/agent/storageprovisioner/internal/filesystemwatcher
apiserver/facades/agent/unitassigner
apiserver/facades/agent/uniter Package uniter implements the API interface used by the uniter worker.
apiserver/facades/agent/uniter/mocks Package mocks is a generated GoMock package.
apiserver/facades/agent/upgrader
apiserver/facades/agent/upgradeseries
apiserver/facades/agent/upgradesteps
apiserver/facades/agent/upgradesteps/mocks Package mocks is a generated GoMock package.
apiserver/facades/client/action
apiserver/facades/client/annotations
apiserver/facades/client/application Package application contains api calls for functionality related to deploying and managing applications and their related charms.
apiserver/facades/client/application/mocks Package mocks is a generated GoMock package.
apiserver/facades/client/applicationoffers
apiserver/facades/client/backups
apiserver/facades/client/block
apiserver/facades/client/bundle Package bundle defines an API endpoint for functions dealing with bundles.
apiserver/facades/client/charmhub
apiserver/facades/client/charms
apiserver/facades/client/charms/interfaces
apiserver/facades/client/charms/mocks Package mocks is a generated GoMock package.
apiserver/facades/client/client
apiserver/facades/client/cloud Package cloud defines an API end point for functions dealing with the controller's cloud definition, and cloud credentials.
apiserver/facades/client/controller The controller package defines an API end point for functions dealing with controllers as a whole.
apiserver/facades/client/credentialmanager
apiserver/facades/client/firewallrules
apiserver/facades/client/highavailability
apiserver/facades/client/imagemanager
apiserver/facades/client/imagemetadatamanager
apiserver/facades/client/keymanager
apiserver/facades/client/keymanager/testing
apiserver/facades/client/machinemanager
apiserver/facades/client/machinemanager/mocks Package mocks is a generated GoMock package.
apiserver/facades/client/metricsdebug Package metricsdebug contains the implementation of an api endpoint for metrics debug functionality.
apiserver/facades/client/modelconfig
apiserver/facades/client/modelgeneration
apiserver/facades/client/modelgeneration/mocks Package mocks is a generated GoMock package.
apiserver/facades/client/modelmanager Package modelmanager defines an API end point for functions dealing with models.
apiserver/facades/client/modelmanager/mocks Package mocks is a generated GoMock package.
apiserver/facades/client/payloads
apiserver/facades/client/resources
apiserver/facades/client/spaces
apiserver/facades/client/sshclient Package sshclient implements the API endpoint required for Juju clients that wish to make SSH connections to Juju managed machines.
apiserver/facades/client/storage Package storage provides an API server facade for managing storage entities.
apiserver/facades/client/subnets
apiserver/facades/client/subnets/mocks Package mocks is a generated GoMock package.
apiserver/facades/client/usermanager
apiserver/facades/controller/actionpruner
apiserver/facades/controller/agenttools
apiserver/facades/controller/applicationscaler
apiserver/facades/controller/caasapplicationprovisioner
apiserver/facades/controller/caasfirewaller
apiserver/facades/controller/caasmodeloperator
apiserver/facades/controller/caasoperatorprovisioner
apiserver/facades/controller/caasoperatorupgrader
apiserver/facades/controller/caasunitprovisioner
apiserver/facades/controller/charmrevisionupdater
apiserver/facades/controller/charmrevisionupdater/testing
apiserver/facades/controller/cleaner
apiserver/facades/controller/crosscontroller
apiserver/facades/controller/crossmodelrelations
apiserver/facades/controller/externalcontrollerupdater
apiserver/facades/controller/firewaller
apiserver/facades/controller/imagemetadata
apiserver/facades/controller/instancepoller
apiserver/facades/controller/lifeflag
apiserver/facades/controller/logfwd
apiserver/facades/controller/machineundertaker
apiserver/facades/controller/metricsmanager Package metricsmanager contains the implementation of an api endpoint for calling metrics functions in state.
apiserver/facades/controller/migrationmaster This package defines the API facade for use by the migration master worker when communicating with its own controller.
apiserver/facades/controller/migrationmaster/mocks Package mocks is a generated GoMock package.
apiserver/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.
apiserver/facades/controller/modelupgrader
apiserver/facades/controller/remoterelations
apiserver/facades/controller/resumer The resumer package implements the API interface used by the resumer worker.
apiserver/facades/controller/singular
apiserver/facades/controller/statushistory
apiserver/facades/controller/undertaker
apiserver/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.
apiserver/httpcontext
apiserver/logsink
apiserver/logsink/mocks Package mocks is a generated GoMock package.
apiserver/observer
apiserver/observer/fakeobserver
apiserver/observer/metricobserver Package metricobserver provides an implementation of apiserver/observer.ObserverFactory that maintains Prometheus metrics.
apiserver/observer/metricobserver/mocks Package mocks is a generated GoMock package.
apiserver/params
apiserver/stateauthenticator
apiserver/testing
apiserver/testserver
apiserver/websocket
apiserver/websocket/websockettest
caas
caas/kubernetes/clientconfig
caas/kubernetes/provider
caas/kubernetes/provider/application
caas/kubernetes/provider/constants
caas/kubernetes/provider/exec
caas/kubernetes/provider/exec/mocks Package mocks is a generated GoMock package.
caas/kubernetes/provider/mocks Package mocks is a generated GoMock package.
caas/kubernetes/provider/resources
caas/kubernetes/provider/resources/mocks Package mocks is a generated GoMock package.
caas/kubernetes/provider/specs
caas/kubernetes/provider/specs/mocks Package mocks is a generated GoMock package.
caas/kubernetes/provider/storage
caas/kubernetes/provider/testing
caas/kubernetes/provider/utils
caas/kubernetes/provider/watcher
caas/kubernetes/provider/watcher/test
caas/mocks Package mocks is a generated GoMock package.
caas/specs
charmhub
charmhub/path
charmhub/transport
charmstore
cloud Package cloud provides functionality to parse information describing clouds, including regions, supported auth types etc.
cloudconfig
cloudconfig/cloudinit The cloudinit package implements a way of creating a cloud-init configuration file.
cloudconfig/cloudinit/cloudinittest
cloudconfig/containerinit
cloudconfig/instancecfg
cloudconfig/podcfg
cloudconfig/providerinit This package offers userdata in a gzipped format to be used by different cloud providers
cloudconfig/providerinit/renderers The renderers package implements a way to encode the userdata depending on the OS and the provider.
cloudconfig/sshinit
cmd
cmd/cmdtest
cmd/juju
cmd/juju-bridge
cmd/juju/action
cmd/juju/application
cmd/juju/application/bundle
cmd/juju/application/bundle/mocks Package mocks is a generated GoMock package.
cmd/juju/application/deployer
cmd/juju/application/deployer/mocks Package mocks is a generated GoMock package.
cmd/juju/application/mocks Package mocks is a generated GoMock package.
cmd/juju/application/refresher
cmd/juju/application/store
cmd/juju/application/store/mocks Package mocks is a generated GoMock package.
cmd/juju/application/utils
cmd/juju/application/utils/mocks Package mocks is a generated GoMock package.
cmd/juju/backups
cmd/juju/block
cmd/juju/caas
cmd/juju/caas/mocks Package mocks is a generated GoMock package.
cmd/juju/cachedimages
cmd/juju/charmcmd
cmd/juju/charmhub
cmd/juju/charmhub/mocks Package mocks is a generated GoMock package.
cmd/juju/cloud
cmd/juju/commands
cmd/juju/commands/mocks Package mocks is a generated GoMock package.
cmd/juju/common
cmd/juju/controller The controller package groups various commands that are based on talking directly to the controller, and not environments in the controller.
cmd/juju/crossmodel
cmd/juju/firewall
cmd/juju/gui
cmd/juju/interact Package interact provides helper methods for interacting with the CLI user at command run time.
cmd/juju/machine
cmd/juju/machine/mocks Package mocks is a generated GoMock package.
cmd/juju/metricsdebug
cmd/juju/model
cmd/juju/model/mocks Package mocks is a generated GoMock package.
cmd/juju/resource
cmd/juju/romulus
cmd/juju/romulus/agree
cmd/juju/romulus/budget Package budget defines the command used to update budgets.
cmd/juju/romulus/commands Package commands provides functionality for registering all the romulus commands.
cmd/juju/romulus/createwallet
cmd/juju/romulus/listagreements
cmd/juju/romulus/listplans The listplans package contains implementation of the command that can be used to list plans that are available for a charm.
cmd/juju/romulus/listwallets
cmd/juju/romulus/setplan The setplan package contains the implementation of the juju set-plan command.
cmd/juju/romulus/setwallet
cmd/juju/romulus/showwallet
cmd/juju/romulus/sla The sla package contains the implementation of the juju sla command.
cmd/juju/setmeterstatus
cmd/juju/space
cmd/juju/space/mocks Package mocks is a generated GoMock package.
cmd/juju/status
cmd/juju/storage The storage command provides a storage management interface, for manipulating and inspecting storage entities (volumes, filesystems, charm storage).
cmd/juju/subnet
cmd/juju/user
cmd/jujuc
cmd/jujud
cmd/jujud/agent
cmd/jujud/agent/addons
cmd/jujud/agent/agentconf
cmd/jujud/agent/agenttest
cmd/jujud/agent/caasoperator
cmd/jujud/agent/config
cmd/jujud/agent/engine
cmd/jujud/agent/engine/enginetest
cmd/jujud/agent/errors
cmd/jujud/agent/machine
cmd/jujud/agent/model
cmd/jujud/agent/modeloperator
cmd/jujud/agent/unit
cmd/jujud/dumplogs
cmd/jujud/introspect
cmd/jujud/reboot
cmd/jujud/reboot/mocks Package mocks is a generated GoMock package.
cmd/jujud/run
cmd/jujud/util
cmd/k8sagent
cmd/k8sagent/config
cmd/k8sagent/initialize
cmd/k8sagent/initialize/mocks Package mocks is a generated GoMock package.
cmd/k8sagent/unit
cmd/k8sagent/utils
cmd/k8sagent/utils/mocks Package mocks is a generated GoMock package.
cmd/modelcmd
cmd/output
cmd/plugins/juju-metadata
cmd/plugins/juju-wait-for
cmd/plugins/juju-wait-for/api Package api exists because we can't generate mocks in the main namespace.
cmd/plugins/juju-wait-for/api/mocks Package mocks is a generated GoMock package.
cmd/plugins/juju-wait-for/query
cmd/service
component/all The all package facilitates the registration of Juju components into the relevant machinery.
container
container/broker
container/broker/mocks Package mocks is a generated GoMock package.
container/factory
container/kvm Package kvm provides the facilities to deploy to kvm instances.
container/kvm/libvirt
container/kvm/mock
container/kvm/testing
container/lxd
container/lxd/mocks Package mocks is a generated GoMock package.
container/lxd/testing Package testing is a generated GoMock package.
container/testing Package testing is a generated GoMock package.
controller
controller/authentication
controller/modelmanager Package modelmanager provides the business logic for model management operations in the controller.
core Package core exists to hold concepts and pure logic pertaining to juju's domain.
core/actions
core/annotations
core/application
core/arch
core/auditlog
core/cache Package cache is responsible for keeping an in memory representation of the controller's models.
core/cache/cachetest
core/charm
core/constraints
core/container
core/crossmodel
core/devices
core/globalclock
core/instance
core/leadership Package leadership holds code pertaining to application leadership in juju.
core/leadership/mocks Package mocks is a generated GoMock package.
core/lease
core/life
core/lxdprofile Package lxdprofile defines a set of functions and constants that can interact with LXD Profiles.
core/lxdprofile/mocks Package mocks is a generated GoMock package.
core/machinelock
core/migration
core/model
core/multiwatcher
core/network
core/network/firewall
core/paths
core/paths/transientfile Package transientfile provides helpers for creating files that do not survive machine reboots.
core/permission
core/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.
core/quota
core/raftlease
core/relation
core/resources
core/series
core/settings
core/snap
core/status
core/watcher
core/watcher/watchertest
docker
downloader
environs
environs/bootstrap
environs/cloudspec
environs/config
environs/context
environs/filestorage
environs/gui
environs/imagedownloads Package imagedownloads implements image-downloads metadata from simplestreams.
environs/imagemetadata The imagemetadata package supports locating, parsing, and filtering Ubuntu image metadata in simplestreams format.
environs/imagemetadata/testing
environs/instances
environs/instances/instancetest
environs/jujutest
environs/manual
environs/manual/sshprovisioner
environs/manual/winrmprovisioner
environs/mocks Package mocks is a generated GoMock package.
environs/simplestreams The simplestreams package supports locating, parsing, and filtering metadata in simplestreams format.
environs/simplestreams/testing
environs/space
environs/storage
environs/sync
environs/tags
environs/testing Package testing is a generated GoMock package.
environs/tools The tools package supports locating, parsing, and filtering Ubuntu tools metadata in simplestreams format.
environs/tools/testing
environs/utils
feature Package feature package defines the names of the current feature flags.
featuretests This package contains functional tests only.
generate
generate/certgen
generate/filetoconst
generate/schemagen
generate/schemagen/gen Package gen is a generated GoMock package.
generate/winuserdata
juju
juju/keys
juju/names
juju/osenv
juju/sockets
juju/testing
jujuclient
jujuclient/jujuclienttesting
logfwd The logfwd package contains the tools needed to do log record forwarding in juju.
logfwd/syslog The syslog package holds the tools needed to perform log forwarding from Juju to a remote syslog (RFC 5424) host.
migration
mongo
mongo/mongometrics Package mongometrics contains MongodB-related Prometheus metric collectors.
mongo/mongotest
mongo/utils
network
network/containerizer
network/debinterfaces
network/iptables
network/netplan
network/ssh
network/ssh/testing
packaging
packaging/dependency
payload The payload package (and subpackages) contain the implementation of the charm payload feature component.
payload/api
payload/api/client
payload/api/private
payload/api/private/client
payload/context
payload/status
pki
pki/test
pki/tls
provider/all
provider/azure
provider/azure/internal/armtemplates
provider/azure/internal/azureauth
provider/azure/internal/azurecli
provider/azure/internal/azurestorage
provider/azure/internal/azuretesting
provider/azure/internal/errorutils
provider/azure/internal/imageutils
provider/azure/internal/iputils
provider/azure/internal/tracing
provider/azure/internal/useragent
provider/cloudsigma
provider/common
provider/common/mocks Package mocks is a generated GoMock package.
provider/dummy The dummy provider implements an environment provider for testing purposes, registered with environs under the name "dummy".
provider/ec2
provider/gce
provider/gce/google
provider/lxd
provider/lxd/lxdnames Package lxdnames provides names for the lxd provider.
provider/maas
provider/manual
provider/oci
provider/oci/common
provider/oci/testing Package testing is a generated GoMock package.
provider/openstack
provider/rackspace
provider/vsphere
provider/vsphere/internal/ovatest
provider/vsphere/internal/vsphereclient
provider/vsphere/mocks Package mocks is a generated GoMock package.
pubsub/agent Package agent contains messages for all agents rather than controllers.
pubsub/apiserver
pubsub/centralhub
pubsub/common
pubsub/controller
pubsub/forwarder
pubsub/lease
resource The resource package provides the functionality of the "resources" feature in Juju.
resource/api
resource/api/client
resource/api/private
resource/api/private/client
resource/charmstore
resource/context
resource/context/cmd
resource/context/internal
resource/resourceadapters
resource/resourcetesting This package provides helpers for testing with resources.
resource/workers
rpc
rpc/jsoncodec The jsoncodec package provides a JSON codec for the rpc package.
scripts/generate-password
scripts/juju-blobstore-cleanup
scripts/juju-force-upgrade
scripts/juju-list-blobstore
scripts/leadershipclaimer
scripts/mgo-run-txn
scripts/schemadocs
scripts/ssh-keycheck
service
service/common
service/common/testing
service/mocks Package mocks is a generated GoMock package.
service/snap Package snap is a minimal service.Service implementation, derived from the on service/upstart package.
service/systemd
service/systemd/testing
service/upstart
service/windows
state
state/backups Package backups contains all the stand-alone backup-related functionality for juju state.
state/backups/testing
state/bakerystorage Package bakerystorage provides an implementation of the bakery Storage interface that uses MongoDB to store items.
state/binarystorage
state/cloudimagemetadata
state/errors
state/globalclock Package globalclock provides clients for updating and reading the global virtual time, stored in the MongoDB database.
state/imagestorage
state/logdb
state/mgo
state/migrations Package migrations aims to create an intermediate state between state and the description package.
state/mocks Package mocks is a generated GoMock package.
state/raftlease
state/stateenvirons Package stateenvirons provides types and functions that interface the state and environs packages.
state/statetest
state/storage
state/testing
state/upgrade
state/watcher The watcher package provides an interface for observing changes to arbitrary MongoDB documents that are maintained via the mgo/txn transaction package.
state/watcher/watchertest
storage Package storage defines structures and functions relating to charm storage.
storage/looputil
storage/plans
storage/plans/common
storage/plans/iscsi
storage/plans/local
storage/poolmanager
storage/provider
storage/provider/dummy
testcharms Package testcharms holds a corpus of charms for testing.
testing MACHINE GENERATED BY github.com/juju/juju/generate/certgen.
testing/factory
tools
upgrades The upgrades package provides infrastructure to upgrade previous Juju deployments to the current Juju version.
upgrades/mocks Package mocks is a generated GoMock package.
utils/proxy
utils/scriptrunner
utils/stringforwarder
version 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).
worker
worker/actionpruner
worker/agent
worker/agentconfigupdater
worker/apiaddressupdater
worker/apicaller
worker/apiconfigwatcher
worker/apiserver
worker/apiservercertwatcher
worker/applicationscaler
worker/auditconfigupdater
worker/authenticationworker
worker/caasadmission
worker/caasapplicationprovisioner
worker/caasapplicationprovisioner/mocks Package mocks is a generated GoMock package.
worker/caasbroker
worker/caasenvironupgrader
worker/caasfirewaller
worker/caasfirewallerembedded
worker/caasfirewallerembedded/mocks Package mocks is a generated GoMock package.
worker/caasmodeloperator
worker/caasoperator
worker/caasoperator/mocks Package mocks is a generated GoMock package.
worker/caasoperator/remotestate
worker/caasoperatorprovisioner
worker/caasprober
worker/caasrbacmapper
worker/caasrbacmapper/test
worker/caasunitprovisioner
worker/caasupgrader
worker/centralhub
worker/certupdater
worker/charmrevision
worker/cleaner
worker/common
worker/common/charmrunner
worker/common/reboot
worker/containerbroker
worker/containerbroker/mocks Package mocks is a generated GoMock package.
worker/controller
worker/controllerport
worker/conv2state
worker/credentialvalidator
worker/deployer
worker/diskmanager Package diskmanager defines a worker that periodically lists block devices on the machine it runs on.
worker/environ
worker/externalcontrollerupdater
worker/fanconfigurer
worker/firewaller
worker/fortress Package fortress implements a convenient metaphor for an RWLock.
worker/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.
worker/globalclockupdater
worker/hostkeyreporter
worker/httpserver
worker/httpserverargs
worker/identityfilewriter
worker/instancemutater
worker/instancemutater/mocks Package mocks is a generated GoMock package.
worker/instancepoller
worker/instancepoller/mocks Package mocks is a generated GoMock package.
worker/introspection Package introspection defines the worker that can report internal agent state through the use of a machine local socket.
worker/introspection/pprof Package pprof is a fork of net/http/pprof modified to communicate over a unix socket.
worker/leadership
worker/lease
worker/lease/manifold
worker/lifeflag
worker/logforwarder
worker/logforwarder/sinks
worker/logger
worker/logsender
worker/logsender/logsendermetrics
worker/logsender/logsendertest Package logsendertest provides testing utilities related to the logsender package.
worker/machineactions
worker/machiner
worker/machineundertaker
worker/meterstatus Package meterstatus provides a worker that executes the meter-status-changed hook periodically.
worker/meterstatus/mocks Package mocks is a generated GoMock package.
worker/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).
worker/metrics/sender Package sender contains the implementation of the metric sender manifold.
worker/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.
worker/metricworker
worker/migrationflag
worker/migrationmaster
worker/migrationminion
worker/minunitsworker
worker/mocks Package mocks is a generated GoMock package.
worker/modelcache
worker/modelupgrader
worker/modelworkermanager
worker/multiwatcher Package multiwatcher provides watchers that watch the entire model.
worker/multiwatcher/testbacking
worker/muxhttpserver
worker/peergrouper
worker/presence
worker/provisioner
worker/provisioner/mocks Package mocks is a generated GoMock package.
worker/proxyupdater
worker/pruner
worker/pubsub
worker/raft
worker/raft/raftbackstop
worker/raft/raftclusterer
worker/raft/raftflag
worker/raft/raftforwarder
worker/raft/rafttest
worker/raft/rafttransport
worker/raft/raftutil
worker/reboot
worker/remoterelations
worker/restorewatcher
worker/resumer
worker/retrystrategy
worker/singular
worker/state
worker/stateconfigwatcher
worker/statushistorypruner
worker/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.
worker/storageprovisioner/internal/schedule
worker/terminationworker
worker/toolsversionchecker
worker/txnpruner
worker/undertaker
worker/unitassigner
worker/uniter
worker/uniter/actions
worker/uniter/charm
worker/uniter/container
worker/uniter/hook Package hook provides types that define the hooks known to the Uniter
worker/uniter/leadership
worker/uniter/operation
worker/uniter/operation/mocks Package mocks is a generated GoMock package.
worker/uniter/reboot
worker/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.
worker/uniter/relation/mocks Package mocks is a generated GoMock package.
worker/uniter/remotestate
worker/uniter/resolver
worker/uniter/runcommands
worker/uniter/runner
worker/uniter/runner/context Package context contains the ContextFactory and Context definitions.
worker/uniter/runner/context/mocks Package mocks is a generated GoMock package.
worker/uniter/runner/debug
worker/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.
worker/uniter/runner/jujuc/jujuctesting
worker/uniter/runner/jujuc/mocks Package mocks is a generated GoMock package.
worker/uniter/runner/testing
worker/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.
worker/uniter/upgradeseries
worker/uniter/verifycharmprofile
worker/upgradedatabase
worker/upgradedatabase/mocks Package mocks is a generated GoMock package.
worker/upgrader
worker/upgradeseries
worker/upgradeseries/mocks Package mocks is a generated GoMock package.
worker/upgradesteps
wrench