summaryrefslogtreecommitdiff
path: root/ironic
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Don't validate local_link_connection when port has client-id" into ↵Zuul2018-09-192-0/+33
|\ | | | | | | stable/ocata
| * Don't validate local_link_connection when port has client-idMoshe Levi2018-03-082-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Infiniband ports do not require the local_link_connection field to be populated as the network topology is discoverable by the Infiniband Subnet Manager. This change removes the requirement for local_link_connection for Infiniband ports. Infiniband ports have a client-id in their extra field. Closes-Bug: #1753222 Change-Id: I2bfac4ccaf825bd9aa8ea0d2b447fcd7767acbc5 (cherry picked from commit dcebb77d9d7a2cebcc645dd632a12d224bd113c8)
* | Fix iDRAC hardware type does not work with UEFIRichard Pioso2018-08-042-35/+441
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes an issue that caused the integrated Dell Remote Access Controller (iDRAC) management hardware interface implementation, 'idrac', to fail to boot nodes in Unified Extensible Firmware Interface (UEFI) boot mode. That interface is supported by the 'idrac' hardware type. The following errors appear in the ironic conductor log: ERROR ironic.drivers.modules.agent_base_vendor File "/opt/stack/new/ironic/ironic/drivers/modules/drac/management.py", line 106, in set_boot_device ERROR ironic.drivers.modules.agent_base_vendor in drac_boot_devices[PERSISTENT_BOOT_MODE] ERROR ironic.drivers.modules.agent_base_vendor KeyError: 'IPL' ERROR ironic.drivers.modules.agent_base_vendor ERROR ironic.conductor.utils [None req-80b5a61c-4ae1-41ea-875f-5a722142be01 None None] Error rebooting node cddff129-7353-4de1-b436-810b1ae0dd92 after deploy. KeyError: 'IPL' DEBUG ironic.common.states [None req-80b5a61c-4ae1-41ea-875f-5a722142be01 None None] Exiting old state 'deploying' in response to event 'fail' {{(pid=23850) on_exit /opt/stack/new/ironic/ironic/common/states.py:263}} DEBUG ironic.common.states [None req-80b5a61c-4ae1-41ea-875f-5a722142be01 None None] Entering new state 'deploy failed' in response to event 'fail' {{(pid=23850) on_enter /opt/stack/new/ironic/ironic/common/states.py:269}} The issue is resolved for Dell EMC PowerEdge 13th and 14th generation servers. It is not resolved for PowerEdge 12th generation and earlier servers. Prior to this change, the set_boot_device() function in ironic.drivers.modules.drac.management could successfully set a boot device that would persist during future boots only when the server's boot mode was configured to be BIOS. The root cause was that function understood only a single persistent boot mode, BIOS, and it was hard coded. PERSISTENT_BOOT_MODE = 'IPL' Initial Program Load (IPL) is a synonym for legacy BIOS boot mode. The iDRAC does not report nor make visible the boot source lists for persistent boot modes that are not configured as the server's current boot mode. Only the list associated with the configured boot mode is reported and can be modified. So, when the boot mode is configured to be UEFI, the iDRAC permits only its boot source list to be modified. However, set_boot_device() had been capable of only modifying the boot source list for BIOS (IPL), which was not reported. Its attempt to access the wrong, unreported boot source list failed. This change fixes the issue by determining the configured persistent boot mode at run-time and modifying its boot source list. The hard coding of a persistent boot mode has been eliminated. Now, nodes managed by the iDRAC hardware type successfully boot in either persistent boot mode, BIOS or UEFI. More information about using the iDRAC for boot management is available in the "Dell EMC BIOS and Boot Management Profile", Version 4.0.0, section 7.2 Boot Management, pp. 44-47 [1]. The way the iDRAC hardware type deploys the operating system, by copying it to a disk, posed an additional challenge to this fix. UEFI discovers new boot sources during the next boot. How could the server be configured to directly boot into the newly deployed operating system when its boot source is unknown? It was overcome by using new iDRAC BIOS attributes named 'SetBootOrderFqddNN' [2]. Those make it possible to specify the boot source for the next boot without requiring it to be present in the current boot's boot source list. The server is configured to directly boot from the disk on which the operating system was just deployed. An additional reboot is not required. Note that those new attributes are presently available on only 13th and 14th generation servers. Also, this approach is only possible for configuring a persistent boot source. [1] http://en.community.dell.com/techcenter/extras/m/white_papers/20444495 [2] "Configuring server boot options on 14th generation Dell EMC PowerEdge servers", section 3.5.2 SetBootOrderFqddNN, pp. 13-14 (http://en.community.dell.com/techcenter/extras/m/white_papers/20487489) Conflicts: ironic/tests/unit/drivers/modules/drac/test_management.py Story: 1656841 Task: 9711 Change-Id: Idad1db1807420eab62c44318afafe10ea8c52ee5 (cherry picked from commit eb14f5750f6387a0a6b771caffb9f17a9bce5ba0)
* | Fix error when deleting a non-existent portMark Goddard2018-06-262-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes an issue seen during node tear down where a port being deleted by the Bare Metal service could be deleted by the Compute service, leading to an unhandled error from the Networking service. This change simply ignores the PortNotFoundClient exception raises, as is done when attempting to unbind a port that does not exist. See [1] for details. [1] https://storyboard.openstack.org/#!/story/2002637> Change-Id: Icd2aaa1276e75f08f99553bbc9a873102d896fb9 Story: 2002637 Task: 22285 (cherry picked from commit bfed31bb4c599b7063da80798db8078a64c13368)
* | Tear down console during unprovisioning7.0.5Jim Rollenhagen2018-05-182-18/+61
|/ | | | | | | | | | | | | | | | | | | | | | | Before this patch, when unprovisioning a node, the console was left running. This allowed a user to view the console even after the instance was gone. Stop the console during unprovisioning to block this. ConductorManager._set_console_mode will now bubble up any exceptions raised, so that we can explode as needed during unprovisioning. This does not have any side effects, as elsewhere it is run in it's own thread and execution was complete after handling the exception. Also change a few mock.ANY in the relevant unit tests to the actual task object, as cleanup. Conflicts: ironic/tests/unit/conductor/test_manager.py Change-Id: Iec128444d692e0b0fbc1737eb21b0e6f69b7ec1e Partial-Bug: #1769817 Story: #2002000 Task: #19634 (cherry picked from commit 7a8b26db6b48f5593786bb92cf09fa1d6afcc1ea)
* Allow sqalchemy filtering by id and uuidRyan Bridges2018-02-192-12/+35
| | | | | | | | | | | | | | | | | | | | | | | These additions will allow us to filter nodes by node uuid and id. This filter API is used in many places throughout the code base. It is natural to expect that this API would allow us to filter by node id and uuid in addtion to the other supported parameters. This also fixes a 3 year old bug. This change from lucasagomes has a bug: https://review.openstack.org/#/c/197141/ In conductor/manager.py, he calls _fail_if_in_state() and uses the node_id as a filter. However this filter effectively does nothing because sqalchemy does not know how to filter by node id on the backend. My changes fix this problem and make the API more intuitive Closes-Bug: #1749755 Change-Id: I4efc0d5cd5d5d6108a334f954e1718203b47da0a (cherry picked from commit 366a44a1bb4e235f6382af02962ba2a192cffa4d)
* Do not pass credentials to the ramdisk on cleaningDmitry Tantsur2018-02-074-5/+29
| | | | | | | | | | | | | Currently the driver_info is passed as is to the ramdisk when calling get_clean_steps or execute_clean_step. This may lead to their exposure, as ironic<->ramdisk communication is currently not secure. This change applies the same logic we use in the API to filter the fields. Change-Id: I4fd44786fea6c7092d2b0029cea6d680d31babde Closes-Bug: #1744836 (cherry picked from commit c2185469c4a9246fa62ceae76676a08ed84e686d)
* Do not validate root partition size for whole disk images in iscsi deployDmitry Tantsur2018-01-172-0/+18
| | | | | | | | | On whole disk images a root partition is already created and populated, so validating its size makes no sense. We don't do it for direct deploy. Change-Id: I7a4114979afb310aeb77f99fbcf09ef7c54862d6 Closes-Bug: #1742451 (cherry picked from commit a7623d92dc4d7c7bcc436656b93c8fe963e79bfd)
* Fix keystone.py 'get_service_url' method parameterzackchen2017-11-132-2/+2
| | | | | | | | | | Calls to 'get_service_url' should use the 'region_name' parameter. Before they were incorrectly using 'region' as the parameter name. Change-Id: Ic839ba6dbd5ca4dc9c7d87cf23582b8cfc393731 Closes-Bug: #1687866 (cherry picked from commit 21d89c0f641e9a03c47a7ffe42af2150af31016c)
* Merge "Fix mis-formatted log messages" into stable/ocataZuul2017-11-032-1/+2
|\
| * Fix mis-formatted log messagesJohn L. Villalovos2017-10-102-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix errors in log messages. These were detected by a patch that catches these types of errors. Submitting these fixes first as the patch to detect the errors will likely take more time to get merged. Conflicts: ironic/dhcp/neutron.py ironic/drivers/modules/irmc/boot.py ironic/drivers/modules/oneview/deploy_utils.py Closes-Bug: #1722597 Change-Id: Ibe451f9cd97971cb83366fdc6f7f5c31d2af4793 (cherry picked from commit df5da4ce7a32e64e34a489b741bd911f9c55ea34)
* | Merge "Skip PortNotFound when unbinding port" into stable/ocataZuul2017-10-172-0/+21
|\ \
| * | Skip PortNotFound when unbinding portVasyl Saienko2017-10-052-0/+21
| |/ | | | | | | | | | | | | | | | | There might be cases when user deleted port before doing vif_detach. With this patch info message will be shown in the logs for such cases. Change-Id: I60deab450b427f1a1b4ccb0bb5963ec30d255d48 Closes-Bug: #1685592 (cherry picked from commit 940c87d6c49be181d969e85d343b745149b6db10)
* | Fix multitenancy scenario on OneView DriverFellype Cavalcante2017-10-062-1/+14
|/ | | | | | | | | | Switching from provisioning to tenant network was missed in reboot_and_finish_deploy for OnView Driver. The affected code was completely removed in the Pike release, hence this patch is not a cherry-pick. Change-Id: I36920741640981b5e85bbb08bfc1e2beff0b605f Closes-Bug: #1716023
* Fix DRAC classic driver double manage/provideRichard Pioso2017-08-285-159/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 (cherry picked from commit 86e3a100a3a6fcfcf9d498886e1d7784f07ecd73)
* Force InnoDB engine on interfaces tableMichael Tupitsyn2017-07-171-1/+3
| | | | | | | | | | | | | | | If the system is set to use MyISAM engine as default, during upgrade a new conductor_hardware_interfaces table will be created with MyISAM engine. This will cause a mix of InnoDB and MyISAM tables in single database, and obsolete a foreign key to conductors table. This bug in particular fails test_models_sync unit test, when it is executed on a system, where MyISAM is set as default option for local MySQL server. Change-Id: Ic47426b1a12eda5728e9971a27ad3767c0245d50 Closes-Bug: 1702158 (cherry picked from commit 1a0c7091a6bb5ab8ca83ad6a7244fcb84c7f99b4)
* Merge "Validation before perform node deallocation" into stable/ocata7.0.2Jenkins2017-05-234-47/+178
|\
| * Validation before perform node deallocationXavier2017-04-244-47/+178
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduces a new validation to ensure the node deallocation process will only be performed to nodes that have Server Profile applied in OneView. When the allocation process fails, the machine will have no Server Profile applied in OneView and in ironic it will have no reference to any Server Profile. Under these conditions if the deallocation process be performed the driver will try to delete a nonexistent Server Profile in OneView, leaving the node in error state in ironic. Change-Id: I83cef7fafac4e22ebf5eb4fe83f6da26ec132c99 Closes-Bug: #1657892 (cherry picked from commit 0b23a041f1111ad112d28619fa020173805edbbe)
* | Read disk identifier after config drive setupJacek Tomasiak2017-04-271-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | If original disk image has ID of 0x00000000 it's overwritten by parted with a non-zero value. The original ID is stored in pxelinux.cfg/* config file and the node fails to boot. Reading the ID was moved to after config drive setup so that the final ID is returned. Change-Id: Icbfa3e93bf6252177a0baa5f89bf4565ff331520 Closes-Bug: #1685093 (cherry picked from commit cbc29a9b7b78eafa830e2752e2c7f43604917259)
* | Fix updating node.driver to classicVasyl Saienko2017-04-242-7/+174
|/ | | | | | | | | An issue when it was impossible to update ``node.driver`` to classic if the current driver is one of hardware types. Change-Id: I348a27a13d3025fe7e8ddfa31992b895a3809730 Closes-Bug: #1668579 (cherry picked from commit 3d02084559e91c0a5c156b259e615eac42a5d882)
* Copy and append to static lists7.0.1Derek Higgins2017-03-291-12/+10
| | | | | | | | | core_interfaces and standard_interfaces are both static members of BaseDriver we need to take a copy of them before appending to them. Change-Id: Ic6edc5e49a25849c7871dbc9e6e1d5a5eb229e57 Closes-Bug: #1672457 (cherry picked from commit 338651eae5b7c416f04970b9d60f09dc2dab8adb)
* Merge "Walk over all objects when doing VIF detach"Jenkins2017-02-132-3/+20
|\
| * Walk over all objects when doing VIF detachVasyl Saienko2017-02-132-3/+20
| | | | | | | | | | | | | | | | | | | | | | | | We apply specific rules when doing VIF attach, do not duplicate them in vif_detach just walk over all port and portgroup objects. This also fixes an issue when VIF was attached to port manually (set vif_port_id key in port.extra) and it is impossible to detach such VIF via v1/nodes/<node_ident>/vifs API. Closes-Bug: #1663660 Change-Id: I70fe87bb4ae15a506fec705d10beaed572c0b45e
* | Merge "Follow-up iRMC power driver for soft reboot/poff"Jenkins2017-02-132-15/+22
|\ \ | |/ |/|
| * Follow-up iRMC power driver for soft reboot/poffNaohiro Tamura2017-02-072-15/+22
| | | | | | | | | | | | | | | | | | | | | | This is a follow-up patch of "iRMC power driver for soft reboot and soft power off" [1] to fix a nit of exception handling code and to make soft reboot wait logic more robust. [1] I8c69904063ac0a9e042f54158a20347f0c2325e1 Change-Id: I25bd413eb0f3e6c6229bf4fa053ca6ed31a5691d Partial-Bug: #1526226
* | Merge "Fix unit tests with UcsSdk installed"Jenkins2017-02-121-1/+0
|\ \
| * | Fix unit tests with UcsSdk installedJim Rollenhagen2017-02-101-1/+0
| | | | | | | | | | | | | | | | | | | | | An instance of UcsOperationError was being instantiated with an invalid argument, just remove it. Change-Id: Ib71e8dd37713c7649712b43f62e3c512933d55b7
* | | Merge "Follow up patch for SNMPv3 support"Jenkins2017-02-102-17/+17
|\ \ \ | |/ / |/| |
| * | Follow up patch for SNMPv3 supportNisha Agarwal2017-02-102-17/+17
| | | | | | | | | | | | | | | | | | | | | | | | Fixes the minor issues with SNMPv3 inspection Closes-Bug: 1609622 Change-Id: Ic5c397e57060f4d6d01fa9f16f371408af7aae3e
* | | Merge "Mock client initializations for irmc and oneview"Jenkins2017-02-102-5/+15
|\ \ \
| * | | Mock client initializations for irmc and oneviewVladyslav Drok2017-02-102-5/+15
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | This fixes an irmc test and oneview mock that were causing timeouts in unittests with driver-requirements installed, as they were trying to establish a connection to oneview/irmc management controller. Change-Id: I1c01e6744064e3f0b8ed8188fb5d5edf9f544682 Closes-Bug: #1663709
* | | Merge "Fix missed '_' import"Jenkins2017-02-101-0/+1
|\ \ \ | |/ / |/| |
| * | Fix missed '_' importVasyl Saienko2017-02-101-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | This patch fixes missed import of '_' in ironic/api/controllers/v1/drivers.py Change-Id: Ie076000b441ada7f45aff26e96fe627a961f7336 Related-Bug: #1524745
* | | Merge "SNMP agent support for OOB inspection for iLO Drivers"Jenkins2017-02-105-13/+214
|\ \ \
| * | | SNMP agent support for OOB inspection for iLO DriversNisha Agarwal2017-02-085-13/+214
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch allows to get the disk size by OOB Inspection using snmpv3 if RIBCL/RIS is unable to get it. Closes-bug: 1609622 Change-Id: Ib315dabc50b1f0b627b69781ef1c14de0d5d972c
* | | | Merge "Fix object save after refresh failure"Jenkins2017-02-1011-0/+91
|\ \ \ \
| * | | | Fix object save after refresh failureVasyl Saienko2017-02-0711-0/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we try to save() object after its refresh(), it leads to a TypeError. Let's not keep track of changed fields in refresh(), all fields are reloaded from database. Closes-Bug: #1612666 Co-Authored-By: Vladyslav Drok <vdrok@mirantis.com> Change-Id: I0f47552c424973af3704903a52f98db819b18c3f
* | | | | Merge "Remove most unsupported drivers"Jenkins2017-02-1027-3654/+0
|\ \ \ \ \
| * | | | | Remove most unsupported driversPavlo Shchelokovskyy2017-02-0927-3654/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | Merge "No node interface settings for classic drivers"Jenkins2017-02-105-10/+130
|\ \ \ \ \ \ | |/ / / / / |/| | | | |
| * | | | | No node interface settings for classic driversRuby Loo2017-02-085-10/+130
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Classic drivers have their interfaces (except for network and storage) pre-determined. Unlike dynamic drivers, it is not possible to change these interfaces for nodes with a classic driver. If that is attempted (when creating or updating a node), an exception MustBeNone is raised (and HTTP status 400 is returned). So that we don't break existing ironic clusters that have nodes with classic drivers and interfaces specified, a warning is logged (instead of raising an exception) when a TaskManager is created. Change-Id: I290b10f735d0da9710d1ee3b50c3252f73956428 Partial-Bug: #1524745
* | | | | Merge "Unbind tenant ports before rebuild"Jenkins2017-02-084-5/+19
|\ \ \ \ \
| * | | | | Unbind tenant ports before rebuildVladyslav Drok2017-02-084-5/+19
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, during rebuild, tenant ports are bound to tenant network when we call add_provisioning_network. We need to unbind them first. Closes-Bug: #1657083 Change-Id: I475a089ee646872f7874c3d257c1dc571ea94f4d
* | | | | Merge "Pass session directly to swiftclient"Jenkins2017-02-082-32/+3
|\ \ \ \ \ | |/ / / / |/| | | |
| * | | | Pass session directly to swiftclientPavlo Shchelokovskyy2017-02-072-32/+3
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | since v3.2.0 swiftclient supports instantiating the API client from keystonauth session, and we already require this version as minimal in ironic. This patch removes existing workarounds in SwiftAPI code which were there only to accomodate for absence of session handling in swiftclient, and now the keystoneauth session built from the [swift] config section is used directly to instantiate the swift API client. Change-Id: I52f1386df45ebe0a43b11fe1583e012dfa3af532 Related-Bug: #1518938
* | | | Merge "Fix log formating in ironic/common/neutron"Jenkins2017-02-071-1/+1
|\ \ \ \
| * | | | Fix log formating in ironic/common/neutronVasyl Saienko2017-02-071-1/+1
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds missed space in the log.warning message from ironic/common/neutron follow-up to: Icb8298b9be0d8ba62192580263feafa0e1708129 Change-Id: I5ab976d734c538d4027c0cdf53cf5861e62ab04d
* | | | Merge "Validate the network interface before cleaning"Jenkins2017-02-072-29/+66
|\ \ \ \
| * | | | Validate the network interface before cleaningRuby Loo2017-02-072-29/+66
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In addition to validating the power interface before cleaning is started, the conductor will also validate the network interface. Change-Id: Id8938c4e426243de721ce781f28fd1dbeff6b8ab Fixes-Bug: #1662372
* | | | Merge "log if 'flat' interface and no cleaning network"Jenkins2017-02-072-7/+3
|\ \ \ \