We are ecstatic to announce the release of: ironic 33.0.0 This release is part of the gazpacho 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://bugs.launchpad.net/ironic/+bugs For more details, please see below. 33.0.0 ^^^^^^ New Features ************ * Adds a "noop" deploy interface that performs no actual deployment operations. This allows operators to allocate nodes and mark them as "active" in Ironic without deploying an operating system. This provides an alternative approach to node adoption for Nova deployments, where the normal deploy verb can be used instead of the adopt verb. It is also useful when nodes are managed by external systems but tracked in Ironic's inventory. * The container build recipe for the graphical console container image has replaced the Chrome/Selenium approach with a Firefox extension. The previous containerised graphical console approach had a Selenium script managing a Chrome browser session. This change replaces that with firefox and a custom extension to perform the required actions to login and load the BMC console. This supports the same vendors as the previous approach (iDRAC, iLO, Supermicro). Functional differences with the chrome/selenium version: * Firefox kiosk mode has a more locked-down environment, including disabling context menus. This means the brittle workaround to disable them is no longer required. * Firefox global policy allows the environment to be locked down further, including limiting accessing to all URLs except the BMC. * There is now a dedicated loading page which can show status updates until the first BMC page loads. This page shows error messages if any of the early redfish calls fail. * VNC client sessions are now shared with multiple clients, and firefox will be started on the first connection, and stopped when the last connection ends. * Starting Xvfb is now deferred until the first VNC client connection. This results in a never-connected container using 5MB vs 30MB once Xvfb is started. Starting Xvfb has ~1sec time penalty on first connection. * The browser now runs in a dedicated non-root user * All redfish consoles now hide toolbar elements with a CSS overlay rather than simulating other methods such as clicking the "Full Screen" button. * ilo6/ilo5 detection is now done by a redfish call and the ilo5 path has less moving parts. * Added support for multiple JSON-RPC configuration groups. The JSON- RPC client and server implementation can now use different configuration sections within the same configuration file. This will enable future planned ironic services to use their own JSON-RPC configuration section while sharing the same underlying implementation. The "Client" and "WSGIService" classes now accept a "conf_group" parameter to specify which configuration group to use. * When plugging a baremetal port in using the 'neutron' interface, send the 'physical_network' value of the baremetal port to Neutron as part of the binding_profile for the port. * Adds a new "instance_name" field to Ironic nodes. This field can be used to store the display name of the Nova instance that is associated with the node, matching the constraints and format of Nova's "display_name" field. The field supports strings up to 255 characters with minimum length of 1 character when not null. The "instance_name" field is automatically cleared when instance data is cleared during node teardown operations. For forward compatibility, when Nova or other API clients update "instance_info" with a "display_name" value, that value is automatically copied to the "instance_name" field if "instance_name" is not explicitly being set in the same request. * A new "category" field has been added to the Portgroup object. This field is meant to help distinguish between different Portgroups. Relevant to trait based port scheduling feature. * A new "physical_network" field has been added to the Portgroup object. This field is semantically the same as the "physical_network" Port field. This will allow portgroups to be scheduled by physical network, similar to ports, in a future change. * The "[console]port_range" configuration option now supports segmented port ranges, allowing multiple non-consecutive port ranges to be specified as comma-separated values. For example, "1000:1100,2000:2500" can be used instead of requiring a single consecutive range. * The lookup API now includes an "agent_skip_bmc_detect" configuration flag that is automatically set to True when nodes use out-of-band management interfaces (Redfish, iDRAC Redfish, iLO, iRMC). This tells the agent to skip BMC detection via ipmitool, reducing deployment time and avoiding unnecessary ipmitool calls when the BMC address is already configured in Ironic. * Adds manufacturer, model and system UUID information to the "redfish" sensor data collector. Upgrade Notes ************* * The deprecated "inspector" inspect interface has been removed. Use the "agent" interface instead. See migration guide (https://docs.openstack.org/ironic/latest/admin /inspection/migration.html) to learn how existing deployments with ironic-inspector can be migrated to a new architecture with the built-in inspection feature. * The sushy-oem-idrac extension is not used anymore and it's been removed from the requirements. Deprecation Notes ***************** * Using "ironic.api.wsgi:initialize_wsgi_app" to provide custom config file to ironic is now deprecated. Instead, two new environment variables "IRONIC_CONFIG_DIR" and "IRONIC_CONFIG_FILE" are introduced to provide the same functionality. * The Fujitsu "irmc" hardware type has been deprecated for removal in a future Ironic release. The Third Party CI for the driver stopped responding on or around July 7th, 2019, and attempts to contact the vendor have been unsuccessful. As such, we cannot claim fixes or changes to the driver are in a working state. Users of the "irmc" hardware type should begin planning migration to alternative hardware types. All iRMC-specific interfaces ("irmc" bios, "irmc-virtual-media" and "irmc-pxe" boot, "irmc" inspect, "irmc" management, "irmc" power, and "irmc" raid interfaces) are now marked as unsupported, and all configuration options in the "[irmc]" section have been deprecated for removal. The "irmc" hardware type and all associated interfaces and configuration options will be removed in a future release. Bug Fixes ********* * Fixes BMC firmware update timeout issues by using extended timeout (default 300 seconds) for BMC firmware updates to handle BMC transitional states during firmware update process, unless a different timeout is specified by the operator. * Reduces likelihood of intermittent firmware upgrade failures by adding comprehensive BMC state validation after firmware upgrades for the Redfish driver. After a firmware update task completes successfully, Ironic now validates that BMC resources (System, Manager, and NetworkAdapters) are consistently available before proceeding with subsequent operations. This change improves firmware update reliability by requiring a configurable number of consecutive successful responses from the BMC resources. The validation process helps ensure the BMC has fully stabilized after firmware updates before marking the operation as complete. New configuration options in the "[redfish]" section: * "firmware_update_required_successes" - Number of consecutive successful responses required to consider BMC validation successful (default: 3), 0 disables validation * "firmware_update_validation_interval" - Time in seconds to wait between validation attempts (default: 30) * "firmware_update_resource_validation_timeout" - Maximum time in seconds to wait for BMC resources to stabilize (default: 300), setting it to 0 disables validation. * When disable_deep_image_inspection = true, the code path uses the destination filename as the source file name resulting in a failure. Due to the way the code attempts to clean up, this error is swallowed and only caught later on when the file is used. * Fixes a race condition where the Redfish power interface could fail with HTTP 400 (BadRequest) or HTTP 409 (Conflict) errors during power operations. These errors are now treated as success when the node is already in the target power state (either on or off), preventing deployment failures when power state changes complete after Ironic's state verification times out. Also refresh system state to get current power state from BMC instead of using potentially stale cached data. * NIC firmware components with null or empty firmware package versions are now filtered out during caching to avoid NOT NULL database constraint violations. * When caching an image between different file systems, the hard link operation would fail. This is fixed by falling back to a copy operation. * Fixes an issue where handling of introspection data was failing to update process InfiniBand "client-id" values. When discovered, InfiniBand ports should have their "client-id" values recorded which enables proper network boot handling with InfiniBand. * Fixes an issue around handling of portgroup updates where the associated node ID is changed. While a rare operation, it exists as a capability and a bug existed from the wrong ID value being used to query the database. The correct ID value is now utilized. * Fixes ironic's pxe filter logic which some operators may leverage to restrict access to resources as related to hardware discovery use cases. The launcher was inadvertently broken during the removal of eventlet. * Fixes an issue where the "redfish-virtual-media" interface is using version ranges with Dell iDRAC BMCs to report compatibility. Dell has changed the versioning structure for iDRAC10s which triggered the error. That being said, it appears the iDRAC10s are also incompatible as well. The error message now clearly indicates what versions are known to work with the stock redfish virtual media support. Users should instead use the idrac variant boot interface. * Fixes storage of inventory and plugin data in Swift. Previously, the data has not been stored as JSON. This meant that the data was stored in an odd format with part of the fields missing. * Fixes an issue where virtual media ISO creation (used by Redfish and iLO drivers) did not respect architecture-specific kernel and ramdisk configuration parameters. When "deploy_kernel_by_arch" and "deploy_ramdisk_by_arch" (or their rescue equivalents) were configured, the ISO generation would still use the generic parameters instead of selecting the correct kernel and ramdisk based on the node's CPU architecture. This particularly affected ARM64 nodes that require different agent images than x86_64 nodes. For more information, see bug 2126991 (https://bugs.launchpad.net/ironic/+bug/2126991). * The flat network driver now raises "NetworkError" when rebind operations fail to bind any VIFs, instead of silently continuing. This prevents unexpected behavior when all port bindings fail during node rebind. * A feature was added in 2025.2 to allow Ironic conductor to access images shared with its project in addition to its own images but the check did not use the Glance API correctly resulting in non- function. This fixes it and exposes a type checked method. Bug #2099276. * Fixed HttpImageService.validate_href() ImageRefValidationFailed exception if protocol is HTTP/HTTPS and the HTTP header response is a redirection other then 301 (MOVED_PERMANENTLY). HTTP/HTTPS protocol is often used under standalone Ironic configuration to identify an image source (e.g --instance-info image_source=<URI>). The HTTP server may use redirection to load balance or geographically distribute the requests, or simply point to the correct URL. The redirection may vary from 301 (MOVED_PERMANENTLY), to 302 (FOUND), or 307 (TEMPORARY_REDIRECT), and 308 (PERMANENT_REDIRECT). * Fixes an issue where some iDRAC10 machines requires a specific Virtual Media Slot. Ironic will attempt to automatically identify the version, and ensures the right slot is used to insert the iso. See bug 2125571 (https://bugs.launchpad.net/ironic/+bug/2125571) for details. * Added upgrade check warning of ilo driver deprecation. * Avoid an unhandled exception in the local_link_connection inspection hook which would cause inspection to fail instead of skipping past missing ports as originally intended. * Our prior default for [conductor]/sync_power_state_interval was too aggressive for many hardware devices. Instead of checking power state every minute, we'll now check it by default every other minute. This will significantly lessen the overall load on Node BMCs and the Ironic conductor. * Fixes an issue where firmware upgrades would fail on HP iLO Generation 11 machines when the NetworkAdapters endpoint returns HTTP 400 (Bad Request) responses during the firmware component caching process. Exception handling allows the code to continue execution past that issue. * Fixes deploying OCI artifacts uploaded by ORAS to Quay.io (and potentially other registries) as a single manifest. * Fixes compatibility with oslo.service versions 4.4.0 and later. The combined Ironic service ("ironic" command) was passing the "no_fork" parameter to "ServiceLauncher", which worked in oslo.service <= 4.3.0 because "ServiceLauncher" was mapped to "ProcessLauncher" (which supports "no_fork"). In oslo.service 4.4.0, this mapping was changed and "ServiceLauncher" became a distinct class that doesn't accept "no_fork", causing "TypeError" when starting the service. The code now directly uses "ProcessLauncher" via "process_launcher()", which properly supports "no_fork" and ensures VNC signal handling works correctly when "[vnc]enabled=True". * Improved Redfish compatibility with ASRock Rack servers by updating how boot mode and boot device settings are applied. Previously, calls to *set_boot_device* and *set_boot_mode* only included minimal parameters (e.g., *BootOverrideTarget* and *BootOverrideMode*), which were insufficient for certain vendor implementations like ASRockRack. This fix updates the Redfish driver to send the full payload, including *BootSourceOverrideEnabled*, *BootSourceOverrideTarget*, *BootSourceOverrideMode*, ensuring better compliance and reliability on these platforms. * Fixes validation of image source URLs that are redirects to another URL. Previously, it would raise UnboundLocalError. * Fixes excessive logging of JSON-RPC transactions by reducing the logging of these transactions to the minimally needful, the request ID value. This behavior can be disabled, and the prior pattern of verbose logging can be enabled by setting "[json_rpc]debug_log_request_id_only" to False. * The "ipa-inspection-callback-url" kernel parameter now uses the "external_callback_url" configuration when set. Previously, this URL used the internal address even when "external_callback_url" was configured, creating inconsistency with "ipa-api-url" which correctly used the external address. * Adds validation for the "ipmi_address" field during node validation to ensure it contains a valid IP address or hostname. * Fix an issue in the OpenStack Nova-integrated installation that mac address may conflict at Neutron service during baremetal instance re-scheduling, by allowing VIFs to be unplugged when a node is in the AVAILABLE state. See bug bug 2109300 (https://bugs.launchpad.net/ironic/+bug/2109300) for more details. Other Notes *********** * Addition of an additional vendor variable for "VENDORS_REQUIRING_FULL_BOOT_REQUEST". This is because there are some recognised vendors, i.e. Lenovo, which use various BMC for their hardware, some of which require a full boot request; in such cases the "vendor" can now be changed to "redfish_compatible". * For consistency with other OpenStack projects, Ironic API's wsgi server can now be launched via *ironic.wsgi.api:application* as well as *ironic.wsgi:application*. Changes in ironic 32.0.0..33.0.0 -------------------------------- dca688bea fix: use the correct path to the image when deep image inspection is off 643b6ced0 Update release mappings for new ironic release 33.0 45de0c123 ci: remove metalsmith ci job invocation c3428fd4f Move configdrive code to configdrive_utils 8c9ad92c1 Minimize json-rpc client logging 49def356a chore: bump to latest pre-commit tools 7b2fdd9aa chore: fix spelling mistakes 32bb6e3df chore: disable pycodestyle and pyflakes double runs 9ce704597 fix: remove unnecessary trailing slash 3d07fdeee fix: grammar Ideall -> Ideally 8dcb9e23c fix: sphinx-lint unbalanced backticks 4e5ff9bf0 Drop reference to TripleO 32dd5ec59 Remove inspector inspect interface 7ce4fdfb1 fix: glance image member lookup resulted in an empty list always c8abaad9f Configuration file for Trait Based Networking aa96982e6 Trait Based Networking Filter Expression Parsing and Base Models 09383bc65 Fix singleprocess launcher compatibility with oslo.service 4.4+ 516b0ca0d Fail flat driver rebind when no VIFs are bound b3c43ba62 Support segmented port ranges 451392c60 Follow-up: Document `noop` deploy interface 4f815d84c Skip BMC detection in IPA for out-of-band management aaa7cea4c docs: Fix typos and a wrong URL 03cb948c4 Drop remaining inspector job 48e23c257 ci: disable multinode subnode running n-cpu 374aba1c3 Fix spelling errors in unit test files 1421a2d1a Improve pre-commit configuration e4b1e394d Update devstack guides to raise RAM requirement 81209ba39 Add a script to copy inspection data between Swift buckets 3eca781ec Nit: Fix typo in Migrating from ironic-inspector 7d050f6ae Deprecate iRMC hardware type and interfaces bc463ebcb Add node.instance_name e721c56e6 pass along physical_network to neutron from the baremetal port bcae66f19 Add a `noop` deploy interface 5563e5275 Filter null NIC firmware versions from cache bb97a6422 fix: ensure that portgroup physical_network is updated for tests 90b585334 fix: local_link_connection inspection hook does not fail on missing port 9769ae72d Fix storing inventory and plugin data in Swift 8d390195f Make sure [cors] allowed_origin accepts a list value 051e5d403 Fix docstring for SystemdConsoleContainer.start_container 3abaa3a2d Add IPMI address validation to node validation e6e842b22 Replace Chrome/Selenium console with Firefox extension 1b027a72d Improve logging when console unit doesn't start 7a67d4f18 Add a new 'category' field to the Portgroup object 3e778ef95 Handle HTTP 400 and 409 race condition in Redfish power operations d59ad9f82 docs: cover what happens if someone changes iscsi passwords 52b1beddf reno: Update master for unmaintained/2024.1 7c588550c Apply naming standards to Ironic install guide sections 3ccdb11ca Remove sushy-oem-idrac from driver requirements 59ca3faca Add Release Schedule to release how to 3ad4ca3ce Add upgrade check for iLO/iLO5 driver deprecation 571e1e866 CI: make multinode runtime check sane f11533e2f docs: add a "i want a pony" bit of text 0229b8c1a docs: provide a little more clarity/guidance w/r/t redfish b69a095a6 Add generic redfish compatible vendor name fbe0e188b Fix power sync timeouts after BMC firmware update 371033d17 Run metal3 integration job using UEFI boot (default) fb2befce9 More RAM for Anaconda job 3b5503199 Add force_dhcp option for managed inspection cd9e70198 Add support for multiple JSON-RPC configuration groups f7e9da0a7 Document instance_uuid JSON PATCH non-compliance b2f297d91 Fixes for console containers functional testing 7d3ffd796 Enable fake-graphical console for all hardware types 5482045e8 Remove bespoke logic for handling redirects while validating URLs 10feb5b69 Fix cleaning example in docs that sets the BMC clock to use correct arg 4a4ea08fc Add a new 'physical_network' field to the Portgroup object 85671c0f7 CI: temporary mark OVN jobs as non-voting 65d304028 docs: add context around bmc password changes dac926c02 Fix IPA external inspection callback url override a5542474d Check _by_arch values with redfish vmedia 210d2b32b api: Allow bios values to be None 986524ab2 api: Catch correct exception on schema validation error 10cfaca10 ci: remove snmp ci job 500d0cc5a ci: remove tinyipa job alias usage bba3041cc Make cache_firmware_components more resilient during upgrades 85ec9d655 Fix intermittent Redfish firmware update failures with BMC validation 2585cb4e9 Allow multiple HTTP redirects for image source f1c903904 Drop explicit description about default values 656446ae9 Docs: play down the role of is_root_volume in RAID 8acd96fb2 fix idrac9 version handling in redfish vmedia boot interface 3e38b1bf7 docs: More legacy version references removals d13ffb4ff docs: more legacy references 05b7b4ca1 docs: remove metalsmith and molteniron references 2b2d19b9b docs: remove severely outdated mutlitenancy docs d11811794 docs: some more outdated reference fixes 686d289d5 docs: Add some meta tags to key docs c539943c0 docs: remove backwards looking notes a483e6aaa docs: Detail availability zone modeling in ironic 6f5bb8d6b Add ipa-builder branching warning af0b9751d Force Virtual Media Slot 1 on iDRAC10 aa6059eb5 Increase default sync_power_state_interval 685dbeb35 Fix cache image hard link between different file systems 595f126b4 Fix incorrect arg while getting ports by portgroup 3e8c25c1e Fix inspection IB port client-id 5b1425444 docs: further revise OCI image checksum note. 1ef438f99 Migrate setup configuration to pyproject.toml 4b8a3733f Fix OCI artifacts pointing to a single manifest 65dd9a660 Add WSGI alias under ironic.wsgi.api 4b26cbd71 Documentation: image_checksum is ignored for OCI URL's 217030928 Add SKU field to Redfish inspection b8ed25483 CI: replace the outdated Bifrost job 48cda0428 Imported Translations from Zanata 54977a14d Fix : AsRockRack Management via Redfish 5ad2234b6 Update master for stable/2025.2 7ca8ddccf Add cross-gating job with openstacksdk 9375f3bd6 Fix nexthop error when adding route to PUBLIC_SUBNET_IP a2f37c5c7 api: Add schema for inspection rules API (requests) e3f9bb75d api: Prevent overlapping schema versions 6e5984576 Deprecate usage of ironic.api.wsgi:initialize_wsgi_app e57e4c2d7 Run the ironic-standalone-operator tests as non-voting job f9c3ffb11 pre-commit: Run ruff before hacking 2cb3e51dc fix: remove wait logic in pxe filter 7ce3b8846 Add UT for metrics modules fe633a746 Expose hardware model, manufacturer and system UUID via Redfish sensors 60de53ea4 trivial: fix benchmark data generation script b19aceda0 Use specific util methods in vfat image creation 2237f2b5d Include inspector conf groups in sample conf/docs 6d60431fa trivial: revise text from mutlinode job changes 42163f0c4 Allow detach vif in available state b88b6dd5e trivial: follow-up on ftp enable/disable flag Diffstat (except docs and test files) ------------------------------------- .pre-commit-config.yaml | 35 +- api-ref/source/baremetal-api-v1-nodes.inc | 34 +- api-ref/source/baremetal-api-v1-portgroups.inc | 34 ++ api-ref/source/parameters.yaml | 61 ++- 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 + .../source/samples/portgroup-create-response.json | 2 + .../samples/portgroup-list-detail-response.json | 2 + .../source/samples/portgroup-update-response.json | 2 + devstack/lib/ironic | 86 ++- .../inspection/copy-inspection-data-swift.rst | 114 ++++ .../contributor/ironic-multitenant-networking.rst | 2 +- .../install/include/configure-ironic-api-wsgi.inc | 18 +- .../install/include/configure-ironic-conductor.inc | 2 - .../refarch/small-cloud-trusted-tenants.rst | 16 +- driver-requirements.txt | 3 - etc/ironic/trait_based_networks.yaml.sample | 21 + ironic/api/controllers/v1/inspection_rule.py | 35 +- ironic/api/controllers/v1/node.py | 35 +- ironic/api/controllers/v1/port.py | 11 +- ironic/api/controllers/v1/portgroup.py | 44 +- ironic/api/controllers/v1/ramdisk.py | 23 +- ironic/api/controllers/v1/utils.py | 39 ++ ironic/api/controllers/v1/versions.py | 11 +- ironic/api/schemas/common/__init__.py | 0 ironic/api/schemas/common/request_types.py | 2 + ironic/api/schemas/v1/bios.py | 4 +- ironic/api/schemas/v1/inspection_rule.py | 184 +++++++ ironic/api/validation/__init__.py | 31 +- ironic/command/pxe_filter.py | 5 - ironic/command/singleprocess.py | 9 +- ironic/command/status.py | 41 ++ ironic/common/config.py | 15 +- ironic/common/exception.py | 42 +- ironic/common/glance_service/image_service.py | 10 + ironic/common/glance_service/service_utils.py | 4 +- ironic/common/image_service.py | 286 +++++----- ironic/common/images.py | 34 +- ironic/common/inspection_rules/validation.py | 102 +--- ironic/common/json_rpc/client.py | 97 +++- ironic/common/json_rpc/server.py | 18 +- ironic/common/neutron.py | 4 + ironic/common/oci_registry.py | 85 ++- ironic/common/policy.py | 2 +- ironic/common/release_mappings.py | 32 +- ironic/common/rpc_service.py | 5 +- ironic/common/trait_based_networking/__init__.py | 0 ironic/common/trait_based_networking/base.py | 355 +++++++++++++ .../common/trait_based_networking/config_file.py | 95 ++++ .../trait_based_networking/grammar/__init__.py | 0 .../trait_based_networking/grammar/parser.py | 114 ++++ ironic/conductor/configdrive_utils.py | 45 ++ ironic/conductor/deployments.py | 3 +- ironic/conductor/manager.py | 31 +- ironic/conductor/rpcapi.py | 16 +- ironic/conductor/utils.py | 47 -- ironic/conf/conductor.py | 31 +- ironic/conf/console.py | 8 +- ironic/conf/default.py | 3 +- ironic/conf/deploy.py | 12 +- ironic/conf/glance.py | 16 +- ironic/conf/ilo.py | 2 +- ironic/conf/inspector.py | 24 +- ironic/conf/ipmi.py | 5 +- ironic/conf/irmc.py | 49 ++ ironic/conf/json_rpc.py | 33 +- ironic/conf/opts.py | 5 +- ironic/conf/pxe.py | 2 +- ironic/conf/redfish.py | 28 + ironic/conf/vnc.py | 9 +- ironic/console/container/systemd.py | 57 +- ironic/db/api.py | 1 + ...5e9d00367b0_add_instance_name_field_to_nodes.py | 31 ++ ...f62d215_add_category_attribute_to_portgroup_.py | 31 ++ ...821744f9e2_add_physical_network_to_portgroup.py | 31 ++ ironic/db/sqlalchemy/api.py | 2 +- ironic/db/sqlalchemy/models.py | 3 + ironic/drivers/fake_hardware.py | 2 +- ironic/drivers/generic.py | 7 +- ironic/drivers/ilo.py | 4 +- ironic/drivers/ipmi.py | 6 +- ironic/drivers/irmc.py | 13 +- ironic/drivers/modules/agent.py | 5 +- ironic/drivers/modules/ansible/deploy.py | 3 +- ironic/drivers/modules/console_utils.py | 42 +- ironic/drivers/modules/deploy_utils.py | 96 ++-- ironic/drivers/modules/drac/boot.py | 53 ++ ironic/drivers/modules/drac/management.py | 4 +- ironic/drivers/modules/drac/raid.py | 18 +- ironic/drivers/modules/drac/utils.py | 4 +- ironic/drivers/modules/image_cache.py | 13 +- ironic/drivers/modules/image_utils.py | 45 +- ironic/drivers/modules/inspect_utils.py | 15 +- ironic/drivers/modules/inspector/__init__.py | 3 +- ironic/drivers/modules/inspector/agent.py | 10 +- ironic/drivers/modules/inspector/client.py | 57 -- .../inspector/hooks/local_link_connection.py | 6 +- ironic/drivers/modules/inspector/hooks/ports.py | 18 +- ironic/drivers/modules/inspector/interface.py | 188 +------ ironic/drivers/modules/ipmitool.py | 31 +- ironic/drivers/modules/irmc/bios.py | 2 + ironic/drivers/modules/irmc/boot.py | 3 + ironic/drivers/modules/irmc/inspect.py | 2 + ironic/drivers/modules/irmc/management.py | 2 + ironic/drivers/modules/irmc/power.py | 2 + ironic/drivers/modules/irmc/raid.py | 2 + ironic/drivers/modules/irmc/vendor.py | 3 + ironic/drivers/modules/network/common.py | 8 +- ironic/drivers/modules/network/flat.py | 5 + ironic/drivers/modules/noop.py | 30 ++ ironic/drivers/modules/redfish/boot.py | 52 +- ironic/drivers/modules/redfish/firmware.py | 150 +++++- ironic/drivers/modules/redfish/inspect.py | 6 + ironic/drivers/modules/redfish/management.py | 101 +++- ironic/drivers/modules/redfish/power.py | 64 ++- ironic/drivers/modules/redfish/utils.py | 2 +- ironic/drivers/redfish.py | 7 +- ironic/objects/deployment.py | 1 + ironic/objects/node.py | 9 +- ironic/objects/portgroup.py | 87 ++- .../unit/api/controllers/v1/test_portgroup.py | 16 + .../unit/common/trait_based_networking/__init__.py | 0 .../common/trait_based_networking/test_base.py | 346 ++++++++++++ .../trait_based_networking/test_config_file.py | 183 +++++++ .../common/trait_based_networking/test_parser.py | 150 ++++++ .../unit/common/trait_based_networking/utils.py | 41 ++ .../console/container/test_console_container.py | 150 +++++- .../unit/drivers/modules/ansible/test_deploy.py | 3 +- .../inspector/hooks/test_local_link_connection.py | 3 +- .../drivers/modules/inspector/hooks/test_ports.py | 14 +- .../inspector/hooks/test_validate_interfaces.py | 20 +- .../unit/drivers/modules/inspector/test_client.py | 65 --- .../drivers/modules/inspector/test_interface.py | 583 --------------------- .../unit/drivers/modules/network/test_common.py | 95 +++- .../unit/drivers/modules/network/test_flat.py | 15 + .../unit/drivers/modules/redfish/test_boot.py | 121 ++++- .../unit/drivers/modules/redfish/test_firmware.py | 520 +++++++++++++++++- .../unit/drivers/modules/redfish/test_inspect.py | 12 + .../drivers/modules/redfish/test_management.py | 10 +- .../unit/drivers/modules/redfish/test_power.py | 119 +++++ .../unit/drivers/modules/test_console_utils.py | 69 ++- .../unit/drivers/modules/test_deploy_utils.py | 55 +- .../unit/drivers/modules/test_inspect_utils.py | 7 +- ironic/wsgi/api.py | 15 + playbooks/irso-ci/post.yaml | 47 ++ playbooks/irso-ci/pre.yaml | 96 ++++ playbooks/irso-ci/run.yaml | 25 + playbooks/metal3-ci/post.yaml | 2 +- playbooks/metal3-ci/run.yaml | 1 - pyproject.toml | 257 ++++++++- ...add-noop-deploy-interface-e0b1440f9de92dce.yaml | 10 + .../bmc-firmware-timeout-fix-328e09ff98f9348f.yaml | 7 + ...ion-after-firmware-update-3d5f8a9e76c24d1b.yaml | 24 + ...ble-deep-image-inspection-bfd44bb8307dea1a.yaml | 7 + .../notes/catch-redfish-409-0819174174245ade.yaml | 11 + .../notes/chromium2firefox-df4b2ea296fc458b.yaml | 34 ++ ...ig-redfish-compatible-bmc-3c54a945a7aa2a7f.yaml | 8 + .../deprecate-wsgi-args-31112fb7db5499d1.yaml | 8 + ...irmware-versions-in-cache-82a68b4df96591f7.yaml | 6 + .../notes/fix-cache-hardlink-66a8b2302abde76d.yaml | 6 + .../fix-ipa-IB-client-id-56ac2dd8a37371de.yaml | 7 + ...ix-portgroup-update-logic-156ebe0ef9bc2d58.yaml | 7 + ...-pxe-filter-post-eventlet-1d12665dbfe11564.yaml | 6 + ...drac-vmedia-version-range-a083a3385cef4a5d.yaml | 10 + .../fix-swift-for-inventory-c371da65dd20fc74.yaml | 7 + .../fix-vmedia-arch-params-aa792a26c5399fea.yaml | 12 + ...lat-driver-rebind-no-vifs-192c9be8e6962d46.yaml | 6 + .../glance-image-members-ce4cca3e764d60fd.yaml | 7 + ...http-multiple-redirection-cfa2b4693e1db82f.yaml | 11 + .../idrac10-vmedia-slot1-5d15433b84843a10.yaml | 8 + .../ilo-driver-is-retired-2501a03802d1d751.yaml | 4 + ...cal-link-connection-crash-394edb1c35354968.yaml | 6 + ...-driver-final-deprecation-a9f450c9ed0b4875.yaml | 19 + .../ironic-wsgi-api-alias-a8c75cfbf5c69da4.yaml | 5 + ...n-rpc-multi-config-groups-beb3ec3d049202f5.yaml | 10 + ...arger-power-sync-interval-43e290a6ee48d8be.yaml | 7 + ...orkadapters-fix-ilo-gen11-2f43f4fbdb995231.yaml | 7 + ...-include-physical-network-8d8cbe17716d341a.yaml | 6 + .../node-instance-name-field-23d6e3409f1f4736.yaml | 15 + releasenotes/notes/oci-fixes-bbbcc633394252f6.yaml | 5 + ...ice-no-fork-compatibility-d5e45f9adeefa7b4.yaml | 13 + .../notes/portgroup-category-fdaa78f038ad9380.yaml | 6 + ...ortgroup-physical_network-ea6df85c3e7a18ea.yaml | 7 + ...l-boot-payload-asrockrack-79a9291da8ec5a50.yaml | 14 + releasenotes/notes/redirect-f2f1bc4079763e7e.yaml | 5 + .../reduce-json-rpc-logging-1a719cc235a02c74.yaml | 7 + .../notes/remove-inspector-17f1f289a017e8cc.yaml | 10 + .../remove-sushy-oem-idrac-24970b3435804fb9.yaml | 5 + ...mented-console-port-range-426c2a36aef75636.yaml | 7 + ...-detection-oob-management-ec181c57223442b6.yaml | 9 + .../update-redfish-sensors-90cd222ee0df99a3.yaml | 5 + ...rl-in-inspection-callback-79de3338709807ad.yaml | 8 + .../validate-ipmi-address-d7b41fa7c8ad47f6.yaml | 5 + .../vif-detach-in-available-acd744acde91fec9.yaml | 9 + releasenotes/source/2024.1.rst | 2 +- releasenotes/source/2025.2.rst | 6 + releasenotes/source/index.rst | 1 + .../source/locale/ja/LC_MESSAGES/releasenotes.po | 159 ++++++ requirements.txt | 1 + setup.cfg | 224 -------- .../benchmark/do_not_run_create_benchmark_data.py | 7 +- tools/vnc-container/Containerfile | 14 +- tools/vnc-container/README.rst | 25 +- tools/vnc-container/bin/cert-override.py | 43 ++ tools/vnc-container/bin/discover-app.py | 43 ++ tools/vnc-container/bin/policies.py | 79 +++ tools/vnc-container/bin/start-browser-x11vnc.sh | 11 - tools/vnc-container/bin/start-firefox.sh | 29 + tools/vnc-container/bin/start-selenium-browser.py | 337 ------------ tools/vnc-container/bin/start-x11vnc.sh | 37 ++ tools/vnc-container/bin/start-xvfb.sh | 5 - tools/vnc-container/bin/stop-firefox.sh | 11 + tools/vnc-container/drivers/fake/index.html | 3 - tools/vnc-container/drivers/launch/index.html | 156 ++++++ tools/vnc-container/extension/Dell.css | 4 + tools/vnc-container/extension/Dell.js | 50 ++ tools/vnc-container/extension/Hpe.css | 11 + tools/vnc-container/extension/Hpe.js | 121 +++++ tools/vnc-container/extension/Supermicro.css | 13 + tools/vnc-container/extension/Supermicro.js | 73 +++ tools/vnc-container/extension/config.js | 8 + tools/vnc-container/extension/error.css | 0 tools/vnc-container/extension/fake.css | 6 + tools/vnc-container/extension/fake.js | 1 + tools/vnc-container/extension/library.js | 37 ++ tools/vnc-container/extension/manifest.json | 41 ++ tox.ini | 9 +- zuul.d/ironic-jobs.yaml | 40 +- zuul.d/metal3-jobs.yaml | 36 +- zuul.d/project.yaml | 38 +- 327 files changed, 9641 insertions(+), 3284 deletions(-) Requirements updates -------------------- diff --git a/driver-requirements.txt b/driver-requirements.txt index bd3d9dc4b..5da233890 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -15,3 +14,0 @@ ansible>=2.7 - -# Dell EMC iDRAC sushy OEM extension -sushy-oem-idrac>=5.0.0,<6.0.0 diff --git a/requirements.txt b/requirements.txt index c4ad3e855..e4753191f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -50,0 +51 @@ cotyledon>=2.0.0 # Apache-2.0 +lark>=1.2.2 # MIT
participants (1)
-
no-reply@openstack.org