From patchwork Thu Aug 4 17:55:35 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Moats X-Patchwork-Id: 655883 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (archives.nicira.com [96.126.127.54]) by ozlabs.org (Postfix) with ESMTP id 3s4yLH2pfzz9sBf for ; Fri, 5 Aug 2016 03:56:39 +1000 (AEST) Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id 9C7D910C68; Thu, 4 Aug 2016 10:56:38 -0700 (PDT) X-Original-To: dev@openvswitch.org Delivered-To: dev@openvswitch.org Received: from mx1e4.cudamail.com (mx1.cudamail.com [69.90.118.67]) by archives.nicira.com (Postfix) with ESMTPS id 9317610C67 for ; Thu, 4 Aug 2016 10:56:37 -0700 (PDT) Received: from bar5.cudamail.com (unknown [192.168.21.12]) by mx1e4.cudamail.com (Postfix) with ESMTPS id 261611E018D for ; Thu, 4 Aug 2016 11:56:37 -0600 (MDT) X-ASG-Debug-ID: 1470333395-09eadd5e85085a0001-byXFYA Received: from mx3-pf1.cudamail.com ([192.168.14.2]) by bar5.cudamail.com with ESMTP id sYRgS4LOcG0ZXuQB (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Thu, 04 Aug 2016 11:56:36 -0600 (MDT) X-Barracuda-Envelope-From: stack@tombstone-01.cloud.svl.ibm.com X-Barracuda-RBL-Trusted-Forwarder: 192.168.14.2 Received: from unknown (HELO mx0a-001b2d01.pphosted.com) (148.163.158.5) by mx3-pf1.cudamail.com with ESMTPS (AES256-SHA encrypted); 4 Aug 2016 17:56:34 -0000 Received-SPF: none (mx3-pf1.cudamail.com: domain at tombstone-01.cloud.svl.ibm.com does not designate permitted sender hosts) X-Barracuda-Apparent-Source-IP: 148.163.158.5 X-Barracuda-RBL-IP: 148.163.158.5 Received: from pps.filterd (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.11/8.16.0.11) with SMTP id u74Hrsfx093742 for ; Thu, 4 Aug 2016 13:56:33 -0400 Received: from e18.ny.us.ibm.com (e18.ny.us.ibm.com [129.33.205.208]) by mx0b-001b2d01.pphosted.com with ESMTP id 24kxmhtj9d-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Thu, 04 Aug 2016 13:56:33 -0400 Received: from localhost by e18.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 4 Aug 2016 13:56:33 -0400 Received: from d01dlp02.pok.ibm.com (9.56.250.167) by e18.ny.us.ibm.com (146.89.104.205) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 4 Aug 2016 13:56:31 -0400 X-IBM-Helo: d01dlp02.pok.ibm.com X-IBM-MailFrom: stack@tombstone-01.cloud.svl.ibm.com Received: from b01cxnp23034.gho.pok.ibm.com (b01cxnp23034.gho.pok.ibm.com [9.57.198.29]) by d01dlp02.pok.ibm.com (Postfix) with ESMTP id 7B3BA6E8041 for ; Thu, 4 Aug 2016 13:56:10 -0400 (EDT) Received: from b01ledav005.gho.pok.ibm.com (b01ledav005.gho.pok.ibm.com [9.57.199.110]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id u74HuXiO18415880; Thu, 4 Aug 2016 17:56:33 GMT Received: from b01ledav005.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 09CA9AE03B; Thu, 4 Aug 2016 13:56:30 -0400 (EDT) Received: from localhost (unknown [9.30.183.40]) by b01ledav005.gho.pok.ibm.com (Postfix) with SMTP id 9E033AE056; Thu, 4 Aug 2016 13:56:29 -0400 (EDT) Received: by localhost (Postfix, from userid 1000) id 2BD3860012; Thu, 4 Aug 2016 17:56:29 +0000 (UTC) X-CudaMail-Envelope-Sender: stack@tombstone-01.cloud.svl.ibm.com From: Ryan Moats To: dev@openvswitch.org X-CudaMail-MID: CM-V1-803035861 X-CudaMail-DTE: 080416 X-CudaMail-Originating-IP: 148.163.158.5 Date: Thu, 4 Aug 2016 17:55:35 +0000 X-ASG-Orig-Subj: [##CM-V1-803035861##][PATCH v2 2/2] Add wrapper scripts for *ctl commands X-Mailer: git-send-email 2.7.4 In-Reply-To: <1470333335-11989-1-git-send-email-rmoats@us.ibm.com> References: <1470333335-11989-1-git-send-email-rmoats@us.ibm.com> X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16080417-0044-0000-0000-000000D5377A X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00005548; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000178; SDB=6.00739982; UDB=6.00347981; IPR=6.00512580; BA=6.00004644; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00012158; XFM=3.00000011; UTC=2016-08-04 17:56:32 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16080417-0045-0000-0000-000004EB7536 Message-Id: <1470333335-11989-3-git-send-email-rmoats@us.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-08-04_10:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=15 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1604210000 definitions=main-1608040194 X-GBUdb-Analysis: 0, 148.163.158.5, Ugly c=0.437809 p=-0.314286 Source Normal X-MessageSniffer-Rules: 0-0-0-32767-c X-Barracuda-Connect: UNKNOWN[192.168.14.2] X-Barracuda-Start-Time: 1470333395 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://web.cudamail.com:443/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at cudamail.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.60 X-Barracuda-Spam-Status: No, SCORE=1.60 using global scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=4.0 tests=BSF_RULE7568M, BSF_RULE_7582B, BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.31750 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M 0.50 BSF_RULE_7582B Custom Rule 7582B 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 Subject: [ovs-dev] [PATCH v2 2/2] Add wrapper scripts for *ctl commands X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" This commit creates wrapper scripts for the *ctl commands to use --dry-run for those that have them, and to allow for log level setting vi ovs-appctl without allowing full access to ovs-appctl. The debian install files for ovn-common, openvswitch-common and openvswitch-vswitch have been modified to include the wrapper scripts as part of files to be installed. Tests have been added to make sure that the wrapper scripts don't actually do anything when asked to perform a write operation. Signed-off-by: Ryan Moats --- v1->v2: Added unit test for ovs-appsetlog Included new scripts in appropriate debian package definitions debian/openvswitch-common.install | 2 + debian/openvswitch-switch.install | 2 + debian/ovn-common.install | 2 + ovn/utilities/automake.mk | 8 ++- ovn/utilities/ovn-nbread | 2 + ovn/utilities/ovn-sbread | 2 + tests/ovn-nbctl.at | 103 +++++++++++++++++++++++++++ tests/ovn-sbctl.at | 46 ++++++++++++ tests/ovs-ofctl.at | 33 +++++++++ tests/ovs-vsctl.at | 90 +++++++++++++++++++++++ tests/vlog.at | 27 +++++++ tests/vtep-ctl.at | 145 ++++++++++++++++++++++++++++++++++++++ utilities/automake.mk | 10 ++- utilities/ovs-appsetlog | 40 +++++++++++ utilities/ovs-dpread | 2 + utilities/ovs-ofread | 2 + utilities/ovs-vsread | 2 + vtep/automake.mk | 5 +- vtep/vtep-read | 2 + 19 files changed, 520 insertions(+), 5 deletions(-) create mode 100755 ovn/utilities/ovn-nbread create mode 100755 ovn/utilities/ovn-sbread create mode 100755 utilities/ovs-appsetlog create mode 100755 utilities/ovs-dpread create mode 100755 utilities/ovs-ofread create mode 100755 utilities/ovs-vsread create mode 100755 vtep/vtep-read diff --git a/debian/openvswitch-common.install b/debian/openvswitch-common.install index ebb7d5c..8b0ed03 100644 --- a/debian/openvswitch-common.install +++ b/debian/openvswitch-common.install @@ -7,6 +7,8 @@ usr/bin/ovs-pki usr/bin/ovsdb-client usr/sbin/ovs-bugtool usr/share/openvswitch/bugtool-plugins +usr/share/openvswitch/scripts/ovs-appsetlog usr/share/openvswitch/scripts/ovs-bugtool-* usr/share/openvswitch/scripts/ovs-lib +usr/share/openvswitch/scripts/ovs-ofread usr/lib/lib*.so.* diff --git a/debian/openvswitch-switch.install b/debian/openvswitch-switch.install index bfb391f..934915d 100644 --- a/debian/openvswitch-switch.install +++ b/debian/openvswitch-switch.install @@ -12,5 +12,7 @@ usr/sbin/ovs-vswitchd usr/sbin/ovsdb-server usr/share/openvswitch/scripts/ovs-check-dead-ifs usr/share/openvswitch/scripts/ovs-ctl +usr/share/openvswitch/scripts/ovs-dpread usr/share/openvswitch/scripts/ovs-save +usr/share/openvswitch/scripts/ovs-vsread usr/share/openvswitch/vswitch.ovsschema diff --git a/debian/ovn-common.install b/debian/ovn-common.install index acb1dc9..b9fae25 100644 --- a/debian/ovn-common.install +++ b/debian/ovn-common.install @@ -1,3 +1,5 @@ usr/bin/ovn-nbctl usr/bin/ovn-sbctl usr/share/openvswitch/scripts/ovn-ctl +usr/share/openvswitch/scripts/ovn-nbread +usr/share/openvswitch/scripts/ovn-sbread diff --git a/ovn/utilities/automake.mk b/ovn/utilities/automake.mk index d84368c..c78a07f 100644 --- a/ovn/utilities/automake.mk +++ b/ovn/utilities/automake.mk @@ -1,5 +1,7 @@ scripts_SCRIPTS += \ - ovn/utilities/ovn-ctl + ovn/utilities/ovn-ctl \ + ovn/utilities/ovn-nbread \ + ovn/utilities/ovn-sbread man_MANS += \ ovn/utilities/ovn-ctl.8 \ @@ -18,7 +20,9 @@ EXTRA_DIST += \ ovn/utilities/ovn-ctl.8.xml \ ovn/utilities/ovn-docker-overlay-driver \ ovn/utilities/ovn-docker-underlay-driver \ - ovn/utilities/ovn-nbctl.8.xml + ovn/utilities/ovn-nbctl.8.xml \ + ovn/utilities/ovn-nbread \ + ovn/utilities/ovn-sbread DISTCLEANFILES += \ ovn/utilities/ovn-ctl.8 \ diff --git a/ovn/utilities/ovn-nbread b/ovn/utilities/ovn-nbread new file mode 100755 index 0000000..27c9b71 --- /dev/null +++ b/ovn/utilities/ovn-nbread @@ -0,0 +1,2 @@ +#! /bin/sh +exec ovn-nbctl --dry-run "$@" diff --git a/ovn/utilities/ovn-sbread b/ovn/utilities/ovn-sbread new file mode 100755 index 0000000..d5c3f44 --- /dev/null +++ b/ovn/utilities/ovn-sbread @@ -0,0 +1,2 @@ +#! /bin/sh +exec ovn-sbctl --dry-run "$@" diff --git a/tests/ovn-nbctl.at b/tests/ovn-nbctl.at index 5357ced..615e0fc 100644 --- a/tests/ovn-nbctl.at +++ b/tests/ovn-nbctl.at @@ -485,3 +485,106 @@ IPv6 Routes OVN_NBCTL_TEST_STOP AT_CLEANUP + +dnl --------------------------------------------------------------------- + +AT_SETUP([ovn-nbread - negative tests]) +OVN_NBCTL_TEST_START +ovn-nbctl ls-add base +ovn-nbctl ls-list > expout +ovn-nbread init +AT_CHECK([ovn-nbread ls-list], [0], [expout]) +ovn-nbread ls-add canary +AT_CHECK([ovn-nbread ls-list], [0], [expout]) +ovn-nbread ls-del base +AT_CHECK([ovn-nbread ls-list], [0], [expout]) + +ovn-nbread acl-add base to-lport 100 1 allow +AT_CHECK([ovn-nbread acl-list base], [0], []) +ovn-nbread acl-del base +AT_CHECK([ovn-nbread acl-list base], [0], []) + +ovn-nbctl lsp-add base base-port +ovn-nbctl lsp-list base > expout +ovn-nbread lsp-add base canary +AT_CHECK([ovn-nbread lsp-list base], [0], [expout]) +ovn-nbread lsp-del base-port +AT_CHECK([ovn-nbread lsp-list base], [0], [expout]) + +ovn-nbread lsp-get-addresses base-port > expout +ovn-nbread lsp-set-addresses base-port "01:23:45:67:89:ab" +AT_CHECK([ovn-nbread lsp-get-addresses base-port], [0], [expout]) + +ovn-nbread lsp-get-port-security base-port > expout +ovn-nbread lsp-set-port-security base-port "01:23:45:67:89:ab" +AT_CHECK([ovn-nbread lsp-get-port-security base-port], [0], [expout]) + +ovn-nbctl lsp-set-enabled base-port disabled +ovn-nbread lsp-set-enabled base-port enabled +AT_CHECK([ovn-nbctl lsp-get-enabled base-port], [0], [disabled +]) +ovn-nbctl lsp-set-type base-port patch +ovn-nbread lsp-set-type base-port gateway +AT_CHECK([ovn-nbread lsp-get-type base-port], [0], [patch +]) +ovn-nbread lsp-get-options base-port > expout +ovn-nbread lsp-set-options base-port key=value +AT_CHECK([ovn-nbread lsp-get-options base-port], [0], [expout]) + +ovn-nbread lsp-get-dhcpv4-options base-port > expout +ovn-nbread lsp-set-dhcpv4-options base-port 00000000-0000-0000-0000-000000001234 +AT_CHECK([ovn-nbread lsp-get-dhcpv4-options base-port], [0], [expout]) + +ovn-nbctl lr-add baserouter +ovn-nbctl lr-list > expout +ovn-nbread lr-add canary +AT_CHECK([ovn-nbctl lr-list], [0], [expout]) +ovn-nbread lr-del baserouter +AT_CHECK([ovn-nbctl lr-list], [0], [expout]) + +ovn-nbctl lrp-add baserouter brp 01:23:45:67:89:EF 1.1.1.2 +ovn-nbctl lrp-list baserouter > expout +ovn-nbread lrp-add baserouter canary 12:34:56:78:90:AB 1.1.1.1 +AT_CHECK([ovn-nbread lrp-list baserouter], [0], [expout]) +ovn-nbread lrp-del brp +AT_CHECK([ovn-nbread lrp-list baserouter], [0], [expout]) + +ovn-nbctl lrp-set-enabled brp disabled +ovn-nbread lrp-set-enabled brp enabled +AT_CHECK([ovn-nbread lrp-get-enabled brp], [0], [disabled +]) + +ovn-nbctl lr-route-add baserouter 1.1.1.0/24 1.1.2.1 +ovn-nbread lr-route-list baserouter > expout +ovn-nbread lr-route-add baserouter 2.2.2.0/24 1.1.2.2 +AT_CHECK([ovn-nbread lr-route-list baserouter], [0], [expout]) +ovn-nbread lr-route-del baserouter 1.1.1.0/24 +AT_CHECK([ovn-nbread lr-route-list baserouter], [0], [expout]) + +ovn-nbctl dhcp-options-create 3.3.3.0/24 +ovn-nbread dhcp-options-list > expout +ovn-nbread dhcp-options-create 4.4.4.0/24 +AT_CHECK([ovn-nbread dhcp-options-list], [0], [expout]) +ovn-nbread dhcp-options-del `ovn-nbread dhcp-options-list` +AT_CHECK([ovn-nbread dhcp-options-list], [0], [expout]) +ovn-nbread dhcp-options-set-options `ovn-nbread dhcp-options-list` key=value +AT_CHECK([ovn-nbread dhcp-options-get-options `ovn-nbread dhcp-options-list`], [0], []) + +ovn-nbread list Logical_Switch > expout +ovn-nbread add Logical_Switch base external_ids ovn-bridge-mappings="test" +AT_CHECK([ovn-nbread list Logical_Switch], [0], [expout]) +ovn-nbread set Logical_Switch base external_ids='ovn-bridge-mappings="test"' +AT_CHECK([ovn-nbread list Logical_Switch], [0], [expout]) +ovn-nbctl add Logical_Switch base external_ids ovn-bridge-mappings="test" +ovn-nbread list Logical_Switch > expout +ovn-nbread remove Logical_Switch base external_ids ovn-bridge-mappings="test" +AT_CHECK([ovn-nbread list Logical_Switch], [0], [expout]) +ovn-nbread clear Logical_Switch base external_ids +AT_CHECK([ovn-nbread list Logical_Switch], [0], [expout]) +ovn-nbread create Logical_Switch name=canary +AT_CHECK([ovn-nbread list Logical_Switch], [0], [expout]) +ovn-nbread destroy Logical_Switch base +AT_CHECK([ovn-nbread list Logical_Switch], [0], [expout]) + +OVN_NBCTL_TEST_STOP +AT_CLEANUP diff --git a/tests/ovn-sbctl.at b/tests/ovn-sbctl.at index 72dc441..89cc6a8 100644 --- a/tests/ovn-sbctl.at +++ b/tests/ovn-sbctl.at @@ -141,3 +141,49 @@ options : {vtep_logical_switch="l0", vtep_physical_switch="p0"} OVN_SBCTL_TEST_STOP AT_CLEANUP + +dnl --------------------------------------------------------------------- + +AT_SETUP([ovn-sbread - negative tests]) +OVN_SBCTL_TEST_START + +ovn-sbctl chassis-add base geneve 10.10.10.10 +ovn-sbread list Chassis > expout +ovn-sbread init +AT_CHECK([ovn-sbread list Chassis], [0], [expout]) +ovn-sbread chassis-add canary geneve 20.20.20.20 +AT_CHECK([ovn-sbread list Chassis], [0], [expout]) +ovn-sbread chassis-del base +AT_CHECK([ovn-sbread list Chassis], [0], [expout]) + +AT_CHECK([ovn-nbctl ls-add br-test]) +AT_CHECK([ovn-nbctl lsp-add br-test vif0]) +ovn-sbread list Port_Binding > expout +ovn-sbread lsp-bind vif0 base +AT_CHECK([ovn-sbread list Port_Binding], [0], [expout]) + +ovn-sbctl lsp-bind vif0 base +ovn-sbread list Port_Binding > expout +ovn-sbread lsp-unbind vif0 +AT_CHECK([ovn-sbread list Port_Binding], [0], [expout]) + +ovn-sbctl add Chassis base external_ids ovn-bridge-mappings="test" + +ovn-sbread list Chassis > expout +ovn-sbread add Chassis base external_ids ovn-bridge-mappings="test" +AT_CHECK([ovn-sbread list Chassis], [0], [expout]) +ovn-sbread set Chassis base hostname=test +AT_CHECK([ovn-sbread list Chassis], [0], [expout]) +ovn-sbctl add Chassis base external_ids ovn-bridge-mappings="test" +ovn-sbread list Chassis > expout +ovn-sbread remove Chassis base external_ids ovn-bridge-mappings="test" +AT_CHECK([ovn-sbread list Chassis], [0], [expout]) +ovn-sbread clear Chassis base external_ids +AT_CHECK([ovn-sbread list Chassis], [0], [expout]) +ovn-sbread create Chassis name=canary +AT_CHECK([ovn-sbread list Chassis], [0], [expout]) +ovn-sbread destroy Chassis base +AT_CHECK([ovn-sbread list Chassis], [0], [expout]) + +OVN_SBCTL_TEST_STOP +AT_CLEANUP diff --git a/tests/ovs-ofctl.at b/tests/ovs-ofctl.at index 00db247..c7e77b6 100644 --- a/tests/ovs-ofctl.at +++ b/tests/ovs-ofctl.at @@ -3042,3 +3042,36 @@ vconn|DBG|unix: sent (Success): OFPST_FLOW reply (OF1.4): OVS_VSWITCHD_STOP AT_CLEANUP + +AT_SETUP([ovs-ofread - negative tests]) +AT_KEYWORDS([ovs-ofread]) +AT_DATA([allflows.txt], [[ +priority=4,in_port=23213 actions=output:42 +priority=5,in_port=1029 actions=output:43 +priority=7,in_port=1029 actions=output:43 +priority=3,in_port=1028 actions=output:44 +priority=1,in_port=1026 actions=output:45 +priority=6,in_port=1027 actions=output:64 +priority=2,in_port=1025 actions=output:47 +priority=8,tcp,tp_src=5 actions=drop +priority=9,tcp,tp_src=6 actions=drop +]]) +OVS_VSWITCHD_START + +AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip > expout]) +AT_CHECK([ovs-ofread add-flow br0 'ip actions=mod_tp_dst:1234']) +AT_CHECK([ovs-ofread dump-flows br0 | ofctl_strip], [0], [expout]) +AT_CHECK([ovs-ofread add-flows br0 allflows.txt]) +AT_CHECK([ovs-ofread dump-flows br0 | ofctl_strip], [0], [expout]) +AT_CHECK([ovs-ofread replace-flows br0 allflows.txt]) +AT_CHECK([ovs-ofread dump-flows br0 | ofctl_strip], [0], [expout]) +AT_CHECK([ovs-ofctl add-flows br0 allflows.txt +], [0], [ignore]) +AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip > expout]) +AT_CHECK([ovs-ofread mod-flows br0 "priority=9,tcp,tp_src=6 actions=output:48"]) +AT_CHECK([ovs-ofread dump-flows br0 | ofctl_strip], [0], [expout]) +AT_CHECK([ovs-ofread del-flows br0]) +AT_CHECK([ovs-ofread dump-flows br0 | ofctl_strip], [0], [expout]) + +OVS_VSWITCHD_STOP +AT_CLEANUP diff --git a/tests/ovs-vsctl.at b/tests/ovs-vsctl.at index 5171786..c4bec27 100644 --- a/tests/ovs-vsctl.at +++ b/tests/ovs-vsctl.at @@ -1361,3 +1361,93 @@ AT_CHECK([ovs-vsctl -t 5 --no-wait --db=ssl:127.0.0.1:$SSL_PORT --private-key=$P OVS_VSCTL_CLEANUP AT_CLEANUP + +dnl RUN_OVS_VSREAD(COMMAND, ...) +dnl +dnl Executes each ovs-vsread COMMAND. +m4_define([RUN_OVS_VSREAD], + [m4_foreach([command], [$@], [ovs-vsread --no-wait -vreconnect:emer --db=unix:socket command +])]) + +AT_SETUP([ovs-vsread - negative tests]) +AT_KEYWORDS([ovs-vsread]) +OVS_VSCTL_SETUP +RUN_OVS_VSCTL([add-br a]) +RUN_OVS_VSCTL([list-br > expout]) +AT_CHECK([RUN_OVS_VSREAD([list-br])], [0], [expout]) +RUN_OVS_VSREAD([init]) +AT_CHECK([RUN_OVS_VSREAD([list-br])], [0], [expout]) +RUN_OVS_VSREAD([add-br b]) +AT_CHECK([RUN_OVS_VSREAD([list-br])], [0], [expout]) +RUN_OVS_VSREAD([del-br a]) +AT_CHECK([RUN_OVS_VSREAD([list-br])], [0], [expout]) + +RUN_OVS_VSCTL([br-get-external-id a > expout]) +RUN_OVS_VSREAD([br-set-external-id a key0 value0]) +AT_CHECK([RUN_OVS_VSREAD([br-get-external-id a])], [0], [expout]) + +RUN_OVS_VSCTL([add-port a a1]) +RUN_OVS_VSCTL([list-ports a > expout]) +RUN_OVS_VSREAD([ add-port a a2]) +AT_CHECK([RUN_OVS_VSREAD([list-ports a])], [0], [expout]) +RUN_OVS_VSREAD([ add-bond a bond0 a1 a2 a3]) +AT_CHECK([RUN_OVS_VSREAD([list-ports a])], [0], [expout]) +RUN_OVS_VSREAD([ del-port a]) +AT_CHECK([RUN_OVS_VSREAD([list-ports a])], [0], [expout]) + +RUN_OVS_VSCTL([get-controller a > expout]) +RUN_OVS_VSREAD([set-controller a tcp:4.5.6.7]) +AT_CHECK([RUN_OVS_VSREAD([get-controller a])], [0], [expout]) +RUN_OVS_VSCTL([set-controller a tcp:4.5.6.7]) +RUN_OVS_VSCTL([get-controller a > expout]) +RUN_OVS_VSREAD([del-controller a]) +AT_CHECK([RUN_OVS_VSREAD([get-controller a])], [0], [expout]) + +RUN_OVS_VSCTL([set-fail-mode a closed]) +RUN_OVS_VSCTL([get-fail-mode a > expout]) +RUN_OVS_VSREAD([set-fail-mode a open]) +AT_CHECK([RUN_OVS_VSREAD([get-fail-mode a])], [0], [expout]) +RUN_OVS_VSREAD([del-fail-mode a]) +AT_CHECK([RUN_OVS_VSREAD([get-fail-mode a])], [0], [expout]) + +RUN_OVS_VSCTL([set-manager tcp:1.2.3.4]) +RUN_OVS_VSCTL([get-manager > expout]) +RUN_OVS_VSREAD([set-manager tcp:5.6.7.8]) +AT_CHECK([RUN_OVS_VSREAD([get-manager])], [0], [expout]) +RUN_OVS_VSREAD([del-manager]) +AT_CHECK([RUN_OVS_VSREAD([get-manager])], [0], [expout]) + +RUN_OVS_VSCTL([set-ssl a b c]) +RUN_OVS_VSCTL([get-ssl > expout]) +RUN_OVS_VSREAD([set-ssl d e f]) +AT_CHECK([RUN_OVS_VSREAD([get-ssl])], [0], [expout]) +RUN_OVS_VSREAD([del-ssl]) +AT_CHECK([RUN_OVS_VSREAD([get-ssl])], [0], [expout]) + +RUN_OVS_VSCTL([set-aa-mapping a b 10]) +RUN_OVS_VSCTL([get-aa-mapping a > expout]) +RUN_OVS_VSREAD([set-aa-mapping a c 20]) +AT_CHECK([RUN_OVS_VSREAD([get-aa-mapping a])], [0], [expout]) +RUN_OVS_VSREAD([del-aa-mapping a b 10]) +AT_CHECK([RUN_OVS_VSREAD([get-aa-mapping a])], [0], [expout]) + +RUN_OVS_VSREAD([emer-reset]) +AT_CHECK([RUN_OVS_VSREAD([get-aa-mapping a])], [0], [expout]) + +RUN_OVS_VSCTL([set Bridge a external_ids="bridge-id=test"]) +RUN_OVS_VSCTL([list Bridge > expout]) +RUN_OVS_VSREAD([set Bridge a datapath_type=test]) +AT_CHECK([RUN_OVS_VSREAD([list Bridge])], [0], [expout]) +RUN_OVS_VSREAD([add Bridge a datapath_type=test]) +AT_CHECK([RUN_OVS_VSREAD([list Bridge])], [0], [expout]) +RUN_OVS_VSREAD([remove Bridge a external_ids="bridge-id=test"]) +AT_CHECK([RUN_OVS_VSREAD([list Bridge])], [0], [expout]) +RUN_OVS_VSREAD([clear Bridge a external_ids]) +AT_CHECK([RUN_OVS_VSREAD([list Bridge])], [0], [expout]) +RUN_OVS_VSREAD([create Bridge b]) +AT_CHECK([RUN_OVS_VSREAD([list Bridge])], [0], [expout]) +RUN_OVS_VSREAD([destroy Bridge a]) +AT_CHECK([RUN_OVS_VSREAD([list Bridge])], [0], [expout]) + +OVS_VSCTL_CLEANUP +AT_CLEANUP diff --git a/tests/vlog.at b/tests/vlog.at index a689809..cb5e143 100644 --- a/tests/vlog.at +++ b/tests/vlog.at @@ -513,3 +513,30 @@ m4_define([VLOG_RFC5424_PYN], VLOG_RFC5424_PYN([Python2], [$HAVE_PYTHON], [$PYTHON]) VLOG_RFC5424_PYN([Python3], [$HAVE_PYTHON3], [$PYTHON3]) + +AT_SETUP([ appsetlog - unit test ]) +AT_KEYWORDS([appsetlog]) +AT_CHECK([ovstest test-unixctl --log-file=`pwd`/log --pidfile --detach], + [0], [], [ignore]) +AT_CHECK([vlog_filt log], [0], [opened log file +Entering run loop. +]) + +AT_CHECK([APPCTL -t test-unixctl vlog/list | sed -n '1,2p +/test_unixctl /p; /daemon /p'], [0], [dnl + console syslog file + ------- ------ ------ +daemon OFF INFO INFO +test_unixctl OFF INFO INFO +]) + +AT_CHECK([ovs-appsetlog test-unixctl dbg]) +AT_CHECK([APPCTL -t test-unixctl vlog/list | sed -n '1,2p +/test_unixctl /p; /daemon /p'], [0], [dnl + console syslog file + ------- ------ ------ +daemon DBG DBG DBG +test_unixctl DBG DBG DBG +]) + +AT_CLEANUP diff --git a/tests/vtep-ctl.at b/tests/vtep-ctl.at index f0511ad..163cf82 100644 --- a/tests/vtep-ctl.at +++ b/tests/vtep-ctl.at @@ -942,3 +942,148 @@ AT_CHECK([vtep-ctl --timeout=5 -vreconnect:emer --db=unix:socket show | tail -n+ VTEP_CTL_CLEANUP AT_CLEANUP + +dnl RUN_VTEP_READ(COMMAND, ...) +dnl +dnl Executes each vtep-read COMMAND. +m4_define([RUN_VTEP_READ], + [m4_foreach([command], [$@], [vtep-read --timeout=5 -vreconnect:emer --db=unix:socket command +])]) +AT_SETUP([vtep-read -- negative tests]) +AT_KEYWORDS([vtep-read]) +VTEP_CTL_SETUP +AT_CHECK([RUN_VTEP_CTL([add-ps a])], [0], [], [], [VTEP_CTL_CLEANUP]) +AT_CHECK([RUN_VTEP_READ([add-ps b])]) +CHECK_PSWITCHES([a]) +AT_CHECK([RUN_VTEP_READ([del-ps a])]) +CHECK_PSWITCHES([a]) + +AT_CHECK([RUN_VTEP_CTL([add-port a a1])], [0], [], [], [VTEP_CTL_CLEANUP]) +AT_CHECK([RUN_VTEP_READ([add-port a a2])]) +CHECK_PORTS([a], [a1]) +AT_CHECK([RUN_VTEP_READ([del-port a a1])]) +CHECK_PORTS([a], [a1]) + +AT_CHECK([RUN_VTEP_CTL([add-ls ls1])], [0], [], [], [VTEP_CTL_CLEANUP]) +AT_CHECK([RUN_VTEP_READ([add-ls b])]) +CHECK_LSWITCHES([ls1]) +AT_CHECK([RUN_VTEP_READ([del-ls ls1])]) +CHECK_LSWITCHES([ls1]) + +AT_CHECK([RUN_VTEP_READ([bind-ls a a1 300 ls1])]) +AT_CHECK([RUN_VTEP_CTL([list-bindings a a1])], [0], + [], [], [VTEP_CTL_CLEANUP]) +AT_CHECK([RUN_VTEP_CTL([bind-ls a a1 300 ls1])]) +AT_CHECK([RUN_VTEP_READ([unbind-ls a a1 300])]) +AT_CHECK([RUN_VTEP_CTL([list-bindings a a1])], [0], + [0300 ls1 +], [], [VTEP_CTL_CLEANUP]) + +AT_CHECK([RUN_VTEP_READ([set-replication-mode ls1 source_node])]) +AT_CHECK([RUN_VTEP_CTL( + [get-replication-mode ls1])], + [0], [[(null)] +], [], [VTEP_CTL_CLEANUP]) + +AT_CHECK([RUN_VTEP_CTL([add-lr lr1])]) +AT_CHECK([RUN_VTEP_READ([add-lr lr2])]) +AT_CHECK([RUN_VTEP_CTL([list-lr])], [0], [lr1 +], [], [VTEP_CTL_CLEANUP]) +AT_CHECK([RUN_VTEP_READ([del-lr lr1])]) +AT_CHECK([RUN_VTEP_CTL([list-lr])], [0], [lr1 +], [], [VTEP_CTL_CLEANUP]) + +AT_CHECK([RUN_VTEP_CTL( + [add-ucast-local ls1 00:11:22:33:44:55 10.0.0.10])], [0], [], [], + [VTEP_CTL_CLEANUP]) +AT_CHECK([RUN_VTEP_READ([add-ucast-local ls1 00:11:22:33:44:66 vxlan_over_ipv4 10.0.0.11])]) +AT_CHECK([RUN_VTEP_READ([del-ucast-local ls1 00:11:22:33:44:55])]) +AT_CHECK([RUN_VTEP_CTL([list-local-macs ls1])], [0], + [ucast-mac-local + 00:11:22:33:44:55 -> vxlan_over_ipv4/10.0.0.10 + +mcast-mac-local + +], [], [VTEP_CTL_CLEANUP]) + +AT_CHECK([RUN_VTEP_CTL( + [add-mcast-local ls1 01:11:22:33:44:55 10.0.0.12]) +], [0], [], [], [VTEP_CTL_CLEANUP]) +AT_CHECK([RUN_VTEP_READ([add-mcast-local ls1 01:11:22:33:44:55 10.0.0.10])]) +AT_CHECK([RUN_VTEP_READ([del-mcast-local ls1 01:11:22:33:44:55 10.0.0.12])]) +AT_CHECK([RUN_VTEP_CTL([list-local-macs ls1])], [0], + [ucast-mac-local + 00:11:22:33:44:55 -> vxlan_over_ipv4/10.0.0.10 + +mcast-mac-local + 01:11:22:33:44:55 -> vxlan_over_ipv4/10.0.0.12 + +], [], [VTEP_CTL_CLEANUP]) + +AT_CHECK([RUN_VTEP_READ([clear-local-macs ls1])]) +AT_CHECK([RUN_VTEP_CTL([list-local-macs ls1])], [0], + [ucast-mac-local + 00:11:22:33:44:55 -> vxlan_over_ipv4/10.0.0.10 + +mcast-mac-local + 01:11:22:33:44:55 -> vxlan_over_ipv4/10.0.0.12 + +], [], [VTEP_CTL_CLEANUP]) + +AT_CHECK([RUN_VTEP_CTL( + [add-ucast-remote ls1 02:11:22:33:44:55 10.0.0.10])], [0], [], [], + [VTEP_CTL_CLEANUP]) +AT_CHECK([RUN_VTEP_READ( + [add-ucast-remote ls1 00:11:22:33:44:66 vxlan_over_ipv4 10.0.0.11])]) +AT_CHECK([RUN_VTEP_READ([del-ucast-remote ls1 02:11:22:33:44:55])]) +AT_CHECK([RUN_VTEP_CTL([list-remote-macs ls1])], [0], + [ucast-mac-remote + 02:11:22:33:44:55 -> vxlan_over_ipv4/10.0.0.10 + +mcast-mac-remote + +], [], [VTEP_CTL_CLEANUP]) + +AT_CHECK([RUN_VTEP_CTL( + [add-mcast-remote ls1 03:11:22:33:44:55 10.0.0.12]) +], [0], [], [], [VTEP_CTL_CLEANUP]) +AT_CHECK([RUN_VTEP_READ([add-mcast-remote ls1 03:11:22:33:44:55 10.0.0.14])]) +AT_CHECK([RUN_VTEP_READ([del-mcast-remote ls1 03:11:22:33:44:55 10.0.0.12])]) +AT_CHECK([RUN_VTEP_CTL([list-remote-macs ls1])], [0], + [ucast-mac-remote + 02:11:22:33:44:55 -> vxlan_over_ipv4/10.0.0.10 + +mcast-mac-remote + 03:11:22:33:44:55 -> vxlan_over_ipv4/10.0.0.12 + +], [], [VTEP_CTL_CLEANUP]) + +AT_CHECK([RUN_VTEP_READ([clear-remote-macs ls1])]) +AT_CHECK([RUN_VTEP_CTL([list-remote-macs ls1])], [0], + [ucast-mac-remote + 02:11:22:33:44:55 -> vxlan_over_ipv4/10.0.0.10 + +mcast-mac-remote + 03:11:22:33:44:55 -> vxlan_over_ipv4/10.0.0.12 + +], [], [VTEP_CTL_CLEANUP]) + +AT_CHECK([RUN_VTEP_CTL([set-manager tcp:4.5.6.7])]) +AT_CHECK([RUN_VTEP_CTL([get-manager > expout])]) +AT_CHECK([RUN_VTEP_READ([set-manager tcp:4.5.6.8])]) +AT_CHECK([RUN_VTEP_READ([del-manager])]) +AT_CHECK([RUN_VTEP_CTL([get-manager])], [0], [expout]) + +AT_CHECK([RUN_VTEP_CTL([set Physical_Switch a management_ips=[[4.3.2.1]] tunnel_ips=[[1.2.3.4]]])]) +AT_CHECK([RUN_VTEP_CTL([list Physical_Switch > expout])]) +AT_CHECK([RUN_VTEP_READ([set Physical_Switch a management_ips=[[4.3.2.2]]])]) +AT_CHECK([RUN_VTEP_READ([add Physical_Switch a management_ips [[4.3.2.3]]])]) +AT_CHECK([RUN_VTEP_READ([remove Physical_Switch a management_ips [[4.3.2.1]]])]) +AT_CHECK([RUN_VTEP_CTL([list Physical_Switch])], [0], [expout]) +AT_CHECK([RUN_VTEP_READ([clear Physical_Switch a management_ips])]) +AT_CHECK([RUN_VTEP_CTL([list Physical_Switch])], [0], [expout]) +AT_CHECK([RUN_VTEP_READ([destroy Physical_Switch a])]) +AT_CHECK([RUN_VTEP_CTL([list Physical_Switch])], [0], [expout]) + +VTEP_CTL_CLEANUP +AT_CLEANUP diff --git a/utilities/automake.mk b/utilities/automake.mk index 9d5b425..e2f4e42 100644 --- a/utilities/automake.mk +++ b/utilities/automake.mk @@ -18,9 +18,13 @@ bin_SCRIPTS += \ utilities/ovs-vlan-test endif scripts_SCRIPTS += \ + utilities/ovs-appsetlog \ utilities/ovs-check-dead-ifs \ utilities/ovs-ctl \ - utilities/ovs-save + utilities/ovs-dpread \ + utilities/ovs-ofread \ + utilities/ovs-save \ + utilities/ovs-vsread scripts_DATA += utilities/ovs-lib completion_SCRIPTS += \ @@ -40,14 +44,17 @@ utilities/ovs-lib: $(top_builddir)/config.status docs += utilities/ovs-command-bashcomp.INSTALL.md EXTRA_DIST += \ utilities/ovs-appctl-bashcomp.bash \ + utilities/ovs-appsetlog \ utilities/ovs-check-dead-ifs.in \ utilities/ovs-command-bashcomp.INSTALL.md \ utilities/ovs-ctl.in \ utilities/ovs-dev.py \ utilities/ovs-docker \ utilities/ovs-dpctl-top.in \ + utilities/ovs-dpread \ utilities/ovs-l3ping.in \ utilities/ovs-lib.in \ + utilities/ovs-ofread \ utilities/ovs-parse-backtrace.in \ utilities/ovs-pcap.in \ utilities/ovs-pipegen.py \ @@ -58,6 +65,7 @@ EXTRA_DIST += \ utilities/ovs-test.in \ utilities/ovs-vlan-test.in \ utilities/ovs-vsctl-bashcomp.bash \ + utilities/ovs-vsread \ utilities/qemu-wrap.py \ utilities/checkpatch.py MAN_ROOTS += \ diff --git a/utilities/ovs-appsetlog b/utilities/ovs-appsetlog new file mode 100755 index 0000000..a5dea98 --- /dev/null +++ b/utilities/ovs-appsetlog @@ -0,0 +1,40 @@ +#! /bin/sh + +case $1 in + ovsdb-server) + ;; + ovn-northd) + ;; + ovn-controller) + ;; + ovn-controller-vtep) + ;; + test-unixctl) + # For testing. + ;; + *) + echo "Invalid target" + exit 1; + ;; +esac + +case $2 in + off) + ;; + emer) + ;; + err) + ;; + warn) + ;; + info) + ;; + dbg) + ;; + *) + echo "Invalid log level" + exit 1; + ;; +esac + +exec ovs-appctl -t "$1" vlog/set "$2" diff --git a/utilities/ovs-dpread b/utilities/ovs-dpread new file mode 100755 index 0000000..a560edf --- /dev/null +++ b/utilities/ovs-dpread @@ -0,0 +1,2 @@ +#! /bin/sh +exec ovs-dpctl --dry-run "$@" diff --git a/utilities/ovs-ofread b/utilities/ovs-ofread new file mode 100755 index 0000000..fd8bf82 --- /dev/null +++ b/utilities/ovs-ofread @@ -0,0 +1,2 @@ +#! /bin/sh +exec ovs-ofctl --dry-run "$@" diff --git a/utilities/ovs-vsread b/utilities/ovs-vsread new file mode 100755 index 0000000..39b156e --- /dev/null +++ b/utilities/ovs-vsread @@ -0,0 +1,2 @@ +#! /bin/sh +exec ovs-vsctl --dry-run "$@" diff --git a/vtep/automake.mk b/vtep/automake.mk index 2645f30..05387fd 100644 --- a/vtep/automake.mk +++ b/vtep/automake.mk @@ -38,10 +38,11 @@ vtep_vtep_ctl_LDADD = vtep/libvtep.la lib/libopenvswitch.la # ovs-vtep scripts_SCRIPTS += \ - vtep/ovs-vtep + vtep/ovs-vtep \ + vtep/vtep-read docs += vtep/README.ovs-vtep.md -EXTRA_DIST += vtep/ovs-vtep +EXTRA_DIST += vtep/ovs-vtep vtep/vtep-read FLAKE8_PYFILES += vtep/ovs-vtep diff --git a/vtep/vtep-read b/vtep/vtep-read new file mode 100755 index 0000000..4f0f919 --- /dev/null +++ b/vtep/vtep-read @@ -0,0 +1,2 @@ +#! /bin/sh +exec vtep-ctl --dry-run "$@"