Add automated testing for upgrades
We also retry a few things here that commonly fail because of race
conditions
Add support for keystone upgrades
Keystone can now deploy openstack rocky and upgrade from queens to
rocky.
Pass context in versioned dependencies
To allow versioned dependencies to decide outcomes based on the currently
running CR we pass the context to all calls of versioned dependencies.
This is a prerequisite for later deciding on the image version based
on the current cr.
Validate version upgrades
To ensure the user does not try to upgrade/downgrade in ways that are not
supported by use we introduce additional checks to validate the difference
between installed and targeted version.