1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
AT_BANNER([ovs-xapi-sync])
AT_SETUP([ovs-xapi-sync])
# Mock up the XenAPI.
cp "$top_srcdir/tests/MockXenAPI.py" XenAPI.py
PYTHONPATH=`pwd`:$PYTHONPATH
export PYTHONPATH
cp "$top_srcdir/vswitchd/vswitch.ovsschema" .
cp "$top_srcdir/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync" \
ovs-xapi-sync
on_exit 'kill `cat pid ovs-xapi-sync.pid`'
mkdir var var/run
touch var/run/xapi_init_complete.cookie
ovs_vsctl () {
ovs-vsctl --no-wait -vreconnect:emer "$@"
}
# Start ovsdb-server.
OVS_VSCTL_SETUP
# Start ovs-xapi-sync.
AT_CHECK([$PYTHON3 ./ovs-xapi-sync "--pidfile=ovs-xapi-sync.pid" \
"--root-prefix=`pwd`" unix:db.sock >log 2>&1 &])
AT_CAPTURE_FILE([log])
# Add bridges and check ovs-xapi-sync's work.
AT_CHECK([ovs_vsctl -- add-br xenbr0 -- add-br xenbr1])
OVS_WAIT_UNTIL([test "X`ovs_vsctl get bridge xenbr0 fail-mode`" != "X[[]]"])
AT_CHECK([ovs_vsctl \
-- get bridge xenbr0 fail-mode other-config external-ids \
-- get bridge xenbr1 fail-mode other-config external-ids], [0],
[[secure
{}
{bridge-id="custom bridge ID"}
secure
{disable-in-band="true"}
{}
]])
# Add vif and check daemon's work.
AT_CHECK([ovs_vsctl \
-- add-port xenbr0 vif1.0 \
-- set Interface vif1.0 'external-ids={attached-mac="00:11:22:33:44:55", xs-network-uuid="9b66c68b-a74e-4d34-89a5-20a8ab352d1e", xs-vif-uuid="6ab1b260-398e-49ba-827b-c7696108964c", xs-vm-uuid="fcb8a3f6-dc04-41d2-8b8a-55afd2b755b8"'}])
OVS_WAIT_UNTIL([ovs_vsctl get interface vif1.0 external-ids:iface-id >/dev/null 2>&1])
AT_CHECK([ovs_vsctl get interface vif1.0 external-ids], [0],
[{attached-mac="00:11:22:33:44:55", iface-id="custom iface ID", iface-status=active, vm-id="custom vm ID", xs-network-uuid="9b66c68b-a74e-4d34-89a5-20a8ab352d1e", xs-vif-uuid="6ab1b260-398e-49ba-827b-c7696108964c", xs-vm-uuid="fcb8a3f6-dc04-41d2-8b8a-55afd2b755b8"}
])
# Add corresponding tap and check daemon's work.
AT_CHECK([ovs_vsctl add-port xenbr0 tap1.0])
OVS_WAIT_UNTIL([ovs_vsctl get interface tap1.0 external-ids:iface-id >/dev/null 2>&1])
AT_CHECK([ovs_vsctl \
-- get interface vif1.0 external-ids \
-- get interface tap1.0 external-ids], [0],
[{attached-mac="00:11:22:33:44:55", iface-id="custom iface ID", iface-status=inactive, vm-id="custom vm ID", xs-network-uuid="9b66c68b-a74e-4d34-89a5-20a8ab352d1e", xs-vif-uuid="6ab1b260-398e-49ba-827b-c7696108964c", xs-vm-uuid="fcb8a3f6-dc04-41d2-8b8a-55afd2b755b8"}
{attached-mac="00:11:22:33:44:55", iface-id="custom iface ID", iface-status=active, vm-id="custom vm ID", xs-network-uuid="9b66c68b-a74e-4d34-89a5-20a8ab352d1e", xs-vif-uuid="6ab1b260-398e-49ba-827b-c7696108964c", xs-vm-uuid="fcb8a3f6-dc04-41d2-8b8a-55afd2b755b8"}
])
# Remove corresponding tap and check daemon's work.
AT_CHECK([ovs_vsctl del-port tap1.0])
OVS_WAIT_UNTIL([test `ovs_vsctl get interface vif1.0 external-ids:iface-status` = active])
AT_CHECK([ovs_vsctl get interface vif1.0 external-ids], [0],
[{attached-mac="00:11:22:33:44:55", iface-id="custom iface ID", iface-status=active, vm-id="custom vm ID", xs-network-uuid="9b66c68b-a74e-4d34-89a5-20a8ab352d1e", xs-vif-uuid="6ab1b260-398e-49ba-827b-c7696108964c", xs-vm-uuid="fcb8a3f6-dc04-41d2-8b8a-55afd2b755b8"}
])
OVSDB_SERVER_SHUTDOWN
AT_CLEANUP
|