[ovs-dev] [PATCH ovn v3 2/7] northd-ddlog: Handle Port_Binding:plugged_by.
Frode Nordahl
frode.nordahl at canonical.com
Thu Aug 26 06:01:52 UTC 2021
On Thu, Aug 26, 2021 at 7:43 AM Han Zhou <zhouhan at gmail.com> wrote:
>
>
>
> On Thu, Aug 19, 2021 at 4:09 AM Frode Nordahl <frode.nordahl at canonical.com> wrote:
> >
> > This patch brings northd-ddlog up to speed with the same feature
> > added to the C version of northd.
> >
>
> Maybe not something critical, but we usually request the ddlog changes being added in the same patch with the northd.c change - which makes sure test cases added for the same feature pass for both versions.
I can squash them, have no issue with that. The test case is added in
patch 1 so as it stands now the DDlog test would fail for patch 1 and
succeed for patch 2 and onwards, so that would add to the argument as
to why we should squash them too. Thx!
--
Frode Nordahl
> > Signed-off-by: Frode Nordahl <frode.nordahl at canonical.com>
> > ---
> > northd/ovn_northd.dl | 68 ++++++++++++++++++++++++++++++++++++++------
> > 1 file changed, 60 insertions(+), 8 deletions(-)
> >
> > diff --git a/northd/ovn_northd.dl b/northd/ovn_northd.dl
> > index 9cf4c373b..45132cf98 100644
> > --- a/northd/ovn_northd.dl
> > +++ b/northd/ovn_northd.dl
> > @@ -105,7 +105,6 @@ sb::Out_Datapath_Binding(uuid, tunkey, load_balancers, external_ids) :-
> > */
> > var load_balancers = set_empty().
> >
> > -
> > /* Proxy table for Out_Datapath_Binding: contains all Datapath_Binding fields,
> > * except tunnel id, which is allocated separately (see PortTunKeyAllocation). */
> > relation OutProxy_Port_Binding (
> > @@ -120,10 +119,11 @@ relation OutProxy_Port_Binding (
> > tag: Option<integer>,
> > mac: Set<string>,
> > nat_addresses: Set<string>,
> > - external_ids: Map<string,string>
> > + external_ids: Map<string,string>,
> > + plugged_by: Option<uuid>
> > )
> >
> > -/* Case 1: Create a Port_Binding per logical switch port that is not of type "router" */
> > +/* Case 1a: Create a Port_Binding per logical switch port that is not of type "router" */
> > OutProxy_Port_Binding(._uuid = lsp._uuid,
> > .logical_port = lsp.name,
> > .__type = lsp.__type,
> > @@ -135,7 +135,8 @@ OutProxy_Port_Binding(._uuid = lsp._uuid,
> > .tag = tag,
> > .mac = lsp.addresses,
> > .nat_addresses = set_empty(),
> > - .external_ids = eids) :-
> > + .external_ids = eids,
> > + .plugged_by = None) :-
> > sp in &SwitchPort(.lsp = lsp, .sw = sw),
> > SwitchPortNewDynamicTag(lsp._uuid, opt_tag),
> > var tag = match (opt_tag) {
> > @@ -160,6 +161,53 @@ OutProxy_Port_Binding(._uuid = lsp._uuid,
> > options
> > }.
> >
> > +/* Case 1b: Create a Port_Binding per logical switch port that is not of type "router" and has options "plug-type" and "requested-chassis" */
> > +OutProxy_Port_Binding(._uuid = lsp._uuid,
> > + .logical_port = lsp.name,
> > + .__type = lsp.__type,
> > + .gateway_chassis = set_empty(),
> > + .ha_chassis_group = sp.hac_group_uuid,
> > + .options = options,
> > + .datapath = sw._uuid,
> > + .parent_port = lsp.parent_name,
> > + .tag = tag,
> > + .mac = lsp.addresses,
> > + .nat_addresses = set_empty(),
> > + .external_ids = eids,
> > + .plugged_by = plugged_by) :-
> > + sp in &SwitchPort(.lsp = lsp, .sw = sw),
> > + SwitchPortNewDynamicTag(lsp._uuid, opt_tag),
> > + var tag = match (opt_tag) {
> > + None -> lsp.tag,
> > + Some{t} -> Some{t}
> > + },
> > + lsp.__type != "router",
> > + var eids = {
> > + var eids = lsp.external_ids;
> > + match (lsp.external_ids.get("neutron:port_name")) {
> > + None -> (),
> > + Some{name} -> eids.insert("name", name)
> > + };
> > + eids
> > + },
> > + var options = {
> > + var options = lsp.options;
> > + match (sw.other_config.get("vlan-passthru")) {
> > + Some{"true"} -> options.insert("vlan-passthru", "true"),
> > + _ -> ()
> > + };
> > + options
> > + },
> > + var chassis_name = match (options.get("plug-type")) {
> > + Some{_} -> match(options.get("requested-chassis")) {
> > + Some{chassis_name} -> chassis_name,
> > + None -> "",
> > + },
> > + None -> "",
> > + },
> > + chassis_name != "",
> > + chassis_rec in sb::Chassis(.name = chassis_name),
> > + var plugged_by = Some{chassis_rec._uuid}.
> >
> > /* Case 2: Create a Port_Binding per logical switch port of type "router" */
> > OutProxy_Port_Binding(._uuid = lsp._uuid,
> > @@ -173,7 +221,8 @@ OutProxy_Port_Binding(._uuid = lsp._uuid,
> > .tag = None,
> > .mac = lsp.addresses,
> > .nat_addresses = nat_addresses,
> > - .external_ids = eids) :-
> > + .external_ids = eids,
> > + .plugged_by = None) :-
> > &SwitchPort(.lsp = lsp, .sw = sw, .peer = peer),
> > var eids = {
> > var eids = lsp.external_ids;
> > @@ -263,7 +312,8 @@ OutProxy_Port_Binding(._uuid = lrp._uuid,
> > .tag = None, // always empty for router ports
> > .mac = set_singleton("${lrp.mac} ${lrp.networks.join(\" \")}"),
> > .nat_addresses = set_empty(),
> > - .external_ids = lrp.external_ids) :-
> > + .external_ids = lrp.external_ids,
> > + .plugged_by = None) :-
> > rp in &RouterPort(.lrp = lrp, .router = router, .peer = peer),
> > RouterPortRAOptionsComplete(lrp._uuid, options0),
> > (var __type, var options1) = match (router.options.get("chassis")) {
> > @@ -471,7 +521,8 @@ OutProxy_Port_Binding(// lrp._uuid is already in use; generate a new UUID by
> > .tag = None, //always empty for router ports
> > .mac = set_singleton("${lrp.mac} ${lrp.networks.join(\" \")}"),
> > .nat_addresses = set_empty(),
> > - .external_ids = lrp.external_ids) :-
> > + .external_ids = lrp.external_ids,
> > + .plugged_by = None) :-
> > DistributedGatewayPort(lrp, lr_uuid),
> > DistributedGatewayPortHAChassisGroup(lrp, hacg_uuid),
> > var redirect_type = match (lrp.options.get("redirect-type")) {
> > @@ -516,7 +567,8 @@ sb::Out_Port_Binding(._uuid = pbinding._uuid,
> > .mac = pbinding.mac,
> > .nat_addresses = pbinding.nat_addresses,
> > .external_ids = pbinding.external_ids,
> > - .up = Some{up}) :-
> > + .up = Some{up},
> > + .plugged_by = pbinding.plugged_by) :-
> > pbinding in OutProxy_Port_Binding(),
> > PortTunKeyAllocation(pbinding._uuid, tunkey),
> > QueueIDAllocation(pbinding._uuid, qid),
> > --
> > 2.32.0
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
More information about the dev
mailing list