Beispiel #1
0
 def test_unplug(self, bridge=None):
     if not bridge:
         bridge = 'br-int'
     with mock.patch('quantum.agent.linux.ovs_lib.OVSBridge') as ovs_br:
         ovs = interface.OVSInterfaceDriver(self.conf)
         ovs.unplug('tap0')
         ovs_br.assert_has_calls([mock.call(bridge, 'sudo'),
                                  mock.call().delete_port('tap0')])
    def _test_plug(self, devname=None, bridge=None, namespace=None,
                   prefix=None, mtu=None):

        if not devname:
            devname = 'ns-0'
        if not bridge:
            bridge = 'br-int'

        def device_exists(dev, root_helper=None, namespace=None):
            return dev == bridge

        ovs = interface.OVSInterfaceDriver(self.conf)
        self.device_exists.side_effect = device_exists

        root_dev = mock.Mock()
        _ns_dev = mock.Mock()
        ns_dev = mock.Mock()
        self.ip().add_veth = mock.Mock(return_value=(root_dev, _ns_dev))
        self.ip().device = mock.Mock(return_value=(ns_dev))
        expected = [mock.call('sudo'), mock.call().add_veth('tap0', devname),
                    mock.call().device(devname)]

        vsctl_cmd = ['ovs-vsctl', '--', '--may-exist', 'add-port',
                     bridge, 'tap0', '--', 'set', 'Interface', 'tap0',
                     'external-ids:iface-id=port-1234', '--', 'set',
                     'Interface', 'tap0',
                     'external-ids:iface-status=active', '--', 'set',
                     'Interface', 'tap0',
                     'external-ids:attached-mac=aa:bb:cc:dd:ee:ff']
        with mock.patch.object(utils, 'execute') as execute:
            ovs.plug('01234567-1234-1234-99',
                     'port-1234',
                     devname,
                     'aa:bb:cc:dd:ee:ff',
                     bridge=bridge,
                     namespace=namespace,
                     prefix=prefix)
            execute.assert_called_once_with(vsctl_cmd, 'sudo')

        ns_dev.assert_has_calls(
            [mock.call.link.set_address('aa:bb:cc:dd:ee:ff')])
        if mtu:
            ns_dev.assert_has_calls([mock.call.link.set_mtu(mtu)])
            root_dev.assert_has_calls([mock.call.link.set_mtu(mtu)])
        if namespace:
            expected.extend(
                [mock.call().ensure_namespace(namespace),
                 mock.call().ensure_namespace().add_device_to_namespace(
                     mock.ANY)])

        self.ip.assert_has_calls(expected)
        root_dev.assert_has_calls([mock.call.link.set_up()])
        ns_dev.assert_has_calls([mock.call.link.set_up()])
    def _test_plug(self,
                   additional_expectation=[],
                   bridge=None,
                   namespace=None):

        if not bridge:
            bridge = 'br-int'

        def device_exists(dev, root_helper=None, namespace=None):
            return dev == bridge

        vsctl_cmd = [
            'ovs-vsctl', '--', '--may-exist', 'add-port', bridge, 'tap0', '--',
            'set', 'Interface', 'tap0', 'type=internal', '--', 'set',
            'Interface', 'tap0', 'external-ids:iface-id=port-1234', '--',
            'set', 'Interface', 'tap0', 'external-ids:iface-status=active',
            '--', 'set', 'Interface', 'tap0',
            'external-ids:attached-mac=aa:bb:cc:dd:ee:ff'
        ]

        with mock.patch.object(utils, 'execute') as execute:
            ovs = interface.OVSInterfaceDriver(self.conf)
            self.device_exists.side_effect = device_exists
            ovs.plug('01234567-1234-1234-99',
                     'port-1234',
                     'tap0',
                     'aa:bb:cc:dd:ee:ff',
                     bridge=bridge,
                     namespace=namespace)
            execute.assert_called_once_with(vsctl_cmd, 'sudo')

        expected = [
            mock.call('sudo'),
            mock.call().device('tap0'),
            mock.call().device().link.set_address('aa:bb:cc:dd:ee:ff')
        ]
        expected.extend(additional_expectation)
        if namespace:
            expected.extend([
                mock.call().ensure_namespace(namespace),
                mock.call().ensure_namespace().add_device_to_namespace(
                    mock.ANY)
            ])
        expected.extend([mock.call().device().link.set_up()])

        self.ip.assert_has_calls(expected)
Beispiel #4
0
 def test_get_device_name(self):
     br = interface.OVSInterfaceDriver(self.conf)
     device_name = br.get_device_name(FakePort())
     self.assertEqual('ns-abcdef01-12', device_name)