Skip to content

Commit

Permalink
if-status: Add OVS interface status management module.
Browse files Browse the repository at this point in the history
The initial implementation of the notification mechanism that indicates
if OVS flows corresponding to a logical switch port have been installed
is not resilient enough.  It didn't cover the case when transactions to
the local OVS DB or to the Southbound fail.

In order to deal with that, factor out the code that tracks the state
of the interfaces to a new module, 'if-status', and implement it with
a state machine that will retry setting Port_Binding.UP and
OVS.Interface.external_ids:ovn-installed in the Southbound and local
OVS databases.

Having a separate module makes sense because tracking the interface
state doesn't really depend on the rest of the binding module, except
for interacting with the Port_Binding and Interface IDL records.  For
this we add some additional APIs to binding.c.

Reported-at: https://bugzilla.redhat.com/1952846
Fixes: 4d3cb42 ("binding: Set Logical_Switch_Port.up when all OVS flows are installed.")
Signed-off-by: Dumitru Ceara <dceara@redhat.com>
Signed-off-by: Numan Siddique <numans@ovn.org>
Acked-by: Mark Michelson <mmichels@redhat.com>
  • Loading branch information
dceara authored and numansiddique committed May 16, 2021
1 parent f63b609 commit 5c33719
Show file tree
Hide file tree
Showing 7 changed files with 625 additions and 212 deletions.
2 changes: 2 additions & 0 deletions controller/automake.mk
Expand Up @@ -10,6 +10,8 @@ controller_ovn_controller_SOURCES = \
controller/encaps.h \
controller/ha-chassis.c \
controller/ha-chassis.h \
controller/if-status.c \
controller/if-status.h \
controller/ip-mcast.c \
controller/ip-mcast.h \
controller/lflow.c \
Expand Down

0 comments on commit 5c33719

Please sign in to comment.