Remove python-oneviewclient from oneview hardware type.
This patch removes the ``python-oneviewclient`` library from ``oneview`` hardware type since it was migrated to ``hponeview`` and ``python-ilorest-library``. Change-Id: I3393189abdff6a0e56f54375877cc310d72ff5b1 Closes-Bug: #1693788
This commit is contained in:
parent
22711ba98b
commit
f8bf0ad51b
@ -23,10 +23,9 @@ following classic drivers:
|
|||||||
Classic Drivers
|
Classic Drivers
|
||||||
===============
|
===============
|
||||||
|
|
||||||
The ``iscsi_pxe_oneview`` and ``agent_pxe_oneview`` drivers implement the
|
The ``iscsi_pxe_oneview`` and ``agent_pxe_oneview`` drivers implement the core
|
||||||
core interfaces of an ironic Driver [2]_, and use the ``python-oneviewclient``
|
interfaces of an ironic Driver [2]_, and use the ``hpOneView`` [3]_ library
|
||||||
[3]_ to provide communication between ironic and OneView through OneView's
|
to provide communication between ironic and OneView through OneView's REST API.
|
||||||
REST API.
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Classic drivers will be deprecated in favor of Hardware Types.
|
Classic drivers will be deprecated in favor of Hardware Types.
|
||||||
@ -39,15 +38,15 @@ process:
|
|||||||
* The ironic driver for OneView, which can be:
|
* The ironic driver for OneView, which can be:
|
||||||
* `iscsi_pxe_oneview` or
|
* `iscsi_pxe_oneview` or
|
||||||
* `agent_pxe_oneview`
|
* `agent_pxe_oneview`
|
||||||
* The python-oneviewclient library
|
* The hpOneView library
|
||||||
* The OneView appliance
|
* The OneView appliance
|
||||||
|
|
||||||
The role of ironic is to serve as a bare metal provider to OneView's managed
|
The role of ironic is to serve as a bare metal provider to OneView's managed
|
||||||
physical hardware and to provide communication with other necessary OpenStack
|
physical hardware and to provide communication with other necessary OpenStack
|
||||||
services such as Nova and Glance. When ironic receives a boot request, it
|
services such as Nova and Glance. When ironic receives a boot request, it
|
||||||
works together with the ironic OneView driver to access a machine in OneView,
|
works together with the ironic OneView driver to access a machine in OneView,
|
||||||
the ``python-oneviewclient`` being responsible for the communication with the
|
the ``hpOneView`` being responsible for the communication with the OneView
|
||||||
OneView appliance.
|
appliance.
|
||||||
|
|
||||||
From the Newton release on, OneView drivers enables a new feature called
|
From the Newton release on, OneView drivers enables a new feature called
|
||||||
**dynamic allocation** of nodes [6]_. In this model, the driver allocates
|
**dynamic allocation** of nodes [6]_. In this model, the driver allocates
|
||||||
@ -72,14 +71,14 @@ The following requirements apply for both ``iscsi_pxe_oneview`` and
|
|||||||
|
|
||||||
Minimum version supported is 2.0.
|
Minimum version supported is 2.0.
|
||||||
|
|
||||||
* ``python-oneviewclient`` is a python package containing a client to manage
|
* ``hpOneView`` is a python package containing a client to manage the
|
||||||
the communication between ironic and OneView.
|
communication between ironic and OneView.
|
||||||
|
|
||||||
Install the ``python-oneviewclient`` module to enable the communication.
|
Install the ``hpOneView`` module to enable the communication. Minimum version
|
||||||
Minimum version required is 2.4.0 but it is recommended to install the most
|
required is 4.4.0 but it is recommended to install the most up-to-date
|
||||||
up-to-date version::
|
version::
|
||||||
|
|
||||||
$ pip install "python-oneviewclient<3.0.0,>=2.4.0"
|
$ pip install "hpOneView>=4.4.0"
|
||||||
|
|
||||||
* ``ironic-inspector`` if using hardware inspection.
|
* ``ironic-inspector`` if using hardware inspection.
|
||||||
|
|
||||||
@ -97,7 +96,7 @@ Tested platforms
|
|||||||
- Proliant BL460c Gen8
|
- Proliant BL460c Gen8
|
||||||
- Proliant BL460c Gen9
|
- Proliant BL460c Gen9
|
||||||
- Proliant BL465c Gen8
|
- Proliant BL465c Gen8
|
||||||
- Proliant DL360 Gen9 (starting with python-oneviewclient 2.1.0)
|
- Proliant DL360 Gen9
|
||||||
|
|
||||||
Notice that for the driver to work correctly with Gen8 and Gen9 DL servers
|
Notice that for the driver to work correctly with Gen8 and Gen9 DL servers
|
||||||
in general, the hardware also needs to run version 4.2.3 of iLO, with
|
in general, the hardware also needs to run version 4.2.3 of iLO, with
|
||||||
@ -435,7 +434,7 @@ References
|
|||||||
==========
|
==========
|
||||||
.. [1] HP OneView - https://www.hpe.com/us/en/integrated-systems/software.html
|
.. [1] HP OneView - https://www.hpe.com/us/en/integrated-systems/software.html
|
||||||
.. [2] :ref:`architecture_drivers`
|
.. [2] :ref:`architecture_drivers`
|
||||||
.. [3] python-oneviewclient - https://pypi.python.org/pypi/python-oneviewclient
|
.. [3] hpOneView - https://pypi.python.org/pypi/hpOneView
|
||||||
.. [6] Dynamic Allocation in OneView drivers - http://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/oneview-drivers-dynamic-allocation.html
|
.. [6] Dynamic Allocation in OneView drivers - http://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/oneview-drivers-dynamic-allocation.html
|
||||||
.. [7] ironic-oneviewd - https://pypi.python.org/pypi/ironic-oneviewd/
|
.. [7] ironic-oneviewd - https://pypi.python.org/pypi/ironic-oneviewd/
|
||||||
.. [8] ironic-oneview-cli - https://pypi.python.org/pypi/ironic-oneview-cli/
|
.. [8] ironic-oneview-cli - https://pypi.python.org/pypi/ironic-oneview-cli/
|
||||||
|
@ -2954,10 +2954,6 @@
|
|||||||
# Path to CA certificate. (string value)
|
# Path to CA certificate. (string value)
|
||||||
#tls_cacert_file = <None>
|
#tls_cacert_file = <None>
|
||||||
|
|
||||||
# Max connection retries to check changes on OneView. (integer
|
|
||||||
# value)
|
|
||||||
#max_polling_attempts = 12
|
|
||||||
|
|
||||||
# Whether to enable the periodic tasks for OneView driver be
|
# Whether to enable the periodic tasks for OneView driver be
|
||||||
# aware when OneView hardware resources are taken and released
|
# aware when OneView hardware resources are taken and released
|
||||||
# by Ironic or OneView users and proactively manage nodes in
|
# by Ironic or OneView users and proactively manage nodes in
|
||||||
|
@ -31,9 +31,6 @@ opts = [
|
|||||||
help=_('Option to allow insecure connection with OneView.')),
|
help=_('Option to allow insecure connection with OneView.')),
|
||||||
cfg.StrOpt('tls_cacert_file',
|
cfg.StrOpt('tls_cacert_file',
|
||||||
help=_('Path to CA certificate.')),
|
help=_('Path to CA certificate.')),
|
||||||
cfg.IntOpt('max_polling_attempts',
|
|
||||||
default=12,
|
|
||||||
help=_('Max connection retries to check changes on OneView.')),
|
|
||||||
cfg.BoolOpt('enable_periodic_tasks',
|
cfg.BoolOpt('enable_periodic_tasks',
|
||||||
default=True,
|
default=True,
|
||||||
help=_('Whether to enable the periodic tasks for OneView '
|
help=_('Whether to enable the periodic tasks for OneView '
|
||||||
|
@ -40,7 +40,6 @@ from ironic.drivers.modules.irmc import inspect as irmc_inspect
|
|||||||
from ironic.drivers.modules.irmc import management as irmc_management
|
from ironic.drivers.modules.irmc import management as irmc_management
|
||||||
from ironic.drivers.modules.irmc import power as irmc_power
|
from ironic.drivers.modules.irmc import power as irmc_power
|
||||||
from ironic.drivers.modules import iscsi_deploy
|
from ironic.drivers.modules import iscsi_deploy
|
||||||
from ironic.drivers.modules.oneview import common as oneview_common
|
|
||||||
from ironic.drivers.modules.oneview import management as oneview_management
|
from ironic.drivers.modules.oneview import management as oneview_management
|
||||||
from ironic.drivers.modules.oneview import power as oneview_power
|
from ironic.drivers.modules.oneview import power as oneview_power
|
||||||
from ironic.drivers.modules import pxe
|
from ironic.drivers.modules import pxe
|
||||||
@ -219,19 +218,14 @@ class FakeCIMCDriver(base.BaseDriver):
|
|||||||
|
|
||||||
|
|
||||||
class FakeOneViewDriver(base.BaseDriver):
|
class FakeOneViewDriver(base.BaseDriver):
|
||||||
"""Fake OneView driver. For testing purposes. """
|
"""Fake OneView driver. For testing purposes."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
if not importutils.try_import('oneview_client.client'):
|
if not importutils.try_import('hpOneView.oneview_client'):
|
||||||
raise exception.DriverLoadError(
|
raise exception.DriverLoadError(
|
||||||
driver=self.__class__.__name__,
|
driver=self.__class__.__name__,
|
||||||
reason=_("Unable to import python-oneviewclient library"))
|
reason=_("Unable to import hpOneView library"))
|
||||||
|
|
||||||
# Checks connectivity to OneView and version compatibility on driver
|
|
||||||
# initialization
|
|
||||||
oneview_client = oneview_common.get_oneview_client()
|
|
||||||
oneview_client.verify_oneview_version()
|
|
||||||
oneview_client.verify_credentials()
|
|
||||||
self.power = oneview_power.OneViewPower()
|
self.power = oneview_power.OneViewPower()
|
||||||
self.management = oneview_management.OneViewManagement()
|
self.management = oneview_management.OneViewManagement()
|
||||||
self.boot = fake.FakeBoot()
|
self.boot = fake.FakeBoot()
|
||||||
|
@ -27,11 +27,6 @@ from ironic.drivers import utils
|
|||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
client = importutils.try_import('oneview_client.client')
|
|
||||||
oneview_utils = importutils.try_import('oneview_client.utils')
|
|
||||||
oneview_states = importutils.try_import('oneview_client.states')
|
|
||||||
oneview_exceptions = importutils.try_import('oneview_client.exceptions')
|
|
||||||
|
|
||||||
hponeview_client = importutils.try_import('hpOneView.oneview_client')
|
hponeview_client = importutils.try_import('hpOneView.oneview_client')
|
||||||
redfish = importutils.try_import('redfish')
|
redfish = importutils.try_import('redfish')
|
||||||
client_exception = importutils.try_import('hpOneView.exceptions')
|
client_exception = importutils.try_import('hpOneView.exceptions')
|
||||||
@ -72,25 +67,6 @@ NODE_IN_USE_BY_ONEVIEW = 'node in use by OneView'
|
|||||||
SERVER_HARDWARE_ALLOCATION_ERROR = 'server hardware allocation error'
|
SERVER_HARDWARE_ALLOCATION_ERROR = 'server hardware allocation error'
|
||||||
|
|
||||||
|
|
||||||
def get_oneview_client():
|
|
||||||
"""Generates an instance of the OneView client.
|
|
||||||
|
|
||||||
Generates an instance of the OneView client using the imported
|
|
||||||
oneview_client library.
|
|
||||||
|
|
||||||
:returns: an instance of the OneView client
|
|
||||||
"""
|
|
||||||
oneview_client = client.Client(
|
|
||||||
manager_url=CONF.oneview.manager_url,
|
|
||||||
username=CONF.oneview.username,
|
|
||||||
password=CONF.oneview.password,
|
|
||||||
allow_insecure_connections=CONF.oneview.allow_insecure_connections,
|
|
||||||
tls_cacert_file=CONF.oneview.tls_cacert_file,
|
|
||||||
max_polling_attempts=CONF.oneview.max_polling_attempts
|
|
||||||
)
|
|
||||||
return oneview_client
|
|
||||||
|
|
||||||
|
|
||||||
def prepare_manager_url(manager_url):
|
def prepare_manager_url(manager_url):
|
||||||
# NOTE(mrtenio) python-oneviewclient uses https or http in the manager_url
|
# NOTE(mrtenio) python-oneviewclient uses https or http in the manager_url
|
||||||
# while python-hpOneView does not. This will not be necessary when
|
# while python-hpOneView does not. This will not be necessary when
|
||||||
|
@ -25,8 +25,6 @@ from ironic.drivers.modules.oneview import common
|
|||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
oneview_exception = importutils.try_import('oneview_client.exceptions')
|
|
||||||
oneview_utils = importutils.try_import('oneview_client.utils')
|
|
||||||
client_exception = importutils.try_import('hpOneView.exceptions')
|
client_exception = importutils.try_import('hpOneView.exceptions')
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
|
|
||||||
from futurist import periodics
|
from futurist import periodics
|
||||||
from ironic_lib import metrics_utils
|
from ironic_lib import metrics_utils
|
||||||
from oslo_utils import importutils
|
|
||||||
|
|
||||||
from ironic.common import exception
|
from ironic.common import exception
|
||||||
from ironic.common import states
|
from ironic.common import states
|
||||||
@ -27,9 +26,6 @@ from ironic.drivers.modules.oneview import deploy_utils
|
|||||||
|
|
||||||
METRICS = metrics_utils.get_metrics_logger(__name__)
|
METRICS = metrics_utils.get_metrics_logger(__name__)
|
||||||
|
|
||||||
oneview_exception = importutils.try_import('oneview_client.exceptions')
|
|
||||||
oneview_utils = importutils.try_import('oneview_client.utils')
|
|
||||||
|
|
||||||
|
|
||||||
class OneViewInspect(inspector.Inspector):
|
class OneViewInspect(inspector.Inspector):
|
||||||
"""Interface for in band inspection."""
|
"""Interface for in band inspection."""
|
||||||
|
@ -26,7 +26,6 @@ from ironic.drivers.modules.oneview import common
|
|||||||
from ironic.drivers.modules.oneview import deploy_utils
|
from ironic.drivers.modules.oneview import deploy_utils
|
||||||
|
|
||||||
client_exception = importutils.try_import('hpOneView.exceptions')
|
client_exception = importutils.try_import('hpOneView.exceptions')
|
||||||
oneview_exceptions = importutils.try_import('oneview_client.exceptions')
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
METRICS = metrics_utils.get_metrics_logger(__name__)
|
METRICS = metrics_utils.get_metrics_logger(__name__)
|
||||||
|
@ -27,7 +27,6 @@ from ironic.drivers.modules.oneview import deploy_utils
|
|||||||
from ironic.drivers.modules.oneview import management
|
from ironic.drivers.modules.oneview import management
|
||||||
|
|
||||||
client_exception = importutils.try_import('hpOneView.exceptions')
|
client_exception = importutils.try_import('hpOneView.exceptions')
|
||||||
oneview_exceptions = importutils.try_import('oneview_client.exceptions')
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -23,7 +23,6 @@ from ironic.common.i18n import _
|
|||||||
from ironic.drivers import base
|
from ironic.drivers import base
|
||||||
from ironic.drivers import generic
|
from ironic.drivers import generic
|
||||||
from ironic.drivers.modules import noop
|
from ironic.drivers.modules import noop
|
||||||
from ironic.drivers.modules.oneview import common
|
|
||||||
from ironic.drivers.modules.oneview import deploy
|
from ironic.drivers.modules.oneview import deploy
|
||||||
from ironic.drivers.modules.oneview import inspect
|
from ironic.drivers.modules.oneview import inspect
|
||||||
from ironic.drivers.modules.oneview import management
|
from ironic.drivers.modules.oneview import management
|
||||||
@ -68,11 +67,6 @@ class AgentPXEOneViewDriver(base.BaseDriver):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
if not importutils.try_import('oneview_client.client'):
|
|
||||||
raise exception.DriverLoadError(
|
|
||||||
driver=self.__class__.__name__,
|
|
||||||
reason=_("Unable to import python-oneviewclient library"))
|
|
||||||
|
|
||||||
if not importutils.try_import('hpOneView.oneview_client'):
|
if not importutils.try_import('hpOneView.oneview_client'):
|
||||||
raise exception.DriverLoadError(
|
raise exception.DriverLoadError(
|
||||||
driver=self.__class__.__name__,
|
driver=self.__class__.__name__,
|
||||||
@ -83,11 +77,6 @@ class AgentPXEOneViewDriver(base.BaseDriver):
|
|||||||
driver=self.__class__.__name__,
|
driver=self.__class__.__name__,
|
||||||
reason=_("Unable to import python-ilorest-library"))
|
reason=_("Unable to import python-ilorest-library"))
|
||||||
|
|
||||||
# Checks connectivity to OneView and version compatibility on driver
|
|
||||||
# initialization
|
|
||||||
oneview_client = common.get_oneview_client()
|
|
||||||
oneview_client.verify_oneview_version()
|
|
||||||
oneview_client.verify_credentials()
|
|
||||||
self.power = power.OneViewPower()
|
self.power = power.OneViewPower()
|
||||||
self.management = management.OneViewManagement()
|
self.management = management.OneViewManagement()
|
||||||
self.boot = pxe.PXEBoot()
|
self.boot = pxe.PXEBoot()
|
||||||
@ -106,11 +95,6 @@ class ISCSIPXEOneViewDriver(base.BaseDriver):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
if not importutils.try_import('oneview_client.client'):
|
|
||||||
raise exception.DriverLoadError(
|
|
||||||
driver=self.__class__.__name__,
|
|
||||||
reason=_("Unable to import python-oneviewclient library"))
|
|
||||||
|
|
||||||
if not importutils.try_import('hpOneView.oneview_client'):
|
if not importutils.try_import('hpOneView.oneview_client'):
|
||||||
raise exception.DriverLoadError(
|
raise exception.DriverLoadError(
|
||||||
driver=self.__class__.__name__,
|
driver=self.__class__.__name__,
|
||||||
@ -121,11 +105,6 @@ class ISCSIPXEOneViewDriver(base.BaseDriver):
|
|||||||
driver=self.__class__.__name__,
|
driver=self.__class__.__name__,
|
||||||
reason=_("Unable to import python-ilorest-library"))
|
reason=_("Unable to import python-ilorest-library"))
|
||||||
|
|
||||||
# Checks connectivity to OneView and version compatibility on driver
|
|
||||||
# initialization
|
|
||||||
oneview_client = common.get_oneview_client()
|
|
||||||
oneview_client.verify_oneview_version()
|
|
||||||
oneview_client.verify_credentials()
|
|
||||||
self.power = power.OneViewPower()
|
self.power = power.OneViewPower()
|
||||||
self.management = management.OneViewManagement()
|
self.management = management.OneViewManagement()
|
||||||
self.boot = pxe.PXEBoot()
|
self.boot = pxe.PXEBoot()
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import mock
|
import mock
|
||||||
from oslo_utils import importutils
|
|
||||||
|
|
||||||
from ironic.common import driver_factory
|
from ironic.common import driver_factory
|
||||||
from ironic.common import exception
|
from ironic.common import exception
|
||||||
@ -31,8 +30,6 @@ from ironic.tests.unit.db import base as db_base
|
|||||||
from ironic.tests.unit.db import utils as db_utils
|
from ironic.tests.unit.db import utils as db_utils
|
||||||
from ironic.tests.unit.objects import utils as obj_utils
|
from ironic.tests.unit.objects import utils as obj_utils
|
||||||
|
|
||||||
oneview_models = importutils.try_import('oneview_client.models')
|
|
||||||
|
|
||||||
METHODS = ['iter_nodes', 'update_node', 'do_provisioning_action']
|
METHODS = ['iter_nodes', 'update_node', 'do_provisioning_action']
|
||||||
PXE_DRV_INFO_DICT = db_utils.get_test_pxe_driver_info()
|
PXE_DRV_INFO_DICT = db_utils.get_test_pxe_driver_info()
|
||||||
PXE_INST_INFO_DICT = db_utils.get_test_pxe_instance_info()
|
PXE_INST_INFO_DICT = db_utils.get_test_pxe_instance_info()
|
||||||
@ -84,9 +81,6 @@ def _setup_node_in_cleanfailed_state_without_oneview_error(node):
|
|||||||
class OneViewDriverDeploy(deploy.OneViewPeriodicTasks):
|
class OneViewDriverDeploy(deploy.OneViewPeriodicTasks):
|
||||||
oneview_driver = 'fake_oneview'
|
oneview_driver = 'fake_oneview'
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
self.oneview_client = mock.MagicMock()
|
|
||||||
|
|
||||||
|
|
||||||
@mock.patch('ironic.objects.Node', spec_set=True, autospec=True)
|
@mock.patch('ironic.objects.Node', spec_set=True, autospec=True)
|
||||||
@mock.patch.object(deploy_utils, 'is_node_in_use_by_oneview')
|
@mock.patch.object(deploy_utils, 'is_node_in_use_by_oneview')
|
||||||
|
@ -29,10 +29,7 @@ from ironic.tests.unit.db import base as db_base
|
|||||||
from ironic.tests.unit.db import utils as db_utils
|
from ironic.tests.unit.db import utils as db_utils
|
||||||
from ironic.tests.unit.objects import utils as obj_utils
|
from ironic.tests.unit.objects import utils as obj_utils
|
||||||
|
|
||||||
|
|
||||||
client_exception = importutils.try_import('hpOneView.exceptions')
|
client_exception = importutils.try_import('hpOneView.exceptions')
|
||||||
oneview_exceptions = importutils.try_import('oneview_client.exceptions')
|
|
||||||
oneview_models = importutils.try_import('oneview_client.models')
|
|
||||||
|
|
||||||
|
|
||||||
@mock.patch.object(common, 'get_hponeview_client')
|
@mock.patch.object(common, 'get_hponeview_client')
|
||||||
|
@ -31,8 +31,6 @@ from ironic.tests.unit.db import utils as db_utils
|
|||||||
from ironic.tests.unit.objects import utils as obj_utils
|
from ironic.tests.unit.objects import utils as obj_utils
|
||||||
|
|
||||||
client_exception = importutils.try_import('hpOneView.exceptions')
|
client_exception = importutils.try_import('hpOneView.exceptions')
|
||||||
oneview_models = importutils.try_import('oneview_client.models')
|
|
||||||
oneview_exceptions = importutils.try_import('oneview_client.exceptions')
|
|
||||||
|
|
||||||
|
|
||||||
class OneViewPowerDriverTestCase(db_base.DbTestCase):
|
class OneViewPowerDriverTestCase(db_base.DbTestCase):
|
||||||
|
@ -124,26 +124,6 @@ SCCICLIENT_VIOM_CONF_SPEC = (
|
|||||||
'terminate',
|
'terminate',
|
||||||
)
|
)
|
||||||
|
|
||||||
ONEVIEWCLIENT_SPEC = (
|
|
||||||
'client',
|
|
||||||
'states',
|
|
||||||
'exceptions',
|
|
||||||
'models',
|
|
||||||
'utils',
|
|
||||||
)
|
|
||||||
|
|
||||||
ONEVIEWCLIENT_CLIENT_CLS_SPEC = (
|
|
||||||
)
|
|
||||||
|
|
||||||
ONEVIEWCLIENT_STATES_SPEC = (
|
|
||||||
'ONEVIEW_POWER_OFF',
|
|
||||||
'ONEVIEW_POWERING_OFF',
|
|
||||||
'ONEVIEW_POWER_ON',
|
|
||||||
'ONEVIEW_POWERING_ON',
|
|
||||||
'ONEVIEW_RESETTING',
|
|
||||||
'ONEVIEW_ERROR',
|
|
||||||
)
|
|
||||||
|
|
||||||
HPE_ONEVIEW_SPEC = (
|
HPE_ONEVIEW_SPEC = (
|
||||||
'oneview_client',
|
'oneview_client',
|
||||||
'resources',
|
'resources',
|
||||||
|
@ -25,7 +25,6 @@ Current list of mocked libraries:
|
|||||||
- proliantutils
|
- proliantutils
|
||||||
- pysnmp
|
- pysnmp
|
||||||
- scciclient
|
- scciclient
|
||||||
- oneview_client
|
|
||||||
- hpOneView
|
- hpOneView
|
||||||
- pywsman
|
- pywsman
|
||||||
- python-dracclient
|
- python-dracclient
|
||||||
@ -69,37 +68,6 @@ if not proliantutils:
|
|||||||
six.moves.reload_module(sys.modules['ironic.drivers.ilo'])
|
six.moves.reload_module(sys.modules['ironic.drivers.ilo'])
|
||||||
|
|
||||||
|
|
||||||
oneview_client = importutils.try_import('oneview_client')
|
|
||||||
if not oneview_client:
|
|
||||||
oneview_client = mock.MagicMock(spec_set=mock_specs.ONEVIEWCLIENT_SPEC)
|
|
||||||
sys.modules['oneview_client'] = oneview_client
|
|
||||||
sys.modules['oneview_client.client'] = oneview_client.client
|
|
||||||
states = mock.MagicMock(
|
|
||||||
spec_set=mock_specs.ONEVIEWCLIENT_STATES_SPEC,
|
|
||||||
ONEVIEW_POWER_OFF='Off',
|
|
||||||
ONEVIEW_POWERING_OFF='PoweringOff',
|
|
||||||
ONEVIEW_POWER_ON='On',
|
|
||||||
ONEVIEW_POWERING_ON='PoweringOn',
|
|
||||||
ONEVIEW_RESETTING='Resetting',
|
|
||||||
ONEVIEW_ERROR='error')
|
|
||||||
sys.modules['oneview_client.states'] = states
|
|
||||||
sys.modules['oneview_client.exceptions'] = oneview_client.exceptions
|
|
||||||
sys.modules['oneview_client.utils'] = oneview_client.utils
|
|
||||||
oneview_client.exceptions.OneViewException = type('OneViewException',
|
|
||||||
(Exception,), {})
|
|
||||||
sys.modules['oneview_client.models'] = oneview_client.models
|
|
||||||
|
|
||||||
oneview_client_module = importutils.try_import('oneview_client.client')
|
|
||||||
# NOTE(vdrok): Always mock the oneview client, as it tries to establish
|
|
||||||
# connection to oneview right in __init__, and stevedore does not seem to care
|
|
||||||
# about mocks when it loads a module in mock_the_extension_manager
|
|
||||||
sys.modules['oneview_client.client'].Client = mock.MagicMock(
|
|
||||||
spec_set=mock_specs.ONEVIEWCLIENT_CLIENT_CLS_SPEC
|
|
||||||
)
|
|
||||||
if 'ironic.drivers.oneview' in sys.modules:
|
|
||||||
six.moves.reload_module(sys.modules['ironic.drivers.modules.oneview'])
|
|
||||||
|
|
||||||
|
|
||||||
hpOneView = importutils.try_import('hpOneView')
|
hpOneView = importutils.try_import('hpOneView')
|
||||||
if not hpOneView:
|
if not hpOneView:
|
||||||
hpOneView = mock.MagicMock(spec_set=mock_specs.HPE_ONEVIEW_SPEC)
|
hpOneView = mock.MagicMock(spec_set=mock_specs.HPE_ONEVIEW_SPEC)
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
issues:
|
||||||
|
- |
|
||||||
|
The library ``python-ilorest-library`` is a fork of the
|
||||||
|
``python-redfish-library`` and imported with same name, hence conflict
|
||||||
|
when together. ``python-redfish-library`` cannot be used when ``oneview``
|
||||||
|
hardware type is in use.
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
The ``oneview`` hardware type now use ``hpOneView`` and
|
||||||
|
``python-ilorest-library`` libraries to communicate with OneView
|
||||||
|
appliances. The ``python-oneviewclient`` library is no longer used.
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
Configuration ``[oneview]max_polling_attempts`` is removed since
|
||||||
|
``hpOneView`` doesn't support this option.
|
Loading…
Reference in New Issue
Block a user