CMSs (e.g., ovn-kubernetes) already use the ovn-installed external_id set by ovn-controller in OVS.Interface.external_ids to determine that the networking for a VIF is completely plugged.
ovn-controller now also stores the timestamp (in milliseconds since the epoch) at which an interface was marked as "installed", as the ovn-installed-ts external id in the OVS DB. This commit also adds the relevant documentation for ovn-installed/ovn-installed-ts. Signed-off-by: Dumitru Ceara <[email protected]> --- controller/binding.c | 7 ++++++- controller/binding.h | 3 ++- controller/if-status.c | 6 +++++- controller/ovn-controller.8.xml | 15 +++++++++++++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/controller/binding.c b/controller/binding.c index 34935bb9c..c037b2352 100644 --- a/controller/binding.c +++ b/controller/binding.c @@ -44,6 +44,7 @@ VLOG_DEFINE_THIS_MODULE(binding); * flows have been installed. */ #define OVN_INSTALLED_EXT_ID "ovn-installed" +#define OVN_INSTALLED_TS_EXT_ID "ovn-installed-ts" #define OVN_QOS_TYPE "linux-htb" @@ -712,7 +713,8 @@ local_binding_is_down(struct shash *local_bindings, const char *pb_name) void local_binding_set_up(struct shash *local_bindings, const char *pb_name, - bool sb_readonly, bool ovs_readonly) + const char *ts_now_str, bool sb_readonly, + bool ovs_readonly) { struct local_binding *lbinding = local_binding_find(local_bindings, pb_name); @@ -725,6 +727,9 @@ local_binding_set_up(struct shash *local_bindings, const char *pb_name, ovsrec_interface_update_external_ids_setkey(lbinding->iface, OVN_INSTALLED_EXT_ID, "true"); + ovsrec_interface_update_external_ids_setkey(lbinding->iface, + OVN_INSTALLED_TS_EXT_ID, + ts_now_str); } if (!sb_readonly && lbinding && b_lport && b_lport->pb->n_up diff --git a/controller/binding.h b/controller/binding.h index f1abc4b9c..70cc37c78 100644 --- a/controller/binding.h +++ b/controller/binding.h @@ -120,7 +120,8 @@ ofp_port_t local_binding_get_lport_ofport(const struct shash *local_bindings, bool local_binding_is_up(struct shash *local_bindings, const char *pb_name); bool local_binding_is_down(struct shash *local_bindings, const char *pb_name); void local_binding_set_up(struct shash *local_bindings, const char *pb_name, - bool sb_readonly, bool ovs_readonly); + const char *ts_now_str, bool sb_readonly, + bool ovs_readonly); void local_binding_set_down(struct shash *local_bindings, const char *pb_name, bool sb_readonly, bool ovs_readonly); diff --git a/controller/if-status.c b/controller/if-status.c index 08fb50b87..b5a4025fc 100644 --- a/controller/if-status.c +++ b/controller/if-status.c @@ -21,6 +21,7 @@ #include "lib/hmapx.h" #include "lib/util.h" +#include "timeval.h" #include "openvswitch/vlog.h" VLOG_DEFINE_THIS_MODULE(if_status); @@ -398,11 +399,14 @@ if_status_mgr_update_bindings(struct if_status_mgr *mgr, * their flows installed but are not yet marked "up" in the binding * module. */ + char *ts_now_str = xasprintf("%lld", time_wall_msec()); HMAPX_FOR_EACH (node, &mgr->ifaces_per_state[OIF_MARK_UP]) { struct ovs_iface *iface = node->data; - local_binding_set_up(bindings, iface->id, sb_readonly, ovs_readonly); + local_binding_set_up(bindings, iface->id, ts_now_str, + sb_readonly, ovs_readonly); } + free(ts_now_str); /* Notify the binding module to set "down" all bindings that have been * released but are not yet marked as "down" in the binding module. diff --git a/controller/ovn-controller.8.xml b/controller/ovn-controller.8.xml index 5a649ee65..8c180f576 100644 --- a/controller/ovn-controller.8.xml +++ b/controller/ovn-controller.8.xml @@ -471,6 +471,21 @@ flows have been successfully installed in OVS. </p> </dd> + + <dt> + <code>external_ids:ovn-installed</code> and + <code>external_ids:ovn-installed-ts</code> in the + <code>Interface</code> table + </dt> + + <dd> + <p> + This key is set after all openflow operations corresponding to the + OVS interface have been processed by ovs-vswitchd. At the same time + a timestamp, in milliseconds since the epoch, is stored in + <code>external_ids:ovn-installed-ts</code>. + </p> + </dd> </dl> <h1>OVN Southbound Database Usage</h1> -- 2.27.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
