~yolanda.robla/nova/precise-security

« back to all changes in this revision

Viewing changes to .pc/fix-pep8-errors.patch/nova/tests/test_libvirt_vif.py

  • Committer: yolanda.robla at canonical
  • Date: 2013-04-24 12:24:03 UTC
  • mfrom: (1.1.58)
  • Revision ID: yolanda.robla@canonical.com-20130424122403-m2v1wv4fz672e480
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
 
#
3
 
#    Copyright 2012 Nicira, Inc
4
 
#
5
 
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
6
 
#    not use this file except in compliance with the License. You may obtain
7
 
#    a copy of the License at
8
 
#
9
 
#         http://www.apache.org/licenses/LICENSE-2.0
10
 
#
11
 
#    Unless required by applicable law or agreed to in writing, software
12
 
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
 
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
 
#    License for the specific language governing permissions and limitations
15
 
#    under the License.
16
 
 
17
 
from xml.etree import ElementTree
18
 
 
19
 
from nova import flags
20
 
from nova import test
21
 
from nova import utils
22
 
from nova.virt import firewall
23
 
from nova.virt.libvirt import vif
24
 
from nova.virt.libvirt import connection
25
 
 
26
 
FLAGS = flags.FLAGS
27
 
 
28
 
 
29
 
class LibvirtVifTestCase(test.TestCase):
30
 
 
31
 
    net = {
32
 
             'cidr': '101.168.1.0/24',
33
 
             'cidr_v6': '101:1db9::/64',
34
 
             'gateway_v6': '101:1db9::1',
35
 
             'netmask_v6': '64',
36
 
             'netmask': '255.255.255.0',
37
 
             'bridge': 'br0',
38
 
             'bridge_interface': 'eth0',
39
 
             'vlan': 99,
40
 
             'gateway': '101.168.1.1',
41
 
             'broadcast': '101.168.1.255',
42
 
             'dns1': '8.8.8.8'
43
 
    }
44
 
 
45
 
    mapping = {
46
 
        'mac': 'ca:fe:de:ad:be:ef',
47
 
        'gateway_v6': net['gateway_v6'],
48
 
        'ips': [{'ip': '101.168.1.9'}],
49
 
        'dhcp_server': '191.168.1.1',
50
 
        'vif_uuid': 'vif-xxx-yyy-zzz'
51
 
    }
52
 
 
53
 
    instance = {
54
 
        'uuid': 'instance-uuid'
55
 
    }
56
 
 
57
 
    def setUp(self):
58
 
        super(LibvirtVifTestCase, self).setUp()
59
 
        self.flags(allow_same_net_traffic=True)
60
 
        self.executes = []
61
 
 
62
 
        def fake_execute(*cmd, **kwargs):
63
 
            self.executes.append(cmd)
64
 
            return None, None
65
 
 
66
 
        self.stubs.Set(utils, 'execute', fake_execute)
67
 
        t = __import__('Cheetah.Template', globals(), locals(),
68
 
                       ['Template'], -1)
69
 
        self.Template = t.Template
70
 
        xml_file = open(FLAGS.libvirt_xml_template)
71
 
        self.xml_template = xml_file.read()
72
 
 
73
 
    def _create_xml_info(self, vif_type, nics):
74
 
        return     {
75
 
                    'type': 'qemu',
76
 
                    'name': 'fake-name',
77
 
                    'uuid': 'fake-uuid',
78
 
                    'memory_kb': 100 * 1024,
79
 
                    'basepath': 'foobar',
80
 
                    'vcpus': 4,
81
 
                    'rescue': False,
82
 
                    'disk_prefix': '/dev/sda',
83
 
                    'driver_type': 'raw',
84
 
                    'root_device_type': 'disk',
85
 
                    'vif_type': vif_type,
86
 
                    'nics': nics,
87
 
                    'ebs_root': True,
88
 
                    'ephemeral_device': False,
89
 
                    'volumes': [],
90
 
                    'use_virtio_for_bridges': False,
91
 
                    'ephemerals': []}
92
 
 
93
 
    def _get_instance_xml(self, driver, vif_type):
94
 
        nic_dict = driver.plug(self.instance, self.net, self.mapping)
95
 
        xml_info = self._create_xml_info(vif_type, [nic_dict])
96
 
        xml = str(self.Template(self.xml_template, searchList=[xml_info]))
97
 
        return xml
98
 
 
99
 
    def test_bridge_driver(self):
100
 
        d = vif.LibvirtBridgeDriver()
101
 
        xml = self._get_instance_xml(d, 'bridge')
102
 
 
103
 
        doc = ElementTree.fromstring(xml)
104
 
        ret = doc.findall('./devices/interface')
105
 
        self.assertEqual(len(ret), 1)
106
 
        node = ret[0]
107
 
        self.assertEqual(node.get("type"), "bridge")
108
 
        br_name = node.find("source").get("bridge")
109
 
        self.assertEqual(br_name, self.net['bridge'])
110
 
        mac = node.find("mac").get("address")
111
 
        self.assertEqual(mac, self.mapping['mac'])
112
 
 
113
 
        d.unplug(None, self.net, self.mapping)
114
 
 
115
 
    def test_ovs_ethernet_driver(self):
116
 
        d = vif.LibvirtOpenVswitchDriver()
117
 
        xml = self._get_instance_xml(d, 'ethernet')
118
 
 
119
 
        doc = ElementTree.fromstring(xml)
120
 
        ret = doc.findall('./devices/interface')
121
 
        self.assertEqual(len(ret), 1)
122
 
        node = ret[0]
123
 
        self.assertEqual(node.get("type"), "ethernet")
124
 
        dev_name = node.find("target").get("dev")
125
 
        self.assertTrue(dev_name.startswith("tap"))
126
 
        mac = node.find("mac").get("address")
127
 
        self.assertEqual(mac, self.mapping['mac'])
128
 
        script = node.find("script").get("path")
129
 
        self.assertEquals(script, "")
130
 
 
131
 
        d.unplug(None, self.net, self.mapping)
132
 
 
133
 
    def test_ovs_virtualport_driver(self):
134
 
        d = vif.LibvirtOpenVswitchVirtualPortDriver()
135
 
        xml = self._get_instance_xml(d, 'ovs_virtualport')
136
 
 
137
 
        doc = ElementTree.fromstring(xml)
138
 
        ret = doc.findall('./devices/interface')
139
 
        self.assertEqual(len(ret), 1)
140
 
        node = ret[0]
141
 
        self.assertEqual(node.get("type"), "bridge")
142
 
 
143
 
        br_name = node.find("source").get("bridge")
144
 
        self.assertEqual(br_name, FLAGS.libvirt_ovs_bridge)
145
 
        mac = node.find("mac").get("address")
146
 
        self.assertEqual(mac, self.mapping['mac'])
147
 
        vp = node.find("virtualport")
148
 
        self.assertEqual(vp.get("type"), "openvswitch")
149
 
        iface_id_found = False
150
 
        for p_elem in vp.findall("parameters"):
151
 
            iface_id = p_elem.get("interfaceid", None)
152
 
            if iface_id:
153
 
                self.assertEqual(iface_id, self.mapping['vif_uuid'])
154
 
                iface_id_found = True
155
 
 
156
 
        self.assertTrue(iface_id_found)
157
 
        d.unplug(None, self.net, self.mapping)
158
 
 
159
 
    def test_quantum_bridge_ethernet_driver(self):
160
 
        d = vif.QuantumLinuxBridgeVIFDriver()
161
 
        xml = self._get_instance_xml(d, 'ethernet')
162
 
 
163
 
        doc = ElementTree.fromstring(xml)
164
 
        ret = doc.findall('./devices/interface')
165
 
        self.assertEqual(len(ret), 1)
166
 
        node = ret[0]
167
 
        self.assertEqual(node.get("type"), "ethernet")
168
 
        dev_name = node.find("target").get("dev")
169
 
        self.assertTrue(dev_name.startswith("tap"))
170
 
        mac = node.find("mac").get("address")
171
 
        self.assertEqual(mac, self.mapping['mac'])
172
 
        script = node.find("script").get("path")
173
 
        self.assertEquals(script, "")
174
 
 
175
 
        d.unplug(None, self.net, self.mapping)