17
17
from lxml import etree
19
from nova import flags
19
from nova.openstack.common import cfg
20
20
from nova import test
21
21
from nova import utils
22
from nova.virt.libvirt import config
22
from nova.virt.libvirt import config as vconfig
23
23
from nova.virt.libvirt import vif
28
28
class LibvirtVifTestCase(test.TestCase):
66
67
self.stubs.Set(utils, 'execute', fake_execute)
68
69
def _get_instance_xml(self, driver):
69
conf = config.LibvirtConfigGuest()
70
conf = vconfig.LibvirtConfigGuest()
70
71
conf.virt_type = "qemu"
71
72
conf.name = "fake-name"
72
73
conf.uuid = "fake-uuid"
77
78
conf.add_device(nic)
78
79
return conf.to_xml()
81
def test_multiple_nics(self):
82
conf = vconfig.LibvirtConfigGuest()
83
conf.virt_type = "qemu"
84
conf.name = "fake-name"
85
conf.uuid = "fake-uuid"
86
conf.memory = 100 * 1024
89
# Tests multiple nic configuration and that target_dev is
91
nics = [{'net_type': 'bridge',
92
'mac_addr': '00:00:00:00:00:0b',
93
'source_dev': 'b_source_dev',
94
'target_dev': 'b_target_dev'},
95
{'net_type': 'ethernet',
96
'mac_addr': '00:00:00:00:00:0e',
97
'source_dev': 'e_source_dev',
98
'target_dev': 'e_target_dev'},
99
{'net_type': 'direct',
100
'mac_addr': '00:00:00:00:00:0d',
101
'source_dev': 'd_source_dev',
102
'target_dev': 'd_target_dev'}]
105
nic_conf = vconfig.LibvirtConfigGuestInterface()
106
nic_conf.net_type = nic['net_type']
107
nic_conf.target_dev = nic['target_dev']
108
nic_conf.mac_addr = nic['mac_addr']
109
nic_conf.source_dev = nic['source_dev']
110
conf.add_device(nic_conf)
113
doc = etree.fromstring(xml)
115
path = "./devices/interface/[@type='%s']" % nic['net_type']
116
node = doc.find(path)
117
self.assertEqual(nic['net_type'], node.get("type"))
118
self.assertEqual(nic['mac_addr'],
119
node.find("mac").get("address"))
120
self.assertEqual(nic['target_dev'],
121
node.find("target").get("dev"))
80
123
def test_bridge_driver(self):
81
124
d = vif.LibvirtBridgeDriver()
82
125
xml = self._get_instance_xml(d)
122
165
self.assertEqual(node.get("type"), "bridge")
124
167
br_name = node.find("source").get("bridge")
125
self.assertEqual(br_name, FLAGS.libvirt_ovs_bridge)
168
self.assertEqual(br_name, CONF.libvirt_ovs_bridge)
126
169
mac = node.find("mac").get("address")
127
170
self.assertEqual(mac, self.mapping['mac'])
128
171
vp = node.find("virtualport")
145
188
ret = doc.findall('./devices/interface')
146
189
self.assertEqual(len(ret), 1)
148
self.assertEqual(node.get("type"), "ethernet")
191
self.assertEqual(node.get("type"), "bridge")
149
192
dev_name = node.find("target").get("dev")
150
193
self.assertTrue(dev_name.startswith("tap"))
151
194
mac = node.find("mac").get("address")
152
195
self.assertEqual(mac, self.mapping['mac'])
153
script = node.find("script").get("path")
154
self.assertEquals(script, "")
196
br_name = node.find("source").get("bridge")
197
self.assertTrue(br_name.startswith("brq"))
156
199
d.unplug(None, (self.net, self.mapping))