@@ -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.*
@@ -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
@@ -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
@@ -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 \
new file mode 100755
@@ -0,0 +1,2 @@
+#! /bin/sh
+exec ovn-nbctl --dry-run "$@"
new file mode 100755
@@ -0,0 +1,2 @@
+#! /bin/sh
+exec ovn-sbctl --dry-run "$@"
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 += \
new file mode 100755
@@ -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"
new file mode 100755
@@ -0,0 +1,2 @@
+#! /bin/sh
+exec ovs-dpctl --dry-run "$@"
new file mode 100755
@@ -0,0 +1,2 @@
+#! /bin/sh
+exec ovs-ofctl --dry-run "$@"
new file mode 100755
@@ -0,0 +1,2 @@
+#! /bin/sh
+exec ovs-vsctl --dry-run "$@"
@@ -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
new file mode 100755
@@ -0,0 +1,2 @@
+#! /bin/sh
+exec vtep-ctl --dry-run "$@"
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 <rmoats@us.ibm.com> --- 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