Tagging & cleanup of individual OVS settings (#158)
This PR implements the "Common tags for all device types" section of the spec.
Whenever any OVS setting is applied inside the ovsdb, this code adds another setting for the corresponding interface inside the external-ids table, e.g.:
ovs-vsctl set-ssl client-key client-cert ca-cert
ovs-vsctl set open_vswitch . external-ids:netplan/global/set-ssl=client-key,client-cert,ca-cert
or:
ovs-vsctl set Bridge ovs0 other-config:some-key=42
ovs-vsctl set Bridge ovs0 external-ids:netplan/other-config/some-key=42
or:
ovs-vsctl set Port ovs1 lacp=off
ovs-vsctl set Port ovs1 external-ids:netplan/lacp=off
The netplan settings tag (netplan/<column>[/<key>]=<value>) marks the settings (column[:key]=value) inside ovsdb state, so that it can be cleaned up via netplan apply --only-ovs-cleanup. The cleanup will only happen if the setting and value are exactly the same as set/tagged by netplan. If the setting was touched manually (or by another process) netplan cleanup will not touch it. This way we can make sure to always start with a clean state before executing the OVS setup commands and submitting the new config/settings to ovsdb.
Additionally, this PR fixes the creation and tagging of OVS patch_ports and the setup of global OpenFlow protocols.
Commits:
* OVS: tag all global & interface settings in external-ids
* OVS: additional data can only be set if a row for a non-ovs interface has been created in ovsdb
* OVS:cli: fix cleanup of implicit OVS interfaces
* parse: fix compiler warning
* OVS: first draft for cleanup of arbitrary interface & global settings
* OVS: fix potential patch port setup race & port tagging issue
* OVS: cleanup patch ports if they are detected to be a bond interface
* OVS: fix cleanup of patch ports/interfaces
* OVS: change handling of global protocols key
* OVS: cleanup controller settings + test
* OVS: add configmanager tests
* OVS: improve SSL tagging
* Add unit-tests for OVS cleanup
* OVS: avoid spaces in settings tag values, fix global iface argument
* OVS: adopt test_bridge_base to settings tagging
* OVS: comments and cleanup
* OVS: cleanup & reducing some duplication
* OVS: improve systemd dependency, to avoid failure if OVS is not installed
Flush IPs of NM managed interfaces (LP: #1870561) (#159)
There might be scenarios, where leftover IP addresses are assigned to a
given interface. This confuses NetworkManager and makes it create a new,
non netplan-* connection profile, using this leftover IP.
Flush the IP addresses of all NM managed interfaces, to avoid this
situation.
Introduce support for networkd address options (#89)
* Introduce support for networkd address options
This patch introduces a way to set options for the "[Address]" section
in the networkd backend. It changes the addresses YAML key to a sequence
of scalars and mappings, keeping backward compatibility with the
previous address notation.
Signed-off-by: Heitor Alves de Siqueira <email address hidden>
* parse: avoid duplicate address options for multiple passes
Fix OVS cleanup and systemd race conditions (#156)
* Fix only_ovs_cleanup argument, to make it execute the correct code.
* Execute the oneshot OVS systemd units synchronously, to avoid race conditions during systemctl start ....
* Set OVS patch ports atomically, to avoid logging errors.
* Clean up OVS fake VLAN bridges from the Interface table via del-br