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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
#!/usr/bin/python
#============================================================================
# This library is free software; you can redistribute it and/or
# modify it under the terms of version 2.1 of the GNU Lesser General Public
# License as published by the Free Software Foundation.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#============================================================================
# Copyright (C) 2009 flonatel GmbH & Co. KG
#============================================================================
#
# Author: Andreas Florath <xen@flonatel.org>
# Loosly based on the original testcase from
# Tom Wilkie <tom.wilkie@gmail.com>
#
# This test case creates two guest systems, creates a (very) private
# network between them and attaches the ethernet apropriate.
# Note: in this test case there are some fixed IP and network
# addresses used. This is not a problem, because those are really
# used only for local communication.
#
import sys
import time
from XmTestLib import *
from XmTestLib.network_utils import *
from XmTestLib.XenAPIDomain import XmTestAPIDomain
# Some config for this testcase
class TCConfig:
network_name = "xapi-network-xm-test-03"
ip_addr_1 = "172.16.77.70"
ip_addr_2 = "172.16.77.71"
default_gateway = "172.16.77.72"
default_netmask = "255.255.255.0"
@staticmethod
def remove_network(guest):
nw = guest.session.xenapi.network.get_all()
for n in nw:
name = guest.session.xenapi.network.get_name_label(n)
if name == TCConfig.network_name:
guest.session.xenapi.network.destroy(n)
# Create two domains (default XmTestDomain, with our ramdisk)
try:
guest1 = XmTestAPIDomain()
console1 = guest1.start()
# guest1.newDevice(XenNetDevice, "eth0")
# guest1_netdev = guest1.getDevice("eth0")
guest2 = XmTestAPIDomain()
console2 = guest2.start()
except DomainError, e:
if verbose:
print("Failed to create test domain because: %s" % e.extra)
FAIL(str(e))
# Clean up relicts
TCConfig.remove_network(guest1)
# Create a network
network = guest1.session.xenapi.network.create(
{ "name_label": TCConfig.network_name,
"name_description": "This is a testing network",
"default_gateway": TCConfig.default_gateway,
"default_netmask": TCConfig.default_netmask,
"other_config": {} } )
# Attach two domains to it
status, msg = network_attach(
guest1.getName(), console1, bridge=TCConfig.network_name)
if status:
FAIL(msg)
status, msg = network_attach(
guest2.getName(), console2, bridge=TCConfig.network_name)
if status:
FAIL(msg)
# Configure IP addresses on two guests
try:
run = console1.runCmd(
"ifconfig eth0 " + TCConfig.ip_addr_1
+ " netmask " + TCConfig.default_netmask + " up")
run = console2.runCmd(
"ifconfig eth0 " + TCConfig.ip_addr_2
+ " netmask " + TCConfig.default_netmask + " up")
except ConsoleError, e:
saveLog(console.getHistory())
FAIL(str(e))
# Now ping...
try:
run = console1.runCmd("ping -c 4 " + TCConfig.ip_addr_2)
if run['return'] > 0:
FAIL("Could not ping other host")
run = console2.runCmd("ping -c 4 " + TCConfig.ip_addr_1)
if run['return'] > 0:
FAIL("Could not pint other host")
except ConsoleError, e:
saveLog(console.getHistory())
FAIL(str(e))
status, msg = network_detach(guest1.getName(), console1)
status, msg = network_detach(guest2.getName(), console2)
# Clean up
TCConfig.remove_network(guest1)
guest1.closeConsole()
guest1.stop()
guest2.closeConsole()
guest2.stop()
|