Mark SNMP driver unsupported for removal

The SNMP driver uses pysnmp-lextudio, we'll be lucky if it works through
the deprecation period. If by the start of the 2026.2 cycle it's not
been migrated to a different library, it will need to be removed.

In order to keep CI running on an unsupported driver, I've added an
option to the devstack plugin to skip failing on upgrade check.

Related-Bug: 2106674
Generated-By: Jetbrains Junie
Change-Id: Ibe5576d04fc3ca1cc102f126853ed3d1e8c404d2
This commit is contained in:
Jay Faulkner
2025-04-09 14:35:52 -07:00
parent ac9acc4f2a
commit dc6cd79a9e
4 changed files with 27 additions and 3 deletions

View File

@@ -91,6 +91,10 @@ fi
# Ping timeout after the node becomes active
IRONIC_PING_TIMEOUT=${IRONIC_PING_TIMEOUT:-}
# Whether to allow devstack to continue when ironic-status upgrade check
# finds unsupported drivers. Set to "true" to continue despite the error.
IRONIC_ALLOW_UNSUPPORTED_DRIVERS=$(trueorfalse False IRONIC_ALLOW_UNSUPPORTED_DRIVERS)
# Deploy to hardware platform
IRONIC_HW_NODE_CPU=${IRONIC_HW_NODE_CPU:-1}
IRONIC_HW_NODE_RAM=${IRONIC_HW_NODE_RAM:-512}
@@ -2165,11 +2169,14 @@ function init_ironic {
# NOTE(rloo): We're not upgrading but want to make sure this command works,
# even though we're not parsing the output of this command.
$IRONIC_BIN_DIR/ironic-status upgrade check
$IRONIC_BIN_DIR/ironic-status upgrade check && ret_val=$? || ret_val=$?
if [ $ret_val -gt 1 ] ; then
die $LINENO "The `ironic-status upgrade check` command returned an error. Cannot proceed."
# Allow continuing even with unsupported drivers if explicitly enabled
if [[ "${IRONIC_ALLOW_UNSUPPORTED_DRIVERS}" != "True" ]]; then
die $LINENO "The `ironic-status upgrade check` command returned an error. Cannot proceed."
else
echo "WARNING: Continuing despite upgrade check failure because IRONIC_ALLOW_UNSUPPORTED_DRIVERS=True"
fi
fi
if is_service_enabled ir-novnc; then
create_systemd_container_dir

View File

@@ -25,6 +25,12 @@ from ironic.drivers.modules import snmp
class SNMPHardware(generic.GenericHardware):
"""SNMP Hardware type """
# NOTE(JayF) The SNMP driver depends on an old, out of maintenance library
# pysnmp-lextudio; unless it is migrated to a modern library (pysnmp),
# it will be removed in a future Ironic release. See bug #2106674.
# TODO(JayF) Remove this driver on or after OpenStack 2026.1 release.
supported = False
@property
def supported_power_interfaces(self):
"""List of supported power interfaces."""

View File

@@ -0,0 +1,10 @@
deprecations:
- |
The SNMP hardware type and associated interfaces have been deprecated
for removal in a future Ironic release. It currently depends on an
outdated, unsupported library and unless it is migrated off that library
by the end of the 2026.1 cycle it will be removed.
Operators utilizing this driver will need to find an alternate way
to manage their machines. Alternatively, the Ironic community welcomes
contributions to keep this driver alive.

View File

@@ -482,6 +482,7 @@
IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
IRONIC_VM_EPHEMERAL_DISK: 0
IRONIC_AUTOMATED_CLEAN_ENABLED: False
IRONIC_ALLOW_UNSUPPORTED_DRIVERS: True
# NOTE(TheJulia): Explicitly set scope enforcement to False until we
# remove the legacy policies.
IRONIC_ENFORCE_SCOPE: False