On Tue, Feb 19, 2019 at 2:32 AM Mark Michelson <mmich...@redhat.com> wrote:

> Looks good to me.
>
> Acked-by: Mark Michelson <mmich...@redhat.com>
>
> Out of curiosity, can you think of any other bridge configuration items
> that might need the same treatment?
>
>
Thanks for the review.  I checked and I don't think we need anything extra
here.

Thanks
Numan


> On 2/17/19 11:42 PM, nusid...@redhat.com wrote:
> > From: Numan Siddique <nusid...@redhat.com>
> >
> > If the integration bridge is deleted, ovn-controller recreates it
> > but the previous datapath-type value is lost if it was set. This
> > patch adds the code in ovn-controller to set the datapath-type
> > if it is configured by the user in the
> 'external_ids:ovn-bridge-datapath-type'
> > column of OpenvSwitch table.
> >
> > Signed-off-by: Numan Siddique <nusid...@redhat.com>
> > ---
> >   ovn/controller/ovn-controller.8.xml |  8 ++++++++
> >   ovn/controller/ovn-controller.c     | 11 ++++++++++-
> >   tests/ovn-controller.at             | 14 ++++++++++++++
> >   3 files changed, 32 insertions(+), 1 deletion(-)
> >
> > diff --git a/ovn/controller/ovn-controller.8.xml
> b/ovn/controller/ovn-controller.8.xml
> > index 8035638b3..fd2e10a7a 100644
> > --- a/ovn/controller/ovn-controller.8.xml
> > +++ b/ovn/controller/ovn-controller.8.xml
> > @@ -81,6 +81,14 @@
> >           default configuration suggested in
> <code>ovn-architecture</code>(7).
> >         </dd>
> >
> > +      <dt><code>external_ids:ovn-bridge-datapath-type</code></dt>
> > +      <dd>
> > +        This configuration is optional. If set, then the datapath type
> of
> > +        the integration bridge will be set to the configured value. If
> this
> > +        option is not set, then <code>ovn-controller</code> will not
> modify
> > +        the existing <code>datapath-type</code> of the integration
> bridge.
> > +      </dd>
> > +
> >         <dt><code>external_ids:ovn-remote</code></dt>
> >         <dd>
> >           <p>
> > diff --git a/ovn/controller/ovn-controller.c
> b/ovn/controller/ovn-controller.c
> > index 2098f280c..882cc195f 100644
> > --- a/ovn/controller/ovn-controller.c
> > +++ b/ovn/controller/ovn-controller.c
> > @@ -253,7 +253,16 @@ get_br_int(struct ovsdb_idl_txn *ovs_idl_txn,
> >
> >       const struct ovsrec_bridge *br = get_bridge(bridge_table,
> br_int_name);
> >       if (!br) {
> > -        return create_br_int(ovs_idl_txn, cfg, br_int_name);
> > +        br = create_br_int(ovs_idl_txn, cfg, br_int_name);
> > +    }
> > +    if (br && ovs_idl_txn) {
> > +        const char *datapath_type = smap_get(&cfg->external_ids,
> > +
>  "ovn-bridge-datapath-type");
> > +        /* Check for the datapath_type and set it only if it is defined
> in
> > +         * cfg. */
> > +        if (datapath_type && strcmp(br->datapath_type, datapath_type)) {
> > +            ovsrec_bridge_set_datapath_type(br, datapath_type);
> > +        }
> >       }
> >       return br;
> >   }
> > diff --git a/tests/ovn-controller.at b/tests/ovn-controller.at
> > index 13e88a0cc..4ed4ca083 100644
> > --- a/tests/ovn-controller.at
> > +++ b/tests/ovn-controller.at
> > @@ -158,6 +158,20 @@ OVS_WAIT_UNTIL([check_datapath_type bar])
> >   ovs-vsctl set Bridge br-int datapath-type=\"\"
> >   OVS_WAIT_UNTIL([check_datapath_type ""])
> >
> > +# Set the datapath_type in external_ids:ovn-bridge-datapath-type.
> > +ovs-vsctl set Open_vSwitch . external_ids:ovn-bridge-datapath-type=foo
> > +OVS_WAIT_UNTIL([check_datapath_type foo])
> > +
> > +# Change the br-int's datapath type to bar.
> > +# It should be reset to foo since ovn-bridge-datapath-type is
> configured.
> > +ovs-vsctl set Bridge br-int datapath-type=bar
> > +OVS_WAIT_UNTIL([test foo=`ovs-vsctl get Bridge br-int datapath-type`])
> > +OVS_WAIT_UNTIL([check_datapath_type foo])
> > +
> > +ovs-vsctl set Open_vSwitch .
> external_ids:ovn-bridge-datapath-type=foobar
> > +OVS_WAIT_UNTIL([test foobar=`ovs-vsctl get Bridge br-int
> datapath-type`])
> > +OVS_WAIT_UNTIL([check_datapath_type foobar])
> > +
> >   expected_iface_types=$(ovs-vsctl get Open_vSwitch . iface_types | tr
> -d '[[]] ""')
> >   echo "expected_iface_types = ${expected_iface_types}"
> >   chassis_iface_types=$(ovn-sbctl get Chassis ${sysid}
> external_ids:iface-types | sed -e 's/\"//g')
> >
>
>
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to