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.
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.
The Percona charm requires that an action is run once all the units
have performed their series upgrade. Longer term
test_200_run_series_upgrade needs refactoring but this is a
tactical fix in the meantime.
* Add an unseal function for mojo to use.
* Switch mojo to use new function after series upgrade reboot.
* Add fallback if vip client is unavailable (the case if all
hacluster units are paused for series upgrade).
Execute a list of functions after series upgrade if one is
supplied. This change is driven by the upgrade testing of vault.
Vault needs to be unsealed after it is rebooted.