[ovs-dev] [PATCH v3] Copy external_ids from Logical_Switch_Port to SB database

Russell Bryant russell at ovn.org
Wed Jun 7 19:09:30 UTC 2017


On Tue, Jun 6, 2017 at 6:08 AM, Daniel Alvarez <dalvarez at redhat.com> wrote:
> This patch makes ovn-northd copy all string-string pairs in
> external_ids column of the Logical_Switch_Port table in Northbound
> database to the equivalent column of the Port_Binding table in
> Southbound database.
>
> OpenStack Neutron will add some useful data to NB database that can be
> later read by networking-ovn-metadata-agent without the need of
> maintaining a connection to NB database. This data would include
> the CIDR's of a port or the project and device ID's which are needed
> when talking to Nova to request metadata.
>
> Signed-off-by: Daniel Alvarez <dalvarez at redhat.com>
> ---
>  ovn/northd/ovn-northd.c | 11 +++++++----
>  ovn/ovn-nb.xml          | 11 ++++++++++-
>  ovn/ovn-sb.xml          | 11 ++++++++++-
>  3 files changed, 27 insertions(+), 6 deletions(-)

Thanks for the patch.  I applied to master, with a couple of minor
changes listed below.

>
> diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
> index 5914988..a063a05 100644
> --- a/ovn/northd/ovn-northd.c
> +++ b/ovn/northd/ovn-northd.c
> @@ -1814,10 +1814,13 @@ ovn_port_update_sbrec(const struct ovn_port *op,
>                                     op->nbsp->n_addresses);
>
>          struct smap ids = SMAP_INITIALIZER(&ids);
> -        const char *name = smap_get(&op->nbsp->external_ids,
> -                                    "neutron:port_name");
> -        if (name && name[0]) {
> -            smap_add(&ids, "name", name);
> +        smap_clone(&ids, &op->nbsp->external_ids);
> +        const char *name = smap_get(&ids, "neutron:port_name");
> +        if (name) {
> +            smap_remove(&ids, "neutron:port_name");
> +            if (name[0]) {
> +                smap_add(&ids, "name", name);
> +            }
>          }
>          sbrec_port_binding_set_external_ids(op->sb, &ids);
>      }

I added smap_destroy(&ids) to fix a memory leak here.  It appears the
bug was there from before your changes.

I also removed the smap_remove().  I wouldn't expect
"neutron:port_name" to be removed based on the way we have this
documented.  I still think it makes sense to keep "name" as the
previous code added it.

diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
index a063a05..4466f22 100644
--- a/ovn/northd/ovn-northd.c
+++ b/ovn/northd/ovn-northd.c
@@ -1816,13 +1816,11 @@ ovn_port_update_sbrec(const struct ovn_port *op,
         struct smap ids = SMAP_INITIALIZER(&ids);
         smap_clone(&ids, &op->nbsp->external_ids);
         const char *name = smap_get(&ids, "neutron:port_name");
-        if (name) {
-            smap_remove(&ids, "neutron:port_name");
-            if (name[0]) {
-                smap_add(&ids, "name", name);
-            }
+        if (name && name[0]) {
+            smap_add(&ids, "name", name);
         }
         sbrec_port_binding_set_external_ids(op->sb, &ids);
+        smap_destroy(&ids);
     }
 }




> diff --git a/ovn/ovn-nb.xml b/ovn/ovn-nb.xml
> index eb348fe..7bb322f 100644
> --- a/ovn/ovn-nb.xml
> +++ b/ovn/ovn-nb.xml
> @@ -848,7 +848,16 @@
>
>      <group title="Common Columns">
>        <column name="external_ids">
> -        See <em>External IDs</em> at the beginning of this document.
> +        <p>
> +          See <em>External IDs</em> at the beginning of this document.
> +        </p>
> +
> +        <p>
> +          The <code>ovn-northd</code> program copies all these pairs into the
> +          <ref column="external_ids"/> column of the
> +          <ref table="Port_Binding"/> table in <ref db="OVN_Southbound"/>
> +          database.
> +        </p>
>        </column>
>      </group>
>    </table>
> diff --git a/ovn/ovn-sb.xml b/ovn/ovn-sb.xml
> index f3c3212..0e0fe12 100644
> --- a/ovn/ovn-sb.xml
> +++ b/ovn/ovn-sb.xml
> @@ -2179,7 +2179,16 @@ tcp.flags = RST;
>
>      <group title="Common Columns">
>        <column name="external_ids">
> -        See <em>External IDs</em> at the beginning of this document.
> +        <p>
> +          See <em>External IDs</em> at the beginning of this document.
> +        </p>
> +
> +        <p>
> +          The <code>ovn-northd</code> program populates this column with
> +          all entries into the <ref column="external_ids"/> column of the
> +          <ref table="Logical_Switch_Port"/> table of the
> +          <ref db="OVN_Northbound"/> database.
> +        </p>
>        </column>
>      </group>
>    </table>
> --
> 1.8.3.1
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev



-- 
Russell Bryant


More information about the dev mailing list