From c99fc64271f41a028c75e96348813f673d04e245 Mon Sep 17 00:00:00 2001 From: Matt Riedemann Date: Mon, 20 Nov 2017 15:11:42 -0500 Subject: [PATCH] Deprecate the IronicHostManager The use_baremetal_filters and baremetal_enabled_filters options along with the ExactRamFilter, ExactCoreFilter and ExactDiskFilter filters were all deprecated in Pike: I843353427c90142a366ae9ca63ee4298b4f3ecd4 The IronicHostManager is configurable and relies on those options, so if those options are deprecated then the IronicHostManager should also be deprecated. The sticky part with this is going to be filters that don't work with ironic nodes today, like the NUMATopologyFilter, so a note is left in the use_baremetal_filters option code to remind us that we can't likely remove any of this until all filters work with ironic nodes. Change-Id: Iebc74a09990dcda8cf0ee2a41f9ae1058d2a182a --- nova/conf/scheduler.py | 7 +++++++ nova/scheduler/ironic_host_manager.py | 8 ++++++++ ...ecate-ironic-host-manager-bacb8d7b1e318e37.yaml | 14 ++++++++++++++ setup.cfg | 1 + 4 files changed, 30 insertions(+) create mode 100644 releasenotes/notes/deprecate-ironic-host-manager-bacb8d7b1e318e37.yaml diff --git a/nova/conf/scheduler.py b/nova/conf/scheduler.py index 61da10f9a2..a955d65bc9 100644 --- a/nova/conf/scheduler.py +++ b/nova/conf/scheduler.py @@ -31,6 +31,9 @@ The scheduler host manager to use. The host manager manages the in-memory picture of the hosts that the scheduler uses. The options values are chosen from the entry points under the namespace 'nova.scheduler.host_manager' in 'setup.cfg'. + +NOTE: The "ironic_host_manager" option is deprecated as of the 17.0.0 Queens +release. """), cfg.StrOpt("driver", default="filter_scheduler", @@ -320,6 +323,10 @@ Related options: cfg.BoolOpt("use_baremetal_filters", deprecated_name="scheduler_use_baremetal_filters", deprecated_group="DEFAULT", + # NOTE(mriedem): We likely can't remove this option until the + # IronicHostManager is removed, and we likely can't remove that + # until all filters can at least not fail on ironic nodes, like the + # NUMATopologyFilter. deprecated_for_removal=True, deprecated_reason=""" These filters were used to overcome some of the baremetal scheduling diff --git a/nova/scheduler/ironic_host_manager.py b/nova/scheduler/ironic_host_manager.py index 4e2b9a3b50..c19cee6432 100644 --- a/nova/scheduler/ironic_host_manager.py +++ b/nova/scheduler/ironic_host_manager.py @@ -22,6 +22,7 @@ ram from a host / node as it is supporting Baremetal hosts, which can not be subdivided into multiple instances. """ from oslo_log import log as logging +from oslo_log import versionutils import nova.conf from nova import context as context_module @@ -88,6 +89,13 @@ class IronicNodeState(host_manager.HostState): class IronicHostManager(host_manager.HostManager): """Ironic HostManager class.""" + def __init__(self): + super(IronicHostManager, self).__init__() + msg = ('The IronicHostManager is deprecated and may be removed as ' + 'early as the 18.0.0 Rocky release. Deployments need to ' + 'schedule based on resource classes.') + versionutils.report_deprecated_feature(LOG, msg) + @staticmethod def _is_ironic_compute(compute): ht = compute.hypervisor_type if 'hypervisor_type' in compute else None diff --git a/releasenotes/notes/deprecate-ironic-host-manager-bacb8d7b1e318e37.yaml b/releasenotes/notes/deprecate-ironic-host-manager-bacb8d7b1e318e37.yaml new file mode 100644 index 0000000000..334b1fa0db --- /dev/null +++ b/releasenotes/notes/deprecate-ironic-host-manager-bacb8d7b1e318e37.yaml @@ -0,0 +1,14 @@ +--- +deprecations: + - | + The `IronicHostManager` is now deprecated along with the + ``[scheduler]/host_manager`` option of ``ironic_host_manager``. + + As of the 16.0.0 Pike release, the ``ExactRamFilter``, ``ExactCoreFilter``, + and ``ExactDiskFilter`` scheduler filters are all deprecated along with + the ``[scheduler]/use_baremetal_filters`` and + ``[scheduler]/baremental_enabled_filters`` options. Deployments should + migrate to using resource classes with baremetal flavors as described in + the ironic install guide: + + https://docs.openstack.org/ironic/latest/install/configure-nova-flavors.html#scheduling-based-on-resource-classes diff --git a/setup.cfg b/setup.cfg index 31f506c42f..60bb79db45 100644 --- a/setup.cfg +++ b/setup.cfg @@ -83,6 +83,7 @@ nova.ipv6_backend = nova.scheduler.host_manager = host_manager = nova.scheduler.host_manager:HostManager + # Deprecated starting from the 17.0.0 Queens release. ironic_host_manager = nova.scheduler.ironic_host_manager:IronicHostManager nova.scheduler.driver =