We are excited to announce the release of: ironic 20.0.0: OpenStack Bare Metal Provisioning This release is part of the yoga 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. 20.0.0 ^^^^^^ New Features ************ * The configuration options "enabled_power_interfaces" and "enabled_management_interfaces" are now empty by default. If left empty, their values will be calculated based on "enabled_hardware_types". * The Bare Metal service is now capable of calculating the default value for any "enabled_***_interfaces" based on "enabled_hardware_types". * Fast track mode can now be enabled or disabled per node: baremetal node set <node> --driver-info fast_track=true * Adds support for "idrac-redfish" RAID and management clean steps to be run without IPA when disabling ramdisk during cleaning. * Introduces a new explicit "instance_info" parameter "image_type", which can be used to distinguish between partition and whole disk images instead of a "kernel"/"ramdisk" pair. Adding "kernel" and "ramdisk" is no longer necessary for partition images if "image_type" is set to "partition" and local boot is used. * Manually copying the initial grub config for grub network boot is no longer necessary, as this file is now written to the TFTP root directory on conductor startup. A custom template can be used to generate this file with config option "[pxe]initial_grub_template". * The new "[glance] swift_account_prefix" parameter has been added. This parameter be set according to the "reseller_prefix" parameter in "proxy-server.conf" of Swift. * Now the export configuration step from the "idrac-redfish" management interface does not export iDRAC BMC connection settings to avoid overwriting those in another system when using unmodified configuration mold in import step. For import step it is still possible to add these settings back manually. Upgrade Notes ************* * Bootloader installation failures are now fatal for whole disk images. Previously these failures were ignored to facilitate backwards compatibility with older Ironic Python Agents, however we can now rely on having a sufficiently modern IPA. * The configuration option "[inspector]power_off" is now ignored for nodes that have fast-track enabled. These nodes are never powered off. * Foreign keys are now enabled when SQLite is used as a database. Bug Fixes ********* * No longer validates boot interface parameters when adopting a node that uses local boot. * Fixes pagination for the following collections: /v1/allocations /v1/chassis /v1/conductors /v1/deploy_templates /v1/nodes/{node}/history The "next" link now contains a valid URL. * Fix Node Console Duplicate Sol Session. This patch adds "sol deactivate" action before start node console, to make sure the current console connection always a success. See story 2009762 (https://storyboard.openstack.org/#!/story/2009762). * Fixed an issue where duplicate extra DHCP options was passed in the port update request to the Networking service. The duplicate DHCP options caused an error in the Networking service and node provisioning would fail. See bug: 2009774 (https://storyboard.openstack.org/#!/story/2009774). * Fixed an issue where provisioning/cleaning would fail on IPv6 routed provider networks. See bug: 2009773 (https://storyboard.openstack.org/#!/story/2009773). * Fixes validation of input argument "firmware_images" of "redfish" hardware type clean step "update_firmware". Now it validates the argument at the beginning of clean step. Prior to this fix issues were determined at the time of executing firmware update or not at all (for example, mistyping optional field 'wait'). * Fixes "redfish" hardware type "update_firmware" cleaning step to work with Sushy version 4.0.0 or greater. * Fixes hardware type "redfish" RAID interface deploy steps when completion requires rebooting system for non-immediate configuration application. Prior to this fix, such nodes would remain in "wait call-back" state indefinitely. * Fixes the determination of a failed RAID configuration task in the "redfish" hardware type. Prior to this fix, the tasks that have failed were reported as successful. * Fixes an issue where clients would get a 404 due to the node pagination breaking at max_limit due to an uninitialised resource_url. * Fixes an issue where clients would get a 404 due to the port and portgroups pagination breaking at max_limit due to an uninitialised resource_url. * Fixes the "initrd" kernel parameter when booting ramdisk directly from Swift/RadosGW using iPXE. Previously it was always "deploy_ramdisk", even when the actual file name is different. * Inspection no longer fails when one of the NICs reports NIC address that is not a valid MAC (e.g. a WWN). * The image cache now respects the "Cache-Control: no-store" header for HTTP(s) images. * File images are no longer cached in the image cache to avoid unnecessary consumption of the disk space. * Services ("ironic", "ironic-api", "ironic-conductor") now correctly return a non-zero exit code on start-up failures. * The "ironic" and "ironic-conductor" services now wait for the conductor manager to start before notifying systemd about the successful start-up. Other Notes *********** * The "fake-hardware" hardware types now explicitly declares support for all generic interface implementations, so that they can be used in the defaults calculation. Changes in ironic 19.0.0..20.0.0 -------------------------------- 7ac480412 Build the new cirros image even when netboot is the default bbceca562 CI: use a custom cirros partition image instead of the default 3b6e54ca0 [doc][trivial] Fixing typos in RBAC documentation 538c3d3ff Fix release mapping (19.1 -> 20.0) cfa47c54b Update some releasenotes for 19.1 release a7cbf3f6a Add release mappings for 19.0 and 19.1 bugfix f4f76e7fd iRMC: Fix instructions for boot interface c975eaa8c Set correct initrd_filename for iPXE when using Swift 34a582a01 [trivial] Fix typo in policy error message 1f509c5bd Fix the benchmark job f67bbeb9f Clean up jobs with legacy names 6f389138f Re-enable the standalone job 720b42d53 Avoid non-Stream CentOS and temporary disable the standalone job a813c769e Explicit parameter to distinguish partition/whole-disk images 374d5e5a3 deploy_utils: only check glance for image properties kernel/ramdisk 365a4545f Fix DevStack plugin ipxe-snponly-x86_64.efi name e851d6346 Add additional ramdisk tests 2c58ab370 Wait for conductor start before notifying systemd e841fa054 Return non-zero exit code on failures cde42678b Make account prefix of Swift confgurable 55144d3bd Fix resource_url in the remaining resources 69e6152ac Add idrac-redfish clean steps to not require ramdisk a2160f13a Fix Node Console Duplicate Sol Session ce6a28d0d Migrates docs from wiki 503e36582 Inspector: better error message on DiscoveryFailure 2ac740e09 Set resource_url when getting all ports or portgroups 69227c66c Set resource_url when getting all nodes 89cf1e7f6 Update idrac-redfish export configuration step 9308c0a0b Do not fail inspection on invalid MAC b824ea7fa Fix validating input for redfish update_firmware c3805b2be Use mtools mcopy in create_vfat_image c4721da2d Add dhcp options for each ip_version once 7043a414a ImageCache: respect Cache-Control: no-store 3404dc913 Ensure 'port' is up2date after binding:host_id 6b5fcf8f4 [doc] Add note about shellinabox console enable error e43791c64 [doc] Fix broken link in "Node Deployment" ca6499b62 Make bootloader installation failures fatal for whole disk images 196d8f7fc Fix redfish RAID failed tasks b66d371fd Use driver_internal_info methods for other drivers c2d98c229 Use driver_internal_info methods for drac driver 6b7ede028 Use driver_internal_info methods for ilo driver 7047eb8db Use driver_internal_info methods for redfish driver 85c0dd492 Use driver_internal_info methods for driver utils 6fed0964a Fix Redfish RAID deploy steps cfcea55cf Automatically configure enabled_***_interfaces d4b99401a Derive FakeHardware from GenericHardware 454ad9566 Update RAID docs f4c37bf11 Fix Mock objects as specs 4b93ecd5d Enable foreign keys in SQLite 4eb79f15f Re-add python 3.6/3.7 in classifier 17fda9145 [doc] Adoption with Nova 9076f185c Fix redfish update_firmware for newer Sushy e37af4593 Document single process Ironic d342b07dd Adoption: do not validate boot interface when local booting 3f76724df Write initial grub config on startup 45e8adc1d Move place_loaders_for_boot to boot driver __init__ 00c056618 Ensure desired permissions on all written pxe files 82c8afb6a [doc] Add parameters for burn-in log files 24184a449 CI: reduce api worker processes to 1 2a6cdf4b2 Allow enabling fast-track per node 79311c88d Use more granular lock in BaseDriverFactory Diffstat (except docs and test files) ------------------------------------- bindep.txt | 9 +- devstack/files/bindep.txt | 4 + devstack/lib/ironic | 84 ++++++---- devstack/tools/ironic/scripts/cirros-partition.sh | 69 ++++++++ .../include/configure-ironic-singleprocess.inc | 48 ++++++ driver-requirements.txt | 2 +- ironic/api/controllers/v1/allocation.py | 4 +- ironic/api/controllers/v1/chassis.py | 8 +- ironic/api/controllers/v1/collection.py | 8 +- ironic/api/controllers/v1/conductor.py | 2 +- ironic/api/controllers/v1/deploy_template.py | 1 + ironic/api/controllers/v1/node.py | 22 +-- ironic/api/controllers/v1/port.py | 11 +- ironic/api/controllers/v1/portgroup.py | 7 +- ironic/api/controllers/v1/ramdisk.py | 15 +- ironic/api/controllers/v1/volume_connector.py | 2 +- ironic/api/controllers/v1/volume_target.py | 2 +- ironic/cmd/api.py | 2 +- ironic/cmd/conductor.py | 8 +- ironic/cmd/singleprocess.py | 7 +- ironic/common/driver_factory.py | 128 +++++++++----- ironic/common/glance_service/image_service.py | 9 +- ironic/common/image_service.py | 9 +- ironic/common/images.py | 33 ++-- ironic/common/neutron.py | 3 +- ironic/common/policy.py | 2 +- ironic/common/pxe_utils.py | 46 ++++- ironic/common/release_mappings.py | 42 ++++- ironic/common/rpc_service.py | 22 +++ ironic/common/utils.py | 17 +- ironic/conductor/base_manager.py | 35 +--- ironic/conductor/deployments.py | 8 +- ironic/conductor/manager.py | 19 +-- ironic/conductor/utils.py | 25 ++- ironic/conf/default.py | 4 +- ironic/conf/glance.py | 5 + ironic/conf/inspector.py | 3 +- ironic/conf/pxe.py | 5 + ironic/db/sqlalchemy/__init__.py | 16 ++ ironic/dhcp/neutron.py | 6 +- ironic/drivers/fake_hardware.py | 33 ++-- ironic/drivers/modules/agent.py | 17 +- ironic/drivers/modules/agent_base.py | 87 ++++------ ironic/drivers/modules/agent_power.py | 18 +- .../playbooks/roles/configure/tasks/main.yaml | 4 +- .../playbooks/roles/prepare/tasks/main.yaml | 2 +- ironic/drivers/modules/boot_mode_utils.py | 8 +- ironic/drivers/modules/deploy_utils.py | 122 ++++++++------ ironic/drivers/modules/drac/bios.py | 43 +++-- ironic/drivers/modules/drac/management.py | 51 +++--- ironic/drivers/modules/drac/power.py | 4 +- ironic/drivers/modules/drac/raid.py | 92 +++++----- ironic/drivers/modules/ilo/bios.py | 20 +-- ironic/drivers/modules/ilo/boot.py | 28 +--- ironic/drivers/modules/ilo/common.py | 8 +- ironic/drivers/modules/ilo/management.py | 22 +-- ironic/drivers/modules/ilo/raid.py | 24 +-- ironic/drivers/modules/image_cache.py | 33 ++-- ironic/drivers/modules/initial_grub_cfg.template | 7 + ironic/drivers/modules/inspect_utils.py | 7 + ironic/drivers/modules/inspector.py | 16 +- ironic/drivers/modules/ipmitool.py | 31 ++-- ironic/drivers/modules/ipxe.py | 4 + ironic/drivers/modules/irmc/bios.py | 4 +- ironic/drivers/modules/irmc/boot.py | 20 +-- ironic/drivers/modules/irmc/management.py | 11 +- ironic/drivers/modules/master_grub_cfg.txt | 7 - ironic/drivers/modules/pxe.py | 7 + ironic/drivers/modules/redfish/bios.py | 23 ++- ironic/drivers/modules/redfish/firmware_utils.py | 58 +++++++ ironic/drivers/modules/redfish/management.py | 18 +- ironic/drivers/modules/redfish/raid.py | 97 +++++------ ironic/drivers/utils.py | 17 +- ironic/objects/node.py | 12 ++ .../unit/api/controllers/v1/test_allocation.py | 16 +- .../unit/api/controllers/v1/test_conductor.py | 12 +- .../api/controllers/v1/test_deploy_template.py | 13 +- .../unit/api/controllers/v1/test_portgroup.py | 2 + .../api/controllers/v1/test_volume_connector.py | 2 + .../unit/api/controllers/v1/test_volume_target.py | 2 + .../drivers/ipxe_config_boot_from_ramdisk.template | 47 ++++++ .../unit/drivers/modules/drac/test_management.py | 2 + .../unit/drivers/modules/ibmc/test_management.py | 70 +++++--- .../drivers/modules/ilo/test_firmware_processor.py | 69 +++++--- .../unit/drivers/modules/network/test_noop.py | 3 +- .../drivers/modules/redfish/test_firmware_utils.py | 88 ++++++++++ .../drivers/modules/redfish/test_management.py | 12 +- .../unit/drivers/modules/redfish/test_raid.py | 84 ++++++++++ .../unit/drivers/modules/test_agent_client.py | 57 ++++--- .../unit/drivers/modules/test_deploy_utils.py | 151 +++++++++++++---- .../unit/drivers/modules/test_inspect_utils.py | 9 +- .../unit/drivers/modules/xclarity/test_common.py | 6 +- .../notes/adopt-validation-7249ceb57016f0e4.yaml | 5 + releasenotes/notes/api-none-3fdca1ccbb64d9b0.yaml | 12 ++ .../notes/auto-ifaces-fdb8c680eab711f4.yaml | 9 + .../bootloader-install-fatal-6f1b9fed1d2c0ee4.yaml | 7 + .../notes/bug-2009762-403eac24c4823d2d.yaml | 7 + .../notes/fake-interfaces-9778071f6379227b.yaml | 6 + .../fast-track-per-node-1fc62918e03fd74a.yaml | 10 ++ ...plcate-extra-dhcp-options-4edb729cb5bcf552.yaml | 8 + ...g-routed-provider-network-bbd0c46559f618ac.yaml | 6 + ...irmware-images-validation-9b5b2fd28314ce66.yaml | 8 + ...-redfish-firmware-upgrade-7ef2fcb6bfd74e67.yaml | 5 + ...redfish-raid-deploy-steps-e9ee1ea3d1f2a475.yaml | 7 + ...redfish-raid-failed-tasks-02487c4698dea176.yaml | 6 + ...x_pagination_resource_url-42fb4023fde9da2b.yaml | 5 + ...nation_resource_url_ports-8d2696a6a7ab012f.yaml | 6 + ...steps-not-require-ramdisk-699e169af39b0dd6.yaml | 5 + .../notes/image-type-ac259a90393bdd2c.yaml | 9 + .../notes/initial_grub-566688b16f773fcf.yaml | 7 + .../notes/initrd_filename-ac68e96f1c9fb576.yaml | 6 + .../notes/invalid-mac-b0e3d99f23afeb30.yaml | 5 + releasenotes/notes/no-cache-df7caa45f3d8b6d7.yaml | 8 + .../notes/service-exit-77bcf3a538fab4bc.yaml | 5 + .../notes/service-wait-e85cbe7978f61764.yaml | 5 + releasenotes/notes/sqlite-fk-8c87a308a02d49bf.yaml | 4 + .../swift_account_prefix-dbc9e68890bff47c.yaml | 6 + ...sh-management-export-conf-9fb17273c4d9a050.yaml | 9 + releasenotes/source/icehouse.rst | 33 ++++ releasenotes/source/index.rst | 6 +- releasenotes/source/juno.rst | 25 +++ releasenotes/source/kilo.rst | 64 +++++++ setup.cfg | 2 + tools/benchmark/generate-statistics.py | 2 + zuul.d/ironic-jobs.yaml | 20 +-- zuul.d/project.yaml | 8 +- 184 files changed, 2930 insertions(+), 1288 deletions(-) Requirements updates -------------------- diff --git a/driver-requirements.txt b/driver-requirements.txt index ffcb3e2ab..5239fe73c 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -20 +20 @@ python-ibmcclient>=0.2.2,<0.3.0 -sushy-oem-idrac>=3.0.1,<4.0.0 +sushy-oem-idrac>=4.0.0,<5.0.0