We are chuffed to announce the release of: ironic 15.0.0: OpenStack Bare Metal Provisioning This release is part of the ussuri release series. The source is available from: https://opendev.org/openstack/ironic Download the package from: https://tarballs.openstack.org/ironic/ Please report issues through: https://storyboard.openstack.org/#!/project/943 For more details, please see below. 15.0.0 ^^^^^^ Prelude ******* The Ironic Developers are proud to announce the release of Ironic 15.0! This release contains a number of changes that have been sought by operators and users of Ironic for some time, including support for UEFI booting a software RAID system, improved Ironic/Ironic Python Agent security, multi-tenancy constructs, a hardware retirement mechanism, stateful DHCPv6, and numerous fixes. We sincerely hope you enjoy! New Features ************ * Adds REST API endpoints for indicator management. Three new endpoints, for listing, reading and setting the indicators, reside under the "/v1/nodes/<node_ident>/management/indicators" location. * Adds support of "agent token" which serves as a mechanism to secure the normally unauthenticated API endpoints in ironic which are used in the mechanics of baremetal provisioning. This feature is optional, however operators may require this feature by changing the "[DEFAULT]require_agent_token" setting to "True". * Adds "is_allocation_owner" policy rule, which can be applied to allocation get/update/delete rules. Also adds "baremetal:allocation:list" and "baremetal:allocation:list_all" rules for listing owned allocations and all allocations. Default rules are unaffected, so default behavior is unchanged. * Adds a new configuration option "[console]port_range", which specifies the range of ports can be consumed for the IPMI serial console. The default value is "None" for backwards compatibility. If the "ipmi_terminal_port" is not specified in the driver information for a node, a free port will be allocated from the configured port range for further use. * For baremetal operations on DHCPv6-stateful networks multiple IPv6 addresses can now be allocated for neutron ports created for provisioning, cleaning, rescue or inspection. The new parameter "[neutron]/dhcpv6_stateful_address_count" controls the number of addresses to allocate (Default: 4). * Adds functionality with neutron integration to support dual-stack (IPv4 and IPv6 environment configurations). This enables ironic to look up the attached port(s) and supply DHCP options in alignment with the protocol version allocated on the port. * Implemented the "BIOS interface" for the "idrac" hardware type. Primarily, implemented "factory_reset" and "apply_configuration" clean and deploy steps, as asynchronous operations. For more details, see story 2007400 (https://storyboard.openstack.org/#!/story/2007400). * The "ilo-virtual-media" boot interface now supports managing boot for in-band inspection. This enables using virtual media instead of PXE for in-band inspection. * Adds the capability for the "instance_info\image_checksum" value to be optional in stand-alone deployments if the "instance_info\image_os_hash_algo" and "instance_info\image_os_hash_value" fields are populated. * Makes management interface of "redfish" hardware type not change the current boot frequency if the current setting is the same as the desired one. The goal is to avoid touching a potentially faulty BMC option whenever possible. * Adds a new "[ipmi]debug" option that allows users to explicitly turn IPMI command debugging on, as opposed to relying upon the system debug setting "[DEFAULT]debug". Users wishing to continue to log this output should set "[ipmi]debug" to "True" in their ironic.conf. * Changes neutron port updates to use auth values from Ironic's neutron conf, preventing issues that can arise when a non-admin user manages Ironic nodes. A check is added to the port update function to verify that the user can actually see the port. This adds an additional Neutron request call to all port updates. * Adds a "lessee" field to nodes. This field is exposed to policy, so if a policy file permits, a lessee will have access to specified node APIs. * Adds "baremetal:node:update_extra" and "baremetal:node:instance_info" policies to allow finer-grained policy control over node updates. In order to use standalone Ironic to provision a node, a user must be able to update "instance_info" (and "extra" if using metalsmith), and a lessee should not be able to update all node attributes. * The "redfish_system_id" property of redfish hardware type has been made optional. If not specified in "driver_info", and the target BMC manages a single ComputerSystem, ironic will assume that system. Otherwise, ironic will fail requiring explicit "redfish_system_id" specification in "driver_info". * To allow use of the "neutron" network interface in combination with "flat" provider networks where no actual switch management is done. The "local_link_connection" field on ports is extended to support the "network_type" field. * Target devices for software RAID can now be specified in the form of device hints (same as for root devices) in the "physical_disks" parameter of a logical disk configuration. This requires ironic- python-agent from the Ussuri release series. * Adds a "root_prefix" parameter to the sushy context based on the path of "redfish_address". Defaults to sushy "root_prefix" default ("/redfish/v1/"). This is needed if the Redfish API is not located in the default "/redfish/v1/" endpoint. * Adds support for bootable software RAID with UEFI boot mode. * Passwords for "rescue" operation are now hashed for transmission to the "ironic-python-agent". This functionality requires "ironic- python-agent" version "6.0.0". The setting "[conductor]rescue_password_hash_algorithm" now defaults to "sha256", and may be set to "sha256", or "sha512". Known Issues ************ * The "ansible" deployment interface does not support use of an "agent token" at this time. Upgrade Notes ************* * The minimum supported version of "Ansible" is now "2.7". All support for previous Ansible versions is no longer maintained. * The default value of "[deploy]/default_boot_option" is changed from "netboot" to "local". * Due to the default boot option change, partition images without "grub2" will be unable to be deployed without the "boot_option" for the node to be explicitly set to "netboot". * The required minimum version of the "sushy" python Redfish API client library is now version "3.2.0". * Removes compatibility with deploy interfaces that do not use deploy steps. * The "[pxe]ip_version" setting may no longer be required depending on neutron integration. * Operators that used the "[DEFAULT]my_ip" setting with an IPv6 address may wish to explore migrating to the "[DEFAULT]my_ipv6" setting. Setting both values enables the appropriate IP addresses based on protocol version for PXE/iPXE. * If "[DEFAULT]force_raw_images" is set to "true", then MD5 will not be utilized to recalculate the image checksum. This requires the "ironic-python-agent" ramdisk to be at least version 3.4.0. * Debug logging control has been moved to the "[ipmi]debug" configuration setting as opposed to the "conductor" "[DEFAULT]debug" setting as the existing "ipmitool" output can be extremely misleading for users. Operators who wish to continue to log "ipmitool" verbose output in their logs should explicitly set the "[ipmi]debug" command to True. * The dependency on "oslo.i18n" is now optional. If you would like messages from ironic to be translated, you need to install it explicitly. * The guru meditation reporting functionality is now optional and the "oslo.reports" package is no longer a part of requirements. Install it manually if you need this feature. * The configuration option "[pxe]ipxe_enabled" was deprecated and now has been removed, thus the support for iPXE from the "pxe" interface was removed. To use iPXE, the boot interface should be migrated to "ipxe" or other boot interfaces capable of booting from iPXE. Deprecation Notes ***************** * Some deploy interfaces use the "continue_node_deploy" RPC call to notify the conductor when they're ready to leave the "deploy" core deploy step. Currently ironic allows a node to be either in "wait call-back" or "deploying" state when entering this call. This is deprecated, and in the next release a node will have to be in the "wait call-back" ("DEPLOYWAIT") state for this call. Security Issues *************** * Image checksum recalculation when images are forced to raw images, are now calculated using "SHA3-256" if MD5 was selected. This is now unconditional. * Operators wishing to enforce all rescue passwords to be hashed should use the "[conductor]require_rescue_password_hashed" setting and set it to a value of "True". This setting will be changed to a default of "True" in the Victoria development cycle. * The secret token that is used for IPA verification will be generated using the secrets module to be in compliance with the "FIPS 140-2" standard. Bug Fixes ********* * Fixes an issue with the agent client code where checks of the agent command status had no logic to prevent an intermittent or transient connection failure from causing the entire operation to fail. * Fixes 'Invalid parameter value for SpanLength' when configuring RAID using Python 3. This passed incorrect data type to iDRAC, e.g., instead of *2* it passed *2.0*. See story 2004265 (https://storyboard.openstack.org/#!/story/2004265). * Fixes RAID configuration using *idrac-wsman* RAID interface where node remains in 'clean wait' provisioning state forever. See story 2007567 (https://storyboard.openstack.org/#!/story/2007567). * Fixes an issue where a node may be locked from changes if a conductor's hostname case is changed before restarting the conductor service. * Fixes an issue in the "ironic-python-agent" client code where a command exception may not be captured in the interaction with the agent rest API. The client code would return the resulting error message and a static error code. We now look with-in the error to detect if the error may be a compatability error to raise the appropriate exception for fallback logic to engage. * Improves interoperability with Redfish BMCs by untying node boot mode change from other boot parameters change (such as boot device, boot frequency). * Fixes vague node "last_error" field reporting upon deploy step failure by providing the exception error message in addition to the step that failed. * The 'no address available' problem seen when network booting on DHCPv6-stateful networks is fixed with the support for allocating multiple IPv6 addresses. See bug: 1861032 (https://bugs.launchpad.net/neutron/+bug/1861032). * Fixes an agent command issue in the bootloader installation process that can present itself as a connection timeout under heavy IO load conditions. Now installation commands have an internal timeout which is double the conductor wide "[agent]command_timeout". For more information, see bug 2007483 (https://storyboard.openstack.org/#!/story/2007483). * Use SHA256 for comparing file contents instead of MD5. This improves FIPS compatibility. * Fixes a bug in the "idrac" hardware type where when creating one or more virtual disks on a RAID controller that supports passthru mode (PERC H730P), the cleaning step would finish before the job to create the virtual disks actually completed. This could result in the client attempting to perform another action against the iDRAC that creates a configuration job, and that action would fail since the job to create the virtual disk would still be executing. This patch fixes this issue by only allowing the cleaning step to finish after the job to create the virtual disk completes. See bug bug 2007285 (https://storyboard.openstack.org/#!/story/2007285) for more details. * Certain RAID controllers (PERC H730P) require physical disks to be switched from non-RAID (JBOD) mode to RAID mode to be included in a virtual disk. When this conversion happens, the available free space on the physical disk is reduced due to some space being allocated to RAID mode housekeeping. If the user requests a virtual disk (a RAID 1 for example) with a size close to the max size of the physical disks when they are in JBOD mode, then creation of the virtual disk following conversion of the physical disks from JBOD to RAID mode will fail since there is not enough space due to the space used by RAID mode housekeeping. This patch works around this issue by recalculating the RAID volume size after physical disk conversion has completed and the free space on the converted drives is known. Note that this may result in a virtual disk that is slightly smaller than the requested size, but still the max size that the drives can support. See bug bug 2007359 (https://storyboard.openstack.org/#!/story/2007359) for more details * Fixes state report via Guru Meditation Reports that did not work previously because of empty "log_dir" and no way to configure this configuration option. * Fixed a bug where rebooting a node managed by the "idrac" hardware type when using the WS-MAN power interface sometimes fails with a "The command failed to set RequestedState" error. See bug 2007487 (https://storyboard.openstack.org/#!/story/2007487) for details. * If a node is in mid-deployment or cleaning and its conductor dies, ironic will move that node into a failed state. However, this wasn't being done if those nodes were also in maintenance. This has been fixed. See story 2007098 (https://storyboard.openstack.org/#!/story/2007098) for more details. * Now that HUAWEI ironic 3rd party CI is back, the "ibmc" hardware type driver is supported. * Fixes an issue where a node may be locked from changes if a conductor's hostname case is changed before restarting the conductor service. clean up the reservation once the conductor stopped. * Renames misleadingly named "images.create_isolinux_image_for_uefi" function into "images.create_esp_image_for_uefi". The new name reflects what's actually going on under the hood. Other Notes *********** * The "[conductor]power_state_change_timeout" default value has been extended to "60" seconds from "30" seconds. This is due to some API interfaces with Redfish, may cache the power state and thus may take longer than thirty seconds to update after a change has been requested. Please see here (https://github.com/metal3-io/ironic- image/issues/143) for more information. * The rootwrap filter file called "ironic-lib.filters" is no longer part of Ironic. The same file is available from the ironic-lib module which is already an install requirement. Changes in ironic 14.0.0..15.0.0 -------------------------------- 1bb5e80ae Add ironic-python-agent-builder to grenade projects and use netboot 753bb1907 Update python-dracclient version b417d0ffa Don't break UEFI install with older IPAs 2007fa64d Fix supported sushy-oem-idrac version 66a0533d0 Implements: Reactive HUAWEI ibmc driver bfeef067a Fix agent_client handling of embedded errors 524f8aa79 In-band deploy steps: correctly wipe driver_internal_info 5950b7041 Restore missing node.save() in agent_base.py 5cb4bd613 Add link to other Redfish parms to iDRAC doc b49319137 Log when IPA fallback occurs on bootloader install 2e276459b Delay validating deploy templates until we get all steps 4795c4a8b Support executing in-band deploy steps 805e004e9 Upgrade flake8-import-order version to 0.17.1 6397777ea Stop configuring install_command in tox. f8f9740a0 Prepare release notes/docs for 15.0 release 04931a16e Ironic 15.0 prelude 7f814058f DRAC: Added redfish management interface issue 27a0b54b6 Fix SpanLength calculation for DRAC RAID configuration 519edb48f Fix RAID configuration with idrac-wsman interface 03a927cab Revert "Generalize ISO building for virtual media driver" ced3e7a8e Add ironic 15.0 release mapping dcc049768 Fixes unusable Guru meditation report fb7d8ce57 Don't use wsme test webapp for patch tests dffc71287 Centralise imports of wsme types 3a58d81f6 Update iDRAC doc about soft power off timeout cb86bd308 Implement the bios-interface for idrac-wsman driver ff2030ce9 Improve the command status checks in the agent's process_next_step 6a73f7fdd Change [deploy]/default_boot_option to local b63403606 Update iDRAC doc about vendor passthru timeout cc29461d2 Use trailing slash in the agent command URL 36944fa39 Fix missing print format in log messages 0587df6e4 Extend timeout on CI job with automated cleaning 95a3e1bdf Fix issue where server fails to reboot 9f75bbd93 Add my new address to .mailmap cf412bc81 "dual stack" support for PXE/iPXE c4d9984c5 Generalize ISO building for virtual media driver 4f62e8e87 Remove six minions 1f18a2820 Increase VM RAM value in local.conf example 861f35b03 Release reservation when stoping the ironic-conductor service 45a9fbdfa Update jobs description 927d3c89f Change default ram value d6361bee0 Added node multitenancy doc d4dbc6e3a Support burning configdrive into boot ISO 81b93abf2 [doc] Remove the device selection limitation for Software RAID 335895a8e Add sushy-cli to client libraries release list 78f904978 Fix AttributeError in check allowed port fields c428a51dd Fix gunicorn name on Py3@CentOS7 in devstack 602a467a0 Add node lessee field 65b5ac6a7 Software RAID: Pass the boot mode to the IPA d150aa287 Refactor AgentBase.heartbeat and process_next_step dd5adf68a [doc] Images need some metadata for software RAID 855b654cb Drop netaddr - use netutils.is_valid_ipv6() d9db0b454 Allow INSPECTWAIT state for lookup aad54c245 Improve `redfish` set-boot-device behaviour 5be4c4f5c Improve `redfish` set-boot-mode implementation 30f2f0c08 Change multinode job to voting 163c8346a Cleanup Python 2.7 support d15d2f09f Use auth values from neutron conf when managing Neutron ports 566461954 Fetch netmiko session log 69739715c Doc - IPv6 Provisioning cb3185274 Additional IP addresses to IPv6 stateful ports c40d221fc Add network_type to port local_link_connection 1d9c8283b Make oslo.i18n an optional dependency 9f93694b9 Make oslo.reports an optional dependency d5c293a44 Do not autoescape all Jinja2 templates 6a1d453ef Make deploy step failure logging indicate the error 1faa3397a Fix the remaining hacking issues a3d7d73a6 Bump hacking to 3.0.0 4829df296 Extend install_bootloader command timeout 80cdb9abd Document deploy_boot_mode and boot_option for standalone deployments 80e49538c Remove future usage 6c6dd2c84 Fix enabled_hardware_types from idrac-wsman to idrac 88d489a53 Document our policies for stable branches 242775ae1 Retry agent get_command_status upon failures b6136e13f Add troubleshooting on IPMI section bc654814f Default IRONIC_RAMDISK_TYPE to dib 16bce7f18 Generalize clean step functions to support deploy steps 8e472a07b Raise human-friendly messages on attempt to use pre-deploy steps drivers fcaefdbe7 Hash the rescue_password 84e8b11a6 DRAC: Fix a failure to create virtual disk bug 35b77ddb3 [doc] Add documentation for retirement support 5b07374fd Add info on how to enable ironic-tempest-plugin f359d1841 Follow-up releasenote use_secrets 263fd021b Add indicators REST API endpoints 1425adbb0 Do not use random to generate token deca07de3 Signal agent token is required bee537a4a Support centos 7 rootwrap data directory 8dc2eebef Refactoring: split out wrap_ipv6 fb79ea2c4 Refactoring: move iSCSI deploy code to iscsi_deploy.py 6e9901583 Clean up nits from adding additional node update policies cc1632a82 Allow specifying target devices for software RAID 9fd0aa859 Documentation clarifications for software RAID bfb41571b Drop rootwrap.d/ironic-lib.filters file cc17246d2 Expand user-image doc 1e514b644 Move ipmi logging to a separate option 31439718c Change readfp to read_file fbf92e612 Make image_checksum optional if other checksum is present 529c3ff06 Remove compatibility with pre-deploy steps drivers 4383303df Extend power sync timeout for Ericsson SDI 2b3bef7d1 Skip clean steps from 'fake' interfaces in the documentation 8377e1a06 Rename ironic-tox-unit-with-driver-libs-python3 3d2d04c84 Send our token back to the agent 6121fbf10 Enable agent_token for virtual media boot 16a2473b8 Add separate policies for updating node instance_info and extra 5cb69916c Follow up to console port allocation 06c599726 Change force_raw_images to use sha256 if md5 is selected ae3a14e65 Make reservation checks caseless 7a15df60c [doc] Missing --name option 823a01688 Bump minimum supported ansible version to 2.7 2293c7dfa Set abstract for ironic-base 4d3f1b40e Refactoring: move generic agent clean step functions to agent_base 530ec9d0b Docs: split away user image building and highlight whole disk images 3f3fc7dca Redfish: Add root_prefix to Sushy 5cebea361 Cleanup docs building 9be7380e1 Rename `create_isolinux_image_for_uefi` function as misleading 34d34b3a9 Finalize removal of ipxe_enabled option 6ba983b61 Start removing ipxe support from the pxe interface bb3b2349f Pre-shared agent token 5e4a617b4 DRAC: Fix RAID create_config clean step 8b9349d47 Expose allocation owner to additional policy checks 7cb251716 Project Contributing updates for Goal 5ffef36fd Refactoring: rename agent_base_vendor to agent_base 8982ef574 Use FIPS-compatible SHA256 for comparing files 263c3c607 Revert "Move ironic-standalone to non-voting" e1e89f883 Move ironic-standalone to non-voting c99347fae Make `redfish_system_id` property optional caa73a110 Lower tempest concurrency dc6f92c97 Refactoring: finish splitting do_node_deploy b3721ce4f Automatic port allocation for the serial console 4ac3cfbf5 Remove the [pxe]ipxe_enabled configuration option 8be57492f [Trivial] Remove redundant brackets b44eb6f34 Fix bash comparisons for grenade multinode switch dd18c7054 Nodes in maintenance didn't fail, when they should have 70709648d Implement managed in-band inspection boot for ilo-virtual-media Diffstat (except docs and test files) ------------------------------------- .mailmap | 1 + CONTRIBUTING.rst | 10 +- api-ref/source/baremetal-api-v1-nodes.inc | 19 + api-ref/source/conf.py | 26 +- api-ref/source/parameters.yaml | 6 + api-ref/source/samples/node-create-response.json | 1 + api-ref/source/samples/node-show-response.json | 1 + .../samples/node-update-driver-info-response.json | 1 + .../samples/nodes-list-details-response.json | 2 + devstack/lib/ironic | 49 +- devstack/upgrade/upgrade.sh | 2 +- ...ode-contribution-guide.rst => contributing.rst} | 125 ++- driver-requirements.txt | 8 +- etc/ironic/rootwrap.d/ironic-lib.filters | 28 - ironic/api/controllers/base.py | 10 +- ironic/api/controllers/link.py | 5 +- ironic/api/controllers/v1/allocation.py | 81 +- ironic/api/controllers/v1/bios.py | 11 +- ironic/api/controllers/v1/chassis.py | 12 +- ironic/api/controllers/v1/collection.py | 5 +- ironic/api/controllers/v1/conductor.py | 13 +- ironic/api/controllers/v1/deploy_template.py | 34 +- ironic/api/controllers/v1/driver.py | 20 +- ironic/api/controllers/v1/node.py | 435 ++++++++--- ironic/api/controllers/v1/notification_utils.py | 6 +- ironic/api/controllers/v1/port.py | 63 +- ironic/api/controllers/v1/portgroup.py | 38 +- ironic/api/controllers/v1/ramdisk.py | 56 +- ironic/api/controllers/v1/types.py | 65 +- ironic/api/controllers/v1/utils.py | 119 ++- ironic/api/controllers/v1/versions.py | 14 +- ironic/api/controllers/v1/volume.py | 8 +- ironic/api/controllers/v1/volume_connector.py | 26 +- ironic/api/controllers/v1/volume_target.py | 28 +- ironic/api/types.py | 29 + ironic/api/wsgi.py | 2 +- ironic/cmd/__init__.py | 2 +- ironic/cmd/api.py | 16 +- ironic/cmd/conductor.py | 30 +- ironic/cmd/dbsync.py | 2 - ironic/cmd/status.py | 1 + ironic/common/driver_factory.py | 16 +- ironic/common/exception.py | 8 +- ironic/common/glance_service/service_utils.py | 4 +- ironic/common/i18n.py | 19 +- ironic/common/images.py | 160 +++- ironic/common/neutron.py | 110 ++- ironic/common/policy.py | 54 +- ironic/common/pxe_utils.py | 68 +- ironic/common/release_mappings.py | 24 +- ironic/common/states.py | 15 +- ironic/common/utils.py | 18 +- ironic/conductor/allocations.py | 2 +- ironic/conductor/base_manager.py | 17 +- ironic/conductor/cleaning.py | 5 + ironic/conductor/deployments.py | 215 +++--- ironic/conductor/manager.py | 374 ++++++--- ironic/conductor/rpcapi.py | 109 ++- ironic/conductor/steps.py | 69 +- ironic/conductor/task_manager.py | 4 +- ironic/conductor/utils.py | 185 ++++- ironic/conf/agent.py | 6 +- ironic/conf/conductor.py | 14 +- ironic/conf/console.py | 7 + ironic/conf/default.py | 26 +- ironic/conf/deploy.py | 8 +- ironic/conf/ipmi.py | 6 + ironic/conf/neutron.py | 10 + ironic/conf/pxe.py | 16 +- ...7122cc9_add_extra_column_to_deploy_templates.py | 6 +- .../5674c57409b9_replace_nostate_with_available.py | 8 +- .../versions/b2ad35726bb0_add_node_lessee.py | 32 + .../cd2c80feb331_add_node_retired_field.py | 6 +- ironic/db/sqlalchemy/api.py | 17 +- ironic/db/sqlalchemy/models.py | 7 +- ironic/dhcp/base.py | 12 +- ironic/dhcp/neutron.py | 48 +- ironic/drivers/base.py | 2 +- ironic/drivers/drac.py | 6 + ironic/drivers/ibmc.py | 2 - ironic/drivers/modules/agent.py | 88 +-- .../{agent_base_vendor.py => agent_base.py} | 820 +++++++++++++------- ironic/drivers/modules/agent_client.py | 203 ++++- ironic/drivers/modules/ansible/deploy.py | 14 +- .../playbooks/callback_plugins/ironic_log.py | 2 +- ironic/drivers/modules/console_utils.py | 66 +- ironic/drivers/modules/deploy_utils.py | 403 +--------- ironic/drivers/modules/drac/bios.py | 376 +++++++++ ironic/drivers/modules/drac/power.py | 80 +- ironic/drivers/modules/drac/raid.py | 143 +++- ironic/drivers/modules/ilo/boot.py | 25 +- ironic/drivers/modules/ilo/management.py | 10 +- ironic/drivers/modules/ilo/power.py | 4 +- ironic/drivers/modules/inspector.py | 2 +- ironic/drivers/modules/ipmitool.py | 48 +- ironic/drivers/modules/ipxe.py | 300 -------- ironic/drivers/modules/irmc/boot.py | 7 + ironic/drivers/modules/iscsi_deploy.py | 315 +++++++- ironic/drivers/modules/network/common.py | 2 +- ironic/drivers/modules/network/flat.py | 8 +- ironic/drivers/modules/pxe.py | 293 +------ ironic/drivers/modules/pxe_base.py | 294 +++++++ ironic/drivers/modules/redfish/boot.py | 72 +- ironic/drivers/modules/redfish/inspect.py | 123 +-- ironic/drivers/modules/redfish/management.py | 49 +- ironic/drivers/modules/redfish/utils.py | 78 +- ironic/drivers/modules/snmp.py | 21 +- ironic/drivers/modules/storage/cinder.py | 6 +- ironic/drivers/modules/storage/external.py | 12 +- ironic/drivers/raid_config_schema.json | 6 +- ironic/hacking/checks.py | 15 +- ironic/objects/node.py | 31 +- .../unit/api/controllers/v1/test_allocation.py | 76 +- .../api/controllers/v1/test_deploy_template.py | 2 +- .../api/controllers/v1/test_notification_utils.py | 4 +- .../unit/api/controllers/v1/test_portgroup.py | 4 +- .../api/controllers/v1/test_volume_connector.py | 4 +- .../unit/api/controllers/v1/test_volume_target.py | 4 +- .../unit/drivers/modules/ansible/test_deploy.py | 23 - .../drivers/modules/drac/test_periodic_task.py | 37 +- .../unit/drivers/modules/ilo/test_management.py | 10 +- .../drivers/modules/intel_ipmi/test_intel_ipmi.py | 54 +- .../unit/drivers/modules/network/test_common.py | 12 +- .../unit/drivers/modules/network/test_flat.py | 26 +- .../unit/drivers/modules/network/test_neutron.py | 40 +- .../unit/drivers/modules/redfish/test_boot.py | 49 +- .../drivers/modules/redfish/test_management.py | 49 +- .../unit/drivers/modules/redfish/test_utils.py | 20 + .../unit/drivers/modules/storage/test_cinder.py | 7 +- .../unit/drivers/modules/storage/test_external.py | 12 +- ...est_agent_base_vendor.py => test_agent_base.py} | 841 +++++++++++++++------ .../unit/drivers/modules/test_agent_client.py | 101 ++- .../unit/drivers/modules/test_console_utils.py | 41 + .../unit/drivers/modules/test_deploy_utils.py | 726 +----------------- .../unit/drivers/modules/test_iscsi_deploy.py | 594 ++++++++++++++- lower-constraints.txt | 11 +- .../run.yaml | 3 + playbooks/legacy/grenade-dsvm-ironic/run.yaml | 5 + .../notes/add-indicator-api-8c816b3828e6b43b.yaml | 6 + ...gent-command-status-retry-f9b6f53a823c6b01.yaml | 6 + .../agent-token-support-0a5b5aa1585dfbb5.yaml | 19 + ...cation-added-owner-policy-c650074e68d03289.yaml | 7 + .../notes/bug-2004265-cd9056868295f374.yaml | 7 + .../bug-2007567-wsman-raid-48483affdd9f9894.yaml | 6 + .../bump-min-ansible-ver-a78e7885c0e9d361.yaml | 5 + ...s-conductor-restart-check-f70005fbf65f6bb6.yaml | 5 + ...ault-boot-option-to-local-8c326077770ab672.yaml | 8 + ...er-sync-timeout-extension-fa5e7b5fdd679d84.yaml | 9 + ..._embedded_ipa_error_codes-c8fdfaa9e6a1ed06.yaml | 9 + .../console-port-allocation-bb07c43e3890c54c.yaml | 9 + ...ontinue-node-deploy-state-63d9dc9cdcf8e37a.yaml | 9 + .../decouple-boot-params-2b05806435ad21e5.yaml | 10 + .../notes/deploy-step-error-d343e8cb7d1b2305.yaml | 6 + .../deploy-steps-required-aa72cdf1c0ec0e84.yaml | 4 + ...v6-stateful-address-count-0f94ac6a55bd9e51.yaml | 14 + ...onic-lib-rootwrap-filters-f9224173289c1e30.yaml | 6 + .../notes/dual-stack-ironic-493ebc7b71263aaa.yaml | 16 + ...nstall-bootloader-timeout-8fce9590bf405cdf.yaml | 8 + releasenotes/notes/fifteen-0da3cca48dceab8b.yaml | 11 + .../notes/fips-hashlib-bca9beacc2b48fe7.yaml | 4 + .../fix-create-configuration-0e000392d9d7f23b.yaml | 15 + ...sion-before-raid-creation-ea1f7eb425f79f2f.yaml | 22 + releasenotes/notes/fix-gmr-37332a12065c09dc.yaml | 6 + .../idrac-fix-reboot-failure-c740e765ff41bcf0.yaml | 7 + ...drac-wsman-bios-interface-b39a51828f61eff6.yaml | 8 + .../ilo-managed-inspection-8b549c003224e011.yaml | 6 + ...ksum-recalculation-sha256-fd3d5b4b0b757e86.yaml | 11 + .../image_checksum_optional-381acf9e441d2a58.yaml | 7 + ...e-redfish-set-boot-device-e38e9e9442ab5750.yaml | 7 + .../notes/ipmi-debug-1c7e090c6cc71903.yaml | 13 + .../neutron-port-update-598183909d44396c.yaml | 8 + .../node-in-maintenance-fail-afd0eace24fa28be.yaml | 8 + .../notes/node-lessee-4fb320a597192742.yaml | 5 + ...tance-info-extra-policies-862b2a70b941cf39.yaml | 8 + ...ptional-redfish-system-id-3f6e8b0ac989cb9b.yaml | 9 + .../notes/oslo-i18n-optional-76bab4d2697c6f94.yaml | 5 + .../oslo-reports-optional-59469955eaffdf1d.yaml | 6 + ...k-connection-network-type-71103d919e27fc5d.yaml | 7 + .../notes/raid-hints-c27097ded0137f7c.yaml | 7 + .../reactive-ibmc-driver-d2149ca81a198090.yaml | 5 + .../redfish-add-root-prefix-03b5f31ec6bbd146.yaml | 8 + ...rvation-on-conductor-stop-6ebbcdf92da57ca6.yaml | 6 + .../remove-ipxe-enabled-opt-61d106f01c46acab.yaml | 7 + .../rename-iso-builder-func-46694ed6ded84f4a.yaml | 6 + .../software-raid-with-uefi-5b88e6c5af9ea743.yaml | 4 + ...t_to_hash_rescue_password-0915927e41e6d845.yaml | 23 + ...secrets_to_generate_token-55af0f43e5a80b9e.yaml | 5 + requirements.txt | 6 +- setup.cfg | 10 +- setup.py | 8 - test-requirements.txt | 5 +- tools/check-releasenotes.py | 2 - tools/config/ironic-config-generator.conf | 1 + tox.ini | 19 +- zuul.d/ironic-jobs.yaml | 95 ++- zuul.d/legacy-ironic-jobs.yaml | 1 + zuul.d/project.yaml | 28 +- 271 files changed, 11089 insertions(+), 5685 deletions(-) Requirements updates -------------------- diff --git a/driver-requirements.txt b/driver-requirements.txt index c9874f12f..b8d91d0bc 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -10 +10 @@ python-scciclient>=0.8.0 -python-dracclient>=3.1.0,<4.0.0 +python-dracclient>=3.1.0,<5.0.0 @@ -14 +14 @@ python-xclarityclient>=0.1.6 -sushy>=2.0.0 +sushy>=3.2.0 @@ -17 +17 @@ sushy>=2.0.0 -ansible>=2.5 +ansible>=2.7 @@ -23 +23 @@ python-ibmcclient>=0.1.0 -sushy-oem-idrac<=0.1.0 +sushy-oem-idrac<=1.0.0 diff --git a/requirements.txt b/requirements.txt index fff36d71b..da87b3037 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6 +6 @@ SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 # MIT -alembic>=0.8.10 # MIT +alembic>=0.9.6 # MIT @@ -13 +13 @@ python-glanceclient>=2.8.0 # Apache-2.0 -keystoneauth1>=3.15.0 # Apache-2.0 +keystoneauth1>=3.18.0 # Apache-2.0 @@ -24 +23,0 @@ oslo.rootwrap>=5.8.0 # Apache-2.0 -oslo.i18n>=3.15.3 # Apache-2.0 @@ -28 +26,0 @@ oslo.policy>=1.30.0 # Apache-2.0 -oslo.reports>=1.18.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index ab53cb70f..497bcdc99 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -4 +4 @@ -hacking>=1.0.0,<1.1.0 # Apache-2.0 +hacking>=3.0.0,<3.1.0 # Apache-2.0 @@ -12,0 +13 @@ iso8601>=0.1.11 # MIT +oslo.reports>=1.18.0 # Apache-2.0 @@ -21 +22 @@ bashate>=0.5.1 # Apache-2.0 -flake8-import-order>=0.13 # LGPLv3 +flake8-import-order>=0.17.1 # LGPLv3
participants (1)
-
no-reply@openstack.org