Helpers for Juju Charms to load external resources
Project description
Juju Resources provides helpers for charms to load binary resources from external sources, as well as tools for creating mirrors of external resources for network-restricted deployments.
This is intended as a stop-gap until Juju has core support for resources, as well as to prototype what features are needed.
Installing
Install Juju Resources using pip:
pip install jujuresources
Charm Usage
A charm using Juju Resources will need to define a resources.yaml, such as:
resources: my_resource: url: http://example.com/path/to/my_resource.tgz hash: b377b7cccdd281bc5e4c4071f80e84a3 hash_type: sha256 optional_resources: my_optional_resource: url: http://example.com/path/to/my_optional_resource.tgz hash: 476881ef4012262dfc8adc645ee786c4 hash_type: sha256
Then, once the charm has installed Juju Resources, it can fetch and verify resources, either in Python:
from jujuresources import fetch, verify, config_get if not fetch(base_url=config_get('resources_mirror')): print "Mandatory resources did not download; check resources_mirror option" sys.exit(1) fetch('my_optional_resource', base_url=config_get('resources_mirror')) if verify('my_optional_resource'): install_tgz(resource_path('my_optional_resource'))
Or via the command-line / bash:
if ! juju-resources fetch -u `config-get resources_mirror`; then echo "Mandatory resources did not download; check resources_mirror option" exit 1 fi juju-resources fetch -u `config-get resources_mirror` my_optional_resource if juju-resources verify my_optional_resource; then actions/install_tgz `juju-resources resource_path my_optional_resource` fi
Mirroring Resources
If you will need to deploy charms in an environment with limited network access, you can create a mirror ahead of time, or on a gateway node which has access:
mkdir local_mirror juju-resources fetch --all -d local_mirror -r http://github.com/me/my-charm/blob/master/resources.yaml juju-resources serve -d local_mirror
You will then have a lightweight HTTP server running to which you can set the charm’s resources_mirror (or equivalent) config option to point to, serving all (--all, optional as well as required) resources defined in the remote resources.yaml (-r <url-or-file>), which are cached in the local_mirror directory (-d local_mirror).
Note that the charms will need to be able to see the machine you create the mirror on, and the charms must support a config option to point Juju Resources to the mirror (as well as handle the possibility that their resources may not be available when they are first deployed).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.