I ran this:

$ git grep "Binding table" | grep -v Port_
ovn/controller/pipeline.c: * Binding table within the logical datapath. */
ovn/controller/pipeline.c:/* Iterates through all of the records in the
Binding table, updating the
ovn/ovn-architecture.7.xml:        Binding tables, whereas
<code>ovn-northd</code>(8) populates the LN
ovn/ovn-sb.xml:    The Binding tables contain the current placement of
logical components

We may need to also clarify these?

Thanks,
Alex Wang,

On Tue, Jul 28, 2015 at 8:44 AM, Ben Pfaff <b...@nicira.com> wrote:

> An upcoming patch will add a Datapath_Binding table, so clarifying the
> name seems useful.
>
> Signed-off-by: Ben Pfaff <b...@nicira.com>
> ---
>  ovn/controller/binding.c  |  28 ++++++-------
>  ovn/controller/physical.c |   4 +-
>  ovn/controller/pipeline.c |   4 +-
>  ovn/northd/ovn-northd.c   | 105
> ++++++++++++++++++++++++----------------------
>  ovn/ovn-sb.ovsschema      |   2 +-
>  ovn/ovn-sb.xml            |   8 ++--
>  6 files changed, 79 insertions(+), 72 deletions(-)
>
> diff --git a/ovn/controller/binding.c b/ovn/controller/binding.c
> index c83b044..1b137bb 100644
> --- a/ovn/controller/binding.c
> +++ b/ovn/controller/binding.c
> @@ -76,7 +76,7 @@ binding_run(struct controller_ctx *ctx, const struct
> ovsrec_bridge *br_int,
>              const char *chassis_id)
>  {
>      const struct sbrec_chassis *chassis_rec;
> -    const struct sbrec_binding *binding_rec;
> +    const struct sbrec_port_binding *binding_rec;
>      struct sset lports, all_lports;
>      const char *name;
>
> @@ -96,11 +96,11 @@ binding_run(struct controller_ctx *ctx, const struct
> ovsrec_bridge *br_int,
>      }
>      sset_clone(&all_lports, &lports);
>
> -    ovsdb_idl_txn_add_comment(ctx->ovnsb_idl_txn,
> -                              "ovn-controller: updating bindings for
> '%s'",
> -                              chassis_id);
> +    ovsdb_idl_txn_add_comment(
> +        ctx->ovnsb_idl_txn,"ovn-controller: updating port bindings for
> '%s'",
> +        chassis_id);
>
> -    SBREC_BINDING_FOR_EACH(binding_rec, ctx->ovnsb_idl) {
> +    SBREC_PORT_BINDING_FOR_EACH(binding_rec, ctx->ovnsb_idl) {
>          if (sset_find_and_delete(&lports, binding_rec->logical_port) ||
>                  (binding_rec->parent_port && binding_rec->parent_port[0]
> &&
>                   sset_contains(&all_lports, binding_rec->parent_port))) {
> @@ -113,14 +113,14 @@ binding_run(struct controller_ctx *ctx, const struct
> ovsrec_bridge *br_int,
>                            binding_rec->chassis->name,
>                            chassis_rec->name);
>              }
> -            sbrec_binding_set_chassis(binding_rec, chassis_rec);
> +            sbrec_port_binding_set_chassis(binding_rec, chassis_rec);
>          } else if (binding_rec->chassis == chassis_rec) {
> -            sbrec_binding_set_chassis(binding_rec, NULL);
> +            sbrec_port_binding_set_chassis(binding_rec, NULL);
>          }
>      }
>
>      SSET_FOR_EACH (name, &lports) {
> -        VLOG_DBG("No binding record for lport %s", name);
> +        VLOG_DBG("No port binding record for lport %s", name);
>      }
>      sset_destroy(&lports);
>      sset_destroy(&all_lports);
> @@ -144,15 +144,15 @@ binding_cleanup(struct controller_ctx *ctx, const
> char *chassis_id)
>          return true;
>      }
>
> -    ovsdb_idl_txn_add_comment(ctx->ovnsb_idl_txn,
> -                              "ovn-controller: removing all bindings for
> '%s'",
> -                              chassis_id);
> +    ovsdb_idl_txn_add_comment(
> +        ctx->ovnsb_idl_txn,
> +        "ovn-controller: removing all port bindings for '%s'",
> chassis_id);
>
> -    const struct sbrec_binding *binding_rec;
> +    const struct sbrec_port_binding *binding_rec;
>      bool any_changes = false;
> -    SBREC_BINDING_FOR_EACH(binding_rec, ctx->ovnsb_idl) {
> +    SBREC_PORT_BINDING_FOR_EACH(binding_rec, ctx->ovnsb_idl) {
>          if (binding_rec->chassis == chassis_rec) {
> -            sbrec_binding_set_chassis(binding_rec, NULL);
> +            sbrec_port_binding_set_chassis(binding_rec, NULL);
>              any_changes = true;
>          }
>      }
> diff --git a/ovn/controller/physical.c b/ovn/controller/physical.c
> index 11f88cb..55d6107 100644
> --- a/ovn/controller/physical.c
> +++ b/ovn/controller/physical.c
> @@ -91,8 +91,8 @@ physical_run(struct controller_ctx *ctx, const struct
> ovsrec_bridge *br_int,
>
>      /* Set up flows in table 0 for physical-to-logical translation and in
> table
>       * 64 for logical-to-physical translation. */
> -    const struct sbrec_binding *binding;
> -    SBREC_BINDING_FOR_EACH (binding, ctx->ovnsb_idl) {
> +    const struct sbrec_port_binding *binding;
> +    SBREC_PORT_BINDING_FOR_EACH (binding, ctx->ovnsb_idl) {
>          /* Find the OpenFlow port for the logical port, as 'ofport'.  If
> it's
>           * on a remote chassis, this is the OpenFlow port for the tunnel
> to
>           * that chassis (and set 'local' to false).  Otherwise, if it's
> on the
> diff --git a/ovn/controller/pipeline.c b/ovn/controller/pipeline.c
> index 4c0ffd3..1927ce4 100644
> --- a/ovn/controller/pipeline.c
> +++ b/ovn/controller/pipeline.c
> @@ -214,8 +214,8 @@ ldp_run(struct controller_ctx *ctx)
>          simap_clear(&ldp->ports);
>      }
>
> -    const struct sbrec_binding *binding;
> -    SBREC_BINDING_FOR_EACH (binding, ctx->ovnsb_idl) {
> +    const struct sbrec_port_binding *binding;
> +    SBREC_PORT_BINDING_FOR_EACH (binding, ctx->ovnsb_idl) {
>          struct logical_datapath *ldp;
>
>          ldp = ldp_lookup(&binding->logical_datapath);
> diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
> index 70d868a..2ad727c 100644
> --- a/ovn/northd/ovn-northd.c
> +++ b/ovn/northd/ovn-northd.c
> @@ -406,7 +406,7 @@ build_pipeline(struct northd_context *ctx)
>  }
>
>  static bool
> -parents_equal(const struct sbrec_binding *binding,
> +parents_equal(const struct sbrec_port_binding *binding,
>                const struct nbrec_logical_port *lport)
>  {
>      if (!!binding->parent_port != !!lport->parent_name) {
> @@ -424,7 +424,7 @@ parents_equal(const struct sbrec_binding *binding,
>  }
>
>  static bool
> -tags_equal(const struct sbrec_binding *binding,
> +tags_equal(const struct sbrec_port_binding *binding,
>             const struct nbrec_logical_port *lport)
>  {
>      if (binding->n_tag != lport->n_tag) {
> @@ -434,16 +434,16 @@ tags_equal(const struct sbrec_binding *binding,
>      return binding->n_tag ? (binding->tag[0] == lport->tag[0]) : true;
>  }
>
> -struct binding_hash_node {
> +struct port_binding_hash_node {
>      struct hmap_node lp_node; /* In 'lp_map', by binding->logical_port. */
>      struct hmap_node tk_node; /* In 'tk_map', by binding->tunnel_key. */
> -    const struct sbrec_binding *binding;
> +    const struct sbrec_port_binding *binding;
>  };
>
>  static bool
>  tunnel_key_in_use(const struct hmap *tk_hmap, uint16_t tunnel_key)
>  {
> -    const struct binding_hash_node *hash_node;
> +    const struct port_binding_hash_node *hash_node;
>
>      HMAP_FOR_EACH_IN_BUCKET (hash_node, tk_node, hash_int(tunnel_key, 0),
>                               tk_hmap) {
> @@ -475,19 +475,19 @@ choose_tunnel_key(const struct hmap *tk_hmap)
>
>  /*
>   * When a change has occurred in the OVN_Northbound database, we go
> through and
> - * make sure that the contents of the Binding table in the OVN_Southbound
> + * make sure that the contents of the Port_Binding table in the
> OVN_Southbound
>   * database are up to date with the logical ports defined in the
>   * OVN_Northbound database.
>   */
>  static void
> -set_bindings(struct northd_context *ctx)
> +set_port_bindings(struct northd_context *ctx)
>  {
> -    const struct sbrec_binding *binding;
> +    const struct sbrec_port_binding *binding;
>
>      /*
> -     * We will need to look up a binding for every logical port.  We
> don't want
> -     * to have to do an O(n) search for every binding, so start out by
> hashing
> -     * them on the logical port.
> +     * We will need to look up a port binding for every logical port.  We
> don't
> +     * want to have to do an O(n) search for every binding, so start out
> by
> +     * hashing them on the logical port.
>       *
>       * As we go through every logical port, we will update the binding if
> it
>       * exists or create one otherwise.  When the update is done, we'll
> remove
> @@ -496,14 +496,14 @@ set_bindings(struct northd_context *ctx)
>       *
>       * We index the logical_port column because that's the shared key
> between
>       * the OVN_NB and OVN_SB databases.  We index the tunnel_key column to
> -     * allow us to choose a unique tunnel key for any Binding rows we
> have to
> -     * add.
> +     * allow us to choose a unique tunnel key for any Port_Binding rows
> we have
> +     * to add.
>       */
>      struct hmap lp_hmap = HMAP_INITIALIZER(&lp_hmap);
>      struct hmap tk_hmap = HMAP_INITIALIZER(&tk_hmap);
>
> -    SBREC_BINDING_FOR_EACH(binding, ctx->ovnsb_idl) {
> -        struct binding_hash_node *hash_node = xzalloc(sizeof *hash_node);
> +    SBREC_PORT_BINDING_FOR_EACH(binding, ctx->ovnsb_idl) {
> +        struct port_binding_hash_node *hash_node = xzalloc(sizeof
> *hash_node);
>          hash_node->binding = binding;
>          hmap_insert(&lp_hmap, &hash_node->lp_node,
>                      hash_string(binding->logical_port, 0));
> @@ -517,7 +517,7 @@ set_bindings(struct northd_context *ctx)
>
>          for (size_t i = 0; i < lswitch->n_ports; i++) {
>              const struct nbrec_logical_port *lport = lswitch->ports[i];
> -            struct binding_hash_node *hash_node;
> +            struct port_binding_hash_node *hash_node;
>              binding = NULL;
>              HMAP_FOR_EACH_WITH_HASH(hash_node, lp_node,
>                                      hash_string(lport->name, 0),
> &lp_hmap) {
> @@ -535,19 +535,22 @@ set_bindings(struct northd_context *ctx)
>
>                  if (!macs_equal(binding->mac, binding->n_mac,
>                                  lport->macs, lport->n_macs)) {
> -                    sbrec_binding_set_mac(binding, (const char **)
> lport->macs,
> -                                          lport->n_macs);
> +                    sbrec_port_binding_set_mac(binding,
> +                                               (const char **)
> lport->macs,
> +                                               lport->n_macs);
>                  }
>                  if (!parents_equal(binding, lport)) {
> -                    sbrec_binding_set_parent_port(binding,
> lport->parent_name);
> +                    sbrec_port_binding_set_parent_port(binding,
> +
>  lport->parent_name);
>                  }
>                  if (!tags_equal(binding, lport)) {
> -                    sbrec_binding_set_tag(binding, lport->tag,
> lport->n_tag);
> +                    sbrec_port_binding_set_tag(binding,
> +                                               lport->tag, lport->n_tag);
>                  }
>                  if (!uuid_equals(&binding->logical_datapath,
>                                   logical_datapath)) {
> -                    sbrec_binding_set_logical_datapath(binding,
> -                                                       *logical_datapath);
> +                    sbrec_port_binding_set_logical_datapath(binding,
> +
> *logical_datapath);
>                  }
>              } else {
>                  /* There is no binding for this logical port, so create
> one. */
> @@ -557,23 +560,27 @@ set_bindings(struct northd_context *ctx)
>                      continue;
>                  }
>
> -                binding = sbrec_binding_insert(ctx->ovnsb_txn);
> -                sbrec_binding_set_logical_port(binding, lport->name);
> -                sbrec_binding_set_mac(binding, (const char **)
> lport->macs,
> -                                      lport->n_macs);
> +                binding = sbrec_port_binding_insert(ctx->ovnsb_txn);
> +                sbrec_port_binding_set_logical_port(binding, lport->name);
> +                sbrec_port_binding_set_mac(binding,
> +                                           (const char **) lport->macs,
> +                                           lport->n_macs);
>                  if (lport->parent_name && lport->n_tag > 0) {
> -                    sbrec_binding_set_parent_port(binding,
> lport->parent_name);
> -                    sbrec_binding_set_tag(binding, lport->tag,
> lport->n_tag);
> +                    sbrec_port_binding_set_parent_port(binding,
> +
>  lport->parent_name);
> +                    sbrec_port_binding_set_tag(binding,
> +                                               lport->tag, lport->n_tag);
>                  }
>
> -                sbrec_binding_set_tunnel_key(binding, tunnel_key);
> -                sbrec_binding_set_logical_datapath(binding,
> *logical_datapath);
> +                sbrec_port_binding_set_tunnel_key(binding, tunnel_key);
> +                sbrec_port_binding_set_logical_datapath(binding,
> +
> *logical_datapath);
>
>                  /* Add the tunnel key to the tk_hmap so that we don't try
> to
>                   * use it for another port.  (We don't want it in the
> lp_hmap
>                   * because that would just get the Binding record deleted
>                   * later.) */
> -                struct binding_hash_node *hash_node
> +                struct port_binding_hash_node *hash_node
>                      = xzalloc(sizeof *hash_node);
>                  hash_node->binding = binding;
>                  hmap_insert(&tk_hmap, &hash_node->tk_node,
> @@ -582,14 +589,14 @@ set_bindings(struct northd_context *ctx)
>          }
>      }
>
> -    struct binding_hash_node *hash_node;
> +    struct port_binding_hash_node *hash_node;
>      HMAP_FOR_EACH (hash_node, lp_node, &lp_hmap) {
>          hmap_remove(&lp_hmap, &hash_node->lp_node);
> -        sbrec_binding_delete(hash_node->binding);
> +        sbrec_port_binding_delete(hash_node->binding);
>      }
>      hmap_destroy(&lp_hmap);
>
> -    struct binding_hash_node *hash_node_next;
> +    struct port_binding_hash_node *hash_node_next;
>      HMAP_FOR_EACH_SAFE (hash_node, hash_node_next, tk_node, &tk_hmap) {
>          hmap_remove(&tk_hmap, &hash_node->tk_node);
>          free(hash_node);
> @@ -602,20 +609,20 @@ ovnnb_db_changed(struct northd_context *ctx)
>  {
>      VLOG_DBG("ovn-nb db contents have changed.");
>
> -    set_bindings(ctx);
> +    set_port_bindings(ctx);
>      build_pipeline(ctx);
>  }
>
>  /*
>   * The only change we get notified about is if the 'chassis' column of the
> - * 'Binding' table changes.  When this column is not empty, it means we
> need to
> - * set the corresponding logical port as 'up' in the northbound DB.
> + * 'Port_Binding' table changes.  When this column is not empty, it means
> we
> + * need to set the corresponding logical port as 'up' in the northbound
> DB.
>   */
>  static void
>  ovnsb_db_changed(struct northd_context *ctx)
>  {
>      struct hmap lports_hmap;
> -    const struct sbrec_binding *binding;
> +    const struct sbrec_port_binding *binding;
>      const struct nbrec_logical_port *lport;
>
>      struct lport_hash_node {
> @@ -634,7 +641,7 @@ ovnsb_db_changed(struct northd_context *ctx)
>                  hash_string(lport->name, 0));
>      }
>
> -    SBREC_BINDING_FOR_EACH(binding, ctx->ovnsb_idl) {
> +    SBREC_PORT_BINDING_FOR_EACH(binding, ctx->ovnsb_idl) {
>          lport = NULL;
>          HMAP_FOR_EACH_WITH_HASH(hash_node, node,
>                  hash_string(binding->logical_port, 0), &lports_hmap) {
> @@ -645,9 +652,9 @@ ovnsb_db_changed(struct northd_context *ctx)
>          }
>
>          if (!lport) {
> -            /* The logical port doesn't exist for this binding.  This can
> +            /* The logical port doesn't exist for this port binding.
> This can
>               * happen under normal circumstances when ovn-northd hasn't
> gotten
> -             * around to pruning the Binding yet. */
> +             * around to pruning the Port_Binding yet. */
>              continue;
>          }
>
> @@ -789,14 +796,14 @@ main(int argc, char *argv[])
>       * has to care about, so we'll enable monitoring those directly. */
>      ctx.ovnsb_idl = ovnsb_idl = ovsdb_idl_create(ovnsb_db,
>              &sbrec_idl_class, false, true);
> -    ovsdb_idl_add_table(ovnsb_idl, &sbrec_table_binding);
> -    ovsdb_idl_add_column(ovnsb_idl, &sbrec_binding_col_logical_port);
> -    ovsdb_idl_add_column(ovnsb_idl, &sbrec_binding_col_chassis);
> -    ovsdb_idl_add_column(ovnsb_idl, &sbrec_binding_col_mac);
> -    ovsdb_idl_add_column(ovnsb_idl, &sbrec_binding_col_tag);
> -    ovsdb_idl_add_column(ovnsb_idl, &sbrec_binding_col_parent_port);
> -    ovsdb_idl_add_column(ovnsb_idl, &sbrec_binding_col_logical_datapath);
> -    ovsdb_idl_add_column(ovnsb_idl, &sbrec_binding_col_tunnel_key);
> +    ovsdb_idl_add_table(ovnsb_idl, &sbrec_table_port_binding);
> +    ovsdb_idl_add_column(ovnsb_idl, &sbrec_port_binding_col_logical_port);
> +    ovsdb_idl_add_column(ovnsb_idl, &sbrec_port_binding_col_chassis);
> +    ovsdb_idl_add_column(ovnsb_idl, &sbrec_port_binding_col_mac);
> +    ovsdb_idl_add_column(ovnsb_idl, &sbrec_port_binding_col_tag);
> +    ovsdb_idl_add_column(ovnsb_idl, &sbrec_port_binding_col_parent_port);
> +    ovsdb_idl_add_column(ovnsb_idl,
> &sbrec_port_binding_col_logical_datapath);
> +    ovsdb_idl_add_column(ovnsb_idl, &sbrec_port_binding_col_tunnel_key);
>      ovsdb_idl_add_column(ovnsb_idl, &sbrec_pipeline_col_logical_datapath);
>      ovsdb_idl_omit_alert(ovnsb_idl, &sbrec_pipeline_col_logical_datapath);
>      ovsdb_idl_add_column(ovnsb_idl, &sbrec_pipeline_col_table_id);
> diff --git a/ovn/ovn-sb.ovsschema b/ovn/ovn-sb.ovsschema
> index f255006..4a2df47 100644
> --- a/ovn/ovn-sb.ovsschema
> +++ b/ovn/ovn-sb.ovsschema
> @@ -44,7 +44,7 @@
>                  "match": {"type": "string"},
>                  "actions": {"type": "string"}},
>              "isRoot": true},
> -        "Binding": {
> +        "Port_Binding": {
>              "columns": {
>                  "logical_datapath": {"type": "uuid"},
>                  "logical_port": {"type": "string"},
> diff --git a/ovn/ovn-sb.xml b/ovn/ovn-sb.xml
> index 52fe969..13e5145 100644
> --- a/ovn/ovn-sb.xml
> +++ b/ovn/ovn-sb.xml
> @@ -98,7 +98,7 @@
>    </p>
>
>    <p>
> -    The <ref table="Binding"/> table is currently the only binding data.
> +    The <ref table="Port_Binding"/> table is currently the only binding
> data.
>    </p>
>
>    <table name="Chassis" title="Physical Network Hypervisor and Gateway
> Information">
> @@ -226,7 +226,7 @@
>      <column name="logical_datapath">
>        The logical datapath to which the logical flow belongs.  A logical
>        datapath implements a logical pipeline among the ports in the <ref
> -      table="Binding"/> table associated with it.  (No table represents a
> +      table="Port_Binding"/> table associated with it.  (No table
> represents a
>        logical datapath.)  In practice, the pipeline in a given logical
> datapath
>        implements either a logical switch or a logical router, and
>        <code>ovn-northd</code> reuses the UUIDs for those logical entities
> from
> @@ -451,7 +451,7 @@
>          String constants have the same syntax as quoted strings in JSON
> (thus,
>          they are Unicode strings).  String constants are used for naming
>          logical ports.  Thus, the useful values are <ref
> -        column="logical_port"/> names from the <ref column="Binding"/> and
> +        column="logical_port"/> names from the <ref
> column="Port_Binding"/> and
>          <ref column="Gateway"/> tables in a logical flow's <ref
>          column="logical_datapath"/>.
>        </p>
> @@ -628,7 +628,7 @@
>      </column>
>    </table>
>
> -  <table name="Binding" title="Physical-Logical Bindings">
> +  <table name="Port_Binding" title="Physical-Logical Port Bindings">
>      <p>
>        Each row in this table identifies the physical location of a logical
>        port.
> --
> 2.1.3
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to