summaryrefslogtreecommitdiff
path: root/ovn
diff options
context:
space:
mode:
authorLorenzo Bianconi <lorenzo.bianconi@redhat.com>2018-04-26 16:35:46 +0200
committerBen Pfaff <blp@ovn.org>2018-05-09 14:38:02 -0700
commitd45d99646c37bbfdb504aeb7a0f1f9a5a584506c (patch)
tree4240705bd9c199d3c8e197ee8329ff325af97857 /ovn
parentaef264f315e098fce1a412a9b6a28f84485040ff (diff)
downloadopenvswitch-d45d99646c37bbfdb504aeb7a0f1f9a5a584506c.tar.gz
ovn-nbctl: Show gw chassis in decreasing prio order.
Report gateway chassis in decreasing priority order running ovn-nbctl show sub-command. Add get_ordered_gw_chassis_prio_list routine to sort gw chassis according to the configured priority Acked-by: Mark Michelson <mmichels@redhat.com> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'ovn')
-rw-r--r--ovn/utilities/ovn-nbctl.c64
1 files changed, 39 insertions, 25 deletions
diff --git a/ovn/utilities/ovn-nbctl.c b/ovn/utilities/ovn-nbctl.c
index 86013fa2e..05d783c7b 100644
--- a/ovn/utilities/ovn-nbctl.c
+++ b/ovn/utilities/ovn-nbctl.c
@@ -607,6 +607,38 @@ print_alias(const struct smap *external_ids, const char *key, struct ds *s)
}
}
+/* gateway_chassis ordering
+ * */
+static int
+compare_chassis_prio_(const void *gc1_, const void *gc2_)
+{
+ const struct nbrec_gateway_chassis *const *gc1p = gc1_;
+ const struct nbrec_gateway_chassis *const *gc2p = gc2_;
+ const struct nbrec_gateway_chassis *gc1 = *gc1p;
+ const struct nbrec_gateway_chassis *gc2 = *gc2p;
+
+ int prio_diff = gc2->priority - gc1->priority;
+ if (!prio_diff) {
+ return strcmp(gc2->name, gc1->name);
+ }
+ return prio_diff;
+}
+
+static const struct nbrec_gateway_chassis **
+get_ordered_gw_chassis_prio_list(const struct nbrec_logical_router_port *lrp)
+{
+ const struct nbrec_gateway_chassis **gcs;
+ int i;
+
+ gcs = xmalloc(sizeof *gcs * lrp->n_gateway_chassis);
+ for (i = 0; i < lrp->n_gateway_chassis; i++) {
+ gcs[i] = lrp->gateway_chassis[i];
+ }
+
+ qsort(gcs, lrp->n_gateway_chassis, sizeof *gcs, compare_chassis_prio_);
+ return gcs;
+}
+
/* Given pointer to logical router, this routine prints the router
* information. */
static void
@@ -635,12 +667,17 @@ print_lr(const struct nbrec_logical_router *lr, struct ds *s)
}
if (lrp->n_gateway_chassis) {
+ const struct nbrec_gateway_chassis **gcs;
+
+ gcs = get_ordered_gw_chassis_prio_list(lrp);
ds_put_cstr(s, " gateway chassis: [");
for (size_t j = 0; j < lrp->n_gateway_chassis; j++) {
- ds_put_format(s, "%s ", lrp->gateway_chassis[j]->chassis_name);
+ const struct nbrec_gateway_chassis *gc = gcs[j];
+ ds_put_format(s, "%s ", gc->chassis_name);
}
ds_chomp(s, ' ');
ds_put_cstr(s, "]\n");
+ free(gcs);
}
}
@@ -3021,23 +3058,6 @@ nbctl_lrp_del_gateway_chassis(struct ctl_context *ctx)
chassis_name, ctx->argv[1]);
}
-/* gateway_chassis ordering
- * */
-static int
-compare_chassis_prio_(const void *gc1_, const void *gc2_)
-{
- const struct nbrec_gateway_chassis *const *gc1p = gc1_;
- const struct nbrec_gateway_chassis *const *gc2p = gc2_;
- const struct nbrec_gateway_chassis *gc1 = *gc1p;
- const struct nbrec_gateway_chassis *gc2 = *gc2p;
-
- int prio_diff = gc2->priority - gc1->priority;
- if (!prio_diff) {
- return strcmp(gc2->name, gc1->name);
- }
- return prio_diff;
-}
-
/* Print a list of gateway chassis. */
static void
nbctl_lrp_get_gateway_chassis(struct ctl_context *ctx)
@@ -3048,13 +3068,7 @@ nbctl_lrp_get_gateway_chassis(struct ctl_context *ctx)
size_t i;
lrp = lrp_by_name_or_uuid(ctx, id, true);
-
- gcs = xmalloc(sizeof *gcs * lrp->n_gateway_chassis);
- for (i = 0; i < lrp->n_gateway_chassis; i++) {
- gcs[i] = lrp->gateway_chassis[i];
- }
-
- qsort(gcs, lrp->n_gateway_chassis, sizeof *gcs, compare_chassis_prio_);
+ gcs = get_ordered_gw_chassis_prio_list(lrp);
for (i = 0; i < lrp->n_gateway_chassis; i++) {
const struct nbrec_gateway_chassis *gc = gcs[i];