This change adds support for model specific overlays from
templates which are rendered at deploy time.
The overlay template directory will be searched for a corresponding
template (<bundle_name>.j2). If one is found then the overlay will
be rendered using environment variables matching AMULET* or
ZAZA_TEMPLATE* as a context. The rendered overlay will be used on
top of the specified bundle at deploy time.
A default overlay is always applied "local-charm-overlay.yaml". This
overlay is only used to move the location of the charm being deployed
to a relative path so the bundle can use "charm: <charm name>" rather
than "charm: ../../../<charm name>"
Bring over only those utilities required to run network_setup.py from
openstack-mojo-specs. These utilities have been generalized and python3
configured. Use libjuju whenever possible and pre-deprecate anything
else.
Add addition functions to the model.
The idea of this change is to put together helpers for including
functional tests for charms in a central location. The charm
declares the tests and bundles to be run to complete a
functional tests but the tests themselves live here in zaza.
To use this code the charm should have the following:
1) zaza in the test-requirements.txt
2) tox.ini should include a target like:
```
[testenv:func35]
basepython = python3
commands =
functest-bundle-deploy
```
3) Bundles which are to be used for the tests:
```
ls -1 tests/bundles/*
tests/bundles/xenial.yaml
```
4) A tests/tests.yaml file that describes the bundles to be run and
the tests
```
charm_name: vault
tests:
- zaza.charms_tests.vault.VaultTest
gate_bundles:
- xenial
dev_bundles:
- bionic
```
Tests can be run without running a deployment using functest-run-tests
with the list of test classes to be run:
```
functest-run-tests -t zaza.charms_tests.vault.VaultTest
```
Known Issues:
- The deploy_bundle and add_model methods should be using libjuju
- DEV_BUNDLES is currently ignored
- VaultUtils and VaultTest should probably be in separate files.
- When skipIfNotHA skips a test unittest does not pick up it has
been skipped
- A new model is created for each bundle even if an existing empty
model exists
- No model cleanup is performed.