On Wed, Aug 25, 2021 at 11:00 PM Frode Nordahl <[email protected]> wrote: > > On Thu, Aug 26, 2021 at 7:38 AM Han Zhou <[email protected]> wrote: > > > > > > > > On Thu, Aug 19, 2021 at 4:09 AM Frode Nordahl < [email protected]> wrote: > > > > > > To allow for use of optional plugging support we add a new > > > plugged_by column with weakRef to the Chassis table. The > > > ovn-controller can monitor this column and only process events > > > for its chassis UUID. > > > > > > ovn-northd will fill this column with UUID of Chassis referenced > > > in Logical_Switch_Port options:requested-chassis when > > > options:plug-type is defined. > > > > Thanks Frode. Please see my comments below. > > Thank you for taking the time to review Han, much appreciated. > > > > > > > Signed-off-by: Frode Nordahl <[email protected]> > > > --- > > > northd/ovn-northd.c | 31 ++++++++++++++++++++++++++++++ > > > ovn-nb.xml | 38 ++++++++++++++++++++++++++++++++++++ > > > ovn-sb.ovsschema | 10 +++++++--- > > > ovn-sb.xml | 15 +++++++++++++++ > > > tests/ovn-northd.at | 47 +++++++++++++++++++++++++++++++++++++++++++++ > > > 5 files changed, 138 insertions(+), 3 deletions(-) > > > > > > diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c > > > index 3d8e21a4f..a66f92ddd 100644 > > > --- a/northd/ovn-northd.c > > > +++ b/northd/ovn-northd.c > > > @@ -3222,6 +3222,35 @@ ovn_port_update_sbrec(struct northd_context *ctx, > > > * ha_chassis_group cleared in the same transaction. */ > > > sbrec_port_binding_set_ha_chassis_group(op->sb, NULL); > > > } > > > + > > > + const char *plug_type; /* May be NULL. */ > > > + const char *requested_chassis; /* May be NULL. */ > > > + bool reset_plugged_by = false; > > > + plug_type = smap_get(&op->nbsp->options, "plug-type"); > > > + requested_chassis = smap_get(&op->nbsp->options, > > > + "requested-chassis"); > > > + if (plug_type && requested_chassis) { > > > + const struct sbrec_chassis *chassis; /* May be NULL. */ > > > + chassis = chassis_lookup_by_name(sbrec_chassis_by_name, > > > + requested_chassis); > > > + if (chassis) { > > > + sbrec_port_binding_set_plugged_by(op->sb, chassis); > > > > Why do we need a separate column for this while we already have the value in the SB port-binding options? > > The challenge is that we want the ovn-controllers to do as little > processing as possible, and only react to unbound ports that are > destined for them. In the initial RFC [0] I did the lookup based on > Port_Binding:options, but that proved to not be very effective as you > have to monitor all unbound ports and you can't use an index (you > would only get the records with exactly and only the option you look > for, which is normally not the case). In deployments with lots of load > balancers there will be a lot of unbound ports. > Makes sense. Thanks for the explanation. To avoid the redundant information in SB (and the confusion), it seems the "requested-chassis" option can be removed from the SB and ovn-controller can instead use the new column for the "requested-chassis" validation. But this can be a follow-up enhancement.
> I also think you suggested using a separate column in the review of > the initial RFC ;) It was not me :) but I am on the same page now. > > 0: https://patchwork.ozlabs.org/project/ovn/patch/[email protected]/ > > > > > + } else { > > > + reset_plugged_by = true; > > > + static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT( > > > + 1, 1); > > > + VLOG_WARN_RL( > > > + &rl, > > > + "Unknown chassis '%s' set as " > > > + "options:requested-chassis on LSP '%s'.", > > > + requested_chassis, op->nbsp->name); > > > > Would it be normal that the chassis is not registered to SB when the NB option is set? > > I would not think so, but it is a safeguard in the event the CMS puts > an invalid value into the requested-chassis option. We need to make > sure chassis != NULL and I thought it would be reasonable to log the > fact if it ever happened. > OK, I am fine with it. _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
