We are glad to announce the release of:
ironic 12.0.0: OpenStack Bare Metal Provisioning
This release is part of the stein release series.
The source is available from:
https://git.openstack.org/cgit/openstack/ironic
Download the package from:
https://tarballs.openstack.org/ironic/
Please report issues through launchpad:
https://storyboard.openstack.org/#!/project/943
For more details, please see below.
12.0.0 ^^^^^^
Prelude *******
The OpenStack Bare Metal as a Service team announces the release of ironic version 12.0 which introduces a number of new features as part of the Stein development cycle.
* Per-node automated cleaning control
* Redfish out-of-band introspection
* Redfish BIOS configuration management
* Support for direct image downloads from the conductor host.
* Support for validating the enhanced image checksums introduced in the Image service in Rocky.
* Dedicated "ipxe" boot interface enabling better co-existence of different hardware types.
* Configurable "disk_erasure_concurrency" to speed disk cleaning.
* Configurable "protected" nodes to help prevent accidential actions upon critical nodes.
And many many bug fixes, Enjoy!
New Features ************
* Adds the "[redfish]auth_type" ironic configuration option for the "redfish" hardware type that is used to choose one of the following authentication methods:: "basic", "session" and "auto". The "auto" setting first tries "session" method and falls back to "basic" if session authentication is not supported by the Redfish BMC. The default is "auto". This configuration option can be overridden on a per-node basis by the "driver_info/redfish_auth_type" option.
* Adds out-of-band inspection support to "redfish" hardware type'. Successful inspection populates mandatory properties: "cpus", "local_gb", "cpu_arch", "memory_mb" and creates ironic ports for inspected nodes.
* Allows enabling automated cleaning per node if it is disabled globally. A new "automated_clean" field has been created on the node object, allowing to control the individual automated cleaning of nodes. When automated cleaning is disabled at global level, but enabled at node level, the automated cleaning will be performed only on those nodes.
The new field is accessible starting with the API version 1.47.
* Adds a new configuration option "[iscsi]conv_flags", that specifies the conversion options to pass to the "dd" utility when copying an image. For example, passing "sparse" may result in less network traffic for large whole disk images.
* Adds support for booting a ramdisk using virtual media to "ilo- virtual-media" boot interface when an ironic node is configured with "ramdisk" deploy interface.
* Adds the ability to provision with "direct" deploy interface and custom HTTP service running at ironic conductor node. A new configuration option "[agent]image_download_source" is introduced. When set to "swift", the "direct" deploy interface uses tempurl generated via the Object service as the source of instance image during provisioning, this is the default configuration. When set to "http", the "direct" deploy interface downloads instance image from the Image service, and caches the image in the ironic conductor node. The cached instance images are referenced by symbolic links located at subdirectory "[deploy]http_image_subdir" under path "[deploy]http_root". The custom HTTP server running at ironic conductor node is supposed to be configured properly to make IPA has unauthenticated access to image URL described above.
* Setting these configuration options to 0 will disable the periodic tasks:
* [conductor]sync_power_state_interval: sync power states for the nodes
* [conductor]check_provision_state_interval:
* check deployments and time out if the deployment takes too long
* check the status of cleaning a node and time out if it takes too long
* check the status of inspecting a node and time out if it takes too long
* check for and handle nodes that are taken over by new conductors (if an old conductor disappeared)
* [conductor]send_sensor_data_interval: send sensor data to ceilometer
* [conductor]sync_local_state_interval: refresh a conductor's copy of the consistent hash ring. If any mappings have changed, determines which, if any, nodes need to be "taken over". The ensuing actions could include preparing a PXE environment, updating the DHCP server, and so on.
* [oneview]periodic_check_interval:
* check for nodes taken over by OneView users
* check for nodes freed by OneView users
* In accordance with the multihash support (https://specs.openstack.org/openstack/glance- specs/specs/rocky/approved/glance/multihash.html) provided by glance, ironic now supports using the new "os_hash_algo" and "os_hash_value" fields to computes and validates image checksum when deploying instance images by the "direct" deploy interface.
* Adds support to retrieve the information of conductors known by ironic:
* a new endpoint "GET /v1/conductors" for listing conductor resources.
* a new endpoint "GET /v1/conductors/{hostname}" for showing a conductor resource.
Adds a read-only "conductor" field to the Node, which represents the conductor currently servicing a node, and can be retrieved from following node endpoints:
* "GET /v1/nodes?detail=true" or "GET /v1/nodes/detail"
* "GET /v1/nodes/<node_ident>"
* "POST /v1/nodes"
* "PATCH /v1/nodes/<node_ident>"
* Adds support for the injection of Non-Masking Interrupts (NMI) to "ilo" management interface. This is supported on HPE ProLiant Gen9 and Gen10 servers.
* Adds support for "soft power off" and "soft reboot" operations to "ilo" power interface.
* Adds a configuration option "[ipmi]disable_boot_timeout" which is used to set the default behavior whether ironic should send a raw IPMI command to disable timeout. This configuration option can be overidden by the per-node option "ipmi_disable_boot_timeout" in node's "driver_info" field. See story 2004266 (https://storyboard.openstack.org/#!/story/2004266) and Story 2002977 (https://storyboard.openstack.org/#!/story/2002977) for additional information.
* Adds an "ipxe" boot interface which allows for instance level iPXE enablement as opposed to conductor-wide enablement of iPXE.
* New framework for "ironic-status upgrade check" command is added. This framework allows adding various checks which can be run before a Ironic upgrade to ensure if the upgrade can be performed safely.
* Adds a configuration option "[deploy]disk_erasure_concurrency" to define the target pool size used by Ironic Python Agent ramdisk to erase disk devices. The number of threads created by IPA to erase disk devices is the minimum value of target pool size and the number of disks to be erased. This feature can greatly reduce the operation time for baremetals with multiple disks. For the backwards compatibility, the default value is 1.
* It is now possible to protect a provisioned node from being undeployed, rebuilt or deleted by setting the new "protected" field to "True". The new "protected_reason" field can be used to document the reason the node was made protected.
* Adds "bios" interface to the "redfish" hardware type.
* Allows streaming raw partition images to the ramdisk when using the "direct" deploy interface. Requires **ironic-python-agent** from the Stein release series.
Known Issues ************
* Building RAID1 is known to not work with Dell BOSS cards using **python-dracclient** 1.4.0 or earlier. Upgrade to **python- dracclient** 1.5.0 to use this feature.
* Support for IPv6 and iPXE is restricted and is unlikely to work in default scenarios and configurations without external intervention. This is due to the way DHCPv6 and dnsmasq operate. At present this issue is being tracked in story 2005402 (https://storyboard.openstack.org/#!/story/2004502).
Upgrade Notes *************
* The "hash_ring_reset_interval" configuration option was changed from 180 to 15 seconds. Previously, this option was essentially ignored on the API side, becase the hash ring was reset on each API access. The lower value minimizes the probability of a request routed to a wrong conductor when the ring needs rebalancing.
* Deployments utilizing iPXE should consider use of the "ipxe" boot interface as opposed to the "pxe" boot interface. iPXE functionality in the "pxe" boot interface is deprecated and will be removed during the U* development cycle.
* Operator can now use new CLI tool "ironic-status upgrade check" to check if Ironic deployment can be safely upgraded from N-1 to N release.
* Support for using the Image API v1 was removed. It was removed from Glance in the Rocky release.
* The deprecated option "[glance]glance_api_version" was removed. Only v2 is now used.
* If you are doing a minor version upgrade, please re-run the "ironic- dbsync online_data_migrations" command to properly update the versions of the Objects in the database. Otherwise, the next major upgrade may fail.
* The deprecated configuration option "[conductor]inspect_timeout" was removed, please use "[conductor]inspect_wait_timeout" instead.
* A future release will change the default value of "[deploy]/default_boot_mode" from "bios" to "uefi". It is recommended to set an explicit value for this option. For hardware types which don't support setting boot mode, a future release will assume boot mode is set to UEFI if no boot mode is set to node's capabilities. It is also recommended to set "boot_mode" into "properties/capabilities" of a node.
Deprecation Notes *****************
* The "[ilo]/power_retry" config is deprecated and will be removed in the future release. Please use "[conductor]/soft_power_off_timeout" instead.
* The "[pxe]ipxe_enabled" configuration option has been deprecated in preference for the "ipxe" boot interface. The configuration option will be removed during the U* development cycle.
* Support for iPXE in the "pxe" boot interface has been deprecated, and will be removed during the U* development cycle. The "ipxe" boot interface should be used instead.
* Using the "fake" management interface with the "manual-management" hardware type is deprecated, please use "noop" instead. Existing nodes will have to be updated after the upgrade.
* The "xclarity" hardware type, which was previously deprecated, is no longer deprecated. Lenovo has instituted third-party CI which is a requirement for a driver to remain in-tree.
Critical Issues ***************
* The "ironic-dbsync online_data_migrations" command was not updating the objects to their latest versions, which could prevent upgrades from working (i.e. when running the next release's "ironic- dbsync upgrade"). Objects are updated to their latest versions now when running that command. See story 2004174 (https://storyboard.openstack.org/#!/story/2004174) for more information.
Bug Fixes *********
* Fixes the bug in executing asynchronous BIOS interface clean step by honoring the state returned by the BIOS interface clean step which was ignored earlier.
* Fixes a misunderstanding in how DHCPv6 booting of machines operates in that only a URL to the boot loader is expected in that case, as opposed to traditional TFTP parameters. Now a URL is sent to the client in the form of "tftp://<tftp_address>/<tftp_path>/<boot_file>". See story 1744620 (https://storyboard.openstack.org/#!/story/1744620) for more information.
* Fixes a bug that a node's "console_enabled" is reset to "False" at undeploying the node, which requires an operator to set it to "True" before deploying again. By this fix, while the console is stopped at tearing down, "console_enabled" remains "True". When the node is deployed again, the console is started automatically.
* Fixes an issue with a baremetal node that times out during cleaning. The ironic-conductor was attempting to change the node's provision state to 'clean failed' twice, resulting in the node's "last_error" being set incorrectly. This no longer happens. For more information, see story 2004299 (https://storyboard.openstack.org/#!/story/2004299).
* Fixes an issue where setting these configuration options to 0 caused a ValueError exception to be raised. You can now set them to 0 to disable the associated periodic tasks. (For more information, see story 2002059 (https://storyboard.openstack.org/#!/story/2002059).):
* [conductor]sync_power_state_interval: sync power states for the nodes
* [conductor]check_provision_state_interval:
* check deployments and time out if the deployment takes too long
* check the status of cleaning a node and time out if it takes too long
* check the status of inspecting a node and time out if it takes too long
* check for and handle nodes that are taken over by new conductors (if an old conductor disappeared)
* [conductor]send_sensor_data_interval: send sensor data to ceilometer
* [conductor]sync_local_state_interval: refresh a conductor's copy of the consistent hash ring. If any mappings have changed, determines which, if any, nodes need to be "taken over". The ensuing actions could include preparing a PXE environment, updating the DHCP server, and so on.
* [oneview]periodic_check_interval:
* check for nodes taken over by OneView users
* check for nodes freed by OneView users
* Fixes an issue where Neutron ports would be left with a baremetal MAC address associated after an instance is deleted from a baremetal host. This caused problems with MAC address conflicts in follow up deployments to the same baremetal host. bug 2004428 (https://storyboard.openstack.org/#!/story/2004428).
* Fixes an issue where a flat Neutron port would be left with a host ID associated with it after an instance is deleted from a baremetal host. This caused problems with reusing the same port for a new instance as it is already bound to the old instance.
* Fixes the URL generation with TFTP URLs does not account for IPv6 addresses needing to be wrapped in '[]' in order to be parsed.
* Fixes DHCP option parameter generation to correctly return the proper values for IPv6 based booting when iPXE is in use.
* Fixes a bug where the number of CPU sockets was being returned by the "idrac" hardware type during introspection, instead of the number of virtual CPUs. See bug 2004155 (https://storyboard.openstack.org/#!/story/2004155) for details.
* Fixes an issue where the master instance image cache could not be disabled. The configuration option "[pxe]/instance_master_path" may now be set to the empty string to disable the cache.
* Fixes an issue introduced during the Stein development cycle in an attempt to fix IPv6 support where the networking service was also prepending the DHCP option indicator to the number. A fix has been been submitted to the Networking service to address this issue, and the prepending code has been removed from ironic. See story 2004501 (https://storyboard.openstack.org/#!/story/2004501) for more information.
* Fixes an issue with the "irmc" hardware type failing to create a boot image via the "irmc-virtual-media" boot interface. See story 2003338 (https://storyboard.openstack.org/#!/story/2003338) for more information.
* Fixes an issue where the pagination marker was not being set if "uuid" was not in the list of requested fields when executing a list query. The affected API endpoints were: port, portgroup, volume_target, volume_connector, node and chassis. See story 2003192 for more details (https://storyboard.openstack.org/#!/story/2003192).
* Kill "ipmitool" process invoked by ironic to read node's power state if "ipmitool" process does not exit after configured timeout expires. It appears pretty common for "ipmitool" to run for five minutes (with current ironic defauls) once it hits a non-responsive bare metal node. This could slow down the management of other nodes due periodic tasks slots exhaustion. The new behaviour could is enabled by default, but could be disabled via the "[ipmi]kill_on_timeout" ironic configuration option.
* Fixes a race condition in the hash ring implementation that could cause an internal server error on any request. See story 2003966 (https://storyboard.openstack.org/#!/story/2003966) for details.
* The bare metal API no longer returns HTML as part of the "error_message" field in error responses when no "Accept" header is provided.
* Properly reports an error when the image cache and the image HTTP or TFTP location are on different file system, causing hard link to fail.
* Adds "command_timeout" and "max_command_attempts" configuration options to IPA, so when connection errors occur the command will be executed again. The options are located in the "[agent]" section.
* The ironic-python-agent (https://git.openstack.org/cgit/openstack /ironic-python-agent) version 3.5.0 contains a fix that allows multi-device objects to be selected as a root disk. These devices MAY be created automatically in the case of some ATARAID controllers with pre-existing configuration, or via the actions of a custom hardware manager. Operators who require this functionality are encouraged to ensure that their deployment ramdisks are up to date. See story 2003445 (https://storyboard.openstack.org/#!/story/2003445) for more information.
* Fixes an issue where iSCSI based deployments fail if the "cpu_arch" property is not specified on a node.
* The "manual-management" hardware type now defaults to the "noop" management interface. Unlike the "fake" management interface, it does not fail on attempt to set the boot device to the local disk.
* Fixes "redfish" hardware type to reuse HTTP session tokens when talking to BMC using session authentication. Prior to this fix "redfish" hardware type never tried to reuse session token given out by BMC during previous connection what may sometimes lead to session pool exhaustion with some BMC implementations.
* Prevents deletion of ports for active nodes. It is still possible to delete them after putting the node in the maintenance mode.
* Fixes an issue wherein provisioning fails if ironic node is configured with "ramdisk" deploy interface. See bug 2003532 (https://storyboard.openstack.org/#!/story/2003532) for more details.
* Fixes a locking issue where "ipmitool-shellinabox" console interface users may encounter a situation where the bare metal node is locked until the conductor is restarted. See story 1587313 (https://storyboard.openstack.org/#!/story/1587313) for additional information.
* The IPMI hardware type unconditionally instructed the BMC to not automatically clear boot flag valid bit if Chassis Control command not received within 60-second timeout (countdown restarts when a Chassis Control command is received). Some BMCs do not support setting this; if sent it causes the boot to be aborted instead. For IPMI hardware type a new driver option "node['driver_info']['ipmi_disable_boot_timeout']" can be specified. It is "True" by default; set it to "False" to bypass sending this command. See story 2004266 (https://storyboard.openstack.org/#!/story/2004266) for additional information.
* Fixes a bug where ironic port is not updated in node introspection as per PXE enabled setting for "idrac" hardware type. See bug 2004340 (https://storyboard.openstack.org/#!/story/2004340) for details.
* Adds the version discovery information to the versioned API endpoint ("/v1"). This allows *keystoneauth* version discovery to work on this endpoint.
Other Notes ***********
* The support for returning "INSPECTING" state from "InspectInterface.inspect_hardware" was removed. For asynchronous inspection, please return "INSPECTWAIT" instead of "INSPECTING", otherwise the node will be moved to "inspect failed" state.
* The "oneview" hardware type and related interfaces have been removed due to a lack of maintainer and 3rd-party CI. Please see story 2001924 (https://storyboard.openstack.org/#!/story/2001924) for additional information.
* Removes Vagrant files and the information in documentation since the files were too outdated. This would lead to errors if developers tried to set up an environment with Vagrant.
* The "xclarity" hardware type is no longer deprecated as Lenovo has implemented third-party CI to enable testing.
Changes in ironic 11.1.0..12.0.0 --------------------------------
d379357 Introduce configuration option [ipmi]ipmi_disable_timeout b686182 Enroll XClarity machines in Ironic's devstack setting 3aaead7 spelling error 987d330 api-ref: update node.resource_class description 1ba41f6 Add a note regarding IPA multidevice fix 0498e29 Allow disabling instance image cache 8f06369 Add a prelude for ironic 12.0 8370907 Set proper version numbering 2f99152 Change multinode jobs to default to local boot ce71948 Follow-up Retries and timeout for IPA command 582e119 Fix "import xxx as xxx" grammar 9efb9e3 Kill misbehaving `ipmitool` process 2b74d94 Fix OOB introspection to use pxe_enabled flag in idrac driver 59b5b66 Add configurable Redfish client authentication 7c7744d Expose conductors: api 0256e1e Fix node exclusive lock not released on console start/restart. 7870883 Fix IPv6 Option Passing 360dafe Let neutron regenerate mac on port unbind 74ea2bd Slim down grenade jobs a90bdb1 Extend job build timeout eace34a Mark several tests to not test cleaning 9880262 Add BIOS interface to Redfish hardware type 9298c2d Avoid cpu_arch None values in iscsi deployments e2a768f Expose conductors: db and rpc 2344bb5 Fix Chinese quotes eb29465 Add ipmi_disable_timeout to avoid problematic IPMI command f526c03 Correct author email address db16984 Ensure we unbind flat network ports and clear BM mac addresses a2cffd8 Retries and timeout for IPA command 68d62f2 Support for protecting nodes from undeploying and rebuilding 0909509 Add download link apache configuration with mod_wsgi b754025 spelling error 53fc7fb Add Redfish inspect interface follow up 1aecb07 Add the noop management interface to the manual-management hardware type 644f6e2 Add missing ws separator between words c67b46e Switch ironic-tempest-...-tinyipa-multinode to zuulv3 440f53f Add a non-voting bifrost job to ironic 6389ad2 Increase RAM for the ironic node in UEFI job 6350954 Reuse Redfish sessions follow up 46a5899 Improve logs when hard linking images fails 78ae60f Don't fail when node is in CLEANFAIL state f6bd23e Fix ipv6 URL formatting for pxe/iPXE dd95650 Fix redfish test_get_system_resource_not_found test e841488 Improve sushy mocks 60767ae Recommend to set boot mode explicitly 41d3356 Add Redfish inspect interface 3e1fe5f Fix CPU count returned by introspection in Ironic iDRAC driver 1f1a2c3 Add ironic-status upgrade check command framework a83f13b Passing thread pool size to IPA for parallel erasure 84b94ee Change BFV job to use ipxe interface 55ac08a [devstack] Allow setting TFTP max blocksize 8a64d03 Reuse Redfish sessions b8d0f2b Migration step to update objects to latest version 38f6fff Cleanup of remaining pxe focused is_ipxe_enabled 1a4fdc4 Remove the xclarity deprecation 7995ac8 Follow-up to fix not exist deploy image of patch 592247 c28429c Remove pywsman reference 90d58ed Fix DHCPv6 support a77abba Revert "Add openstack/placement as a required project for ironic-grenade*" d269c47 Add api-ref for conductor group 016b7dd Fix ironic developer quickstart document 93670fe Add note to pxe configuration doc 5cb45a1 Create base pxe class 9ccfc31 Wrap up PXE private method to pxe_utils move 11811f2 Enhanced checksum support f532ec4 Enable configuration of conversion flags for iscsi e411297 Document how to implement a new deploy step 7543614 Refactor API code for checking microversions 1c5f9ae Allow streaming raw partition images 7a551c4 Remove Vagrant c787f68 ipxe boot interface abb0865 Remove oneview drivers fe94fb1 Completely remove support for deprecated Glance V1 223a246 Avoid race with nova on power sync and rescue ca80af2 Doc: Adds cinder as a service requires creds 38f13b6 Fix unit test run on OS X 5471157 Fixes a race condition in the hash ring code f11c949 Add automated_clean field to the API 37c9211 Stop console at tearing down without unsetting console_enabled 869b86e Add functionality for individual cleaning on nodes e25dfdc Documentation for 'ramdisk' deploy with 'ilo-virtual-media' boot 36adaa4 Add documentation for soft power for ilo hardware type b38c46f Add documentation for 'inject nmi' for ilo hardware type a00ebf4 Remove unnecessary checks in periodic task methods e6a15bd Remove token expiration f4fc39d Adds support for soft power operations to 'ilo' power interface e1272cb Add openstack/placement as a required project for ironic-grenade* 7b02130 Remove tox checkconfig 3387c9c Add admin documentation for rescue mode in iLO driver 8f2d758 Correct headings in README.rst 8a75ebf Minor fixes for docs on changing hardware types 545b4fd Add admin documentation for rescue interface 642dedf pxe/ipxe: Move common calls out pxe.py f34799b Switch ironic-tempest-dsvm-functional-python3 to zuulv3 86e9c7e Switch ironic-tempest-dsvm-functional-python2 to zuulv3 eabc48a Switch grenade nic driver to e1000 e63360c Remove ironic experimental jobs 1ba142a Restore the nova-api redirect edd0ff7 Update docs to portgroup with creating windows images 788690d Use templates for cover and lower-constraints 816ff1d Remove wrong install-guide-jobs in zuul setup 9b9f31c Fix grenade tests 2106385 Add a more detailed release note for Dell BOSS RAID1 fix 85b0d3e Honors return value from BIOS interface cleansteps 87502af Reuse checksum calculation from oslo 9ce6e55 Adds support for 'ramdisk' deploy with 'ilo-virtual-media' boot 3907f8a Remove inspecting state support from inspect_hardware 9d0c7ce Adds support for 'Inject NMI' to 'ilo' management interface bdebd56 Docs for agent http provisioning 02a3e77 Ensure pagination marker is always set bd82ead Direct deploy serve HTTP images from conductor 17c3de3 Fix doc builds for ironic 3749cd6 Fix async keyword for Python 3.7 199e490 Add vendor step placement suggestion be09169 Prevent HTML from appearing in API error messages c823572 Replace assertRaisesRegexp with assertRaisesRegex 1f03a57 Add version discovery information to the /v1 endpoint 5ffffd2 Replace assertRaisesRegexp with assertRaisesRegex 9911293 Fix provisioning failure with `ramdisk` deploy interface 1dabeb2 Minor fixes to contributor vision 94f0ced Add automated_clean field f021922 Use HostAddressOpt for opts that accept IP and hostnames ca32dd4 Remove the duplicated word dffb38c add python 3.6 unit test job 938a197 switch documentation job to new PTI 2731d47 import zuul job settings from project-config b79eecf Prevents deletion of ports for active nodes f39aae0 Disable periodic tasks if interval set to 0 f409a86 Reformat instructions related with various OS 6c751ff Imported Translations from Zanata 951e673 Add conductor_group docs 9a01311 Switch ironic-tempest-dsvm-ironic-inspector too zuulv3 e1ab512 Switch ironic-tempest-dsvm-bfv too zuulv3 fd6406f A minor update to documentation of `ilo` hardware type 26fcaac Imported Translations from Zanata 306d966 Update reno for stable/rocky 546a115 Fix not exist deploy image within irmc-virtual-media booting 54c508a Follow-up to always link MAC address files 0d3751d A vision 3530316 Don't handle warnings as errors 4969c33 update "auth_url" in documents
Diffstat (except docs and test files) -------------------------------------
README.rst | 14 +- Vagrantfile | 31 - api-ref/source/baremetal-api-v1-nodes.inc | 39 +- api-ref/source/parameters.yaml | 40 +- .../source/samples/driver-property-response.json | 1 + api-ref/source/samples/node-create-response.json | 3 + api-ref/source/samples/node-show-response.json | 3 + .../samples/node-update-driver-info-response.json | 3 + .../samples/nodes-list-details-response.json | 6 + devstack/files/apache-ironic-api-redirect.template | 5 +- devstack/lib/ironic | 66 +- .../tools/ironic/templates/tftpd-xinetd.template | 2 +- devstack/upgrade/settings | 6 +- devstack/upgrade/upgrade.sh | 9 +- .../include/configure-ironic-api-mod_wsgi.inc | 60 +- .../install/include/configure-ironic-api.inc | 11 +- .../install/include/configure-ironic-conductor.inc | 12 +- driver-requirements.txt | 7 +- ironic/api/controllers/root.py | 54 +- ironic/api/controllers/v1/__init__.py | 19 + ironic/api/controllers/v1/chassis.py | 45 +- ironic/api/controllers/v1/collection.py | 6 +- ironic/api/controllers/v1/conductor.py | 251 ++++++ ironic/api/controllers/v1/node.py | 388 ++++----- ironic/api/controllers/v1/notification_utils.py | 8 +- ironic/api/controllers/v1/port.py | 63 +- ironic/api/controllers/v1/portgroup.py | 52 +- ironic/api/controllers/v1/utils.py | 121 +-- ironic/api/controllers/v1/versions.py | 7 +- ironic/api/controllers/v1/volume_connector.py | 48 +- ironic/api/controllers/v1/volume_target.py | 46 +- ironic/api/controllers/version.py | 65 ++ ironic/api/middleware/parsable_error.py | 5 + ironic/cmd/dbsync.py | 5 + ironic/cmd/status.py | 54 ++ ironic/common/cinder.py | 63 +- ironic/common/exception.py | 14 +- ironic/common/glance_service/base_image_service.py | 15 +- ironic/common/glance_service/service.py | 45 - ironic/common/glance_service/service_utils.py | 67 +- ironic/common/glance_service/v1/__init__.py | 0 ironic/common/glance_service/v1/image_service.py | 28 - ironic/common/glance_service/v2/image_service.py | 4 +- ironic/common/hash_ring.py | 34 +- ironic/common/image_service.py | 22 +- ironic/common/images.py | 30 +- ironic/common/neutron.py | 42 +- ironic/common/policy.py | 12 +- ironic/common/pxe_utils.py | 656 +++++++++++++-- ironic/common/release_mappings.py | 4 +- ironic/common/utils.py | 26 +- ironic/conductor/manager.py | 167 +++- ironic/conductor/rpcapi.py | 32 +- ironic/conductor/utils.py | 16 +- ironic/conf/__init__.py | 2 - ironic/conf/agent.py | 21 + ironic/conf/api.py | 7 +- ironic/conf/conductor.py | 11 +- ironic/conf/console.py | 4 + ironic/conf/default.py | 6 +- ironic/conf/deploy.py | 25 +- ironic/conf/drac.py | 1 + ironic/conf/glance.py | 6 - ironic/conf/ilo.py | 4 + ironic/conf/ipmi.py | 14 + ironic/conf/iscsi.py | 5 + ironic/conf/oneview.py | 50 -- ironic/conf/opts.py | 1 - ironic/conf/pxe.py | 14 +- ironic/conf/redfish.py | 18 +- ironic/db/api.py | 36 +- .../93706939026c_add_node_protected_field.py | 33 + .../d2b036ae9378_add_automated_clean_field.py | 31 + ironic/db/sqlalchemy/api.py | 94 ++- ironic/db/sqlalchemy/models.py | 6 +- ironic/drivers/base.py | 38 +- ironic/drivers/generic.py | 6 +- ironic/drivers/modules/agent.py | 64 +- ironic/drivers/modules/agent_client.py | 10 +- ironic/drivers/modules/boot_mode_utils.py | 29 + ironic/drivers/modules/console_utils.py | 54 +- ironic/drivers/modules/deploy_utils.py | 243 +++++- ironic/drivers/modules/drac/bios.py | 57 +- ironic/drivers/modules/drac/inspect.py | 68 +- ironic/drivers/modules/fake.py | 4 + ironic/drivers/modules/ilo/boot.py | 40 +- ironic/drivers/modules/ilo/common.py | 89 +- ironic/drivers/modules/ilo/inspect.py | 30 +- ironic/drivers/modules/ilo/management.py | 26 + ironic/drivers/modules/ilo/power.py | 182 +++- ironic/drivers/modules/image_cache.py | 22 +- ironic/drivers/modules/inspect_utils.py | 51 ++ ironic/drivers/modules/ipmitool.py | 97 ++- ironic/drivers/modules/ipxe.py | 292 +++++++ ironic/drivers/modules/irmc/boot.py | 41 +- ironic/drivers/modules/iscsi_deploy.py | 157 ++-- ironic/drivers/modules/network/common.py | 11 +- ironic/drivers/modules/network/flat.py | 67 +- ironic/drivers/modules/oneview/__init__.py | 0 ironic/drivers/modules/oneview/common.py | 553 ------------ ironic/drivers/modules/oneview/deploy.py | 300 ------- ironic/drivers/modules/oneview/deploy_utils.py | 384 --------- ironic/drivers/modules/oneview/inspect.py | 100 --- ironic/drivers/modules/oneview/management.py | 325 -------- ironic/drivers/modules/oneview/power.py | 224 ----- ironic/drivers/modules/pxe.py | 544 ++---------- ironic/drivers/modules/pxe_base.py | 95 +++ ironic/drivers/modules/redfish/bios.py | 283 +++++++ ironic/drivers/modules/redfish/inspect.py | 196 +++++ ironic/drivers/modules/redfish/utils.py | 103 ++- ironic/drivers/modules/snmp.py | 2 +- ironic/drivers/modules/storage/cinder.py | 10 +- ironic/drivers/modules/storage/external.py | 6 +- ironic/drivers/modules/xclarity/management.py | 9 - ironic/drivers/modules/xclarity/power.py | 9 - ironic/drivers/oneview.py | 58 -- ironic/drivers/redfish.py | 15 + ironic/drivers/xclarity.py | 9 - ironic/objects/conductor.py | 26 +- ironic/objects/node.py | 103 +-- .../unit/api/controllers/v1/test_conductor.py | 231 ++++++ .../unit/api/controllers/v1/test_portgroup.py | 23 +- .../api/controllers/v1/test_volume_connector.py | 19 + .../unit/api/controllers/v1/test_volume_target.py | 17 + .../unit/drivers/modules/drac/test_inspect.py | 126 ++- .../unit/drivers/modules/ilo/test_management.py | 34 + .../unit/drivers/modules/network/test_flat.py | 81 +- .../unit/drivers/modules/network/test_neutron.py | 10 +- .../unit/drivers/modules/oneview/test_common.py | 406 --------- .../unit/drivers/modules/oneview/test_deploy.py | 456 ---------- .../drivers/modules/oneview/test_deploy_utils.py | 327 -------- .../unit/drivers/modules/oneview/test_inspect.py | 51 -- .../drivers/modules/oneview/test_management.py | 365 -------- .../unit/drivers/modules/oneview/test_power.py | 308 ------- .../unit/drivers/modules/redfish/test_bios.py | 226 +++++ .../unit/drivers/modules/redfish/test_inspect.py | 189 +++++ .../drivers/modules/redfish/test_management.py | 29 +- .../unit/drivers/modules/redfish/test_power.py | 20 +- .../unit/drivers/modules/redfish/test_utils.py | 171 +++- .../unit/drivers/modules/test_agent_base_vendor.py | 17 +- .../unit/drivers/modules/test_agent_client.py | 86 +- .../unit/drivers/modules/test_boot_mode_utils.py | 55 ++ .../unit/drivers/modules/test_console_utils.py | 30 +- .../unit/drivers/modules/test_deploy_utils.py | 268 +++++- .../unit/drivers/modules/test_inspect_utils.py | 65 ++ .../unit/drivers/modules/test_iscsi_deploy.py | 56 +- .../unit/drivers/third_party_driver_mock_specs.py | 46 +- lower-constraints.txt | 3 +- playbooks/ci-workarounds/etc-neutron.yaml | 9 + playbooks/ci-workarounds/set-stack-key.yaml | 13 + .../run.yaml | 6 +- playbooks/legacy/grenade-dsvm-ironic/run.yaml | 8 +- playbooks/legacy/ironic-dsvm-functional/run.yaml | 42 - playbooks/legacy/tempest-dsvm-ironic-bfv/run.yaml | 90 -- .../run.yaml | 106 --- .../run.yaml | 81 -- .../legacy/tempest-dsvm-ironic-inspector/run.yaml | 85 -- .../run.yaml | 109 --- .../legacy/tempest-dsvm-ironic-parallel/run.yaml | 34 - .../tempest-dsvm-ironic-pxe_ipa-full/run.yaml | 80 -- .../add-redfish-auth-type-5fe78071b528e53b.yaml | 10 + ...redfish-inspect-interface-1577e70167f24ae4.yaml | 7 + ...add_automated_clean_field-b3e7d56f4aeaf512.yaml | 10 + ...dd_conversion_flags_iscsi-d7f846803a647573.yaml | 7 + ...ace-support-to-ilo-vmedia-1a7228a834465633.yaml | 6 + .../agent-http-provisioning-d116b3ff36669d16.yaml | 15 + .../async_bios_clean_step-7348efff3f6d02c1.yaml | 6 + .../notes/boot-from-url-98d21670e726c518.yaml | 9 + .../notes/bug-2003972-dae9b7d0f6180339.yaml | 8 + .../cleanwait_timeout_fail-4323ba7d4d4da3e6.yaml | 8 + .../notes/dell-boss-raid1-ec33e5b9c59d4021.yaml | 6 + .../disable_periodic_tasks-0ea39fa7a8a108c6.yaml | 49 ++ .../notes/enhanced-checksum-f5a2b7aa8632b88f.yaml | 7 + ...-flat-vifs-and-clear-macs-34eec149618e5964.yaml | 13 + .../notes/expose-conductor-d13c9c4ef9d9de86.yaml | 18 + .../fix-boot-url-for-v6-802abde9de8ba455.yaml | 8 + .../notes/fix-cpu-count-8904a4e1a24456f4.yaml | 7 + ...stance-master-path-config-fa524c907a7888e5.yaml | 6 + .../fix-ipv6-option6-tag-549093681dcf940c.yaml | 16 + ...ist-deploy-image-for-irmc-cb82c6e0b52b8a9a.yaml | 7 + ...r-with-custom-field-query-65ca29001a03e036.yaml | 8 + ...out-hung-ipmitool-process-519c7567bcbaa882.yaml | 11 + .../notes/hash-ring-race-da0d584de1f46788.yaml | 13 + .../notes/html-errors-27579342e7e8183b.yaml | 5 + .../notes/ilo-inject-nmi-f487db8c3bfd08ea.yaml | 6 + ...ilo-soft-power-operations-eaef33a3ff56b047.yaml | 10 + ...invalid_cross_device_link-7ecf3543a8ada09f.yaml | 5 + ...mmand-retries-and-timeout-29b0be3f2c21328c.yaml | 6 + ...mi-disable-timeout-option-e730362007f9bedd.yaml | 11 + ...e-boot-interface-addition-faacb344a72389f2.yaml | 20 + .../notes/ironic-11-prelude-6dae469633823f8d.yaml | 2 +- .../ironic-12.0-prelude-9dd8e80a1a3e8f60.yaml | 19 + ...hon-agent-multidevice-fix-3daa0760696b46b7.yaml | 12 + ...s-upgrade-check-framework-9cd216ddf3afb271.yaml | 11 + .../iscsi-optional-cpu-arch-ebf6a90dde34172c.yaml | 6 + .../notes/no-glance-v1-d249e8079f46f40c.yaml | 8 + releasenotes/notes/noop-mgmt-a4b1a248492c7638.yaml | 11 + ...migration_update_versions-ea03aff12d9c036f.yaml | 13 + .../notes/parallel-erasure-1943da9b53a2095d.yaml | 9 + .../persist-redfish-sessions-d521a0846fa45c40.yaml | 8 + .../notes/port_delete-6628b736a1b556f6.yaml | 5 + releasenotes/notes/protected-650acb2c8a387e17.yaml | 7 + .../notes/ramdisk-boot-fails-4e8286e6a4e0dfb6.yaml | 7 + .../redfish-bios-interface-a1acd8122c896a38.yaml | 3 + ...-inspecting-state-support-10325bdcdd182079.yaml | 9 + .../notes/remove-oneview-9315c7b926fd4aa2.yaml | 7 + .../notes/remove_vagrant-4472cedd0284557c.yaml | 6 + .../shellinabox-locking-fix-2fae2a451a8a489a.yaml | 8 + .../notes/story-2004266-4725d327900850bf.yaml | 13 + ...treaming-partition-images-d58fe619658b066e.yaml | 6 + .../notes/uefi-first-prepare-e7fa1e2a78b4af99.yaml | 10 + .../undeprecate-xclarity-4f4752017e8310e7.yaml | 10 + .../update-port-pxe-enabled-f954f934209cbf5b.yaml | 7 + .../notes/v1-discovery-4311398040581fe8.yaml | 6 + releasenotes/source/index.rst | 1 + .../locale/en_GB/LC_MESSAGES/releasenotes.po | 218 ++++- .../source/locale/ja/LC_MESSAGES/releasenotes.po | 126 ++- releasenotes/source/rocky.rst | 6 + requirements.txt | 3 +- setup.cfg | 12 +- tools/config/check_uptodate.sh | 28 - tools/link_aggregation_on_windows.ps1 | 40 + tox.ini | 9 +- vagrant.yaml | 159 ---- zuul.d/ironic-jobs.yaml | 265 +++++- zuul.d/legacy-ironic-jobs.yaml | 71 -- zuul.d/project.yaml | 31 +- 299 files changed, 11741 insertions(+), 8720 deletions(-)
Requirements updates --------------------
diff --git a/driver-requirements.txt b/driver-requirements.txt index e8cb3f3..5ee2943 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -10,4 +10 @@ python-ironic-inspector-client>=1.5.0 -python-oneviewclient<3.0.0,>=2.5.2 -python-scciclient>=0.7.2 -python-ilorest-library>=2.1.0 -hpOneView>=4.4.0 +python-scciclient>=0.8.0 @@ -22 +19 @@ ImcSdk>=0.7.2 -sushy +sushy>=1.6.0 diff --git a/requirements.txt b/requirements.txt index a566689..0bcdf48 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14 +14 @@ keystoneauth1>=3.4.0 # Apache-2.0 -ironic-lib>=2.14.0 # Apache-2.0 +ironic-lib>=2.15.0 # Apache-2.0 @@ -30,0 +31 @@ oslo.service!=1.28.1,>=1.24.0 # Apache-2.0 +oslo.upgradecheck>=0.1.0 # Apache-2.0
participants (1)
-
no-reply@openstack.org