Remove the OneView classic drivers
This change removes iscsi_pxe_oneview and agent_pxe_oneview. Change-Id: I4301e35f321bd041441dcfce494393fb90e293f3
This commit is contained in:
parent
6deb0c3b0b
commit
384f966003
@ -110,7 +110,7 @@ IRONIC_HW_ARCH=${IRONIC_HW_ARCH:-x86_64}
|
||||
# cisco-ucs-managed:
|
||||
# <BMC address> <MAC address> <BMC username> <BMC password> <UCS service profile>
|
||||
#
|
||||
# *_oneview:
|
||||
# oneview:
|
||||
# <Server Hardware URI> <Server Hardware Type URI> <Enclosure Group URI> <Server Profile Template URI> <MAC of primary connection> <Applied Server Profile URI>
|
||||
#
|
||||
# idrac:
|
||||
@ -292,8 +292,7 @@ fi
|
||||
# are ``pxe_ipmitool``, ``agent_ipmitool``, ``snmp`` and ``ipmi``.
|
||||
#
|
||||
# Additional valid choices if IRONIC_IS_HARDWARE == true are:
|
||||
# ``cisco-ucs-managed``, ``cisco-ucs-standalone``
|
||||
# ``*_pxe_oneview`` and ``idrac``
|
||||
# ``cisco-ucs-managed``, ``cisco-ucs-standalone``, ``oneview`` and ``idrac``.
|
||||
IRONIC_DEPLOY_DRIVER=${IRONIC_DEPLOY_DRIVER:-pxe_ipmitool}
|
||||
|
||||
# If the requested driver is not yet enable, enable it, if it is not it will fail anyway
|
||||
@ -630,7 +629,8 @@ function is_deployed_by_ucs {
|
||||
}
|
||||
|
||||
function is_deployed_by_oneview {
|
||||
[[ -z "${IRONIC_DEPLOY_DRIVER##*_oneview}" ]] && return 0
|
||||
[[ "${IRONIC_DEPLOY_DRIVER}" == oneview ]] && return 0
|
||||
return 1
|
||||
}
|
||||
|
||||
function is_deployed_by_ilo {
|
||||
|
@ -5,8 +5,8 @@ OneView drivers
|
||||
===============
|
||||
|
||||
.. note::
|
||||
The `oneview` drivers and hardware type, along with related interfaces
|
||||
to support OneView, have been deprecated, and should be expected to be
|
||||
The `oneview` hardware type, along with related interfaces to support
|
||||
OneView, have been deprecated, and should be expected to be
|
||||
removed from ironic in the Stein cycle. Please see
|
||||
`storyboard <https://storyboard.openstack.org/#!/story/2001924>`_ for
|
||||
additional details.
|
||||
@ -21,30 +21,14 @@ instance. In this context, the ``HP OneView driver`` for ironic enables the
|
||||
users of OneView to use ironic as a bare metal provider to their managed
|
||||
physical hardware.
|
||||
|
||||
HPE OneView hardware is supported by the ``oneview`` hardware type and the
|
||||
following classic drivers:
|
||||
|
||||
* ``iscsi_pxe_oneview``
|
||||
* ``agent_pxe_oneview``
|
||||
|
||||
Classic Drivers
|
||||
===============
|
||||
|
||||
The ``iscsi_pxe_oneview`` and ``agent_pxe_oneview`` drivers implement the core
|
||||
interfaces of an ironic Driver [2]_, and use the ``hpOneView`` [3]_ library
|
||||
to provide communication between ironic and OneView through OneView's REST API.
|
||||
|
||||
.. note::
|
||||
Classic drivers will be deprecated in favor of Hardware Types.
|
||||
HPE OneView hardware is supported by the ``oneview`` hardware type.
|
||||
|
||||
To provide a bare metal instance there are four components involved in the
|
||||
process:
|
||||
|
||||
* The ironic service
|
||||
* The ironic-inspector service (if using hardware inspection)
|
||||
* The ironic driver for OneView, which can be:
|
||||
* `iscsi_pxe_oneview` or
|
||||
* `agent_pxe_oneview`
|
||||
* The ironic hardware type for OneView
|
||||
* The hpOneView library
|
||||
* The OneView appliance
|
||||
|
||||
@ -70,9 +54,6 @@ the node is no longer in use, these tasks will make place them back in
|
||||
Prerequisites
|
||||
=============
|
||||
|
||||
The following requirements apply for both ``iscsi_pxe_oneview`` and
|
||||
``agent_pxe_oneview`` drivers:
|
||||
|
||||
* ``OneView appliance`` is the HP physical infrastructure manager to be
|
||||
integrated with the OneView drivers.
|
||||
|
||||
@ -216,49 +197,11 @@ hardware type:
|
||||
--driver oneview \
|
||||
--deploy-interface oneview-iscsi
|
||||
|
||||
Deploy process with oneview-iscsi deploy interface
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Drivers
|
||||
=======
|
||||
|
||||
iscsi_pxe_oneview driver
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Overview
|
||||
~~~~~~~~
|
||||
|
||||
``iscsi_pxe_oneview`` driver uses PXEBoot for boot and ISCSIDeploy for deploy.
|
||||
|
||||
Configuring and enabling the driver
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
1. Add ``iscsi_pxe_oneview`` to the list of ``enabled_drivers`` in your
|
||||
``ironic.conf`` file. For example::
|
||||
|
||||
enabled_drivers = iscsi_pxe_oneview
|
||||
|
||||
2. Update the [oneview] section of your ``ironic.conf`` file with your
|
||||
OneView credentials and CA certificate files information.
|
||||
|
||||
.. note::
|
||||
An operator can set the ``periodic_check_interval`` option in the [oneview]
|
||||
section to set the interval between running the periodic check. The default
|
||||
value is 300 seconds (5 minutes). A lower value will reduce the likelihood
|
||||
of races between ironic and OneView at the cost of being more resource
|
||||
intensive.
|
||||
|
||||
3. Restart the ironic conductor service. For Ubuntu users, do::
|
||||
|
||||
$ sudo service ironic-conductor restart
|
||||
|
||||
See :doc:`/install/index` for more information.
|
||||
|
||||
Deploy process
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Here is an overview of the deploy process for this driver:
|
||||
|
||||
1. Admin configures the Proliant baremetal node to use ``iscsi_pxe_oneview``
|
||||
driver.
|
||||
1. Admin configures the Proliant baremetal node to use ``oneview-iscsi``
|
||||
deploy interface.
|
||||
2. ironic gets a request to deploy a Glance image on the baremetal node.
|
||||
3. Driver sets the boot device to PXE.
|
||||
4. Driver powers on the baremetal node.
|
||||
@ -270,45 +213,11 @@ Here is an overview of the deploy process for this driver:
|
||||
10. Driver powers on the machine.
|
||||
11. Baremetal node is active and ready to be used.
|
||||
|
||||
agent_pxe_oneview driver
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Deploy process with oneview-direct deploy interface
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Overview
|
||||
~~~~~~~~
|
||||
|
||||
``agent_pxe_oneview`` driver uses PXEBoot for boot and AgentDeploy for deploy.
|
||||
|
||||
Configuring and enabling the driver
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
1. Add ``agent_pxe_oneview`` to the list of ``enabled_drivers`` in your
|
||||
``ironic.conf``. For example::
|
||||
|
||||
enabled_drivers = pxe_ipmitool,agent_pxe_oneview
|
||||
|
||||
2. Update the [oneview] section of your ``ironic.conf`` file with your
|
||||
OneView credentials and CA certificate files information.
|
||||
|
||||
.. note::
|
||||
An operator can set the ``periodic_check_interval`` option in the [oneview]
|
||||
section to set the interval between running the periodic check. The default
|
||||
value is 300 seconds (5 minutes). A lower value will reduce the likelihood
|
||||
of races between ironic and OneView at the cost of being more resource
|
||||
intensive.
|
||||
|
||||
3. Restart the ironic conductor service. For Ubuntu users, do::
|
||||
|
||||
$ service ironic-conductor restart
|
||||
|
||||
See :doc:`/install/index` for more information.
|
||||
|
||||
Deploy process
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Here is an overview of the deploy process for this driver:
|
||||
|
||||
1. Admin configures the Proliant baremetal node to use ``agent_pxe_oneview``
|
||||
driver.
|
||||
1. Admin configures the Proliant baremetal node to use ``oneview-direct``
|
||||
deploy interface.
|
||||
2. ironic gets a request to deploy a Glance image on the baremetal node.
|
||||
3. Driver sets the boot device to PXE.
|
||||
4. Driver powers on the baremetal node.
|
||||
@ -339,8 +248,8 @@ Registering a OneView node in ironic
|
||||
====================================
|
||||
|
||||
Nodes configured to use any of the OneView drivers should have the ``driver``
|
||||
property set to ``iscsi_pxe_oneview`` or ``agent_pxe_oneview``. Considering
|
||||
our context, a node is the representation of a ``Server Hardware`` in OneView,
|
||||
property set to ``oneview``. Considering our context, a node is the
|
||||
representation of a ``Server Hardware`` in OneView,
|
||||
and should be consistent with all its properties and related components, such
|
||||
as ``Server Hardware Type``, ``Server Profile Template``, ``Enclosure Group``,
|
||||
etc. In this case, to be enrolled, the node must have the following parameters:
|
||||
@ -419,7 +328,7 @@ In order to ease user manual tasks, which are often time-consuming, we provide
|
||||
useful tools that work nicely with the OneView drivers.
|
||||
|
||||
ironic-oneview-cli
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The ``ironic-oneView`` CLI is a command line interface for management tasks
|
||||
involving OneView nodes. Its features include a facility to create of ironic
|
||||
@ -430,7 +339,7 @@ For more details on how Ironic-OneView CLI works and how to set it up, see
|
||||
[8]_.
|
||||
|
||||
ironic-oneviewd
|
||||
^^^^^^^^^^^^^^^
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
The ``ironic-oneviewd`` daemon monitors the ironic inventory of resources and
|
||||
provides facilities to operators managing OneView driver deployments.
|
||||
@ -440,8 +349,6 @@ For more details on how Ironic-OneViewd works and how to set it up, see [7]_.
|
||||
References
|
||||
==========
|
||||
.. [1] HP OneView - https://www.hpe.com/us/en/integrated-systems/software.html
|
||||
.. [2] :ref:`architecture_drivers`
|
||||
.. [3] hpOneView - https://pypi.org/project/hpOneView
|
||||
.. [6] Dynamic Allocation in OneView drivers - https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/oneview-drivers-dynamic-allocation.html
|
||||
.. [7] ironic-oneviewd - https://pypi.org/project/ironic-oneviewd/
|
||||
.. [8] ironic-oneview-cli - https://pypi.org/project/ironic-oneview-cli/
|
||||
|
@ -57,9 +57,6 @@ COMMON_PROPERTIES.update(REQUIRED_ON_DRIVER_INFO)
|
||||
COMMON_PROPERTIES.update(REQUIRED_ON_PROPERTIES)
|
||||
COMMON_PROPERTIES.update(OPTIONAL_ON_PROPERTIES)
|
||||
|
||||
ISCSI_PXE_ONEVIEW = 'iscsi_pxe_oneview'
|
||||
AGENT_PXE_ONEVIEW = 'agent_pxe_oneview'
|
||||
|
||||
# NOTE(xavierr): We don't want to translate NODE_IN_USE_BY_ONEVIEW and
|
||||
# SERVER_HARDWARE_ALLOCATION_ERROR to avoid inconsistency in the nodes
|
||||
# caused by updates on translation in upgrades of ironic.
|
||||
|
@ -36,10 +36,6 @@ METRICS = metrics_utils.get_metrics_logger(__name__)
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
class OneViewPeriodicTasks(object):
|
||||
|
||||
@abc.abstractproperty
|
||||
def oneview_driver(self):
|
||||
pass
|
||||
|
||||
@periodics.periodic(spacing=CONF.oneview.periodic_check_interval,
|
||||
enabled=CONF.oneview.enable_periodic_tasks)
|
||||
def _periodic_check_nodes_taken_by_oneview(self, manager, context):
|
||||
@ -58,7 +54,7 @@ class OneViewPeriodicTasks(object):
|
||||
filters = {
|
||||
'provision_state': states.AVAILABLE,
|
||||
'maintenance': False,
|
||||
'driver': self.oneview_driver
|
||||
'driver': 'oneview'
|
||||
}
|
||||
node_iter = manager.iter_nodes(filters=filters)
|
||||
|
||||
@ -116,7 +112,7 @@ class OneViewPeriodicTasks(object):
|
||||
filters = {
|
||||
'provision_state': states.MANAGEABLE,
|
||||
'maintenance': True,
|
||||
'driver': self.oneview_driver
|
||||
'driver': 'oneview'
|
||||
}
|
||||
node_iter = manager.iter_nodes(fields=['maintenance_reason'],
|
||||
filters=filters)
|
||||
@ -182,7 +178,7 @@ class OneViewPeriodicTasks(object):
|
||||
|
||||
filters = {
|
||||
'provision_state': states.CLEANFAIL,
|
||||
'driver': self.oneview_driver
|
||||
'driver': 'oneview'
|
||||
}
|
||||
node_iter = manager.iter_nodes(fields=['driver_internal_info'],
|
||||
filters=filters)
|
||||
@ -224,8 +220,6 @@ class OneViewIscsiDeploy(iscsi_deploy.ISCSIDeploy, OneViewPeriodicTasks):
|
||||
# TODO(TheJulia): This should be expected to be removed in Stein.
|
||||
supported = False
|
||||
|
||||
oneview_driver = common.ISCSI_PXE_ONEVIEW
|
||||
|
||||
def get_properties(self):
|
||||
return deploy_utils.get_properties()
|
||||
|
||||
@ -270,8 +264,6 @@ class OneViewAgentDeploy(agent.AgentDeploy, OneViewPeriodicTasks):
|
||||
# TODO(TheJulia): This should be expected to be removed in Stein.
|
||||
supported = False
|
||||
|
||||
oneview_driver = common.AGENT_PXE_ONEVIEW
|
||||
|
||||
def get_properties(self):
|
||||
return deploy_utils.get_properties()
|
||||
|
||||
|
@ -73,20 +73,19 @@ class OneViewInspect(inspector.Inspector):
|
||||
@periodics.periodic(spacing=CONF.inspector.status_check_period,
|
||||
enabled=CONF.inspector.enabled)
|
||||
def _periodic_check_result(self, manager, context):
|
||||
filters = {'provision_state': states.INSPECTWAIT}
|
||||
filters = {'provision_state': states.INSPECTWAIT,
|
||||
'driver': 'oneview'}
|
||||
node_iter = manager.iter_nodes(filters=filters)
|
||||
|
||||
for node_uuid, driver in node_iter:
|
||||
if driver in [common.AGENT_PXE_ONEVIEW,
|
||||
common.ISCSI_PXE_ONEVIEW]:
|
||||
try:
|
||||
lock_purpose = 'checking hardware inspection status'
|
||||
with task_manager.acquire(context, node_uuid,
|
||||
shared=True,
|
||||
purpose=lock_purpose) as task:
|
||||
self._check_status(task)
|
||||
except (exception.NodeLocked, exception.NodeNotFound):
|
||||
continue
|
||||
try:
|
||||
lock_purpose = 'checking hardware inspection status'
|
||||
with task_manager.acquire(context, node_uuid,
|
||||
shared=True,
|
||||
purpose=lock_purpose) as task:
|
||||
self._check_status(task)
|
||||
except (exception.NodeLocked, exception.NodeNotFound):
|
||||
continue
|
||||
|
||||
def _check_status(self, task):
|
||||
state_before = task.node.provision_state
|
||||
|
@ -14,25 +14,15 @@
|
||||
# under the License.
|
||||
|
||||
"""
|
||||
OneView Driver and supporting meta-classes.
|
||||
OneView hardware type.
|
||||
"""
|
||||
|
||||
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 generic
|
||||
from ironic.drivers.modules import noop
|
||||
from ironic.drivers.modules.oneview import deploy
|
||||
from ironic.drivers.modules.oneview import inspect
|
||||
from ironic.drivers.modules.oneview import management
|
||||
from ironic.drivers.modules.oneview import power
|
||||
from ironic.drivers.modules import pxe
|
||||
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
||||
class OneViewHardware(generic.GenericHardware):
|
||||
@ -66,101 +56,3 @@ class OneViewHardware(generic.GenericHardware):
|
||||
def supported_power_interfaces(self):
|
||||
"""List of supported power interfaces."""
|
||||
return [power.OneViewPower]
|
||||
|
||||
|
||||
class AgentPXEOneViewDriver(base.BaseDriver):
|
||||
"""OneViewDriver using OneViewClient interface.
|
||||
|
||||
This driver implements the `core` functionality using
|
||||
:class:ironic.drivers.modules.oneview.power.OneViewPower for power
|
||||
management. And
|
||||
:class:ironic.drivers.modules.oneview.deploy.OneViewAgentDeploy for deploy.
|
||||
"""
|
||||
# NOTE(TheJulia): Marking as unsupported as 3rd party CI was taken down
|
||||
# shortly before the beginning of the Rocky cycle, and no replies have
|
||||
# indicated that 3rd party CI will be re-established nor visible
|
||||
# actions observed regarding re-establishing 3rd party CI.
|
||||
# TODO(TheJulia): This should be expected to be removed in Stein.
|
||||
supported = False
|
||||
|
||||
def __init__(self):
|
||||
if not importutils.try_import('hpOneView.oneview_client'):
|
||||
raise exception.DriverLoadError(
|
||||
driver=self.__class__.__name__,
|
||||
reason=_("Unable to import hpOneView library"))
|
||||
|
||||
if not importutils.try_import('redfish'):
|
||||
raise exception.DriverLoadError(
|
||||
driver=self.__class__.__name__,
|
||||
reason=_("Unable to import python-ilorest-library"))
|
||||
|
||||
self.power = power.OneViewPower()
|
||||
self.management = management.OneViewManagement()
|
||||
self.boot = pxe.PXEBoot()
|
||||
self.deploy = deploy.OneViewAgentDeploy()
|
||||
self.inspect = inspect.OneViewInspect.create_if_enabled(
|
||||
'AgentPXEOneViewDriver')
|
||||
|
||||
@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 = 'oneview'
|
||||
else:
|
||||
inspect_interface = 'no-inspect'
|
||||
|
||||
return 'oneview', {'boot': 'pxe',
|
||||
'deploy': 'oneview-direct',
|
||||
'inspect': inspect_interface,
|
||||
'management': 'oneview',
|
||||
'power': 'oneview'}
|
||||
|
||||
|
||||
class ISCSIPXEOneViewDriver(base.BaseDriver):
|
||||
"""OneViewDriver using OneViewClient interface.
|
||||
|
||||
This driver implements the `core` functionality using
|
||||
:class:ironic.drivers.modules.oneview.power.OneViewPower for power
|
||||
management. And
|
||||
:class:ironic.drivers.modules.oneview.deploy.OneViewIscsiDeploy for deploy.
|
||||
"""
|
||||
# NOTE(TheJulia): Marking as unsupported as 3rd party CI was taken down
|
||||
# shortly before the beginning of the Rocky cycle, and no replies have
|
||||
# indicated that 3rd party CI will be re-established nor visible
|
||||
# actions observed regarding re-establishing 3rd party CI.
|
||||
# TODO(TheJulia): This should be expected to be removed in Stein.
|
||||
supported = False
|
||||
|
||||
def __init__(self):
|
||||
if not importutils.try_import('hpOneView.oneview_client'):
|
||||
raise exception.DriverLoadError(
|
||||
driver=self.__class__.__name__,
|
||||
reason=_("Unable to import hpOneView library"))
|
||||
|
||||
if not importutils.try_import('redfish'):
|
||||
raise exception.DriverLoadError(
|
||||
driver=self.__class__.__name__,
|
||||
reason=_("Unable to import python-ilorest-library"))
|
||||
|
||||
self.power = power.OneViewPower()
|
||||
self.management = management.OneViewManagement()
|
||||
self.boot = pxe.PXEBoot()
|
||||
self.deploy = deploy.OneViewIscsiDeploy()
|
||||
self.inspect = inspect.OneViewInspect.create_if_enabled(
|
||||
'ISCSIPXEOneViewDriver')
|
||||
|
||||
@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 = 'oneview'
|
||||
else:
|
||||
inspect_interface = 'no-inspect'
|
||||
|
||||
return 'oneview', {'boot': 'pxe',
|
||||
'deploy': 'oneview-iscsi',
|
||||
'inspect': inspect_interface,
|
||||
'management': 'oneview',
|
||||
'power': 'oneview'}
|
||||
|
@ -28,6 +28,8 @@ hponeview_client = importutils.try_import('hpOneView.oneview_client')
|
||||
|
||||
class BaseOneViewTest(db_base.DbTestCase):
|
||||
|
||||
deploy_interface = None
|
||||
|
||||
def setUp(self):
|
||||
super(BaseOneViewTest, self).setUp()
|
||||
self.config(enabled_hardware_types=['oneview', 'fake-hardware'],
|
||||
@ -39,6 +41,7 @@ class BaseOneViewTest(db_base.DbTestCase):
|
||||
enabled_power_interfaces=['oneview', 'fake'])
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, driver='oneview',
|
||||
deploy_interface=self.deploy_interface,
|
||||
properties=db_utils.get_test_oneview_properties(),
|
||||
driver_info=db_utils.get_test_oneview_driver_info(),
|
||||
)
|
||||
|
@ -15,7 +15,6 @@
|
||||
|
||||
import mock
|
||||
|
||||
from ironic.common import driver_factory
|
||||
from ironic.common import exception
|
||||
from ironic.common import states
|
||||
from ironic.conductor import task_manager
|
||||
@ -25,14 +24,10 @@ from ironic.drivers.modules import iscsi_deploy
|
||||
from ironic.drivers.modules.oneview import common
|
||||
from ironic.drivers.modules.oneview import deploy
|
||||
from ironic.drivers.modules.oneview import deploy_utils
|
||||
from ironic.tests.unit.db import base as db_base
|
||||
from ironic.tests.unit.db import utils as db_utils
|
||||
from ironic.tests.unit.drivers.modules.oneview import test_common
|
||||
from ironic.tests.unit.objects import utils as obj_utils
|
||||
|
||||
METHODS = ['iter_nodes', 'update_node', 'do_provisioning_action']
|
||||
PXE_DRV_INFO_DICT = db_utils.get_test_pxe_driver_info()
|
||||
PXE_INST_INFO_DICT = db_utils.get_test_pxe_instance_info()
|
||||
|
||||
oneview_error = common.SERVER_HARDWARE_ALLOCATION_ERROR
|
||||
maintenance_reason = common.NODE_IN_USE_BY_ONEVIEW
|
||||
@ -232,7 +227,9 @@ class OneViewPeriodicTasks(test_common.BaseOneViewTest):
|
||||
self.assertNotIn('oneview_error', self.node.driver_internal_info)
|
||||
|
||||
|
||||
class OneViewIscsiDeployTestCase(db_base.DbTestCase):
|
||||
class OneViewIscsiDeployTestCase(test_common.BaseOneViewTest):
|
||||
|
||||
deploy_interface = 'oneview-iscsi'
|
||||
|
||||
def setUp(self):
|
||||
super(OneViewIscsiDeployTestCase, self).setUp()
|
||||
@ -240,24 +237,14 @@ class OneViewIscsiDeployTestCase(db_base.DbTestCase):
|
||||
self.config(username='user', group='oneview')
|
||||
self.config(password='password', group='oneview')
|
||||
|
||||
self.config(enabled_drivers=['iscsi_pxe_oneview'])
|
||||
self.driver = driver_factory.get_driver('iscsi_pxe_oneview')
|
||||
|
||||
OV_DRV_INFO_DICT = db_utils.get_test_oneview_driver_info()
|
||||
OV_DRV_INFO_DICT.update(PXE_DRV_INFO_DICT)
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, driver='iscsi_pxe_oneview',
|
||||
properties=db_utils.get_test_oneview_properties(),
|
||||
driver_info=OV_DRV_INFO_DICT,
|
||||
instance_info=PXE_INST_INFO_DICT,
|
||||
)
|
||||
self.port = obj_utils.create_test_port(self.context,
|
||||
node_id=self.node.id)
|
||||
self.info = common.get_oneview_info(self.node)
|
||||
|
||||
def test_get_properties(self):
|
||||
expected = common.COMMON_PROPERTIES
|
||||
self.assertEqual(expected, self.driver.deploy.get_properties())
|
||||
self.assertEqual(expected,
|
||||
deploy.OneViewIscsiDeploy().get_properties())
|
||||
|
||||
@mock.patch.object(common, 'validate_oneview_resources_compatibility',
|
||||
spect_set=True, autospec=True)
|
||||
@ -360,31 +347,24 @@ class OneViewIscsiDeployTestCase(db_base.DbTestCase):
|
||||
self.assertTrue(deallocate_server_hardware_mock.called)
|
||||
|
||||
|
||||
class OneViewAgentDeployTestCase(db_base.DbTestCase):
|
||||
class OneViewAgentDeployTestCase(test_common.BaseOneViewTest):
|
||||
|
||||
deploy_interface = 'oneview-direct'
|
||||
|
||||
def setUp(self):
|
||||
super(OneViewAgentDeployTestCase, self).setUp()
|
||||
self.config(manager_url='https://1.2.3.4', group='oneview')
|
||||
self.config(username='user', group='oneview')
|
||||
self.config(password='password', group='oneview')
|
||||
|
||||
self.config(enabled_drivers=['agent_pxe_oneview'])
|
||||
self.driver = driver_factory.get_driver('agent_pxe_oneview')
|
||||
|
||||
OV_DRV_INFO_DICT = db_utils.get_test_oneview_driver_info()
|
||||
OV_DRV_INFO_DICT.update(PXE_DRV_INFO_DICT)
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, driver='agent_pxe_oneview',
|
||||
properties=db_utils.get_test_oneview_properties(),
|
||||
driver_info=OV_DRV_INFO_DICT,
|
||||
instance_info=PXE_INST_INFO_DICT,
|
||||
)
|
||||
self.port = obj_utils.create_test_port(self.context,
|
||||
node_id=self.node.id)
|
||||
self.info = common.get_oneview_info(self.node)
|
||||
|
||||
def test_get_properties(self):
|
||||
expected = common.COMMON_PROPERTIES
|
||||
self.assertEqual(expected, self.driver.deploy.get_properties())
|
||||
self.assertEqual(expected,
|
||||
deploy.OneViewAgentDeploy().get_properties())
|
||||
|
||||
@mock.patch.object(common, 'validate_oneview_resources_compatibility',
|
||||
spect_set=True, autospec=True)
|
||||
|
@ -18,59 +18,15 @@ import mock
|
||||
from ironic.conductor import task_manager
|
||||
from ironic.drivers.modules.oneview import common as ov_common
|
||||
from ironic.drivers.modules.oneview import deploy_utils
|
||||
from ironic.tests.unit.db import base as db_base
|
||||
from ironic.tests.unit.db import utils as db_utils
|
||||
from ironic.tests.unit.objects import utils as obj_utils
|
||||
from ironic.tests.unit.drivers.modules.oneview import test_common
|
||||
|
||||
|
||||
class AgentPXEOneViewInspectTestCase(db_base.DbTestCase):
|
||||
class OneViewInspectTestCase(test_common.BaseOneViewTest):
|
||||
|
||||
def setUp(self):
|
||||
super(AgentPXEOneViewInspectTestCase, self).setUp()
|
||||
super(OneViewInspectTestCase, self).setUp()
|
||||
self.config(enabled=True, group='inspector')
|
||||
self.config(manager_url='https://1.2.3.4', group='oneview')
|
||||
self.config(enabled_drivers=['agent_pxe_oneview'])
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, driver='agent_pxe_oneview',
|
||||
properties=db_utils.get_test_oneview_properties(),
|
||||
driver_info=db_utils.get_test_oneview_driver_info(),
|
||||
)
|
||||
|
||||
def test_get_properties(self):
|
||||
expected = deploy_utils.get_properties()
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=True) as task:
|
||||
self.assertEqual(expected, task.driver.inspect.get_properties())
|
||||
|
||||
@mock.patch.object(ov_common, 'validate_oneview_resources_compatibility',
|
||||
autospect=True)
|
||||
def test_validate(self, mock_validate):
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=False) as task:
|
||||
task.driver.inspect.validate(task)
|
||||
self.assertTrue(mock_validate.called)
|
||||
|
||||
@mock.patch.object(deploy_utils, 'allocate_server_hardware_to_ironic',
|
||||
autospect=True)
|
||||
def test_inspect_hardware(self, mock_allocate_server_hardware_to_ironic):
|
||||
with task_manager.acquire(self.context, self.node.uuid,
|
||||
shared=False) as task:
|
||||
task.driver.inspect.inspect_hardware(task)
|
||||
self.assertTrue(mock_allocate_server_hardware_to_ironic.called)
|
||||
|
||||
|
||||
class ISCSIPXEOneViewInspectTestCase(db_base.DbTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(ISCSIPXEOneViewInspectTestCase, self).setUp()
|
||||
self.config(enabled=True, group='inspector')
|
||||
self.config(manager_url='https://1.2.3.4', group='oneview')
|
||||
self.config(enabled_drivers=['iscsi_pxe_oneview'])
|
||||
self.node = obj_utils.create_test_node(
|
||||
self.context, driver='iscsi_pxe_oneview',
|
||||
properties=db_utils.get_test_oneview_properties(),
|
||||
driver_info=db_utils.get_test_oneview_driver_info(),
|
||||
)
|
||||
|
||||
def test_get_properties(self):
|
||||
expected = deploy_utils.get_properties()
|
||||
|
@ -15,16 +15,9 @@
|
||||
|
||||
"""Test class for HPE OneView Drivers."""
|
||||
|
||||
import mock
|
||||
import testtools
|
||||
|
||||
from ironic.common import exception
|
||||
from ironic.conductor import task_manager
|
||||
from ironic.drivers.modules import agent
|
||||
from ironic.drivers.modules import noop
|
||||
from ironic.drivers.modules.oneview import deploy
|
||||
from ironic.drivers.modules.oneview import management
|
||||
from ironic.drivers.modules.oneview import power
|
||||
from ironic.drivers.modules import pxe
|
||||
from ironic.drivers.modules.storage import noop as noop_storage
|
||||
from ironic.drivers import oneview
|
||||
@ -131,42 +124,3 @@ class OneViewHardwareTestCase(db_base.DbTestCase):
|
||||
oneview.power.OneViewPower)
|
||||
self.assertIsInstance(task.driver.raid,
|
||||
agent.AgentRAID)
|
||||
|
||||
|
||||
@mock.patch.object(oneview.importutils, 'try_import', autospec=True)
|
||||
class AgentPXEOneViewDriversTestCase(testtools.TestCase):
|
||||
|
||||
def test_oneview_agent_driver(self, mock_try_import):
|
||||
mock_try_import.return_value = True
|
||||
driver = oneview.AgentPXEOneViewDriver()
|
||||
|
||||
self.assertIsInstance(driver.boot, pxe.PXEBoot)
|
||||
self.assertIsInstance(driver.power, power.OneViewPower)
|
||||
self.assertIsInstance(driver.deploy, deploy.OneViewAgentDeploy)
|
||||
self.assertIsInstance(driver.management, management.OneViewManagement)
|
||||
|
||||
def test_oneview_agent_driver_exc(self, mock_try_import):
|
||||
mock_try_import.return_value = None
|
||||
|
||||
self.assertRaises(exception.DriverLoadError,
|
||||
oneview.AgentPXEOneViewDriver)
|
||||
|
||||
|
||||
@mock.patch.object(oneview.importutils, 'try_import', autospec=True)
|
||||
class ISCSIPXEOneViewDriversTestCase(testtools.TestCase):
|
||||
|
||||
def test_oneview_iscsi_driver(self, mock_try_import):
|
||||
mock_try_import.return_value = True
|
||||
|
||||
driver = oneview.ISCSIPXEOneViewDriver()
|
||||
|
||||
self.assertIsInstance(driver.boot, pxe.PXEBoot)
|
||||
self.assertIsInstance(driver.power, power.OneViewPower)
|
||||
self.assertIsInstance(driver.deploy, deploy.OneViewIscsiDeploy)
|
||||
self.assertIsInstance(driver.management, management.OneViewManagement)
|
||||
|
||||
def test_oneview_iscsi_driver_exc(self, mock_try_import):
|
||||
mock_try_import.return_value = None
|
||||
|
||||
self.assertRaises(exception.DriverLoadError,
|
||||
oneview.ISCSIPXEOneViewDriver)
|
||||
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
The deprecated classic drivers ``iscsi_pxe_oneview`` and
|
||||
``agent_pxe_oneview`` have been removed. Please use the ``oneview``
|
||||
hardware type.
|
@ -56,9 +56,7 @@ ironic.drivers =
|
||||
agent_ipmitool = ironic.drivers.ipmi:AgentAndIPMIToolDriver
|
||||
agent_ipmitool_socat = ironic.drivers.ipmi:AgentAndIPMIToolAndSocatDriver
|
||||
agent_irmc = ironic.drivers.irmc:IRMCVirtualMediaAgentDriver
|
||||
agent_pxe_oneview = ironic.drivers.oneview:AgentPXEOneViewDriver
|
||||
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_irmc = ironic.drivers.pxe:PXEAndIRMCDriver
|
||||
|
Loading…
Reference in New Issue
Block a user