From 8758116f837caf0e3e13d9cd54c128bdbe7a7880 Mon Sep 17 00:00:00 2001 From: Jim Rollenhagen Date: Tue, 13 Sep 2016 10:42:00 -0400 Subject: [PATCH] Mark untested drivers as unsupported This will cause them to log a warning at startup, that it is unsupported and may be removed later. The drivers marked unsupported are any driver that uses: * SSHPower / SSHManagement * NativeIPMIPower / NativeIPMIManagement * seamicro.Power / seamicro.Management * IBootPower * SNMPPower * VirtualBoxPower / VirtualBoxManagement * AMTPower / AMTManagement * MSFTOCSPower / MSFTOCSManagement * WakeOnLanPower See the release note in this change for the full list of the setup.cfg names for the drivers. The remaining drivers are tested via OpenStack CI, and/or have a third-party CI listed here[0] and are making an honest effort toward having stable CI. [0] https://wiki.openstack.org/wiki/ThirdPartySystems Closes-Bug: #1526410 Change-Id: I9c09be6b7a734426a4c0b18cb61ece5389428cd5 --- ironic/drivers/agent.py | 15 ++++++++++ ironic/drivers/fake.py | 18 +++++++++++ ironic/drivers/pxe.py | 27 +++++++++++++++++ ...-driver-deprecations-e40369be37203057.yaml | 30 +++++++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 releasenotes/notes/newton-driver-deprecations-e40369be37203057.yaml diff --git a/ironic/drivers/agent.py b/ironic/drivers/agent.py index 1b1a00056..7be191dc9 100644 --- a/ironic/drivers/agent.py +++ b/ironic/drivers/agent.py @@ -97,6 +97,8 @@ class AgentAndIPMINativeDriver(base.BaseDriver): glue between them. """ + supported = False + def __init__(self): self.power = ipminative.NativeIPMIPower() self.boot = pxe.PXEBoot() @@ -131,6 +133,8 @@ class AgentAndSSHDriver(base.BaseDriver): is merely the glue between them. """ + supported = False + def __init__(self): self.power = ssh.SSHPower() self.boot = pxe.PXEBoot() @@ -156,6 +160,8 @@ class AgentAndVirtualBoxDriver(base.BaseDriver): is merely the glue between them. """ + supported = False + def __init__(self): if not importutils.try_import('pyremotevbox'): raise exception.DriverLoadError( @@ -178,6 +184,9 @@ class AgentAndAMTDriver(base.BaseDriver): deployment. Implementations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): if not importutils.try_import('pywsman'): raise exception.DriverLoadError( @@ -249,6 +258,9 @@ class AgentAndWakeOnLanDriver(base.BaseDriver): Implementations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): self.power = wol.WakeOnLanPower() self.boot = pxe.PXEBoot() @@ -266,6 +278,9 @@ class AgentAndIBootDriver(base.BaseDriver): Implementations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): if not importutils.try_import('iboot'): raise exception.DriverLoadError( diff --git a/ironic/drivers/fake.py b/ironic/drivers/fake.py index f1ce9e155..17d173341 100644 --- a/ironic/drivers/fake.py +++ b/ironic/drivers/fake.py @@ -116,6 +116,8 @@ class FakePXEDriver(base.BaseDriver): class FakeSSHDriver(base.BaseDriver): """Example implementation of a Driver.""" + supported = False + def __init__(self): self.power = ssh.SSHPower() self.deploy = fake.FakeDeploy() @@ -126,6 +128,8 @@ class FakeSSHDriver(base.BaseDriver): class FakeIPMINativeDriver(base.BaseDriver): """Fake IPMINative driver.""" + supported = False + def __init__(self): if not importutils.try_import('pyghmi'): raise exception.DriverLoadError( @@ -141,6 +145,8 @@ class FakeIPMINativeDriver(base.BaseDriver): class FakeSeaMicroDriver(base.BaseDriver): """Fake SeaMicro driver.""" + supported = False + def __init__(self): if not importutils.try_import('seamicroclient'): raise exception.DriverLoadError( @@ -167,6 +173,8 @@ class FakeAgentDriver(base.BaseDriver): class FakeIBootDriver(base.BaseDriver): """Fake iBoot driver.""" + supported = False + def __init__(self): if not importutils.try_import('iboot'): raise exception.DriverLoadError( @@ -210,6 +218,8 @@ class FakeDracDriver(base.BaseDriver): class FakeSNMPDriver(base.BaseDriver): """Fake SNMP driver.""" + supported = False + def __init__(self): if not importutils.try_import('pysnmp'): raise exception.DriverLoadError( @@ -236,6 +246,8 @@ class FakeIRMCDriver(base.BaseDriver): class FakeVirtualBoxDriver(base.BaseDriver): """Fake VirtualBox driver.""" + supported = False + def __init__(self): if not importutils.try_import('pyremotevbox'): raise exception.DriverLoadError( @@ -264,6 +276,8 @@ class FakeIPMIToolInspectorDriver(base.BaseDriver): class FakeAMTDriver(base.BaseDriver): """Fake AMT driver.""" + supported = False + def __init__(self): if not importutils.try_import('pywsman'): raise exception.DriverLoadError( @@ -277,6 +291,8 @@ class FakeAMTDriver(base.BaseDriver): class FakeMSFTOCSDriver(base.BaseDriver): """Fake MSFT OCS driver.""" + supported = False + def __init__(self): self.power = msftocs_power.MSFTOCSPower() self.deploy = fake.FakeDeploy() @@ -312,6 +328,8 @@ class FakeCIMCDriver(base.BaseDriver): class FakeWakeOnLanDriver(base.BaseDriver): """Fake Wake-On-Lan driver.""" + supported = False + def __init__(self): self.power = wol.WakeOnLanPower() self.deploy = fake.FakeDeploy() diff --git a/ironic/drivers/pxe.py b/ironic/drivers/pxe.py index d37fee90c..a379a7723 100644 --- a/ironic/drivers/pxe.py +++ b/ironic/drivers/pxe.py @@ -116,6 +116,9 @@ class PXEAndSSHDriver(base.BaseDriver): image deployment. Implementations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): self.power = ssh.SSHPower() self.boot = pxe.PXEBoot() @@ -138,6 +141,9 @@ class PXEAndIPMINativeDriver(base.BaseDriver): for image deployment. Implementations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): if not importutils.try_import('pyghmi'): raise exception.DriverLoadError( @@ -173,6 +179,9 @@ class PXEAndSeaMicroDriver(base.BaseDriver): for image deployment. Implementations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): if not importutils.try_import('seamicroclient'): raise exception.DriverLoadError( @@ -203,6 +212,9 @@ class PXEAndIBootDriver(base.BaseDriver): image deployment. Implementations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): if not importutils.try_import('iboot'): raise exception.DriverLoadError( @@ -247,6 +259,9 @@ class PXEAndSNMPDriver(base.BaseDriver): deployment. Implentations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): # Driver has a runtime dependency on PySNMP, abort load if it is absent if not importutils.try_import('pysnmp'): @@ -297,6 +312,9 @@ class PXEAndVirtualBoxDriver(base.BaseDriver): deployment. Implementations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): if not importutils.try_import('pyremotevbox'): raise exception.DriverLoadError( @@ -319,6 +337,9 @@ class PXEAndAMTDriver(base.BaseDriver): deployment. Implementations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): if not importutils.try_import('pywsman'): raise exception.DriverLoadError( @@ -340,6 +361,9 @@ class PXEAndMSFTOCSDriver(base.BaseDriver): for image deployment. Implementations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): self.power = msftocs_power.MSFTOCSPower() self.boot = pxe.PXEBoot() @@ -405,6 +429,9 @@ class PXEAndWakeOnLanDriver(base.BaseDriver): deployment. Implementations are in those respective classes; this class is merely the glue between them. """ + + supported = False + def __init__(self): self.power = wol.WakeOnLanPower() self.boot = pxe.PXEBoot() diff --git a/releasenotes/notes/newton-driver-deprecations-e40369be37203057.yaml b/releasenotes/notes/newton-driver-deprecations-e40369be37203057.yaml new file mode 100644 index 000000000..83e8d6a2e --- /dev/null +++ b/releasenotes/notes/newton-driver-deprecations-e40369be37203057.yaml @@ -0,0 +1,30 @@ +--- +deprecations: + - | + The following drivers are marked as unsupported and therefore deprecated. + Some or all of these drivers may be removed in the Ocata cycle or later. + + * ``agent_amt`` + * ``agent_iboot`` + * ``agent_pyghmi`` + * ``agent_ssh`` + * ``agent_vbox`` + * ``agent_wol`` + * ``fake_ipminative`` + * ``fake_ssh`` + * ``fake_seamicro`` + * ``fake_iboot`` + * ``fake_snmp`` + * ``fake_vbox`` + * ``fake_amt`` + * ``fake_msftocs`` + * ``fake_wol`` + * ``pxe_ipminative`` + * ``pxe_ssh`` + * ``pxe_vbox`` + * ``pxe_seamicro`` + * ``pxe_iboot`` + * ``pxe_snmp`` + * ``pxe_amt`` + * ``pxe_msftocs`` + * ``pxe_wol``