From 575640cfacb06409fa9337d48924bcd846bee740 Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Mon, 25 Jun 2018 15:01:23 +0200 Subject: Remove the deprecated classic drivers for Cisco UCS hardware This change removes pxe_ucs, agent_ucs, pxe_iscsi_cimc and pxe_agent_cimc. Best effort clean up was done to the documentation. Change-Id: I4fe75e0d4a36228f2f6be6bf6ced6d37424b6fd3 --- devstack/lib/ironic | 10 +-- doc/source/admin/drivers/cimc.rst | 31 +++---- doc/source/admin/drivers/ucs.rst | 27 +++---- doc/source/admin/interfaces/deploy.rst | 3 +- ironic/drivers/agent.py | 94 ---------------------- ironic/drivers/pxe.py | 81 ------------------- ironic/tests/unit/drivers/test_pxe.py | 46 ----------- .../no-classic-ucs-cimc-7c62bb189ffbe0dd.yaml | 8 ++ setup.cfg | 4 - 9 files changed, 35 insertions(+), 269 deletions(-) create mode 100644 releasenotes/notes/no-classic-ucs-cimc-7c62bb189ffbe0dd.yaml diff --git a/devstack/lib/ironic b/devstack/lib/ironic index 38e29e096..43d33d94b 100644 --- a/devstack/lib/ironic +++ b/devstack/lib/ironic @@ -104,10 +104,10 @@ IRONIC_HW_ARCH=${IRONIC_HW_ARCH:-x86_64} # *_ipmitool or ipmi: # # -# *_cimc: +# cisco-ucs-standalone: # # -# *_ucs: +# cisco-ucs-managed: # # # *_oneview: @@ -292,7 +292,7 @@ fi # are ``pxe_ipmitool``, ``agent_ipmitool``, ``pxe_snmp`` and ``ipmi``. # # Additional valid choices if IRONIC_IS_HARDWARE == true are: -# ``pxe_iscsi_cimc``, ``pxe_agent_cimc``, ``pxe_ucs``, ``pxe_cimc``, +# ``cisco-ucs-managed``, ``cisco-ucs-standalone`` # ``*_pxe_oneview`` and ``idrac`` IRONIC_DEPLOY_DRIVER=${IRONIC_DEPLOY_DRIVER:-pxe_ipmitool} @@ -620,12 +620,12 @@ function is_deployed_by_ipmitool { } function is_deployed_by_cimc { - [[ -z "${IRONIC_DEPLOY_DRIVER##*_cimc}" ]] && return 0 + [[ "${IRONIC_DEPLOY_DRIVER}" == cisco-ucs-standalone ]] && return 0 return 1 } function is_deployed_by_ucs { - [[ -z "${IRONIC_DEPLOY_DRIVER##*_ucs}" ]] && return 0 + [[ "${IRONIC_DEPLOY_DRIVER}" == cisco-ucs-managed ]] && return 0 return 1 } diff --git a/doc/source/admin/drivers/cimc.rst b/doc/source/admin/drivers/cimc.rst index 55e779c5a..9d10a6ff4 100644 --- a/doc/source/admin/drivers/cimc.rst +++ b/doc/source/admin/drivers/cimc.rst @@ -6,23 +6,14 @@ CIMC drivers Overview ======== -The CIMC drivers are targeted for standalone Cisco UCS C series servers. -These drivers enable you to take advantage of CIMC by using the -python SDK. -``pxe_iscsi_cimc`` driver uses PXE boot + iSCSI deploy (just like ``pxe_ipmitool`` -driver) to deploy the image and uses CIMC to do all management operations on -the baremetal node (instead of using IPMI). +The ``cisco-ucs-standalone`` hardware type targets standalone Cisco UCS C +series servers. It enables you to take advantage of CIMC by using +the python SDK. -``pxe_agent_cimc`` driver uses PXE boot + Agent deploy (just like ``agent_ipmitool`` -and ``agent_ipminative`` drivers.) to deploy the image and uses CIMC to do all -management operations on the baremetal node (instead of using IPMI). Unlike with -iSCSI deploy in Agent deploy, the ramdisk is responsible for writing the image to -the disk, instead of the conductor. - -The CIMC drivers can use the Ironic Inspector service for in-band inspection of -equipment. For more information see the `Ironic Inspector documentation -`_. +The CIMC hardware type can use the Ironic Inspector service for in-band +inspection of equipment. For more information see the `Ironic Inspector +documentation `_. Prerequisites ============= @@ -50,10 +41,10 @@ This driver works with UCS C-Series servers and has been tested with: Configuring and Enabling the driver ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -1. Add ``pxe_iscsi_cimc`` and/or ``pxe_agent_cimc`` to the list of ``enabled_drivers`` in +1. Add ``cisco-ucs-standalone`` to ``enabled_hardware_types`` in ``/etc/ironic/ironic.conf``. For example:: - enabled_drivers = pxe_ipmitool,pxe_iscsi_cimc,pxe_agent_cimc + enabled_hardware_types = ipmi,cisco-ucs-standalone 2. Restart the Ironic conductor service: @@ -68,8 +59,8 @@ Configuring and Enabling the driver Registering CIMC Managed UCS node in Ironic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nodes configured for CIMC driver should have the ``driver`` property set to -``pxe_iscsi_cimc`` or ``pxe_agent_cimc``. The following configuration values are -also required in ``driver_info``: +``cisco-ucs-standalone``. The following configuration values are also required +in ``driver_info``: - ``cimc_address``: IP address or hostname for CIMC - ``cimc_username``: CIMC login user name @@ -81,7 +72,7 @@ The following sequence of commands can be used to enroll a UCS Standalone node. * Create Node:: - openstack baremetal node create --driver \ + openstack baremetal node create --driver cisco-ucs-standalone \ --driver-info cimc_address= \ --driver-info cimc_username= \ --driver-info cimc_password= \ diff --git a/doc/source/admin/drivers/ucs.rst b/doc/source/admin/drivers/ucs.rst index 7b38ca6ae..dd8d9f858 100644 --- a/doc/source/admin/drivers/ucs.rst +++ b/doc/source/admin/drivers/ucs.rst @@ -6,21 +6,14 @@ UCS drivers Overview ======== -The UCS driver is targeted for UCS Manager managed Cisco UCS B/C series -servers. The pxe_ucs, agent_ucs drivers enables you to take advantage of -UCS Manager by using the python SDK. - -``pxe_ucs`` driver uses PXE/iSCSI (just like ``pxe_ipmitool`` driver) to -deploy the image and uses UCS to do all management operations on the -baremetal node (instead of using IPMI). -``agent_ucs`` driver uses IPA ramdisk (just like ``agent_ipmitool`` and -``agent_ipminative`` drivers.) to deploy the image and uses UCS to do all -management operations on the baremetal node (instead of using IPMI). +The UCS driver is targeted for UCS Manager managed Cisco UCS B/C series +servers. The ``cisco-ucs-managed`` hardware type enables you to take advantage +of UCS Manager by using the python SDK. -The UCS drivers can use the Ironic Inspector service for in-band inspection of -equipment. For more information see the `Ironic Inspector documentation -`_. +The UCS hardware type can use the Ironic Inspector service for in-band +inspection of equipment. For more information see the `Ironic Inspector +documentation `_. Prerequisites ============= @@ -48,10 +41,10 @@ by this driver. Configuring and Enabling the driver ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -1. Add ``pxe_ucs`` and/or ``agent_ucs`` to the list of ``enabled_drivers`` in +1. Add ``cisco-ucs-managed`` to the ``enabled_hardware_types`` in ``/etc/ironic/ironic.conf``. For example:: - enabled_drivers = pxe_ipmitool,pxe_ucs,agent_ucs + enabled_hardware_types = ipmi,cisco-ucs-managed 2. Restart the Ironic conductor service:: @@ -60,7 +53,7 @@ Configuring and Enabling the driver Registering UCS node in Ironic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nodes configured for UCS driver should have the ``driver`` property set to -``pxe_ucs/agent_ucs``. The following configuration values are also required in +``cisco-ucs-managed``. The following configuration values are also required in ``driver_info``: - ``ucs_address``: IP address or hostname of the UCS Manager @@ -75,7 +68,7 @@ The following sequence of commands can be used to enroll a UCS node. * Create Node:: - openstack baremetal node create --driver \ + openstack baremetal node create --driver cisco-ucs-managed \ --driver-info ucs_address= \ --driver-info ucs_username= \ --driver-info ucs_password= \ diff --git a/doc/source/admin/interfaces/deploy.rst b/doc/source/admin/interfaces/deploy.rst index a450b33bb..550a0a897 100644 --- a/doc/source/admin/interfaces/deploy.rst +++ b/doc/source/admin/interfaces/deploy.rst @@ -25,8 +25,7 @@ when creating or updating a node:: openstack baremetal node set --deploy-interface iscsi The ``iscsi`` deploy interface is also used in all of the *classic drivers* -with names starting with ``pxe_`` (except for ``pxe_agent_cimc``) -and ``iscsi_``. +with names starting with ``pxe_`` and ``iscsi_``. .. _iSCSI: https://en.wikipedia.org/wiki/ISCSI diff --git a/ironic/drivers/agent.py b/ironic/drivers/agent.py index 163ae796e..ddad1059c 100644 --- a/ironic/drivers/agent.py +++ b/ironic/drivers/agent.py @@ -12,103 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -from oslo_config import cfg -from oslo_utils import importutils - -from ironic.common import exception -from ironic.common.i18n import _ -from ironic.drivers import base from ironic.drivers import ipmi -from ironic.drivers.modules import agent -from ironic.drivers.modules.cimc import management as cimc_mgmt -from ironic.drivers.modules.cimc import power as cimc_power -from ironic.drivers.modules import inspector -from ironic.drivers.modules import pxe -from ironic.drivers.modules.ucs import management as ucs_mgmt -from ironic.drivers.modules.ucs import power as ucs_power - - -CONF = cfg.CONF # For backward compatibility AgentAndIPMIToolDriver = ipmi.AgentAndIPMIToolDriver AgentAndIPMIToolAndSocatDriver = ipmi.AgentAndIPMIToolAndSocatDriver - - -class AgentAndUcsDriver(base.BaseDriver): - """Agent + Cisco UCSM driver. - - This driver implements the `core` functionality, combining - :class:ironic.drivers.modules.ucs.power.Power for power - on/off and reboot with - :class:'ironic.driver.modules.agent.AgentDeploy' (for image deployment.) - Implementations are in those respective classes; - this class is merely the glue between them. - """ - - def __init__(self): - if not importutils.try_import('UcsSdk'): - raise exception.DriverLoadError( - driver=self.__class__.__name__, - reason=_("Unable to import UcsSdk library")) - self.power = ucs_power.Power() - self.boot = pxe.PXEBoot() - self.deploy = agent.AgentDeploy() - self.management = ucs_mgmt.UcsManagement() - self.inspect = inspector.Inspector.create_if_enabled( - 'AgentAndUcsDriver') - - @classmethod - def to_hardware_type(cls): - # NOTE(dtantsur): classic drivers are not affected by the - # enabled_inspect_interfaces configuration option. - if CONF.inspector.enabled: - inspect_interface = 'inspector' - else: - inspect_interface = 'no-inspect' - - return 'cisco-ucs-managed', {'boot': 'pxe', - 'deploy': 'direct', - 'inspect': inspect_interface, - 'management': 'ucsm', - 'power': 'ucsm'} - - -class AgentAndCIMCDriver(base.BaseDriver): - """Agent + Cisco CIMC driver. - - This driver implements the `core` functionality, combining - :class:ironic.drivers.modules.cimc.power.Power for power - on/off and reboot with - :class:'ironic.driver.modules.agent.AgentDeploy' (for image deployment.) - Implementations are in those respective classes; - this class is merely the glue between them. - """ - - def __init__(self): - if not importutils.try_import('ImcSdk'): - raise exception.DriverLoadError( - driver=self.__class__.__name__, - reason=_("Unable to import ImcSdk library")) - self.power = cimc_power.Power() - self.boot = pxe.PXEBoot() - self.deploy = agent.AgentDeploy() - self.management = cimc_mgmt.CIMCManagement() - self.inspect = inspector.Inspector.create_if_enabled( - 'AgentAndCIMCDriver') - - @classmethod - def to_hardware_type(cls): - # NOTE(dtantsur): classic drivers are not affected by the - # enabled_inspect_interfaces configuration option. - if CONF.inspector.enabled: - inspect_interface = 'inspector' - else: - inspect_interface = 'no-inspect' - - return 'cisco-ucs-standalone', {'boot': 'pxe', - 'deploy': 'direct', - 'inspect': inspect_interface, - 'management': 'cimc', - 'power': 'cimc'} diff --git a/ironic/drivers/pxe.py b/ironic/drivers/pxe.py index ab2f9fca7..6e5bb230a 100644 --- a/ironic/drivers/pxe.py +++ b/ironic/drivers/pxe.py @@ -24,9 +24,6 @@ from ironic.common import exception from ironic.common.i18n import _ from ironic.drivers import base from ironic.drivers import ipmi -from ironic.drivers.modules.cimc import management as cimc_mgmt -from ironic.drivers.modules.cimc import power as cimc_power -from ironic.drivers.modules import inspector from ironic.drivers.modules import ipmitool from ironic.drivers.modules.irmc import boot as irmc_boot from ironic.drivers.modules.irmc import inspect as irmc_inspect @@ -35,8 +32,6 @@ from ironic.drivers.modules.irmc import power as irmc_power from ironic.drivers.modules import iscsi_deploy from ironic.drivers.modules import pxe from ironic.drivers.modules import snmp -from ironic.drivers.modules.ucs import management as ucs_mgmt -from ironic.drivers.modules.ucs import power as ucs_power CONF = cfg.CONF @@ -109,79 +104,3 @@ class PXEAndIRMCDriver(base.BaseDriver): 'inspect': 'irmc', 'management': 'irmc', 'power': 'irmc'} - - -class PXEAndUcsDriver(base.BaseDriver): - """PXE + Cisco UCSM driver. - - This driver implements the `core` functionality, combining - :class:ironic.drivers.modules.ucs.power.Power for power - on/off and reboot with - :class:ironic.drivers.modules.iscsi_deploy.ISCSIDeploy for image - deployment. Implementations are in those respective classes; - this class is merely the glue between them. - """ - def __init__(self): - if not importutils.try_import('UcsSdk'): - raise exception.DriverLoadError( - driver=self.__class__.__name__, - reason=_("Unable to import UcsSdk library")) - self.power = ucs_power.Power() - self.boot = pxe.PXEBoot() - self.deploy = iscsi_deploy.ISCSIDeploy() - self.management = ucs_mgmt.UcsManagement() - self.inspect = inspector.Inspector.create_if_enabled( - 'PXEAndUcsDriver') - - @classmethod - def to_hardware_type(cls): - # NOTE(dtantsur): classic drivers are not affected by the - # enabled_inspect_interfaces configuration option. - if CONF.inspector.enabled: - inspect_interface = 'inspector' - else: - inspect_interface = 'no-inspect' - - return 'cisco-ucs-managed', {'boot': 'pxe', - 'deploy': 'iscsi', - 'inspect': inspect_interface, - 'management': 'ucsm', - 'power': 'ucsm'} - - -class PXEAndCIMCDriver(base.BaseDriver): - """PXE + Cisco IMC driver. - - This driver implements the 'core' functionality, combining - :class:`ironic.drivers.modules.cimc.Power` for power on/off and reboot with - :class:`ironic.drivers.modules.pxe.PXEBoot` for booting the node and - :class:`ironic.drivers.modules.iscsi_deploy.ISCSIDeploy` for image - deployment. Implentations are in those respective classes; this - class is merely the glue between them. - """ - def __init__(self): - if not importutils.try_import('ImcSdk'): - raise exception.DriverLoadError( - driver=self.__class__.__name__, - reason=_("Unable to import ImcSdk library")) - self.power = cimc_power.Power() - self.boot = pxe.PXEBoot() - self.deploy = iscsi_deploy.ISCSIDeploy() - self.management = cimc_mgmt.CIMCManagement() - self.inspect = inspector.Inspector.create_if_enabled( - 'PXEAndCIMCDriver') - - @classmethod - def to_hardware_type(cls): - # NOTE(dtantsur): classic drivers are not affected by the - # enabled_inspect_interfaces configuration option. - if CONF.inspector.enabled: - inspect_interface = 'inspector' - else: - inspect_interface = 'no-inspect' - - return 'cisco-ucs-standalone', {'boot': 'pxe', - 'deploy': 'iscsi', - 'inspect': inspect_interface, - 'management': 'cimc', - 'power': 'cimc'} diff --git a/ironic/tests/unit/drivers/test_pxe.py b/ironic/tests/unit/drivers/test_pxe.py index 7551a2086..5a9a8a7a5 100644 --- a/ironic/tests/unit/drivers/test_pxe.py +++ b/ironic/tests/unit/drivers/test_pxe.py @@ -20,8 +20,6 @@ import mock import testtools from ironic.common import exception -from ironic.drivers.modules.cimc import management as cimc_management -from ironic.drivers.modules.cimc import power as cimc_power from ironic.drivers.modules import ipmitool from ironic.drivers.modules.irmc import boot as irmc_boot from ironic.drivers.modules.irmc import management as irmc_management @@ -29,8 +27,6 @@ from ironic.drivers.modules.irmc import power as irmc_power from ironic.drivers.modules import iscsi_deploy from ironic.drivers.modules import pxe as pxe_module from ironic.drivers.modules import snmp -from ironic.drivers.modules.ucs import management as ucs_management -from ironic.drivers.modules.ucs import power as ucs_power from ironic.drivers import pxe @@ -77,45 +73,3 @@ class PXEDriversTestCase(testtools.TestCase): self.assertRaises(exception.DriverLoadError, pxe.PXEAndIRMCDriver) - - @mock.patch.object(pxe.importutils, 'try_import', spec_set=True, - autospec=True) - def test_pxe_ucs_driver(self, try_import_mock): - try_import_mock.return_value = True - - driver = pxe.PXEAndUcsDriver() - - self.assertIsInstance(driver.power, ucs_power.Power) - self.assertIsInstance(driver.boot, pxe_module.PXEBoot) - self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy) - self.assertIsInstance(driver.management, - ucs_management.UcsManagement) - - @mock.patch.object(pxe.importutils, 'try_import', spec_set=True, - autospec=True) - def test_pxe_ucs_driver_import_error(self, try_import_mock): - try_import_mock.return_value = False - - self.assertRaises(exception.DriverLoadError, - pxe.PXEAndUcsDriver) - - @mock.patch.object(pxe.importutils, 'try_import', spec_set=True, - autospec=True) - def test_pxe_cimc_driver(self, try_import_mock): - try_import_mock.return_value = True - - driver = pxe.PXEAndCIMCDriver() - - self.assertIsInstance(driver.power, cimc_power.Power) - self.assertIsInstance(driver.boot, pxe_module.PXEBoot) - self.assertIsInstance(driver.deploy, iscsi_deploy.ISCSIDeploy) - self.assertIsInstance(driver.management, - cimc_management.CIMCManagement) - - @mock.patch.object(pxe.importutils, 'try_import', spec_set=True, - autospec=True) - def test_pxe_cimc_driver_import_error(self, try_import_mock): - try_import_mock.return_value = False - - self.assertRaises(exception.DriverLoadError, - pxe.PXEAndCIMCDriver) diff --git a/releasenotes/notes/no-classic-ucs-cimc-7c62bb189ffbe0dd.yaml b/releasenotes/notes/no-classic-ucs-cimc-7c62bb189ffbe0dd.yaml new file mode 100644 index 000000000..4fae2ccf4 --- /dev/null +++ b/releasenotes/notes/no-classic-ucs-cimc-7c62bb189ffbe0dd.yaml @@ -0,0 +1,8 @@ +--- +upgrade: + - | + The deprecated classic drivers ``pxe_ucs`` and ``agent_ucs`` have been + removed. Please use the ``cisco-ucs-managed`` hardware type. + - | + The deprecated classic drivers ``pxe_iscsi_cimc`` and ``pxe_agent_cimc`` + have been removed. Please use the ``cisco-ucs-standalone`` hardware type. diff --git a/setup.cfg b/setup.cfg index 7bd10eeab..36d4a0680 100644 --- a/setup.cfg +++ b/setup.cfg @@ -57,16 +57,12 @@ ironic.drivers = agent_ipmitool_socat = ironic.drivers.ipmi:AgentAndIPMIToolAndSocatDriver agent_irmc = ironic.drivers.irmc:IRMCVirtualMediaAgentDriver agent_pxe_oneview = ironic.drivers.oneview:AgentPXEOneViewDriver - agent_ucs = ironic.drivers.agent:AgentAndUcsDriver iscsi_irmc = ironic.drivers.irmc:IRMCVirtualMediaIscsiDriver iscsi_pxe_oneview = ironic.drivers.oneview:ISCSIPXEOneViewDriver pxe_ipmitool = ironic.drivers.ipmi:PXEAndIPMIToolDriver pxe_ipmitool_socat = ironic.drivers.ipmi:PXEAndIPMIToolAndSocatDriver pxe_snmp = ironic.drivers.pxe:PXEAndSNMPDriver pxe_irmc = ironic.drivers.pxe:PXEAndIRMCDriver - pxe_ucs = ironic.drivers.pxe:PXEAndUcsDriver - pxe_iscsi_cimc = ironic.drivers.pxe:PXEAndCIMCDriver - pxe_agent_cimc = ironic.drivers.agent:AgentAndCIMCDriver ironic.hardware.interfaces.bios = fake = ironic.drivers.modules.fake:FakeBIOS -- cgit v1.2.1