These updates, on the master branch, are to support testing the caracal
packages and support of the charms for caracal. They do NOT lock the charms
down, and don't change the testing branches to stable branches.
* add mantic to metadata series
* align testing with bobcat
* add new bobcat bundles
* add bobcat bundles to tests.yaml
* add bobcat tests to osci.yaml
* update build-on and run-on bases
* drop kinetic
The change includes modifications to bundles to set up components
necessary to spawn instances and provide actual connectivity to them. It
makes the testing more heavy but adds assurances that the data plane
works for the routes advertised by the NDR control plane.
The bundle changes also fix an issue that got in with the original OVN
bundles: manage-neutron-plugin-legacy-mode is set to True and the plugin
is determined to be OVS instead of OVN. The control plane for NDR still
worked but with a non-functioning ML2/ovs config causing OVN DBs to be
empty.
* OVN + NDR testing is possible as of Neutron 22.0.0 (2023.1 or
Antelope), see [1][2].
* Vault is added to non-OVN bundles as the tests.yaml file is shared
and uses a configure step for Vault
Important note: at the time of writing the OVN integration code in
Neutron does not have any use for `distributed` and `ha` router extra
attributes and whether distributed or centralized FIPs are used in OVN
is governed by the ovn/enable_distributed_floating_ip option which does
not operate at the per-router granularity and is global.
The docs have not been updated and still say [3] that OVN routers do not
expose `ha` or `distributed` attributes which are now there as of [1].
At the same time, the NDR implementation uses the `distributed`
attribute to determine whether to use the gateway port IP and treat FIPs
as centralized [4] and add a next-hop to the gateway port IP or not in
the advertised /32 routes. For routers with `distributed == True`,
NDR only attempts [5] to find ports with device owner
`'floatingip_agent_gateway'`. Therefore, when distributed FIPs are
enabled via ovn/enable_distributed_floating_ip, the `distributed` extra
attribute on a router is set to `False` and /32 routes are advertised
as centralized.
The distributed FIP case is currently not exercised by the current
bundles neither for ML2/ovs nor ML2/ovn. The current bundles only test
the control plane and route advertisement, not packet forwarding via
advertised next-hops.
The mock third party library was needed for mock support in py2
runtimes. Since we now only support py36 and later, we can use the
standard lib unittest.mock module instead.
Note that https://github.com/openstack/charms.openstack is used during tests
and he need `mock`, unfortunatelly it doesn't declare `mock` in its
requirements so it retrieve mock from other charm project (cross dependency).
So we depend on charms.openstack first and when
Ib1ed5b598a52375e29e247db9ab4786df5b6d142 will be merged then CI
will pass without errors.