예제 #1
0
    def test_create_tap_dev_mac(self, mock_execute):
        net_utils.create_tap_dev('tap42', '00:11:22:33:44:55')

        mock_execute.assert_has_calls([
            mock.call('ip',
                      'tuntap',
                      'add',
                      'tap42',
                      'mode',
                      'tap',
                      run_as_root=True,
                      check_exit_code=[0, 2, 254]),
            mock.call('ip',
                      'link',
                      'set',
                      'tap42',
                      'address',
                      '00:11:22:33:44:55',
                      run_as_root=True,
                      check_exit_code=[0, 2, 254]),
            mock.call('ip',
                      'link',
                      'set',
                      'tap42',
                      'up',
                      run_as_root=True,
                      check_exit_code=[0, 2, 254])
        ])
예제 #2
0
    def test_create_tap_dev(self, mock_enabled, mock_execute):
        net_utils.create_tap_dev('tap42')

        mock_execute.assert_has_calls([
            mock.call('ip', 'tuntap', 'add', 'tap42', 'mode', 'tap',
                      run_as_root=True, check_exit_code=[0, 2, 254])
        ])
        mock_enabled.assert_called_once_with('tap42')
예제 #3
0
 def plug_tap(self, instance, vif):
     """Plug a VIF_TYPE_TAP virtual interface."""
     dev = self.get_vif_devname(vif)
     mac = vif['details'].get(network_model.VIF_DETAILS_TAP_MAC_ADDRESS)
     linux_net_utils.create_tap_dev(dev, mac)
     network = vif.get('network')
     mtu = network.get_meta('mtu') if network else None
     linux_net_utils.set_device_mtu(dev, mtu)
예제 #4
0
파일: vif.py 프로젝트: yirenjie/TestNova
 def plug_tap(self, instance, vif):
     """Plug a VIF_TYPE_TAP virtual interface."""
     dev = self.get_vif_devname(vif)
     mac = vif['details'].get(network_model.VIF_DETAILS_TAP_MAC_ADDRESS)
     linux_net_utils.create_tap_dev(dev, mac)
     network = vif.get('network')
     mtu = network.get_meta('mtu') if network else None
     linux_net_utils.set_device_mtu(dev, mtu)
예제 #5
0
    def test_create_tap_dev(self, mock_execute):
        net_utils.create_tap_dev('tap42')

        mock_execute.assert_has_calls([
            mock.call('ip', 'tuntap', 'add', 'tap42', 'mode', 'tap',
                      run_as_root=True, check_exit_code=[0, 2, 254]),
            mock.call('ip', 'link', 'set', 'tap42', 'up',
                      run_as_root=True, check_exit_code=[0, 2, 254])
        ])
예제 #6
0
파일: vif.py 프로젝트: yirenjie/TestNova
    def plug_midonet(self, instance, vif):
        """Plug into MidoNet's network port

        Bind the vif to a MidoNet virtual port.
        """
        dev = self.get_vif_devname(vif)
        port_id = vif['id']
        try:
            linux_net_utils.create_tap_dev(dev)
            nova.privsep.libvirt.plug_midonet_vif(port_id, dev)
        except processutils.ProcessExecutionError:
            LOG.exception(_("Failed while plugging vif"), instance=instance)
예제 #7
0
    def plug_midonet(self, instance, vif):
        """Plug into MidoNet's network port

        Bind the vif to a MidoNet virtual port.
        """
        dev = self.get_vif_devname(vif)
        port_id = vif['id']
        try:
            linux_net_utils.create_tap_dev(dev)
            nova.privsep.libvirt.plug_midonet_vif(port_id, dev)
        except processutils.ProcessExecutionError:
            LOG.exception(_("Failed while plugging vif"), instance=instance)
예제 #8
0
    def test_create_tap_dev_fallback_to_tunctl(self, mock_execute):
        # ip failed, fall back to tunctl
        mock_execute.side_effect = [processutils.ProcessExecutionError, 0, 0]

        net_utils.create_tap_dev('tap42')

        mock_execute.assert_has_calls([
            mock.call('ip', 'tuntap', 'add', 'tap42', 'mode', 'tap',
                      run_as_root=True, check_exit_code=[0, 2, 254]),
            mock.call('tunctl', '-b', '-t', 'tap42',
                      run_as_root=True),
            mock.call('ip', 'link', 'set', 'tap42', 'up',
                      run_as_root=True, check_exit_code=[0, 2, 254])
        ])
예제 #9
0
    def test_create_tap_dev_fallback_to_tunctl(self, mock_enabled,
                                               mock_execute):
        # ip failed, fall back to tunctl
        mock_execute.side_effect = [processutils.ProcessExecutionError, 0, 0]

        net_utils.create_tap_dev('tap42')

        mock_execute.assert_has_calls([
            mock.call('ip', 'tuntap', 'add', 'tap42', 'mode', 'tap',
                      run_as_root=True, check_exit_code=[0, 2, 254]),
            mock.call('tunctl', '-b', '-t', 'tap42',
                      run_as_root=True)
        ])
        mock_enabled.assert_called_once_with('tap42')
예제 #10
0
 def plug_tap(self, instance, vif):
     """Plug a VIF_TYPE_TAP virtual interface."""
     dev = self.get_vif_devname(vif)
     mac = vif['details'].get(network_model.VIF_DETAILS_TAP_MAC_ADDRESS)
     image_meta = instance.image_meta
     vif_model = self.get_vif_model(image_meta=image_meta)
     # TODO(ganso): explore whether multiqueue works for other vif models
     # that go through this code path.
     multiqueue = (self._requests_multiqueue(image_meta)
                   and vif_model == network_model.VIF_MODEL_VIRTIO)
     linux_net_utils.create_tap_dev(dev, mac, multiqueue=multiqueue)
     network = vif.get('network')
     mtu = network.get_meta('mtu') if network else None
     linux_net_utils.set_device_mtu(dev, mtu)
예제 #11
0
파일: vif.py 프로젝트: yirenjie/TestNova
    def plug_iovisor(self, instance, vif):
        """Plug using PLUMgrid IO Visor Driver

        Connect a network device to their respective
        Virtual Domain in PLUMgrid Platform.
        """
        dev = self.get_vif_devname(vif)
        iface_id = vif['id']
        linux_net_utils.create_tap_dev(dev)
        net_id = vif['network']['id']
        tenant_id = instance.project_id
        try:
            nova.privsep.libvirt.plug_plumgrid_vif(
                dev, iface_id, vif['address'], net_id, tenant_id)
        except processutils.ProcessExecutionError:
            LOG.exception(_("Failed while plugging vif"), instance=instance)
예제 #12
0
    def plug_iovisor(self, instance, vif):
        """Plug using PLUMgrid IO Visor Driver

        Connect a network device to their respective
        Virtual Domain in PLUMgrid Platform.
        """
        dev = self.get_vif_devname(vif)
        iface_id = vif['id']
        linux_net_utils.create_tap_dev(dev)
        net_id = vif['network']['id']
        tenant_id = instance.project_id
        try:
            nova.privsep.libvirt.plug_plumgrid_vif(
                dev, iface_id, vif['address'], net_id, tenant_id)
        except processutils.ProcessExecutionError:
            LOG.exception(_("Failed while plugging vif"), instance=instance)
예제 #13
0
파일: vif.py 프로젝트: yirenjie/TestNova
    def plug_vrouter(self, instance, vif):
        """Plug into Contrail's network port

        Bind the vif to a Contrail virtual port.
        """
        dev = self.get_vif_devname(vif)
        ip_addr = '0.0.0.0'
        ip6_addr = None
        subnets = vif['network']['subnets']
        for subnet in subnets:
            if not subnet['ips']:
                continue
            ips = subnet['ips'][0]
            if not ips['address']:
                continue
            if (ips['version'] == 4):
                if ips['address'] is not None:
                    ip_addr = ips['address']
            if (ips['version'] == 6):
                if ips['address'] is not None:
                    ip6_addr = ips['address']

        ptype = 'NovaVMPort'
        if (CONF.libvirt.virt_type == 'lxc'):
            ptype = 'NameSpacePort'

        try:
            multiqueue = self._is_multiqueue_enabled(instance.image_meta,
                                                     instance.flavor)
            linux_net_utils.create_tap_dev(dev, multiqueue=multiqueue)
            nova.privsep.libvirt.plug_contrail_vif(
                instance.project_id,
                instance.uuid,
                instance.display_name,
                vif['id'],
                vif['network']['id'],
                ptype,
                dev,
                vif['address'],
                ip_addr,
                ip6_addr,
            )
        except processutils.ProcessExecutionError:
            LOG.exception(_("Failed while plugging vif"), instance=instance)
예제 #14
0
    def plug_vrouter(self, instance, vif):
        """Plug into Contrail's network port

        Bind the vif to a Contrail virtual port.
        """
        dev = self.get_vif_devname(vif)
        ip_addr = '0.0.0.0'
        ip6_addr = None
        subnets = vif['network']['subnets']
        for subnet in subnets:
            if not subnet['ips']:
                continue
            ips = subnet['ips'][0]
            if not ips['address']:
                continue
            if (ips['version'] == 4):
                if ips['address'] is not None:
                    ip_addr = ips['address']
            if (ips['version'] == 6):
                if ips['address'] is not None:
                    ip6_addr = ips['address']

        ptype = 'NovaVMPort'
        if (CONF.libvirt.virt_type == 'lxc'):
            ptype = 'NameSpacePort'

        try:
            multiqueue = self._is_multiqueue_enabled(instance.image_meta,
                                                     instance.flavor)
            linux_net_utils.create_tap_dev(dev, multiqueue=multiqueue)
            nova.privsep.libvirt.plug_contrail_vif(
                instance.project_id,
                instance.uuid,
                instance.display_name,
                vif['id'],
                vif['network']['id'],
                ptype,
                dev,
                vif['address'],
                ip_addr,
                ip6_addr,
            )
        except processutils.ProcessExecutionError:
            LOG.exception(_("Failed while plugging vif"), instance=instance)
예제 #15
0
    def test_create_tap_dev_multiqueue(self, mock_execute):
        net_utils.create_tap_dev('tap42', multiqueue=True)

        mock_execute.assert_has_calls([
            mock.call('ip',
                      'tuntap',
                      'add',
                      'tap42',
                      'mode',
                      'tap',
                      'multi_queue',
                      run_as_root=True,
                      check_exit_code=[0, 2, 254]),
            mock.call('ip',
                      'link',
                      'set',
                      'tap42',
                      'up',
                      run_as_root=True,
                      check_exit_code=[0, 2, 254])
        ])
예제 #16
0
    def test_create_tap_skipped_when_exists(self, mock_execute, mock_exists):
        net_utils.create_tap_dev('tap42')

        mock_exists.assert_called_once_with('/sys/class/net/tap42')
        mock_execute.assert_not_called()
예제 #17
0
    def test_create_tap_skipped_when_exists(self, mock_execute, mock_exists):
        net_utils.create_tap_dev('tap42')

        mock_exists.assert_called_once_with('/sys/class/net/tap42')
        mock_execute.assert_not_called()