From patchwork Mon Mar 12 11:23:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guoshuai Li X-Patchwork-Id: 884438 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=dtdream.com Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 400FxK5vXKz9sNx for ; Mon, 12 Mar 2018 22:24:05 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 1ED8511BD; Mon, 12 Mar 2018 11:24:02 +0000 (UTC) X-Original-To: ovs-dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 35EE611B5 for ; Mon, 12 Mar 2018 11:24:01 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from smtp2203-239.mail.aliyun.com (smtp2203-239.mail.aliyun.com [121.197.203.239]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 05882356 for ; Mon, 12 Mar 2018 11:23:57 +0000 (UTC) X-Alimail-AntiSpam: AC=CONTINUE; BC=0.07444207|-1; CH=green; FP=0|0|0|0|0|-1|-1|-1; HT=e02c03302; MF=ligs@dtdream.com; NM=1; PH=DS; RN=2; RT=2; SR=0; TI=SMTPD_---.BGrVLmG_1520853833; Received: from localhost.localdomain(mailfrom:ligs@dtdream.com fp:222.128.6.212) by smtp.aliyun-inc.com(10.147.41.199); Mon, 12 Mar 2018 19:23:54 +0800 From: Guoshuai Li To: ovs-dev@openvswitch.org Date: Mon, 12 Mar 2018 19:23:44 +0800 Message-Id: <20180312112344.13768-1-ligs@dtdream.com> X-Mailer: git-send-email 2.13.2.windows.1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH v3] ctl-option: add --inactivity-probe= option in set targets commands X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org This patch can set inactivity probe for connection by command: ovs-vsctl --inactivity-probe=30000 set-manager tcp::6640 ovs-vsctl --inactivity-probe=30000 set-controller tcp::6641 vtep-ctl --inactivity-probe=30000 set-manager tcp::6640 ovn-nbctl --inactivity-probe=30000 set-connection ptcp:6641:0.0.0.0 ovn-sbctl --inactivity-probe=30000 set-connection ptcp:6642:0.0.0.0 Signed-off-by: Guoshuai Li --- ovn/utilities/ovn-nbctl.8.xml | 6 ++++-- ovn/utilities/ovn-nbctl.c | 11 ++++++++++- ovn/utilities/ovn-sbctl.c | 11 ++++++++++- tests/ovn-nbctl.at | 14 ++++++++++++++ tests/ovn-sbctl.at | 14 ++++++++++++++ tests/ovs-vsctl.at | 9 +++++++++ tests/vtep-ctl.at | 4 ++++ utilities/ovs-vsctl.c | 31 ++++++++++++++++++++++++------- vtep/vtep-ctl.c | 17 +++++++++++++---- 9 files changed, 102 insertions(+), 15 deletions(-) diff --git a/ovn/utilities/ovn-nbctl.8.xml b/ovn/utilities/ovn-nbctl.8.xml index 7f4b3aba8..362025469 100644 --- a/ovn/utilities/ovn-nbctl.8.xml +++ b/ovn/utilities/ovn-nbctl.8.xml @@ -866,9 +866,11 @@ Deletes the configured connection(s). -
set-connection target...
+
[--inactivity-probe=msecs] set-connection target...
- Sets the configured manager target or targets. + Sets the configured manager target or targets. Use + --inactivity-probe=msecs to override the default + idle connection inactivity probe time. Use 0 to disable inactivity probes.
diff --git a/ovn/utilities/ovn-nbctl.c b/ovn/utilities/ovn-nbctl.c index 80fb97cd4..3d140174e 100644 --- a/ovn/utilities/ovn-nbctl.c +++ b/ovn/utilities/ovn-nbctl.c @@ -446,6 +446,7 @@ DHCP Options commands:\n\ Connection commands:\n\ get-connection print the connections\n\ del-connection delete the connections\n\ + [--inactivity-probe=MSECS]\n\ set-connection TARGET... set the list of connections to TARGET...\n\ \n\ SSL commands:\n\ @@ -3491,6 +3492,7 @@ pre_connection(struct ctl_context *ctx) { ovsdb_idl_add_column(ctx->idl, &nbrec_nb_global_col_connections); ovsdb_idl_add_column(ctx->idl, &nbrec_connection_col_target); + ovsdb_idl_add_column(ctx->idl, &nbrec_connection_col_inactivity_probe); } static void @@ -3544,6 +3546,8 @@ insert_connections(struct ctl_context *ctx, char *targets[], size_t n) const struct nbrec_nb_global *nb_global = nbrec_nb_global_first(ctx->idl); struct nbrec_connection **connections; size_t i, conns=0; + const char *inactivity_probe = shash_find_data(&ctx->options, + "--inactivity-probe"); /* Insert each connection in a new row in Connection table. */ connections = xmalloc(n * sizeof *connections); @@ -3555,6 +3559,11 @@ insert_connections(struct ctl_context *ctx, char *targets[], size_t n) connections[conns] = nbrec_connection_insert(ctx->txn); nbrec_connection_set_target(connections[conns], targets[i]); + if (inactivity_probe) { + int64_t msecs = atoll(inactivity_probe); + nbrec_connection_set_inactivity_probe(connections[conns], + &msecs, 1); + } conns++; } @@ -4066,7 +4075,7 @@ static const struct ctl_command_syntax nbctl_commands[] = { {"get-connection", 0, 0, "", pre_connection, cmd_get_connection, NULL, "", RO}, {"del-connection", 0, 0, "", pre_connection, cmd_del_connection, NULL, "", RW}, {"set-connection", 1, INT_MAX, "TARGET...", pre_connection, cmd_set_connection, - NULL, "", RW}, + NULL, "--inactivity-probe=", RW}, /* SSL commands. */ {"get-ssl", 0, 0, "", pre_cmd_get_ssl, cmd_get_ssl, NULL, "", RO}, diff --git a/ovn/utilities/ovn-sbctl.c b/ovn/utilities/ovn-sbctl.c index c2fd18338..445fcafe2 100644 --- a/ovn/utilities/ovn-sbctl.c +++ b/ovn/utilities/ovn-sbctl.c @@ -317,6 +317,7 @@ Logical flow commands:\n\ Connection commands:\n\ get-connection print the connections\n\ del-connection delete the connections\n\ + [--inactivity-probe=MSECS]\n\ set-connection TARGET... set the list of connections to TARGET...\n\ \n\ SSL commands:\n\ @@ -954,6 +955,7 @@ pre_connection(struct ctl_context *ctx) ovsdb_idl_add_column(ctx->idl, &sbrec_connection_col_target); ovsdb_idl_add_column(ctx->idl, &sbrec_connection_col_read_only); ovsdb_idl_add_column(ctx->idl, &sbrec_connection_col_role); + ovsdb_idl_add_column(ctx->idl, &sbrec_connection_col_inactivity_probe); } static void @@ -1016,6 +1018,8 @@ insert_connections(struct ctl_context *ctx, char *targets[], size_t n) size_t i, conns=0; bool read_only = false; char *role = ""; + const char *inactivity_probe = shash_find_data(&ctx->options, + "--inactivity-probe"); /* Insert each connection in a new row in Connection table. */ connections = xmalloc(n * sizeof *connections); @@ -1038,6 +1042,11 @@ insert_connections(struct ctl_context *ctx, char *targets[], size_t n) sbrec_connection_set_target(connections[conns], targets[i]); sbrec_connection_set_read_only(connections[conns], read_only); sbrec_connection_set_role(connections[conns], role); + if (inactivity_probe) { + int64_t msecs = atoll(inactivity_probe); + sbrec_connection_set_inactivity_probe(connections[conns], + &msecs, 1); + } conns++; } @@ -1427,7 +1436,7 @@ static const struct ctl_command_syntax sbctl_commands[] = { {"get-connection", 0, 0, "", pre_connection, cmd_get_connection, NULL, "", RO}, {"del-connection", 0, 0, "", pre_connection, cmd_del_connection, NULL, "", RW}, {"set-connection", 1, INT_MAX, "TARGET...", pre_connection, cmd_set_connection, - NULL, "", RW}, + NULL, "--inactivity-probe=", RW}, /* SSL commands. */ {"get-ssl", 0, 0, "", pre_cmd_get_ssl, cmd_get_ssl, NULL, "", RO}, diff --git a/tests/ovn-nbctl.at b/tests/ovn-nbctl.at index 4921417f3..f07b47fd2 100644 --- a/tests/ovn-nbctl.at +++ b/tests/ovn-nbctl.at @@ -1345,3 +1345,17 @@ AT_CHECK([ovn-nbctl lsp-get-type lp0], [0], [dnl OVN_NBCTL_TEST_STOP AT_CLEANUP + +dnl --------------------------------------------------------------------- + +AT_SETUP([ovn-nbctl - connection]) +OVN_NBCTL_TEST_START + +AT_CHECK([ovn-nbctl --inactivity-probe=30000 set-connection ptcp:6641:127.0.0.1 punix:$OVS_RUNDIR/ovnnb_db.sock]) +AT_CHECK([ovn-nbctl list connection | grep inactivity_probe], [0], [dnl +inactivity_probe : 30000 +inactivity_probe : 30000 +]) + +OVN_NBCTL_TEST_STOP +AT_CLEANUP diff --git a/tests/ovn-sbctl.at b/tests/ovn-sbctl.at index ee2face76..df9a8a24f 100644 --- a/tests/ovn-sbctl.at +++ b/tests/ovn-sbctl.at @@ -134,3 +134,17 @@ options : {vtep_logical_switch="l0", vtep_physical_switch="p0"} OVN_SBCTL_TEST_STOP AT_CLEANUP + +dnl --------------------------------------------------------------------- + +AT_SETUP([ovn-sbctl - connection]) +OVN_SBCTL_TEST_START + +AT_CHECK([ovn-sbctl --inactivity-probe=30000 set-connection ptcp:6641:127.0.0.1 punix:$OVS_RUNDIR/ovnsb_db.sock]) +AT_CHECK([ovn-sbctl list connection | grep inactivity_probe], [0], [dnl +inactivity_probe : 30000 +inactivity_probe : 30000 +]) + +OVN_SBCTL_TEST_STOP +AT_CLEANUP \ No newline at end of file diff --git a/tests/ovs-vsctl.at b/tests/ovs-vsctl.at index e6c3f4596..3189a9bbe 100644 --- a/tests/ovs-vsctl.at +++ b/tests/ovs-vsctl.at @@ -487,6 +487,9 @@ AT_CHECK([RUN_OVS_VSCTL_TOGETHER( [get-controller br0], [set-controller br0 tcp:8.9.10.11 tcp:5.4.3.2], + [get-controller br0], + + [--inactivity-probe=30000 set-controller br0 tcp:1.2.3.4], [get-controller br0])], [0], [ @@ -495,6 +498,8 @@ tcp:4.5.6.7 tcp:5.4.3.2\ntcp:8.9.10.11 + +tcp:1.2.3.4 ]) OVS_VSCTL_CLEANUP AT_CLEANUP @@ -660,6 +665,8 @@ AT_CHECK([RUN_OVS_VSCTL_TOGETHER( [get-manager], [set-manager tcp:8.9.10.11 tcp:5.4.3.2], [get-manager], + [--inactivity-probe=30000 set-manager tcp:1.2.3.4], + [get-manager], [del-manager], [get-manager])], [0], [ @@ -668,6 +675,8 @@ tcp:4.5.6.7 tcp:5.4.3.2\ntcp:8.9.10.11 +tcp:1.2.3.4 + ]) OVS_VSCTL_CLEANUP diff --git a/tests/vtep-ctl.at b/tests/vtep-ctl.at index 2b0df67c1..e44eb33ee 100644 --- a/tests/vtep-ctl.at +++ b/tests/vtep-ctl.at @@ -906,6 +906,8 @@ AT_CHECK([RUN_VTEP_CTL_TOGETHER( [get-manager], [set-manager tcp:8.9.10.11 tcp:5.4.3.2], [get-manager], + [--inactivity-probe=30000 set-manager tcp:1.2.3.4], + [get-manager], [del-manager], [get-manager])], [0], [ @@ -914,6 +916,8 @@ tcp:4.5.6.7 tcp:5.4.3.2\ntcp:8.9.10.11 +tcp:1.2.3.4 + ], [], [VTEP_CTL_CLEANUP]) VTEP_CTL_CLEANUP diff --git a/utilities/ovs-vsctl.c b/utilities/ovs-vsctl.c index 21fa18ddb..e3538bc38 100644 --- a/utilities/ovs-vsctl.c +++ b/utilities/ovs-vsctl.c @@ -392,6 +392,7 @@ Interface commands (a bond consists of multiple interfaces):\n\ Controller commands:\n\ get-controller BRIDGE print the controllers for BRIDGE\n\ del-controller BRIDGE delete the controllers for BRIDGE\n\ + [--inactivity-probe=MSECS]\n\ set-controller BRIDGE TARGET... set the controllers for BRIDGE\n\ get-fail-mode BRIDGE print the fail-mode for BRIDGE\n\ del-fail-mode BRIDGE delete the fail-mode for BRIDGE\n\ @@ -400,6 +401,7 @@ Controller commands:\n\ Manager commands:\n\ get-manager print the managers\n\ del-manager delete the managers\n\ + [--inactivity-probe=MSECS]\n\ set-manager TARGET... set the list of managers to TARGET...\n\ \n\ SSL commands:\n\ @@ -1854,6 +1856,7 @@ pre_controller(struct ctl_context *ctx) pre_get_info(ctx); ovsdb_idl_add_column(ctx->idl, &ovsrec_controller_col_target); + ovsdb_idl_add_column(ctx->idl, &ovsrec_controller_col_inactivity_probe); } static void @@ -1914,18 +1917,24 @@ cmd_del_controller(struct ctl_context *ctx) } static struct ovsrec_controller ** -insert_controllers(struct ovsdb_idl_txn *txn, char *targets[], size_t n) +insert_controllers(struct ctl_context *ctx, char *targets[], size_t n) { struct ovsrec_controller **controllers; size_t i; + const char *inactivity_probe = shash_find_data(&ctx->options, + "--inactivity-probe"); controllers = xmalloc(n * sizeof *controllers); for (i = 0; i < n; i++) { if (vconn_verify_name(targets[i]) && pvconn_verify_name(targets[i])) { VLOG_WARN("target type \"%s\" is possibly erroneous", targets[i]); } - controllers[i] = ovsrec_controller_insert(txn); + controllers[i] = ovsrec_controller_insert(ctx->txn); ovsrec_controller_set_target(controllers[i], targets[i]); + if (inactivity_probe) { + int64_t msecs = atoll(inactivity_probe); + ovsrec_controller_set_inactivity_probe(controllers[i], &msecs, 1); + } } return controllers; @@ -1947,7 +1956,7 @@ cmd_set_controller(struct ctl_context *ctx) delete_controllers(br->controller, br->n_controller); n = ctx->argc - 2; - controllers = insert_controllers(ctx->txn, &ctx->argv[2], n); + controllers = insert_controllers(ctx, &ctx->argv[2], n); ovsrec_bridge_set_controller(br, controllers, n); free(controllers); } @@ -2023,6 +2032,7 @@ pre_manager(struct ctl_context *ctx) { ovsdb_idl_add_column(ctx->idl, &ovsrec_open_vswitch_col_manager_options); ovsdb_idl_add_column(ctx->idl, &ovsrec_manager_col_target); + ovsdb_idl_add_column(ctx->idl, &ovsrec_manager_col_inactivity_probe); } static void @@ -2074,10 +2084,13 @@ cmd_del_manager(struct ctl_context *ctx) } static void -insert_managers(struct vsctl_context *vsctl_ctx, char *targets[], size_t n) +insert_managers(struct vsctl_context *vsctl_ctx, char *targets[], size_t n, + struct shash *options) { struct ovsrec_manager **managers; size_t i; + const char *inactivity_probe = shash_find_data(options, + "--inactivity-probe"); /* Insert each manager in a new row in Manager table. */ managers = xmalloc(n * sizeof *managers); @@ -2087,6 +2100,10 @@ insert_managers(struct vsctl_context *vsctl_ctx, char *targets[], size_t n) } managers[i] = ovsrec_manager_insert(vsctl_ctx->base.txn); ovsrec_manager_set_target(managers[i], targets[i]); + if (inactivity_probe) { + int64_t msecs = atoll(inactivity_probe); + ovsrec_manager_set_inactivity_probe(managers[i], &msecs, 1); + } } /* Store uuids of new Manager rows in 'manager_options' column. */ @@ -2102,7 +2119,7 @@ cmd_set_manager(struct ctl_context *ctx) verify_managers(vsctl_ctx->ovs); delete_managers(vsctl_ctx->ovs); - insert_managers(vsctl_ctx, &ctx->argv[1], n); + insert_managers(vsctl_ctx, &ctx->argv[1], n, &ctx->options); } static void @@ -2841,7 +2858,7 @@ static const struct ctl_command_syntax vsctl_commands[] = { {"del-controller", 1, 1, "BRIDGE", pre_controller, cmd_del_controller, NULL, "", RW}, {"set-controller", 1, INT_MAX, "BRIDGE TARGET...", pre_controller, - cmd_set_controller, NULL, "", RW}, + cmd_set_controller, NULL, "--inactivity-probe=", RW}, {"get-fail-mode", 1, 1, "BRIDGE", pre_get_info, cmd_get_fail_mode, NULL, "", RO}, {"del-fail-mode", 1, 1, "BRIDGE", pre_get_info, cmd_del_fail_mode, NULL, @@ -2853,7 +2870,7 @@ static const struct ctl_command_syntax vsctl_commands[] = { {"get-manager", 0, 0, "", pre_manager, cmd_get_manager, NULL, "", RO}, {"del-manager", 0, 0, "", pre_manager, cmd_del_manager, NULL, "", RW}, {"set-manager", 1, INT_MAX, "TARGET...", pre_manager, cmd_set_manager, - NULL, "", RW}, + NULL, "--inactivity-probe=", RW}, /* SSL commands. */ {"get-ssl", 0, 0, "", pre_cmd_get_ssl, cmd_get_ssl, NULL, "", RO}, diff --git a/vtep/vtep-ctl.c b/vtep/vtep-ctl.c index a8967ea1c..0ae7d4621 100644 --- a/vtep/vtep-ctl.c +++ b/vtep/vtep-ctl.c @@ -316,6 +316,7 @@ VTEP commands:\n\ Manager commands:\n\ get-manager print the managers\n\ del-manager delete the managers\n\ + [--inactivity-probe=MSECS]\n\ set-manager TARGET... set the list of managers to TARGET...\n\ \n\ Physical Switch commands:\n\ @@ -2097,6 +2098,7 @@ pre_manager(struct ctl_context *ctx) { ovsdb_idl_add_column(ctx->idl, &vteprec_global_col_managers); ovsdb_idl_add_column(ctx->idl, &vteprec_manager_col_target); + ovsdb_idl_add_column(ctx->idl, &vteprec_manager_col_inactivity_probe); } static void @@ -2149,10 +2151,13 @@ cmd_del_manager(struct ctl_context *ctx) } static void -insert_managers(struct vtep_ctl_context *vtepctl_ctx, char *targets[], size_t n) +insert_managers(struct vtep_ctl_context *vtepctl_ctx, char *targets[], + size_t n, struct shash *options) { struct vteprec_manager **managers; size_t i; + const char *inactivity_probe = shash_find_data(options, + "--inactivity-probe"); /* Insert each manager in a new row in Manager table. */ managers = xmalloc(n * sizeof *managers); @@ -2162,6 +2167,10 @@ insert_managers(struct vtep_ctl_context *vtepctl_ctx, char *targets[], size_t n) } managers[i] = vteprec_manager_insert(vtepctl_ctx->base.txn); vteprec_manager_set_target(managers[i], targets[i]); + if (inactivity_probe) { + int64_t msecs = atoll(inactivity_probe); + vteprec_manager_set_inactivity_probe(managers[i], &msecs, 1); + } } /* Store uuids of new Manager rows in 'managers' column. */ @@ -2177,7 +2186,7 @@ cmd_set_manager(struct ctl_context *ctx) verify_managers(vtepctl_ctx->vtep_global); delete_managers(vtepctl_ctx); - insert_managers(vtepctl_ctx, &ctx->argv[1], n); + insert_managers(vtepctl_ctx, &ctx->argv[1], n, &ctx->options); } /* Parameter commands. */ @@ -2491,8 +2500,8 @@ static const struct ctl_command_syntax vtep_commands[] = { /* Manager commands. */ {"get-manager", 0, 0, NULL, pre_manager, cmd_get_manager, NULL, "", RO}, {"del-manager", 0, 0, NULL, pre_manager, cmd_del_manager, NULL, "", RW}, - {"set-manager", 1, INT_MAX, NULL, pre_manager, cmd_set_manager, NULL, "", - RW}, + {"set-manager", 1, INT_MAX, NULL, pre_manager, cmd_set_manager, NULL, + "--inactivity-probe=", RW}, {NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, RO}, };