Пример #1
0
    def _get_config_os_vif(self, instance, vif, image_meta, inst_type,
                           virt_type, host, vnic_type):
        """Get the domain config for a VIF

        :param instance: nova.objects.Instance
        :param vif: os_vif.objects.vif.VIFBase subclass
        :param image_meta: nova.objects.ImageMeta
        :param inst_type: nova.objects.Flavor
        :param virt_type: virtualization type
        :param host: nova.virt.libvirt.host.Host
        :param vnic_type: vnic type

        :returns: nova.virt.libvirt.config.LibvirtConfigGuestInterface
        """

        # Do the config that's common to all vif types
        conf = self.get_base_config(instance, vif.address, image_meta,
                                    inst_type, virt_type, vnic_type,
                                    host)

        # Do the VIF type specific config
        viffunc = "_set_config_" + vif.obj_name()
        func = getattr(self, viffunc, None)
        if not func:
            raise exception.InternalError(
                _("Unsupported VIF type %(obj)s func %(func)s") %
                {'obj': vif.obj_name(), 'func': viffunc})
        func(instance, vif, conf, host)

        designer.set_vif_bandwidth_config(conf, inst_type)
        if ('network' in vif and 'mtu' in vif.network and
                self._has_min_version_for_mtu(host)):
            designer.set_vif_mtu_config(conf, vif.network.mtu)

        return conf
Пример #2
0
    def _get_config_os_vif(self, instance, vif, image_meta, inst_type,
                           virt_type, host, vnic_type):
        """Get the domain config for a VIF

        :param instance: nova.objects.Instance
        :param vif: os_vif.objects.vif.VIFBase subclass
        :param image_meta: nova.objects.ImageMeta
        :param inst_type: nova.objects.Flavor
        :param virt_type: virtualization type
        :param host: nova.virt.libvirt.host.Host
        :param vnic_type: vnic type

        :returns: nova.virt.libvirt.config.LibvirtConfigGuestInterface
        """

        # Do the config that's common to all vif types
        conf = self.get_base_config(instance, vif.address, image_meta,
                                    inst_type, virt_type, vnic_type,
                                    host)

        # Do the VIF type specific config
        viffunc = "_set_config_" + vif.obj_name()
        func = getattr(self, viffunc, None)
        if not func:
            raise exception.InternalError(
                _("Unsupported VIF type %(obj)s func %(func)s") %
                {'obj': vif.obj_name(), 'func': viffunc})
        func(instance, vif, conf, host)

        designer.set_vif_bandwidth_config(conf, inst_type)
        if ('network' in vif and 'mtu' in vif.network and
                self._has_min_version_for_mtu(host)):
            designer.set_vif_mtu_config(conf, vif.network.mtu)

        return conf
Пример #3
0
 def _set_mtu_config(self, vif, host, conf):
     """:param vif: nova.network.modle.vif
        :param host: nova.virt.libvirt.host.Host
        :param conf: nova.virt.libvirt.config.LibvirtConfigGuestInterface
     """
     network = vif.get('network')
     if (network and network.get_meta("mtu") and
             self._has_min_version_for_mtu(host)):
         designer.set_vif_mtu_config(conf, network.get_meta("mtu"))
Пример #4
0
 def _set_mtu_config(self, vif, host, conf):
     """:param vif: nova.network.modle.vif
        :param host: nova.virt.libvirt.host.Host
        :param conf: nova.virt.libvirt.config.LibvirtConfigGuestInterface
     """
     network = vif.get('network')
     if (network and network.get_meta("mtu") and
             self._has_min_version_for_mtu(host)):
         designer.set_vif_mtu_config(conf, network.get_meta("mtu"))
Пример #5
0
    def _get_config_os_vif(
        self,
        instance,
        vif,
        image_meta,
        flavor,
        virt_type,
        vnic_type,
    ):
        """Get the domain config for a VIF

        :param instance: nova.objects.Instance
        :param vif: os_vif.objects.vif.VIFBase subclass
        :param image_meta: nova.objects.ImageMeta
        :param flavor: nova.objects.Flavor
        :param virt_type: virtualization type
        :param vnic_type: vnic type

        :returns: nova.virt.libvirt.config.LibvirtConfigGuestInterface
        """

        # Do the config that's common to all vif types
        conf = self.get_base_config(instance, vif.address, image_meta, flavor,
                                    virt_type, vnic_type)

        # Do the VIF type specific config
        if isinstance(vif, osv_vifs.VIFGeneric):
            self._set_config_VIFGeneric(instance, vif, conf)
        elif isinstance(vif, osv_vifs.VIFBridge):
            self._set_config_VIFBridge(instance, vif, conf)
        elif isinstance(vif, osv_vifs.VIFOpenVSwitch):
            self._set_config_VIFOpenVSwitch(instance, vif, conf)
        elif isinstance(vif, osv_vifs.VIFVHostUser):
            self._set_config_VIFVHostUser(instance, vif, conf)
        elif isinstance(vif, osv_vifs.VIFHostDevice):
            if vnic_type != network_model.VNIC_TYPE_VDPA:
                self._set_config_VIFHostDevice(instance, vif, conf)
            else:
                dev_path = self._get_vdpa_dev_path(vif.dev_address)
                designer.set_vif_host_backend_vdpa_config(
                    conf, dev_path, CONF.libvirt.rx_queue_size,
                    CONF.libvirt.tx_queue_size)
        else:
            raise exception.InternalError(
                _("Unsupported VIF type %s") % vif.obj_name())

        # not all VIF types support bandwidth configuration
        # https://github.com/libvirt/libvirt/blob/568a41722/src/conf/netdev_bandwidth_conf.h#L38
        if vif.obj_name() not in ('VIFVHostUser', 'VIFHostDevice'):
            designer.set_vif_bandwidth_config(conf, flavor)

        if 'network' in vif and 'mtu' in vif.network:
            designer.set_vif_mtu_config(conf, vif.network.mtu)

        return conf
Пример #6
0
Файл: vif.py Проект: YLTiny/nova
    def get_config_tap(self, instance, vif, image_meta, inst_type, virt_type):
        conf = self.get_base_config(instance, vif['address'], image_meta,
                                    inst_type, virt_type, vif['vnic_type'])

        dev = self.get_vif_devname(vif)
        designer.set_vif_host_backend_ethernet_config(conf, dev)

        network = vif.get('network')
        if network and network.get_meta('mtu'):
            designer.set_vif_mtu_config(conf, network.get_meta("mtu"))

        return conf
Пример #7
0
    def _get_config_os_vif(self, instance, vif, image_meta, inst_type,
                           virt_type, host, vnic_type):
        """Get the domain config for a VIF

        :param instance: nova.objects.Instance
        :param vif: os_vif.objects.vif.VIFBase subclass
        :param image_meta: nova.objects.ImageMeta
        :param inst_type: nova.objects.Flavor
        :param virt_type: virtualization type
        :param host: nova.virt.libvirt.host.Host
        :param vnic_type: vnic type

        :returns: nova.virt.libvirt.config.LibvirtConfigGuestInterface
        """

        # Do the config that's common to all vif types
        conf = self.get_base_config(instance, vif.address, image_meta,
                                    inst_type, virt_type, vnic_type,
                                    host)

        # Do the VIF type specific config
        if isinstance(vif, osv_vifs.VIFGeneric):
            self._set_config_VIFGeneric(instance, vif, conf, host)
        elif isinstance(vif, osv_vifs.VIFBridge):
            self._set_config_VIFBridge(instance, vif, conf, host)
        elif isinstance(vif, osv_vifs.VIFOpenVSwitch):
            self._set_config_VIFOpenVSwitch(instance, vif, conf, host)
        elif isinstance(vif, osv_vifs.VIFVHostUser):
            self._set_config_VIFVHostUser(instance, vif, conf, host)
        elif isinstance(vif, osv_vifs.VIFHostDevice):
            self._set_config_VIFHostDevice(instance, vif, conf, host)
        else:
            raise exception.InternalError(
                _("Unsupported VIF type %s") % vif.obj_name())

        # not all VIF types support bandwidth configuration
        # https://github.com/libvirt/libvirt/blob/568a41722/src/conf/netdev_bandwidth_conf.h#L38
        if vif.obj_name() not in ('VIFVHostUser', 'VIFHostDevice'):
            designer.set_vif_bandwidth_config(conf, inst_type)

        if ('network' in vif and 'mtu' in vif.network and
                self._has_min_version_for_mtu(host)):
            designer.set_vif_mtu_config(conf, vif.network.mtu)

        return conf
Пример #8
0
 def test_set_vif_mtu_config(self):
     conf = config.LibvirtConfigGuestInterface()
     designer.set_vif_mtu_config(conf, 9000)
     self.assertEqual(9000, conf.mtu)
Пример #9
0
 def test_set_vif_mtu_config(self):
     conf = config.LibvirtConfigGuestInterface()
     designer.set_vif_mtu_config(conf, 9000)
     self.assertEqual(9000, conf.mtu)