[ovs-dev] [PATCH ovn v2] controller: Set chassis for container port.
Russell Bryant
rbryant at redhat.com
Wed May 6 02:30:51 UTC 2015
ovn-controller updates the chassis column of the Bindings table in
OVN_Southbound when a logical port appears on the local switch. A
logical port that has a parent will never appear on a switch managed
by ovn-controller. When a parent port appears, all child container
ports should be updated as being on that chassis, as well.
Signed-off-by: Russell Bryant <rbryant at redhat.com>
---
ovn/controller/bindings.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
v1->v2
- Applied suggestions from Justin.
diff --git a/ovn/controller/bindings.c b/ovn/controller/bindings.c
index ef233c0..e5b4827 100644
--- a/ovn/controller/bindings.c
+++ b/ovn/controller/bindings.c
@@ -76,12 +76,14 @@ bindings_run(struct controller_ctx *ctx)
{
const struct sbrec_bindings *bindings_rec;
struct ovsdb_idl_txn *txn;
- struct sset lports;
+ struct sset lports, all_lports;
const char *name;
int retval;
sset_init(&lports);
+ sset_init(&all_lports);
get_local_iface_ids(ctx, &lports);
+ sset_clone(&all_lports, &lports);
txn = ovsdb_idl_txn_create(ctx->ovnsb_idl);
ovsdb_idl_txn_add_comment(txn,
@@ -89,7 +91,9 @@ bindings_run(struct controller_ctx *ctx)
ctx->chassis_id);
SBREC_BINDINGS_FOR_EACH(bindings_rec, ctx->ovnsb_idl) {
- if (sset_find_and_delete(&lports, bindings_rec->logical_port)) {
+ if (sset_find_and_delete(&lports, bindings_rec->logical_port) ||
+ (bindings_rec->parent_port && bindings_rec->parent_port[0] &&
+ sset_contains(&all_lports, bindings_rec->parent_port))) {
if (!strcmp(bindings_rec->chassis, ctx->chassis_id)) {
continue;
}
@@ -116,6 +120,7 @@ bindings_run(struct controller_ctx *ctx)
VLOG_DBG("No binding record for lport %s", name);
}
sset_destroy(&lports);
+ sset_destroy(&all_lports);
}
void
--
2.1.0
More information about the dev
mailing list