Commit Graph

244 Commits

Author SHA1 Message Date
David Ames
0ace737254 Merge pull request #514 from ajkavanagh/object-retrier
Object retrier
2021-03-25 09:09:08 -07:00
Alex Kavanagh
e9f11da5df Fix typo and rename class for better understanding
Fixes a typo (None -> not None) and renames the class from
ObjectRetrier -> ObjectRetrierWraps to make it clearer that the class
instantiation is to wrap and object with the retrier code rather than do
retries at that moment.
2021-03-25 14:47:42 +00:00
Peter Matulis
fae2f6319e Add upgrades doc note (#526)
* Add upgrades doc note

Add a note so that upgrade testing (charms and payload)
remains in sync with the end-user documentation (CDG)
2021-03-15 17:17:22 +00:00
Ionut Balutoiu
7e56813885 Add Manila NetApp tests
These Zaza tests are meant to be used with the new `manila-netapp` charm.
2021-03-15 15:11:38 +02:00
Aurelien Lourot
c9d8800034 Merge pull request #486 from ionutbalutoiu/update-ceph-rbd-mirror-tests
Update Ceph RBD Mirror tests
2021-03-12 09:19:54 +01:00
Alex Kavanagh
c041042fe2 Add function to just retry on keystone ConnectFailure
The main failure that seems to occur with clients is the
ConnectFailure, which according to the docs, is retry-able.  Thus
provide a function that adds that exception condition automatically.
Also fix the import problem in octavia test for the object retrier that
is being used to validate the ObjectRetrier feature.
2021-03-10 09:41:10 +00:00
Alex Kavanagh
45146b6c45 Add ObjectRetrier to perform retries on openstack client calls
This adds a wrapper class that detects if a callable object in any of
the descendent objects raises an Exception.  If so, then it retries that
exception.

This is to attempt to make the zaza tests a little more robust in the
face of small network failures or strange restarts.  This is a test, and
robust logging a reporting should be used to determine whether it is
covering up actual bugs rather than CI system issues.

Related Bug: (zot repo)#348
2021-03-10 09:40:03 +00:00
Ionut Balutoiu
2fefca5a40 Code cleanup
* Move general function out of the testing class. This will make them
  easy to be reused.
* Properly organize the tests, and add tons of docstrings and comments
  to have them as clear as possible.
* Add `failover_cinder_volume_host` to the Zaza `utilities/openstack.py`,
  since this is a general purpose function.
2021-03-03 13:56:36 +02:00
Ionut Balutoiu
d728458afa Add multi-backend testing for Keystone SAML Mellon
The new updated tests rely on new testing bundles deployed with
two local IdPs via the Juju charm https://jaas.ai/u/ionutbalutoiu/test-saml-idp.
2021-02-24 20:21:14 +02:00
Frode Nordahl
2ab9cebbf6 Use per-model tmp-dir to store local copy of CA cert (#493)
The current approach of storing the deployment CA certificate in
the 'test/' relative path does not allow for executing tests for
multiple targets from the same environment.

We have previously moved (7a90110) the local copy of the SSH
private key for similar reasons.

Remove the global constants as we cannot build them without making
function calls, and we'd rather avoid doing that at module import
time. Code using the location of the local CA certificate has
already been changed to use helper functions.
2021-02-04 08:48:17 +01:00
Garrett Thompson
7878523e34 Rename zaza_juju to be consistent with all of repo 2021-02-03 18:01:28 +00:00
Liam Young
5be8fc3771 Fix docstring and bug 2021-01-25 11:41:39 +00:00
Liam Young
e047150f5b Add unit tests 2021-01-25 09:21:00 +00:00
Liam Young
401829f0a7 Code tidy and docstrings 2021-01-24 17:24:20 +00:00
Liam Young
d637646a9e Fix typo 2021-01-24 16:19:45 +00:00
Liam Young
a20733cd14 Refactor ca functions 2021-01-24 14:31:29 +00:00
Liam Young
a828774c48 Handle change of CA cert.
Closes issue #487
2021-01-23 16:17:54 +00:00
Frode Nordahl
ec63732974 Support configuring networknig charms on MAAS
When on MAAS support doing charm based configuration of OVS by
retrieving MAC address of ports attached to external network
from MAAS.

Note that we should extend the MAAS support to also work with
deployments where MAAS does the OVS configuration for us.
2021-01-13 18:47:08 +01:00
Frode Nordahl
ee0dd80cec Split configure_gateway_ext_port function
The function does three separate things today, and two of its
tasks are useful for other provider types such as MAAS.

Also fix create_additional_port_for_machines idempotency.

We previously added a run time assertion to fail early when
attempting to configure networking for an invalid bundle. The
check had the side effect of prohibiting subsequent runs on
already configured models.
2021-01-13 18:47:05 +01:00
Chris MacNaughton
ebc51b490e Make the get_os_release default match get_current_os_release_pair 2021-01-06 17:19:56 +01:00
Alex Kavanagh
282b8be577 Update openstack upgrade tests for focal (#476)
This patch modifies the existing openstack upgrade tests so that they
work with focal (by explicitly supporting mysql-innodb-cluster), and are
also interruptable and resumable (at a charm level).  It also makes them
work with the udpated 'get_upgrade_groups()' that ultimately gets a List
of Tuples rather than a dictionary.
2021-01-06 14:09:41 +01:00
Liam Young
a35ba0917e Allow an app to be set when calling get_os_release (#477)
Ceph deployments may not contain a keystone service which causes
calls to get_os_release to fail as it calls get_current_os_release_pair
without sepecifying an application (keystone is the default).
2021-01-06 12:26:01 +01:00
Alex Kavanagh
7ced54b382 Concurrent series upgrade updates (#466)
* Updates to concurrent series upgrade

Updates to make it run more in parallel and spend less time waiting on
the whole model when updating machines.

* Make the concurrent series upgrade tests work

This is a number of changes to get the concurrent (here called
'parallel' historically) series upgrade tests to work.  A number of
changes were required which included limiting the number of concurrent
async co-routines (futures) that could be run as with large models it
hits the limits of the Py3 runtime.

* Fix the tests and change pause order in maybe_pause_things

Due to an additional model helper call, an additional model AsyncMock is
required.  Also the pause order had changed, and this is restored to
ensure the original design is retained (for pause order).

Clean up some commented out code and sort out a few PEP8 errors.

* Update comment to reflect code (3 -> 4)

* Fix tests that fail on bionic but pass on focal

Essentially, asyncio.gather has different behaviour on bionic that
focal.  Although this doesn't affect testing, it does affect the unit
tests.  These changes are simply to normalise the behaviour of unit
tests on focal and bionic.
2020-12-02 11:22:00 +01:00
Frode Nordahl
38767da01d Merge pull request #464 from openstack-charmers/lourot/ovn-codename-major-minor
Support 'major.minor' when determining OS release of OVN packages
2020-11-19 12:46:51 +01:00
David Ames
910516c3bd Merge pull request #465 from ajkavanagh/bug/460
Add placement-common versions for train->ussuri upgrade
2020-11-18 14:13:15 -08:00
Alex Kavanagh
f94f2be31d Merge pull request #462 from gnuoy/nova-client-version
Support nova client micro versions
2020-11-18 16:00:05 +00:00
Alex Kavanagh
b07afac21a Add placement-common versions for train->ussuri upgrade 2020-11-18 14:33:37 +00:00
Liam Young
817473675d Numbers are imutable so safe to have as default argument 2020-11-18 14:12:13 +00:00
Aurelien Lourot
c5c11194a1 Support 'major.minor' when determining OS release of OVN packages 2020-11-18 14:49:12 +01:00
Liam Young
dfecc58f5a Extend resource_reaches_status
The resource_reaches_status assumes that the attribute to be checked
is called 'status' but this can vary between resource types so allow
the name of the attribute to specified.
2020-11-18 12:13:59 +00:00
Liam Young
b23d9e285b Support nova client micro versions
Support micro versions when requesting a nova client.
2020-11-18 09:36:44 +00:00
Aurelien Lourot
d1dbefa6ec Merge branch 'master' into lourot/bug/1877076 2020-11-05 11:31:52 +01:00
Alex Kavanagh
79e43c7f68 bionic-train -> ussuri needs to upgrade placement
For the openstack upgrade of train to ussuri, the placement charm needs
to be upgraded.  Add it to the UPGRADE_SERVICES.  Related launchpad bug:
LP:1724174 [1]

[1]: https://bugs.launchpad.net/openstack-mojo-specs/+bug/1724174
2020-10-22 15:28:16 +01:00
Gabriel Adrian Samfira
7c2f5cdf24 Add Ironic tests 2020-10-06 06:06:57 +00:00
Aurelien Lourot
49268243ba Improve logging 2020-09-25 14:17:38 +02:00
James Page
018f1eac96 Merge pull request #398 from openstack-charmers/ceph-bluestore-compression
Ceph bluestore compression
2020-09-24 11:30:50 +01:00
Frode Nordahl
ced5b3dd13 Retry scp/ssh operations in add_interface_to_netplan helper
Fixes #420
2020-09-21 08:18:08 +02:00
Frode Nordahl
a1f3a8710f Teach Zaza to determine release pair for Ceph deployments
As Ceph is distributed as part of Ubuntu Cloud Archive, the
pockets lend their name from the accompanying OpenStack release.
2020-09-18 09:08:33 +02:00
Frode Nordahl
52a2aabf57 utilities/ceph: Add helper for retrieving pools from broker req 2020-09-15 15:31:20 +02:00
Alex Kavanagh
17bad029a5 Fix network setup for mojo
A recent change introduced a configuration option in the
./tests/test.yaml file (default location) which allows juju wait to be
used rather than waiting on various workload messages.  This,
unfortunately, breaks mojo tests as they don't use a tests.yaml.  This
change refactors that code, and enables a 'use_juju_wait' to be passed
into the relevant functions, and a new command line option (default
true) to disable using juju wait.
2020-09-15 09:55:09 +01:00
David Ames
23b24a5501 Merge pull request #365 from openstack-charmers/ovn-charm
Add OVS to OVN migration tests
2020-09-11 08:48:20 -07:00
Alex Kavanagh
fbaf48d541 More fixes for series-upgrade (#413) 2020-09-11 16:27:15 +02:00
Frode Nordahl
5a10779e45 Re-order checks in networking auto-detection
To support OVS to OVN migration checks we want the basic overcloud
configure job to set up N-OVS and/or N-GW when present and the
OVN pre migration configure job will copy the configuration for us.
2020-09-08 16:11:39 +02:00
Frode Nordahl
8f2e3463cc Allow add_interface_to_netplan to find ovn-dedicated-chassis units 2020-09-08 12:38:39 +02:00
Chris MacNaughton
c75f2fcb6d Ensure that zaza-openstack-tests can talk to an IPv6 Keystone
When configuring the address to use to talk to Keystone,
the format_addr helper should be used to ensure that an
IPv4 or IPv6 address can be correctly handled.
2020-09-08 11:11:13 +02:00
Frode Nordahl
4d8c509133 Make the use of juju_wait configurable
For compatibility with existing scenario tests the
`configure_gateway_ext_port` helper currently make use of
`juju_wait` when configuring the deployed cloud.

This does not work well if the model you are testing has
applications with non-standard workload status messaging.

Allow to override the behaviour through config step options.
2020-09-07 10:35:18 +02:00
Alex Kavanagh
66d95d65d7 Fix series-upgrade tests (#406)
A couple of changes here:

 * Ensure that the post-upgrade-hook runs BEFORE the config-changed to
   set the openstack-origin/source back to distro.  The former behaviour
   breaks keystone quite badly.
 * Ensure that the charm name is used, as discovered from the model, for
   rabbitmq-server and percona-cluster to cope with different names for
   the application in the model vs the charm name from the charm-store.
 * Check whether the machine needs to be rebooted after the dist-upgrade
   (before the do-release-upgrade), and reboot the machine first.
   Otherwise, do-release-upgrade will fail.
2020-09-04 13:33:42 +02:00
David Ames
cd49a5bc9f Merge pull request #386 from ajkavanagh/fix-charm-upgrade-tests
Fix the charm-upgrade tests as used by CoT
2020-08-20 09:51:50 -07:00
Alex Kavanagh
5ad5f85f99 Fix the charm-upgrade tests as used by CoT
The biggest change is that the upgrade_groups() is a list of tuples ...
[()] ... rathern than a collections.OrderedDict().  This tends to make
more sense as they are processed in order and don't actually need to be
indexed.

Also excludes easyrsa (as it's not an upgrade target) and adds a
"Database Services" which upgrades mysql or percona FIRST before moving
on to rabbitmq and other stateful services.  This is because some charms
really need to talk to mysql if one of the other stateful services does
a relation changed hook.  This makes it more likely that the system will
ugprade correctly.
2020-08-19 20:47:00 +01:00
Liam Young
a3433a1276 Add Ceph test CheckPoolTypes
Add a ceph test to check that the type of pools requested by
clients matches the pools that were created.
2020-08-10 12:32:49 +00:00