ironic 12.1.0 (stein)
We joyfully announce the release of: ironic 12.1.0: OpenStack Bare Metal Provisioning This release is part of the stein stable 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.1.0 ^^^^^^ Prelude ******* The Bare Metal as a Service team joyfully announces our OpenStack Stein release of ironic 12.1.0. While no steins nor speakers were harmed during the development of this release, we might have suffered some hearing damage after we learned that we could increase the volume well past eleven! Notable items include: * Increased parallelism of power synchronization to improve overall conductor efficiency. * API fields to support node "description" and "owner" values. * HPE iLO "ilo5" and Huawei "ibmc" hardware types. * Allocations API interface to enable operators to find and select bare metal nodes for deployment. * JSON-RPC can now be used for "ironic-api" to "ironic-conductor" communication as opposed to using an AMQP messaging provider. * Support for customizable PXE templates and streamlined deployment sequences. * Initial support for the definition of "deployment templates" to enable operators to define and match customized deployment sequences. * Initial work for supporting SmartNIC configuration is included, however the Networking Service changes required are not anticipated until sometime during the Train development cycle. * And numerous bug fixes, including ones for IPv6 and IPMI. This release includes the changes in ironic's "12.0.0" release which was also released during the Stein development cycle and includes a number of improvements for Bare Metal infrastructure operators. More about our earlier stein release can be found in our release notes (ht tps://docs.openstack.org/releasenotes/ironic/stein.html#relnotes-12-0 -0). New Features ************ * Adds option "[ansible]default_python_interpreter" to choose the python interpreter that ansible uses on managed machines. By default, ansible uses "/usr/bin/python" as interpreter, making the assumption that that path is always present on remote managed systems. This might not be always the case, for example in custom build images or Python 3 native distributions. With this option the operator has the ability to set the absolute path of the python interpreter on the remote machines, for example "/usr/bin/python3". The same interpreter will be used in all operations that use the ansible deploy interface. It is also possible to override the value set in the configuration for a node by passing "ansible_python_interpreter" in its "driver_info". * Adds currently used boot mode into node "properties/capabilities" upon "redfish" inspect interface run. The idea behind this change is to align with the in-band "inspector" behavior. * Adds a "description" field to the node object to enable operators to store any information related to the node. The field is up to 4096 UTF-8 characters. * Adds capability to control the persistency of boot order changes during instance deployment via (i)PXE on a per-node level. The option 'force_persistent_boot_device' in the node's driver info for the (i)PXE drivers is extended to allow the values 'Default' (make all changes but the last one upon deployment non-persistent), 'Always' (make all changes persistent), and 'Never' (make all boot order changes non-persistent). * Adds API version 1.50 which allows for the storage of an "owner" field on node objects. This is intended for either storage of human parsable information or the storage of a tenant UUID which could be leveraged in a future version of the Bare Metal as a Service API. * Parallelizes periodic power sync calls by running up to ironic configuration "[conductor]/sync_power_state_workers" simultaneously. The default is to run up to "8" workers. This change should let larger-scale setups running power syncs more frequently and make the whole power sync procedure more resilient to slow or dead BMCs. * Adds an "is_smartnic" field to the port object in REST API version 1.53. "is_smartnic" field indicates if this port is a Smart NIC port, False by default. This field may be set by operator to use baremetal nodes with Smart NICs as ironic nodes. The REST API endpoints related to ports provide support for the "is_smartnic" field. The ironic admin documentation (https://docs.openstack.org/ironic/latest/admin/multitenancy.html) provides information on how to configure and use Smart NIC ports. * Add a new field pxe_template that can be set at driver-info level. This will specify a path for a custom pxe boot template. If present, this template will be read and will have priority in front of the per-arch and general pxe templates. * Adds support to enable deployment workflow changes necessary to support the use of Smart NICs in the "ansible", "direct", "iscsi" and "ramdisk" deployment interfaces. Networking service integration for this functionality is not anticipated until the Train release of the Networking service. * Introduces allocation API. This API allows finding and reserving a node by its resource class, traits and optional list of candidate nodes. Introduces new API endpoints: * "GET/POST /v1/allocations" * "GET/DELETE /v1/allocations/<ID or name>" * "GET/DELETE /v1/nodes/<ID or name>/allocation" * Adds support for building config drives. Starting with API version 1.56, the "configdrive" parameter of "/v1/nodes/<node>/states/provision" can be a JSON object with optional keys "meta_data" (JSON object), "network_data" (JSON object) and "user_data" (JSON object, array or string). See story 2005083 (https://storyboard.openstack.org/#!/story/2005083) for more details. * Allows the user to supply EFI system partition image to ironic, for building UEFI-bootable ISO images, in form of a local file or UUID or URI reference. The new "[conductor]esp_image" option can be used to configure ironic to use local file. * Adds the deploy templates API. Deploy templates can be used to customise the node deployment process, each specifying a list of deploy steps to execute with configurable priority and arguments. Introduces the following new API endpoints, available from Bare Metal API version 1.55: * "GET /v1/deploy_templates" * "GET /v1/deploy_templates/<deploy template identifier>" * "POST /v1/deploy_templates" * "PATCH /v1/deploy_templates/<deploy template identifier>" * "DELETE /v1/deploy_templates/<deploy template identifier>" * Adds a new feature called *fast-track* which allows an operator to optionally configure the Bare Metal API Service and the Bare Metal conductor service to permit lookup and heartbeat for nodes that are in the process of being enrolled and created. These nodes can be left online, from a process such as discovery. If ironic-python-agent has communicated with the Bare Metal Service API endpoint with-in the last *300* seconds, then setup steps that are normally involved with preparing to launch a ramdisk on the node, are skipped along with power operations to enable a baremetal node to undergo discovery through to deployment with a single power cycle. Fast track functionality may be enabled through the "[deploy]fast_track" option. * Adds a new hardware type "ibmc" for HUAWEI 2288H V5, CH121 V5 series servers. This hardware type supports PXE based boot using HUAWEI iBMC RESTful APIs. The following driver interfaces are supported: * management: "ibmc" * power: "ibmc" * vendor: "ibmc" * Adds new hardware type "ilo5". Including all other hardware interfaces "ilo" hardware type supports, this has one new RAID interface "ilo5". * Adds functionality to perform out-of-band RAID operation for iLO5 based HPE Proliant servers. * New property "ipmi_hex_kg_key" for the ipmi based interfaces. The property enables user to set the Kg key for IPMIv2 authentication in hexadecimal format. This value is provided to "ipmitool" as the -y argument. * Adds the ability to use JSON RPC for communication between API and conductor services. To use it set the new "rpc_transport" configuration options to "json-rpc" and configure the credentials and the "host_ip" in the "json_rpc" section. Hostnames of all conductors must be resolvable for this implementation to work. * Adds a "[DEFAULT]/versioned_notifications_topics" configuration option. This enables operators to configure the topics used for versioned notifications. * Notification events for metrics data now contains a "node_name" field to assist operators with relating metrics data being transmitted by the conductor service. * Set boot_mode in node properties during OOB Introspection for "idrac" hardware type. Known Issues ************ * As good security practice[0], in Ubuntu Bionic the "nf_conntrack_helper" is disabled. This causes an issue when using the "pxe" boot interface with the PXE environment that breaks some of the Ironic CI tests, since Ironic needs conntrack for TFTP traffic. It's still possible to use Ironic with PXE on Ubuntu Xenial, and it's also possible to use Ironic with PXE on Ubuntu Bionic using a workaround based on custom firewall rules as shown in [0]. [0] https://home.regit.org/netfilter-en/secure-use-of-helpers/ Upgrade Notes ************* * Adds an "is_smartnic" field to the port object in REST API version 1.53. Upgrading to this release will set "is_smartnic" to False for all ports. * Adds a check to the "ironic-status upgrade check" command, to check for compatibility of the object versions with the release of ironic. * The "create_raid_configuration", "delete_raid_configuration" and "read_raid_configuration" interfaces of 'proliantutils' library has been enhanced to support out-of-band RAID operation for "ilo5" hardware type. To leverage this feature, the 'proliantutils' library needs to be upgraded to version '2.7.0'. * Removes deprecated "driver_info["drac_host"]" property for "idrac" hardware type that was marked for removal in Pike. Please use "driver_info["drac_address"]" instead. Deprecation Notes ***************** * The values 'True'/'False' for the option 'force_persistent_boot_device' in the node's driver info for the (i)PXE drivers are deprecated and support for them may be removed in a future release. The former default value 'False' is replaced by the new value 'Default', the value 'True' is replaced by 'Always'. * The Cisco "cisco-ucs-managed" and "cisco-ucs-standalone" drivers have been deprecated due to a lack of reporting third-party CI and vendor maintenance of the driver code. In the present state of these drivers, they would have been removed as part of the eventual removal of support for Python2. These drivers should be anticipated to be removed prior to the final Train release of the Bare Metal service. More information can be found here (http://lists.openstack.org/pipermail/openstack- discuss/2019-February/002460.html). * The "hash_distribution_replicas" configuration option is now deprecated. If specified in the config file, a warning is logged. Bug Fixes ********* * A bug has been fixed in the node update code that could cause the nodes to become not updatable if their driver is no longer available. * Fixes an issue where setting the "conductor_group" for a node was not entirely case-sensitive, in that this could fail if case- sensitivity did not match between the conductor configuration and the API request. * Makes ironic building UEFI-only bootable ISO image (when being asked to build a UEFI-bootable image) rather than building a hybrid BIOS /UEFI-bootable ISO. * Fixes an issue that node list with conductor fails if any of the nodes has an invalid hardware type, which may happen when some conductor is out of service. * Fixes an issue in the "idrac" RAID interface seen when creating RAID configurations using "python-dracclient" version "2.0.0" or higher. * Fixes an issue where the master TFTP image cache could not be disabled. The configuration option "[pxe]/tftp_master_path" may now be set to the empty string to disable the cache. For more information, see story 2004608 (https://storyboard.openstack.org/#!/story/2004608). * Fixes an issue where "xclarity" management interface fails to get boot order. Now the driver correctly gets boot device and this has been verified in the 3rd party CI. See story 2004576 (https://storyboard.openstack.org/#!/story/2004576) for details. * Advances required "python-dracclient" version to 1.5.0 and later. That version is required by the fix to the "idrac" hardware type's bug 2004340 (https://storyboard.openstack.org/#!/story/2004340). * Makes all "ilo" driver BIOS interface clean steps as asynchronous. This is required to ensure the settings on the baremetal node are consistent with the settings stored in the database irrespective of the node clean step status. Refer bug 2004066 (https://storyboard.openstack.org/#!/story/2004066) for details. * Fixes the IPMI console implementation to respect all supported IPMI "driver_info" and configuration options, particularly "ipmi_port". * Fixes an issue has been corrected where hosts executing "iPXE" to boot would error indicating that no configuration was found for networks where IPv6 is in use. This has been remedied through a minor addition to the Networking service in the Stein development cycle. For more information please see story 2004502 (https://storyboard.openstack.org/#!/story/2004502). * Notification event types now include the hardware type name string as opposed to a static string of "ipmi". This allows event processors and operators to understand what the actual notification event data source is as opposed to having to rely upon fingerprints of the data to make such determinations. * Fixes a bug where cinder block storage service volumes volume fail to attach expecting a mountpoint to be a valid string. See story 2004864 (https://storyboard.openstack.org/#!/story/2004864) for additional information. * Fixes an issue where the socat process would exit on client disconnect, which would (a) leave a zombie socat process in the process table and (b) disable any subsequent serial console connections. This issue was addressed by updating ironic to call socat with the "fork,max-children=1" options, which makes socat persist and accept multiple connections (but only one at a time). Please see story 2005024 (https://storyboard.openstack.org/#!/story/2005024) for additional information. * Fixes an issue with the "ipmi" hardware type where "node['driver_info']['ipmi_force_boot_device']" could be interpreted as "True" when set to values such as "False". * Returns the correct error message on providing an invalid reference to "image_source". Previously an internal error was raised. * The "instance_info[root_gb]" property is no longer required for whole-disk images. It has always been ignored for them, but the validation code still expected it to be present. Other Notes *********** * The Bare Metal service now builds UEFI-only bootable ISO image (when being asked to build a UEFI-bootable image) rather than building a hybrid BIOS/UEFI-bootable ISO. Changes in ironic 12.0.0..12.1.0 -------------------------------- 62d40c17e Add systemd unit for vbmcd in devstack da966c987 Workaround for postgres job with ubuntu bionic e3c606d4e Add release note on conntrack issue on bionic b805491c9 Update release-mappings and api version data for Stein release 320a61b68 Pass kwargs to exception to get better formatted error message ed04e8e4a Advance python-dracclient version requirement c76254776 Add prelude and update release notes for 12.1.0 da0de5c30 Optimize: HUAWEI iBMC driver utils a79b150ea Set boot_mode in node properties during OOB Introspection c11f45bdd Fix idrac driver unit test backwards compat issue 56acabfab Deploy Templates: factor out ironic.conductor.steps b5d44d3aa Make metrics usable 82704e6d8 Kg key for IPMIv2 authentication 3f734c872 fast tracked deployment support 3c5307df2 Update doc for UEFI first 2eceb3c8a Fix lower-constraints job 82cd13177 Fix idrac Job.state renamed to Job.status 9c266df8b Deprecates `hash_distribution_replicas` config option f1f4f892f Add Huawei iBMC driver support 618b94c71 Fix misuse of assertTrue cfc4a6f75 Allow methods to be both deploy and clean steps 80e762e18 Adding ansible python interpreter as driver_info 7480e581d Return 405 for old versions in allocation and deploy template APIs 70d7bb369 honor ipmi_port in serial console drivers 7e9ff1d6b Follow up to available node protection e4cce6759 Deploy templates: conductor and API nits 89c58cbb6 Deploy Templates: documentation fac7384b4 Fixing a bash test in devstack ironic lib 9672cb73d Deploy Templates: API reference bdcba4fb8 Fix formatting issue in doc ab3377260 Update dist filter for devstack ubuntu 2bf3d0a3a Add a non-voting metalsmith job for local boot coverage 05d6735c6 Document building configdrive on the server side fefb3201e Check microversions before validations for allocations and deploy templates cf2c0a002 Add python3 unit test with drivers installed c9b3ef468 Fix missing print format error 13bdf8b0c Fix typo and docstring in pxe/ipxe 40b55416a Stop requiring root_gb for whole-disk images 442376a7c driver-requirements: mark UcsSdk as Python 2 only a80873593 Set boot_mode in node properties during Redfish introspection c8ece0c62 Add option to set python interpreter for ansible 77ee49f21 Document using a URL for image_checksum 8f8be9dec [docs] IPv6 support for iLO 790530f33 Temporary marking ironic-standalone non-voting 3e1e0c9d5 Allow building configdrive from JSON in the API 885bfbda9 Allocation API: optimize check on candidate nodes 245af384f Fix TypeError: __str__ returned non-string (type ImageRefValidationFailed) ec2f7f992 Deploy templates: API & notifications 17a944fe9 Deploy templates: conductor 296480961 Drop installing python-libvirt system package c12170957 Test API max version is in RELEASE_MAPPINGS 51b67c441 Update the log message for ilo drivers e989a21f0 Deploy templates: fix updating steps in Python 3 db94e3574 Fix pysendfile requirement marker 885ddb436 Add option to protect available nodes from accidental deletion a105ee094 Deploy Templates: add 'extra' field to DB & object 9e8464346 Trivial: Fix error message when waiting for power state 08270ceba Allocation API: fix minor issues in the API reference acc4c402d Allocation API: reference documentation e0639875f Adding bios_interface reference to api docs a9d7d8fd9 Set available_nodes in tempest conf b9f7cf59f Update the proliantutils version in documentation 578805b34 [trivial] Removing python 3.5 template jobs a094aa7e9 Deploy Templates: Fix DB & object nits 33383c9c7 Add check for object versions 671b0cf3d [Trivial] Fix incorrect logging in destroy_allocation 6885c674c Allocation API: taking over allocations of offline conductors b1cfcb7c9 Allocation API: resume allocations on conductor restart e240dd501 Devstack - run vbmc as sudo 1d882df18 Documentation update for iLO Drivers f4c43f8b2 Follow up - API - Implement /events endpoint 7a6a6bf69 Follow up to node description f369fdd33 ensure that socat serial proxy keeps running f9e53e2c6 Deprecate Cisco drivers e95515a07 Follow up to ISO image build patch 50205ca07 API - Implement /events endpoint dabb9a48e Add a requisite for metadata with BFV b0d7c2d82 [Follow Up] Add support for Smart NICs 7efbbcc2d Support using JSON-RPC instead of oslo.messaging b137af30b Deploy templates: data model, DB API & objects bcf5b37c7 [Follow Up] Expose is_smartnic in port API 0d798372e Prioritize sloppy nodes for power sync d4233e52a Expose conductors: api-ref 3e1a7b464 Remove duplicated jobs and refactor jobs 9741aed7b Allocation API: fix a small inconsistency 6325b6c13 Expose is_smartnic in port API e64510e75 [Trivial] Allocation API: correct syntax in API version history docs 390a1c9a7 Allocation API: REST API implementation 2dfb0650d Make power sync unit test operational c803488af Allow case-insensitivity when setting conductor_group via API 206134cf5 Optionally preserve original system boot order upon instance deployment a41c7a959 Add support for Smart NICs 15fafe686 Add a voting CI job running unit tests with driver-requirements 699bd410c [Refactor] Make caching BIOS settings explicit 903f796c9 [docs] OOB RAID implementation for ilo5 based HPE Proliant servers 335f6b4fd Make iLO BIOS interface clean steps asynchronous 57037378b Provides mount point as cinder requires it to attach volume 96bc6729c Add description field to node: api-ref d30d81495 Add description field to node 2aaa6744c Fix test for 'force_persistent_boot_device' (i)PXE driver_info option cede60388 Fix iPXE boot interface with ipxe_enabled=False 96b9d9de0 Allocation API: conductor API (without HA and take over) 972747671 Removing deprecated drac_host property 86e31bff4 Add is_smartnic to Port data model 80caf5833 Remove uses of logger name "oslo_messaging" 69d713d39 [Trivial] Fix typo in noop interface comment c3648e8b4 Remove duplicated fault code 9555ad281 Fix listing nodes with conductor could raise 821d5fef7 Parallelize periodic power sync calls follow up 738d4eafd Build ISO out of EFI system partition image 0e81ec00c Make versioned notifications topics configurable 4008c9bfa Build UEFI-only ISO for UEFI boot 7448603ab Parallelize periodic power sync calls cc73bb21f Limit the timeout value of heartbeat_timeout d6c9d6cae Replace use of Q_USE_PROVIDERNET_FOR_PUBLIC 03375f003 Make ipmi_force_boot_device more user friendly 0d943c635 Follow-up logging change 3ad700aca Remove dsvm from zuulv3 jobs 1b019ddf8 Allocation API: allow picking random conductor for RPC topic cea8d7491 Fix updating nodes with removed or broken drivers 66dc4c674 Fix ironic port creation after Redfish inspection fb93d4bc3 Allocation API: minor fixes to DB and RPC 8e5337c39 Allocation API: allow skipping retries in TaskManager a4717d995 Allocation API: database and RPC b8e720e51 Allow missing ``local_gb`` property 6bc306d9e Fix typo in release note cbf1e9d03 Fix IPv6 iPXE support 58a395bf8 OOB RAID implementation for ilo5 based HPE Proliant servers. 831b6ff16 Fix SushyError namespacing in Redfish inspection 4c987aa51 Allow disabling TFTP image cache 0bda09acf Add pxe template per node b1c9e5d82 Fix the misspelling of "configuration" 1effd562e Switch to cirros 0.4.0 62ca0816a Update tox version to 2.0 71f0256b1 Disable metadata_csum when creating ext4 filesystems 053965c6d Switch the default NIC driver to e1000 c153b345b Change openstack-dev to openstack-discuss bb2942295 Fix XClarity driver management defect 78d6d9503 Ignore newly introduced tables in pre-upgrade versions check c5a4ad800 Switch CI back to xenial 052d90506 Add "owner" information field 0678a08c9 Follow-up patch for I71feefa3d0593fd185a286bec4ce38607203641d 913e4cebb Log a warning for Gen8 Inspection Diffstat (except docs and test files) ------------------------------------- api-ref/regenerate-samples.sh | 51 +- api-ref/source/baremetal-api-v1-allocation.inc | 210 ++++ api-ref/source/baremetal-api-v1-conductors.inc | 97 ++ .../source/baremetal-api-v1-deploy-templates.inc | 222 ++++ api-ref/source/baremetal-api-v1-drivers.inc | 4 + .../source/baremetal-api-v1-node-allocation.inc | 81 ++ .../source/baremetal-api-v1-node-management.inc | 4 + api-ref/source/baremetal-api-v1-nodes-ports.inc | 7 + api-ref/source/baremetal-api-v1-nodes.inc | 70 ++ .../source/baremetal-api-v1-portgroups-ports.inc | 7 + api-ref/source/baremetal-api-v1-ports.inc | 20 + api-ref/source/index.rst | 9 +- api-ref/source/parameters.yaml | 238 +++- .../samples/allocation-create-request-2.json | 6 + .../source/samples/allocation-create-request.json | 4 + .../source/samples/allocation-create-response.json | 23 + .../source/samples/allocation-show-response.json | 23 + .../source/samples/allocations-list-response.json | 52 + .../samples/conductor-list-details-response.json | 44 + .../source/samples/conductor-list-response.json | 34 + .../source/samples/conductor-show-response.json | 20 + .../samples/deploy-template-create-request.json | 19 + .../samples/deploy-template-create-response.json | 32 + .../samples/deploy-template-detail-response.json | 36 + .../samples/deploy-template-list-response.json | 18 + .../samples/deploy-template-show-response.json | 32 + .../samples/deploy-template-update-request.json | 7 + .../samples/deploy-template-update-response.json | 32 + api-ref/source/samples/driver-get-response.json | 4 + .../samples/drivers-list-detail-response.json | 8 + .../samples/node-create-request-classic.json | 3 +- .../samples/node-create-request-dynamic.json | 3 +- api-ref/source/samples/node-create-response.json | 5 +- .../source/samples/node-port-detail-response.json | 1 + api-ref/source/samples/node-show-response.json | 6 +- .../samples/node-update-driver-info-response.json | 3 + .../samples/nodes-list-details-response.json | 9 +- api-ref/source/samples/port-create-request.json | 1 + api-ref/source/samples/port-create-response.json | 1 + .../source/samples/port-list-detail-response.json | 1 + api-ref/source/samples/port-update-response.json | 1 + .../samples/portgroup-port-detail-response.json | 1 + bindep.txt | 3 +- devstack/common_settings | 2 +- devstack/files/debs/ironic | 9 +- devstack/lib/ironic | 80 +- devstack/plugin.sh | 5 + devstack/tools/ironic/scripts/create-node.sh | 4 +- devstack/upgrade/upgrade.sh | 5 + .../contributor/ironic-multitenant-networking.rst | 3 - .../images/ironic_standalone_with_ibmc_driver.svg | 1309 ++++++++++++++++++++ .../install/include/configure-ironic-api.inc | 41 + .../install/include/configure-ironic-conductor.inc | 50 + driver-requirements.txt | 9 +- ironic/api/controllers/base.py | 30 +- ironic/api/controllers/v1/__init__.py | 42 + ironic/api/controllers/v1/allocation.py | 471 +++++++ ironic/api/controllers/v1/chassis.py | 8 +- ironic/api/controllers/v1/deploy_template.py | 445 +++++++ ironic/api/controllers/v1/event.py | 54 + ironic/api/controllers/v1/node.py | 180 ++- ironic/api/controllers/v1/notification_utils.py | 6 + ironic/api/controllers/v1/port.py | 48 +- ironic/api/controllers/v1/portgroup.py | 19 +- ironic/api/controllers/v1/ramdisk.py | 12 +- ironic/api/controllers/v1/types.py | 148 ++- ironic/api/controllers/v1/utils.py | 234 +++- ironic/api/controllers/v1/versions.py | 17 +- ironic/api/controllers/v1/volume_connector.py | 19 +- ironic/api/controllers/v1/volume_target.py | 19 +- ironic/cmd/dbsync.py | 68 +- ironic/cmd/status.py | 33 +- ironic/common/cinder.py | 8 +- ironic/common/exception.py | 50 +- ironic/common/images.py | 113 +- ironic/common/json_rpc/__init__.py | 20 + ironic/common/json_rpc/client.py | 185 +++ ironic/common/json_rpc/server.py | 283 +++++ ironic/common/neutron.py | 138 +++ ironic/common/policy.py | 62 +- ironic/common/pxe_utils.py | 45 +- ironic/common/raid.py | 48 + ironic/common/release_mappings.py | 40 +- ironic/common/rpc.py | 12 +- ironic/common/rpc_service.py | 13 +- ironic/common/states.py | 24 +- ironic/conductor/allocations.py | 233 ++++ ironic/conductor/base_manager.py | 16 + ironic/conductor/manager.py | 197 ++- ironic/conductor/rpcapi.py | 50 +- ironic/conductor/steps.py | 601 +++++++++ ironic/conductor/task_manager.py | 28 +- ironic/conductor/utils.py | 406 +++--- ironic/conf/__init__.py | 4 + ironic/conf/agent.py | 15 + ironic/conf/ansible.py | 6 + ironic/conf/conductor.py | 22 +- ironic/conf/default.py | 49 +- ironic/conf/deploy.py | 21 + ironic/conf/ibmc.py | 35 + ironic/conf/json_rpc.py | 44 + ironic/conf/opts.py | 4 +- ironic/conf/pxe.py | 2 +- ironic/db/api.py | 220 +++- ...7122cc9_add_extra_column_to_deploy_templates.py | 31 + .../versions/28c44432c9c3_add_node_description.py | 31 + .../versions/2aac7e0872f6_add_deploy_templates.py | 67 + .../versions/9cbeefa3763f_add_port_is_smartnic.py | 32 + .../versions/dd67b91a1981_add_allocations_table.py | 56 + .../versions/f190f9d00a11_add_node_owner.py | 32 + ironic/db/sqlalchemy/api.py | 597 ++++++++- ironic/db/sqlalchemy/models.py | 68 + ironic/drivers/base.py | 48 +- ironic/drivers/cisco_ucs.py | 8 + ironic/drivers/ibmc.py | 40 + ironic/drivers/ilo.py | 13 + ironic/drivers/modules/agent.py | 99 +- ironic/drivers/modules/agent_base_vendor.py | 54 +- ironic/drivers/modules/ansible/deploy.py | 30 +- ironic/drivers/modules/cimc/management.py | 4 + ironic/drivers/modules/cimc/power.py | 4 + ironic/drivers/modules/console_utils.py | 6 +- ironic/drivers/modules/deploy_utils.py | 107 +- ironic/drivers/modules/drac/common.py | 21 +- ironic/drivers/modules/drac/inspect.py | 9 + ironic/drivers/modules/drac/raid.py | 4 +- ironic/drivers/modules/ibmc/__init__.py | 0 ironic/drivers/modules/ibmc/management.py | 237 ++++ ironic/drivers/modules/ibmc/mappings.py | 70 ++ ironic/drivers/modules/ibmc/power.py | 145 +++ ironic/drivers/modules/ibmc/utils.py | 172 +++ ironic/drivers/modules/ibmc/vendor.py | 87 ++ ironic/drivers/modules/ilo/bios.py | 142 ++- ironic/drivers/modules/ilo/boot.py | 6 +- ironic/drivers/modules/ilo/inspect.py | 19 + ironic/drivers/modules/ilo/raid.py | 235 ++++ ironic/drivers/modules/inspect_utils.py | 35 +- ironic/drivers/modules/ipmitool.py | 91 +- ironic/drivers/modules/ipxe.py | 29 +- ironic/drivers/modules/irmc/bios.py | 2 + ironic/drivers/modules/irmc/boot.py | 6 +- ironic/drivers/modules/iscsi_deploy.py | 49 +- ironic/drivers/modules/network/common.py | 15 + ironic/drivers/modules/network/neutron.py | 18 + ironic/drivers/modules/noop.py | 2 +- ironic/drivers/modules/pxe.py | 30 +- ironic/drivers/modules/pxe_base.py | 14 +- ironic/drivers/modules/redfish/bios.py | 2 + ironic/drivers/modules/redfish/inspect.py | 67 +- ironic/drivers/modules/ucs/management.py | 4 + ironic/drivers/modules/ucs/power.py | 3 + ironic/drivers/modules/xclarity/common.py | 2 +- ironic/drivers/modules/xclarity/management.py | 72 +- ironic/drivers/modules/xclarity/power.py | 2 +- ironic/drivers/utils.py | 5 +- ironic/objects/__init__.py | 2 + ironic/objects/allocation.py | 300 +++++ ironic/objects/deploy_template.py | 281 +++++ ironic/objects/fields.py | 4 + ironic/objects/node.py | 56 +- ironic/objects/port.py | 47 +- ...ction-for-available-nodes-25f163d69782ef63.yaml | 12 + .../unit/api/controllers/v1/test_allocation.py | 743 +++++++++++ .../api/controllers/v1/test_deploy_template.py | 956 ++++++++++++++ .../unit/drivers/modules/ansible/test_deploy.py | 230 +++- .../unit/drivers/modules/drac/test_inspect.py | 11 +- .../drivers/modules/drac/test_periodic_task.py | 18 +- .../unit/drivers/modules/ibmc/test_management.py | 276 +++++ .../unit/drivers/modules/irmc/test_inspect.py | 2 +- .../unit/drivers/modules/network/test_common.py | 20 + .../unit/drivers/modules/network/test_neutron.py | 42 +- .../unit/drivers/modules/redfish/test_inspect.py | 70 +- .../unit/drivers/modules/test_agent_base_vendor.py | 193 ++- .../unit/drivers/modules/test_console_utils.py | 6 +- .../unit/drivers/modules/test_deploy_utils.py | 61 +- .../unit/drivers/modules/test_inspect_utils.py | 22 + .../unit/drivers/modules/test_iscsi_deploy.py | 219 ++++ .../drivers/modules/xclarity/test_management.py | 37 + .../unit/drivers/modules/xclarity/test_power.py | 5 +- .../unit/drivers/third_party_driver_mock_specs.py | 10 + lower-constraints.txt | 6 +- .../run.yaml | 10 +- ...nsible-python-interpreter-2035e0f23d407aaf.yaml | 15 + ...boot-mode-redfish-inspect-48e2b27ef022932a.yaml | 6 + .../add-node-description-790097704f45af91.yaml | 6 + ...on-persistent-boot-device-139cf280fb66f4f7.yaml | 17 + .../add-owner-information-52e153faf570747e.yaml | 7 + .../add-parallel-power-syncs-b099d66e80aab616.yaml | 8 + .../add-port-is-smartnic-4ce6974c8fe2732d.yaml | 21 + .../notes/add-pxe-per-node-526fd79df17efda8.yaml | 8 + ...add-support-for-smart-nic-0fc5b10ba6772f7f.yaml | 8 + .../notes/allocation-api-6ac2d262689f5f59.yaml | 10 + .../broken-driver-update-fc5303340080ef04.yaml | 5 + .../notes/bug-2004947-e5f27e11b8f9c96d.yaml | 6 + .../notes/build-configdrive-5b3b9095824faf4e.yaml | 9 + .../notes/build-iso-from-esp-d156036aa8ef85fb.yaml | 12 + .../build-uefi-only-iso-ce6bcb0da578d1d6.yaml | 7 + .../notes/check_obj_versions-e86d897df673e833.yaml | 5 + .../notes/deploy-templates-5df3368df862631c.yaml | 15 + .../deprecate-cisco-drivers-3ae79a24b76ff963.yaml | 11 + ...ash-distribution-replicas-ef0626ccc592b70e.yaml | 5 + .../fast-track-deployment-f09a8b921b3aae36.yaml | 16 + .../fix-conductor-list-raise-131ac76719b74032.yaml | 6 + .../notes/fix-drac-job-state-8c5422bbeaf15226.yaml | 5 + ...x-tftp-master-path-config-77face94f5db9af7.yaml | 7 + ...clarity-management-defect-ec5af0cc6d1045d9.yaml | 8 + .../notes/ibmc-driver-45fcf9f50ebf0193.yaml | 10 + ...python-dracclient-version-01c6ef671670ffb3.yaml | 6 + ...lo-async-bios-clean-steps-15e49545ba818997.yaml | 8 + .../notes/ilo5-oob-raid-a0eac60f7d77a4fc.yaml | 12 + .../notes/ipmi-console-port-ec6348df4eee6746.yaml | 5 + .../notes/ipmi_hex_kg_key-8f6caabe5b7d7a9b.yaml | 7 + .../notes/ipxe-with-dhcpv6-2bc7bd7f53a70f51.yaml | 8 + .../issue-conntrack-bionic-7483671771cf2e82.yaml | 13 + releasenotes/notes/json-rpc-0edc429696aca6f9.yaml | 8 + ...tions-topics-configurable-18d70d573c27809e.yaml | 6 + ...rics-notifier-information-17858c8e27c795d7.yaml | 13 + .../prelude-to-the-stein-f25b6073b6d1c598.yaml | 32 + .../notes/provide_mountpoint-58cfd25b6dd4cfde.yaml | 7 + ...move-deprecated-drac_host-865be09c6e8fcb90.yaml | 5 + .../notes/set-boot-mode-4c42b3fd0b5f5b37.yaml | 5 + .../notes/socat-respawn-de9e8805c820a7ac.yaml | 10 + .../notes/story-2004444-f540d9bbc3532ad0.yaml | 6 + .../notes/type-error-str-6826c53d7e5e1243.yaml | 5 + .../notes/whole-disk-root-gb-9132e5a354e6cb9d.yaml | 6 + requirements.txt | 5 +- setup.cfg | 6 + test-requirements.txt | 2 +- tox.ini | 7 +- zuul.d/ironic-jobs.yaml | 147 ++- zuul.d/project.yaml | 57 +- 313 files changed, 22097 insertions(+), 1990 deletions(-) Requirements updates -------------------- diff --git a/driver-requirements.txt b/driver-requirements.txt index 5ee2943f0..6b4765745 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -7 +7 @@ -proliantutils>=2.6.0 +proliantutils>=2.7.0 @@ -11,2 +11,2 @@ python-scciclient>=0.8.0 -UcsSdk==0.8.2.2 -python-dracclient>=1.3.0 +UcsSdk==0.8.2.2;python_version<'3' +python-dracclient>=1.5.0 @@ -22,0 +23,3 @@ ansible>=2.4 + +# HUAWEI iBMC hardware type uses the python-ibmcclient library +python-ibmcclient>=0.1.0 diff --git a/requirements.txt b/requirements.txt index 0bcdf484a..ba1845d8d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18 +18 @@ stevedore>=1.20.0 # Apache-2.0 -pysendfile>=2.0.0 # MIT +pysendfile>=2.0.0;sys_platform!='win32' # MIT @@ -40 +40 @@ jsonpatch!=1.20,>=1.16 # BSD -WSME>=0.8.0 # MIT +WSME>=0.9.3 # MIT @@ -49,0 +50 @@ tooz>=1.58.0 # Apache-2.0 +openstacksdk>=0.25.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 80ff78035..373d2a4da 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -14 +14 @@ stestr>=1.0.0 # Apache-2.0 -psycopg2>=2.6.2 # LGPL/ZPL +psycopg2>=2.7.3 # LGPL/ZPL
participants (1)
-
no-reply@openstack.org