Bug 2130499

Summary: Add hash ring features to ovn-provider driver agent
Product: Red Hat OpenStack Reporter: Fernando Royo <froyo>
Component: python-ovn-octavia-providerAssignee: OSP Team <rhos-maint>
Status: NEW --- QA Contact: Eran Kuris <ekuris>
Severity: low Docs Contact:
Priority: low    
Version: 18.0 (Zed)CC: ltomasbo, njohnston
Target Milestone: ---Keywords: FutureFeature, Triaged
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Fernando Royo 2022-09-28 11:19:56 UTC
Currently the ovn-octavia-provider driver agents are running on all controllers, all of them are connected to OVN NB / SB DB but just one of them is locked to manage the events received. 

After a further investigation on the hash ring manager used in neutron, a similar solution can be implemented in the driver-agent mentioned in order to take advantage of paralelism.

As the hash ring manager currently implement the concept of group, we can use this field to define a set of nodes under the group 'ovn-octavia-provider' in order to not work just only the driver agents isolated from the neutron workers. 

The desirable solution, and given that ovn-octavia-provider already has a neutron-lib dependency, is that the hash-ring-manager functionality (currently in neutron core) is migrated to neutron-lib, where ovn-octavia-provider could take advantage of it and would not require a new dependency to talk to neutron-db, or more correctly octavia db, which would imply more profound changes. Given the special link between ovn-octavia-provider and neutron, this solution seemed to us to be the most appropriate.

This way the implementation would be simple in these steps:

- Removal of the current lock that only allows one driver agent to handle events.
- Use the hash-ring-manager imported from neutron-lib to distribute events on the available driver agents.