Commit Graph

103 Commits

Author SHA1 Message Date
Dmitry Tantsur 2d3e7e9ccc Remove the remaining fake drivers
The following drivers are removed here:
* fake_ilo
* fake_drac
* fake_irmc
* fake_ucs
* fake_cimc
* fake_oneview

Some clean up can be done in the unit tests, but this is out of scope
for this change.

Change-Id: Ifce3f9102384e1424d4ab624d32929f5e832206d
2018-06-18 18:52:04 +02:00
Dmitry Tantsur 495d738fb9 Remove the fake_ipmitool, fake_ipmitool_socat and fake_snmp drivers
Change-Id: I05f228f3724486351c04bf2b4b55e950fe20d724
2018-06-12 10:37:22 +02:00
Dmitry Tantsur 05e6dff464 Remove the fake_agent, fake_pxe and fake_inspector drivers
Change-Id: I2ea9d7c0f41988d063cd6e1c7a31a0dfb62c620e
2018-06-08 10:18:31 +02:00
Dmitry Tantsur d95197628c Remove the "fake" and "fake_soft_power" classic drivers
The grenade configuration is updated to disable the fake driver.

Change-Id: Ica2b466a1a22ca2e5d1362377692cc39ef53ce2c
2018-06-06 16:15:49 +02:00
Zenghui Shi 1e24ef9dde BIOS Settings: Add BIOSInterface
* Adds 'bios' interface to 'BaseDriver'

* Adds BIOSInterface driver class

* Adds fake & no-bios drivers and entries

* Implements it for 'fake-hardare' hardware type

* Adds configuration parameters:
  + [DEFAULT]/enabled_bios_interfaces
  + [DEFAULT]/default_bios_interface

* Adds 'bios_interface' field to Node object

* Handle 'bios_interface' field in _convert_to_version

* Adds bios in CLEANING_INTERFACE_PRIORITY

Drivers can implement this interface to do BIOS
configuration.

Co-Authored-By: Yolanda Robla Mota <yroblamo@redhat.com>
Co-Authored-By: Luong Anh Tuan <tuanla@vn.fujitsu.com>
Change-Id: I7e57130242b6cab21b54e35dc3c0b7819bdc43c0
Story: #1712032
2018-05-08 15:16:52 +08:00
Dmitry Tantsur d1062cfbdd Migrate the remaining classic drivers to hardware types
I've tried my best to provide a correct matching for these, but
there are two exceptions:

* fake_drac uses iscsi deploy with None boot, which cannot work,
  so changing both to fake
* some fake drivers are migrated to the 'fake' power interface,
  which is changed to include soft power as well.

The latter means that all fake classic drivers now support fake
soft power actions, while previously only fake_soft_power did.
Now fake_soft_power is identical to fake and is left for backward
compatibility

Also wrote more tests to check correctness of this migration.

Change-Id: I00c9c6ed698b10f035e65428e1a20d733c7e544a
Partial-Bug: #1690185
2018-02-01 18:38:24 +01:00
Zuul 0a5de20c2a Merge "Remove python-oneviewclient from oneview hardware type." 2018-01-27 10:43:55 +00:00
Dmitry Tantsur cc6f7bc73e Automatically migrate nodes to hardware types
This change adds a new data migration: migrate_to_hardware_types.
It works by walking through known classic drivers, detecting matching
hardware types and interfaces and updates nodes accordingly.

Nodes that cannot be updated (e.g. matching hardware type is not
enabled) are skipped. A new migration option reset_unsupported_interfaces
can be set to True to allow resetting optional interfaces to their
no-op versions.

The example implementation are provided for the community supported
IPMI and SNMP drivers, as well as for fake drivers based on them.

Change-Id: I732b44f2ab1ef73f56b352415ffd9cdd8a0e232b
Partial-Bug: #1690185
2018-01-26 21:17:26 +00:00
Hugo Nicodemos f8bf0ad51b 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
2018-01-25 01:30:27 +00:00
Hugo Nicodemos 9b523967e1 Revert "Remove python-oneviewclient from Ironic OneView drivers"
Reverting these changes because python-hpOneView does not provide HTTPS
secure connection with custom CAcert and could cause a possible security issue.

This reverts commit 037360f64d.

Change-Id: I2a95f3cd23f20c363fe97fc347c9d2619d2ab5e9
2017-11-09 16:12:03 -03:00
Hugo Nicodemos 037360f64d Remove python-oneviewclient from Ironic OneView drivers
This patch removes the python-oneviewclient library from
OneView drivers since it was migrated to python-hponeview
and python-ilorest-library.

Change-Id: I061381a941e7d7f82863b326bb7555d41395e661
Closes-Bug: #1693788
2017-11-01 13:42:22 -03:00
Richard Pioso 86e3a100a3 Fix DRAC classic driver double manage/provide
This change fixes an issue that caused a node using a Dell EMC
integrated Dell Remote Access Controller (iDRAC) classic driver,
'pxe_drac' or 'pxe_drac_inspector', to be placed in the 'clean failed'
state after a double manage/provide cycle, instead of the 'available'
state.

The deploy interface implementation used by iDRAC classic drivers has
been class ironic.drivers.modules.drac.deploy.DracDeploy, which is
derived from class ironic.drivers.modules.iscsi_deploy.ISCSIDeploy. The
only difference between them is that DracDeploy overrides the
prepare_cleaning() method to prevent the booting of the Ironic Python
Agent (IPA) ramdisk when only out-of-band RAID clean steps are
requested. However, it caused the issue and did not have its intended
effect, because Ironic Conductor boots the ramdisk regardless. The
Ironic Conductor should be modified to preclude the booting of the IPA
ramdisk fix, rather than leaving it to individual drivers.

The iDRAC classic drivers' deploy interface implementation has been
changed to ISCSIDeploy. Since class DracDeploy is no longer needed, its
source code and automated tests have been removed.

Change-Id: Ib2c9b7f9f780aaf5f6345825b1f6c9ddb4f9c41f
Closes-Bug: #1676387
Related-Bug: #1572529
Related-Bug: #1705741
2017-08-18 14:40:18 +00:00
Pavlo Shchelokovskyy 3d9895cc0b Remove SSH-based driver interfaces and drivers
SSH drivers are being unsupported for about a year now. All current
stable branches of ironic are officially supporting IPMI-capable HW
simulation via virtualbmc.
All ironic-related gate jobs have already been switched
to not use or enable those drivers.

This patch finally removes SSH-based power and managemtnt driver interfaces
and all classic drivers using those from ironic code and documentation.
Related exceptions and `ssh_connect` function, together with dependency
on `paramiko` package are removed as well.

Change-Id: Ieda7249b9cd78e3be1eff37804996295fc8d3969
Closes-Bug: #1570301
Depends-On: I9b60c9fa24652e9e64e787cd4e5b0152f51e7a28
2017-08-01 12:39:39 +00:00
Jay Faulkner 96eafdc866 Remove deprecated, untested ipminative driver
The ipminative driver was marked as unsupported on September 28, 2016,
and an email was sent to the list on March 9th, 2017 asking for
volunteers to run third-party CI to save the driver from deprecation.

Additionally, many ironic contributors who also deploy ironic have
reported instability while using this driver. For these reasons it's
being removed from the main ironic tree. If there are any users still
interested in this driver, they are invited to host it elsewhere.

Change-Id: I9bc9f4cbd916f040a636b967ec5556197ad3d8a8
Closes-bug: #1671532
2017-03-30 10:34:21 -07:00
Pavlo Shchelokovskyy 02ce7246ec Remove most unsupported drivers
In accordance with ironic CI policies, this patch removesi some drivers
that are not tested on upstream or third-party CI
and for which maintainers have not communicated any plans
to have such testing.

This includes:
- virtualbox drivers
- seamicro drivers
- msftocs drivers

Change-Id: Ia3a7d798c877f4628946ee6c56d850b9847e6c3e
Closes-Bug: #1663018
2017-02-09 08:09:03 +00:00
Naohiro Tamura f15d5b9a37 Generic power interface for soft reboot and soft power off
This patch updates the generic power interface to support SOFT_REBOOT
and SOFT_POWER_OFF. And also it introduces "timeout" optional
parameter for all power operations.

Partial-Bug: #1526226
Change-Id: I1c9bbd1f11f6a8565607c874b3c99aa10eeb62a5
2017-01-04 11:38:01 +09:00
Pavlo Shchelokovskyy 5eb4ba26dd Remove agent vendor passthru completely
This patch removes all the basic classes for lookup/heartbeat as vendor
passthru from Ironic code, as well as removes those API endpoints from
list of API public routes.

It also removes the agent vendor passthru from fake drivers.

Change-Id: Ia133a63ed4e8ed99551f6d2656d24e990300f3a2
Closes-Bug: #1640533
2016-12-13 09:31:08 +02:00
Pavlo Shchelokovskyy 87c2db4dc6 Remove iBoot, WoL and AMT drivers
This patch removes the mentioned drivers from ironic code tree.

Per our third-party drivers policy they are unsupported,
and there is no existing plan to have third-party CI for them.

Nevertheless, if anybody still needs them, they are available in
ironic-staging-drivers repo.

Change-Id: I1219892bbc1b814d80b62c8ec89b90819071870f
Related-Bug: #1640533
2016-12-13 09:31:08 +02:00
Martin Roy e806cf7a88 Remove deprecation of snmp drivers
Now that there is a gate running with virtual pdu we can officially
keep it an support it

Change-Id: Ie6accaa2a29007fa2e0c97329e37efd5f907fc7b
2016-12-09 11:28:10 -05:00
Xavier b78605487d Add inspection feature for the OneView drivers
This change is about adding the ability to the OneView drivers of doing
hardware inspection. In this context, for enable hardware under
management by OneView been inspected, is essencial a Server Profile
applied to that hardware. A Server Profile, in OneView context, means
a configuration that makes booting and connectivity operations settings
possible.

Considering in-band inspection as the inspection process that involves
booting a ramdisk on the target node and fetching information directly
from it, in this patch we extend the
ironic.drivers.modules.inspector.Inspector class to inherit the ironic
implementation for in-band inspection behaviours and to address our
needs, we override the 'inspect_hardware' method to apply the needed
Server Profile and we also override the '_periodic_check_result'
periodic task to remove the Server Profile after the inspection
process is over.

Change-Id: I77ebf4b9175c2c1df1baa6d58714ff54c97c17ff
Closes-Bug: 1621530
2016-09-28 20:50:38 -03:00
Jenkins 25fcc07507 Merge "Mark untested drivers as unsupported" 2016-09-16 17:37:50 +00:00
Jim Rollenhagen 8758116f83 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
2016-09-16 10:48:58 -04:00
Imre Farkas 8ffd5a9e4e Fix DRAC failure during automated cleaning
Issue is caused by checking node.driver_internal_info['clean_steps']
which might not exist.

Change-Id: I8fbf340bb0b20caa85e2b5809677d97ddbb3e64b
Closes-Bug: #1621385
2016-09-13 10:19:27 +02:00
Imre Farkas da93b01f32 DRAC OOB inspection
Implements out-of-band inspection in the DRAC driver using inspection
interface.

Change-Id: I0d63f31473776551550f917dbc7237564881f566
Closes-bug:  #1603454
2016-09-02 12:08:38 +02:00
Imre Farkas f358c7d85d DRAC RAID configuration
Implements out-of-band RAID management in the DRAC driver using generic
RAID interface.

Closes-Bug: #1572529

Change-Id: Ie357dfb68e663880d9806853f8f4a1954c50a877
2016-08-30 10:23:03 +02:00
Yuiko Takada Mori 857372a226 IPMITool: add IPMISocatConsole and IPMIConsole class
IPMISocatConsole is a new console interface class using ipmitool and
socat. It has the same APIs of IPMIShellinaboxConsole class and
provides TCP4/TCP6 connection service to connect serial-on-LAN of
nodes.
IPMIConsole is a new console interface class using ipmitool and used
as parent class of IPMIShellinaboxConsole and IPMISocatConsol class.

This patch set implements new console driver interfaces
IPMISocatConsole.

To use PXE + IPMItool + socat, specify pxe_ipmitool_socat.
To use IPA + IPMItool + socat, specify agent_ipmitool_socat.

Spec: https://review.openstack.org/#/c/319505/
Partial-Bug: #1553083
Change-Id: I35a7dcb7e89baf16d096501fd44dbc12adc8c61e
2016-07-25 16:42:31 +09:00
Mario Villaplana ea06393fe8 Allow vendor drivers to acquire shared locks
Previously, all node vendor passthru methods required an exclusive lock
on the node to validate and start the task. This allows node vendor
passthru methods to specify require_exclusive_lock=False in their
passthru decorators to let the conductor acquire a shared lock on a
node.

Change-Id: I43cf43bc5c17f44a735e16c3c5cb744cf6911d27
Closes-Bug: #1481665
2016-05-13 14:13:57 +00:00
Jenkins 4d9815f357 Merge "Add hardware inspection module for iRMC driver" 2016-02-12 10:43:19 +00:00
Naohiro Tamura 37590a8633 Add hardware inspection module for iRMC driver
This module enables iRMC out-of-band hardware inspection for FUJITSU
PRIMERGY bare metal nodes having iRMC S4 and beyond.

Change-Id: I8f406a9beb3fd3c01b15f764211ffd18494464f6
Closes-Bug: #1525108
2016-02-12 11:28:38 +09:00
Jenkins d54c1535ca Merge "DRAC: cleanup after switch to python-dracclient" 2016-02-03 20:33:04 +00:00
Imre Farkas 47be8011c6 DRAC: cleanup after switch to python-dracclient
DRAC specific code from Ironic is moving to its own project, to
python-dracclient project. This patch finishes refactoring code in
Ironic to use the new library.

Change-Id: I6223dbbeb770d773ebdd72277017156cbdb1d035
2016-01-25 12:44:11 +01:00
Jenkins 22402e4586 Merge "DRAC: switch to python-dracclient on vendor-passthru" 2016-01-22 10:52:14 +00:00
Imre Farkas 51a73e11c2 DRAC: switch to python-dracclient on vendor-passthru
DRAC specific code from Ironic is moving to its own project, to
python-dracclient project. This patch continues refactoring code in
Ironic to use the new library.

Note that this is a backwards incompatible change. In addition to the
dependency change, return values of the following methods changed in
ironic.drivers.modules.drac.vendor_passthru:
- set_bios_config returns the 'commit_required' key
- commit_bios_config returns the 'job_id' and 'reboot_required' keys
- abandon_bios_config returns nothing

Change-Id: Iaa4cee0dae8980817803ca55cdb53789b4051bc2
Partial-Bug: #1454492
Depends-On: I574696e460f08cececc47a69b5c2b090a6cd44a2
2016-01-19 11:39:00 +01:00
Jenkins 930dee6242 Merge "Add console feature to ssh driver" 2015-12-23 23:04:15 +00:00
Zhenguo Niu dc080b598b Add console feature to ssh driver
Currently there is no support to get console in dev and
test environments, this patch implements a console driver
ShellinaboxConsole to add ability of console access for
SSH driver using 'virsh console'.

For non-virsh ssh drivers, a 'GET /v1/drivers/properties'
request will return False for the console interface (as
opposed to None) with a 'not supported ...' reason.

Change-Id: I2764e0cb4b5b489762e00cd266212b902acc0746
Closes-Bug: #1526305
2015-12-22 15:35:49 +00:00
Imre Farkas 0ced09b832 DRAC: switch to python-dracclient on power interface
DRAC specific code from Ironic is moving to its own project, to
python-dracclient project. This patch starts using the new library.

Change-Id: I68251fc2b5dd169bb22bbbe38fe9eea16c5ac806
Partial-Bug: #1454492
Depends-On: Iab9d9f7e4e25e3d3fdec9b28fe49a7226e68c9ff
2015-12-15 14:11:20 +01:00
Lucas Alvares Gomes 2218ed3f0e Move FakeOneViewDriver to the fake.py module
All Fake drivers in tree lives under the fake.py module, this patch is
moving the FakeOneViewDriver to that module as well so we keep things
consistent and organized.

Change-Id: Ie3ecbf87037b353950acd6dd78503cad2e8a0221
2015-10-12 18:46:34 +01:00
Sam Betts 363c9c38df Add Cisco IMC PXE Driver
Current drivers only allow for control of UCS servers via either IPMI or
UCSM, the Cisco UCS C-Series operating in standalone mode can also be
controlled via CIMC using its http/s XML API. This provides finer
control over the server than IPMI can, and doesn't require the extra
infrastructure that UCSM needs.

Change-Id: Ibd39040e3d7e82a87960d33150750433beb2453b
Implements: blueprint cisco-imc-pxe-driver
2015-09-21 18:29:43 +01:00
Ramakrishnan G 5dd42ff66d Add support for inband raid configuration agent ramdisk
This commit adds support for inband raid configuration
using agent ramdisk.  Agent ramdisk will route the call
to appropriate hardware manager which will create the
desired raid configuration. This must be explicitly
invoked via setting the provision to 'zap'.

This commit also updates the code to not touch
node.target_raid_config in raid.update_raid_info()
method.

Implements: blueprint inband-raid-configuration
Change-Id: Ifa640d4839b2f08410ceec57c2972e2f9dc69db3
2015-09-14 15:52:31 +00:00
Yuriy Zveryanskyy 1e8185cde4 Add vendor interface to ipminative driver
This patch adds vendor interface with send_raw() and bmc_reset()
methods to ipminative driver (like in ipmitool).

Change-Id: I388a97730c627f5184959b6dac64795d61ef140e
2015-09-02 12:25:28 +03:00
Ramakrishnan G 72b20fec75 Refactor agent driver with pxe boot interface
This commit refactors agent.AgentDeploy to use
the new PXEBoot interface.
prepare_cleaning will write the Neutron port IDs of the
ports created on extra field for each port. This is
for generalizing it into a single place from which
boot interfaces like pxe.PXEBoot can pick up Neutron
VIFS port IDs for preparing boot (for both deploy and
cleaning).

It deprecates the CONF options
CONF.agent.agent_pxe_config_template and
CONF.agent.agent_pxe_append_params, so that it can be
merged with their counter-parts in CONF.pxe.  These agent
CONF opts will be deprecated in Mitaka release.

The CONF option CONF.agent.manage_tftp is deprecated and
is renamed to CONF.agent.manage_agent_boot.

Implements: blueprint new-boot-interface
Change-Id: Ia424db63547e91e44fe18a9044b6a490e641e887
2015-08-26 05:47:39 +00:00
Ramakrishnan G c1393ad924 Add RAIDInterface for RAID configuration
This commit introduces a new standard interface
of a driver - RAIDInterface.  Drivers can
implement this interface to do RAID configuration.

This commit also introduces some common code to
do validation of RAID configuration and updating
the node after doing RAID configuration.

Change-Id: I907447511e6f9ee9e1e3b96a94a0360e81f75cef
Implements: blueprint ironic-generic-raid-interface
2015-08-12 21:30:27 +05:30
Ramakrishnan G b25906c804 Refactor pxe - New PXEBoot and ISCSIDeploy interfaces
This commit refactors pxe.PXEDeploy.  It moves code
related to PXE booting into a new boot interface
pxe.PXEBoot and keeps rest of the iSCSI deploy related
code in iscsi_deploy.ISCSIDeploy.

Implements: blueprint new-boot-interface
Change-Id: Ie96c02709200bd50f56458079e27b1f1daa60081
2015-07-28 13:50:05 +01:00
Ramakrishnan G 4623a558bc Add boot interface in Ironic
This commit adds a new boot interface in Ironic
which can be used by deploy drivers to set up
the node to boot.

Implements: blueprint new-boot-interface
Change-Id: I0fdc0636c51a1b7803899dd09870806f1c81697e
2015-06-15 04:20:30 -07:00
Lucas Alvares Gomes c92fac1e5a Wake-On-Lan Power interface
This patch implements a simple Wake-On-Lan power interface. For those
that does not have any fancy hardware just old PCs at home.

Wake-On-Lan is only capable of powering ON the machine, so it's
recommended to use the DIB ramdisk for testing the deployments with it
because it does a soft reboot on the machine at the end of the deployment.

After the machine is unprovisioned, you'll have to manually power it
off :-)

This patch also doesn't implement SecureON password feature for
Wake-On-Lan, I left a TODO in the code for those willing to implement it.

Implements: blueprint wol-power-driver
Change-Id: I6c0f98ef1cab1ebfb4a7e1d0aaae29672db1c5a4
2015-06-12 10:01:25 +01:00
saripurigopi 8c26a8c33b Add pxe_ucs and agent_ucs drivers to manage Cisco UCS servers
This commit adds pxe_ucs, agent_ucs driver changes.
Adds support for the following:

- Power driver changes
- Management interface changes
- UCS Helper code, which can be reused with other parts of the driver,
  ex: to support vendor apis.

Change-Id: I02211da5fad039dc7e6b509d547e473e9b57009b
Implements: blueprint cisco-ucs-pxe-driver
2015-06-10 19:16:04 +05:30
Sam Betts 8c07c4fda3 Enforce flake8 E123/6/7/8 in ironic
This patch enforces the rules E123, E126, E127, and E128 in the ironic
code base:

E123 - closing bracket does not match indentation of opening
bracket’s line
E126 - continuation line over-indented for hanging indent
E127 - continuation line over-indented for visual indent
E128 - continuation line under-indented for visual indent

This fixes any parts of the current code which fails these rules and
removes these rules from the tox.ini flake8 ignore list.

Change-Id: Ia96582b5e9abc088d6c1694afc93c59be4a4065c
Closes-Bug: 1421522
2015-06-04 12:56:51 +01:00
Dmitry Tantsur 06c8fc9ad1 ironic-discoverd is being renamed to ironic-inspector
This patch changes module names, allows importing new module
name for inspector (will be later changed to ironic_inspector_client).

We need this patch to unbreak devstack support.

Change-Id: I34cc4336dcd7e8d44aebecf5c85b52c83f0c717b
2015-06-01 12:32:14 +02:00
Alessandro Pilotti 6a87c8a6ca Adds OCS Power and Management interfaces
Includes support for the Open CloudServer (OCS) chassis manager
power operations. The OCS design has been contributed by
Microsoft to the Open Compute project.

Implements blueprint msft-ocs-power-driver

Change-Id: Ic2c90ab5c8d79c55ae83dd485b3cf9281b600c23
2015-05-06 15:25:46 +03:00
Jenkins 930f479dc1 Merge "iLO implementation for hardware inspection" 2015-03-18 18:49:21 +00:00