use_new_ovn_repository function is used to determine whether
OVN source is co-located with OVS repo or if it is post-split [1].
In a nutshell, OVS versions 'branch-2.13' and newer are on a
separate repo [2].
The existing implementation only looks at minor portion of version
to determine if OVN is post-split, which is not future proof.
Since 'M' comes after 'B', the logic sees 'master' as newer
than 'branch-2.12', which is actually the wanted behavior.
[1]: f3e24610ea
[2]: https://github.com/ovn-org/ovn
Change-Id: I7abeb05ea53b6eeced77ca9490a9bb7c5c07c64c
Signed-off-by: Flavio Fernandes <flaviof@redhat.com>
Co-authored-by: Terry Wilson <twilson@redhat.com>
I mixed up the bug number and the gerrit change number in a previous
release note.
TrivialChange
Change-Id: I7599be8b7459c44db8e34d0de536154dccb19134
Related-Bug: #1853840
This is a tweak to changes done to fix bug 1834637. Specifically,
this change addresses scaling. The previous gerrit change had
modifications to all OVN sub-ports performed as a single
transaction. That did not account for race-condition on neutron
DB queries, which leads to timeouts under heavy loads.
Another cleanup done by this change is to fold an additional
update on neutron db into ovn trunk driver. That saves
update from doing another database transaction, thus making
it faster. The no longer needed function in mech_driver was
called _update_subport_host_if_needed
By breaking the iteration into multiple transactions, the
change in time is marginal:
Service-level agreement
NeutronTrunks :: neutron.create_trunk
from 34.2 sec to 35.6 for 50%ile
from 35.6 sec to 36.1 for 95%ile
This patch is a cherry pick from networking-ovn stable/train [1], that
is now part of networking-ovn migration to neutron repo.
[1]: https://review.opendev.org/#/c/698863/
Change-Id: I118f93cdd34a1d25327a0dc61367720ac6559001
Closes-Bug: #1834637
Co-authored-by: Maciej Józefczyk <mjozefcz@redhat.com>
(cherry picked from commit c418dd720b9be9047d779f32407c474e90cb0002)
This patch is migrating the entry points for the OVN metadata agent.
Change-Id: I4062ade1231e29344a38cb69f32c3a0f198a7d03
Co-Authored-By: Daniel Alvarez <dalvarez@redhat.com>
Related-Blueprint: neutron-ovn-merge
Signed-off-by: Lucas Alvares Gomes <lucasagomes@gmail.com>
Since the mtu is already non-nullable, the writer context
can be switched to a reader context. In addition, the redundant
reader context can be removed.
Change-Id: I482a3892dee8ee94ab70142cf734f71e766178ed
Closes-Bug: #1859258
The mtu is already non-nullable, it no longer needs to
judge the mtu when updating the network.
Related-Bug: #1842261
Change-Id: Ic097bc2ae50198a3bda45e4a8161c22190ef1964
The CRUD methods in the ML2 plugin must pass the data in the request
body to the extension manager, so it can be processed by all the ML2
extensions enabled in the deployment. The create_port_bulk method is
instead passing the dictionary generated after adding the port to the
DB. This will cause that fields in the request body intended for
extensions will not be processed.
Change-Id: I2fe8e2b98c05ba739e9e93b4bd5880eb97bdaef8
When a subnet is created and allocated, the gateway IP is created
based on the subnet CIDR. In case of IPv6 prefix delegation, this
CIDR is a temporary one. In this case the gateway IP cannot be
assigned yet and the value stored in the DB should be "None".
IpamBackendMixin._gateway_ip_str must read properly the IP version
stored in the "subnet" variable, under the key "ip_version"
instead of "version".
Closes-Bug: #1856726
Closes-Bug: #1856675
Change-Id: I9313c880cc458f08dc3a1b0ff13187b764ba7042
Fixed a couple of things for ovs_all_ports=False.
First state that it also cleans up ports created by Nova.
Second since [1] it only cleans up the integration bridge.
[1] https://opendev.org/openstack/neutron/commit/b09b4460
Change-Id: I41dda554e8cb4b4ca36515d64f17ad5bf52f3b49
Closes-Bug: #1853582
Now that "IPWrapper.add_device_to_namespace" is implemented with
Pyroute2, the function should catch the correct exceptions:
- NetlinkError in case of duplicated interface
- OSError in case of corrupted namespace
Change-Id: I12b5710dc3bfdcc4c6b1e96bbfbfab9e59684065
Closes-Bug: #1856853
The update_acls code can potentially iterate over the same ACL
twice. This temporary workaround silently ignores an attempt to
delete the same row twice in the same transaction, since that
should be safe. Ultimately, refactoring the ACL code to use sets
and possibly handle the fact that an ACL could be referenced from
multiple rows should be done.
Change-Id: I895eaf4006583fedc2657a4eb527df1ff992c5bc
Related-bug: #1857016
It may happend that one router's port is going to be
removed and another one (same IP but new subnet) is going to be added
to the router in short time.
That can lead to the problem that IP which is allocated to the new
port is not added to keepalived's vips list because same IP address
is already in this list (this exising IP address belongs to old port).
But few seconds later old port is removed and finally router ends
up with new port configured without IP address.
To avoid such case, this patch switches order of processing new
and deleted ports in _process_internal_ports() method in RouterInfo
class.
So now first old ports will be removed and than new ports will be
configured so there will be no case when IP address is already added
to VIPs list when it is going to be removed in few seconds.
Change-Id: I72dc4a06a806731ec5124fa11c9f69c7dd6cbbb0
Closes-Bug: #1857021
We observe an excessive amount of routers created on
compute node on which some virtual machines got a fixed
ip on floating network.
Rpc servers should filter out those unnecessary routers
during syncing.
Change-Id: I299031a505f05cd0469e2476b867b9dbca59c5bf
Partial-Bug: #1840579