Merge "libvirt: Make scheduler filters customizable"
This commit is contained in:
commit
b973d44f0e
|
@ -14,12 +14,13 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import fixtures
|
|
||||||
import io
|
import io
|
||||||
|
|
||||||
|
import fixtures
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from nova import conf
|
||||||
from nova.objects import fields as obj_fields
|
from nova.objects import fields as obj_fields
|
||||||
|
|
||||||
from nova.tests import fixtures as nova_fixtures
|
from nova.tests import fixtures as nova_fixtures
|
||||||
from nova.tests.functional import fixtures as func_fixtures
|
from nova.tests.functional import fixtures as func_fixtures
|
||||||
from nova.tests.functional import test_servers as base
|
from nova.tests.functional import test_servers as base
|
||||||
|
@ -27,8 +28,13 @@ from nova.tests.unit.virt.libvirt import fake_imagebackend
|
||||||
from nova.tests.unit.virt.libvirt import fakelibvirt
|
from nova.tests.unit.virt.libvirt import fakelibvirt
|
||||||
|
|
||||||
|
|
||||||
|
CONF = conf.CONF
|
||||||
|
|
||||||
|
|
||||||
class ServersTestBase(base.ServersTestBase):
|
class ServersTestBase(base.ServersTestBase):
|
||||||
|
|
||||||
|
ADDITIONAL_FILTERS = []
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(ServersTestBase, self).setUp()
|
super(ServersTestBase, self).setUp()
|
||||||
|
|
||||||
|
@ -80,6 +86,15 @@ class ServersTestBase(base.ServersTestBase):
|
||||||
# service in the test
|
# service in the test
|
||||||
self.flags(compute_driver='libvirt.LibvirtDriver')
|
self.flags(compute_driver='libvirt.LibvirtDriver')
|
||||||
|
|
||||||
|
def _setup_scheduler_service(self):
|
||||||
|
enabled_filters = CONF.filter_scheduler.enabled_filters
|
||||||
|
enabled_filters += self.ADDITIONAL_FILTERS
|
||||||
|
|
||||||
|
self.flags(driver='filter_scheduler', group='scheduler')
|
||||||
|
self.flags(enabled_filters=enabled_filters, group='filter_scheduler')
|
||||||
|
|
||||||
|
return self.start_service('scheduler')
|
||||||
|
|
||||||
def _get_connection(self, host_info, pci_info=None,
|
def _get_connection(self, host_info, pci_info=None,
|
||||||
libvirt_version=fakelibvirt.FAKE_LIBVIRT_VERSION,
|
libvirt_version=fakelibvirt.FAKE_LIBVIRT_VERSION,
|
||||||
mdev_info=None):
|
mdev_info=None):
|
||||||
|
|
|
@ -33,6 +33,8 @@ LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
class NUMAServersTestBase(base.ServersTestBase):
|
class NUMAServersTestBase(base.ServersTestBase):
|
||||||
|
|
||||||
|
ADDITIONAL_FILTERS = ['NUMATopologyFilter']
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(NUMAServersTestBase, self).setUp()
|
super(NUMAServersTestBase, self).setUp()
|
||||||
|
|
||||||
|
@ -47,14 +49,6 @@ class NUMAServersTestBase(base.ServersTestBase):
|
||||||
self.mock_filter = _p.start()
|
self.mock_filter = _p.start()
|
||||||
self.addCleanup(_p.stop)
|
self.addCleanup(_p.stop)
|
||||||
|
|
||||||
def _setup_scheduler_service(self):
|
|
||||||
# Enable the 'NUMATopologyFilter'
|
|
||||||
self.flags(driver='filter_scheduler', group='scheduler')
|
|
||||||
self.flags(enabled_filters=CONF.filter_scheduler.enabled_filters +
|
|
||||||
['NUMATopologyFilter'],
|
|
||||||
group='filter_scheduler')
|
|
||||||
return self.start_service('scheduler')
|
|
||||||
|
|
||||||
|
|
||||||
class NUMAServersTest(NUMAServersTestBase):
|
class NUMAServersTest(NUMAServersTestBase):
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
import mock
|
import mock
|
||||||
from oslo_config import cfg
|
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
from oslo_serialization import jsonutils
|
from oslo_serialization import jsonutils
|
||||||
|
|
||||||
|
@ -24,12 +23,13 @@ from nova.tests.functional.libvirt import base
|
||||||
from nova.tests.unit.virt.libvirt import fakelibvirt
|
from nova.tests.unit.virt.libvirt import fakelibvirt
|
||||||
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class _PCIServersTestBase(base.ServersTestBase):
|
class _PCIServersTestBase(base.ServersTestBase):
|
||||||
|
|
||||||
|
ADDITIONAL_FILTERS = ['NUMATopologyFilter', 'PciPassthroughFilter']
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.flags(passthrough_whitelist=self.PCI_PASSTHROUGH_WHITELIST,
|
self.flags(passthrough_whitelist=self.PCI_PASSTHROUGH_WHITELIST,
|
||||||
alias=self.PCI_ALIAS,
|
alias=self.PCI_ALIAS,
|
||||||
|
@ -49,16 +49,6 @@ class _PCIServersTestBase(base.ServersTestBase):
|
||||||
'.PciPassthroughFilter.host_passes',
|
'.PciPassthroughFilter.host_passes',
|
||||||
side_effect=host_pass_mock)).mock
|
side_effect=host_pass_mock)).mock
|
||||||
|
|
||||||
def _setup_scheduler_service(self):
|
|
||||||
# Enable the 'NUMATopologyFilter', 'PciPassthroughFilter'
|
|
||||||
enabled_filters = CONF.filter_scheduler.enabled_filters + [
|
|
||||||
'NUMATopologyFilter', 'PciPassthroughFilter']
|
|
||||||
|
|
||||||
self.flags(driver='filter_scheduler', group='scheduler')
|
|
||||||
self.flags(enabled_filters=enabled_filters, group='filter_scheduler')
|
|
||||||
|
|
||||||
return self.start_service('scheduler')
|
|
||||||
|
|
||||||
def _run_build_test(self, flavor_id, end_status='ACTIVE'):
|
def _run_build_test(self, flavor_id, end_status='ACTIVE'):
|
||||||
|
|
||||||
if not self.compute_started:
|
if not self.compute_started:
|
||||||
|
|
|
@ -20,6 +20,8 @@ from nova.tests.unit.virt.libvirt import fakelibvirt
|
||||||
|
|
||||||
class RealTimeServersTest(base.ServersTestBase):
|
class RealTimeServersTest(base.ServersTestBase):
|
||||||
|
|
||||||
|
ADDITIONAL_FILTERS = ['NUMATopologyFilter']
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(RealTimeServersTest, self).setUp()
|
super(RealTimeServersTest, self).setUp()
|
||||||
self.flags(sysinfo_serial='none', group='libvirt')
|
self.flags(sysinfo_serial='none', group='libvirt')
|
||||||
|
|
Loading…
Reference in New Issue