We are gleeful to announce the release of: ironic-python-agent 6.0.0: Ironic Python Agent Ramdisk This release is part of the ussuri release series. The source is available from: https://opendev.org/openstack/ironic-python-agent Download the package from: https://tarballs.openstack.org/ironic-python-agent/ Please report issues through: https://storyboard.openstack.org/#!/project/openstack/ironic- python-agent For more details, please see below. 6.0.0 ^^^^^ New Features ************ * Allows reading the "root_device" from "instance_info", overriding the value in "properties". * Adds a new field "configuration" to the introspection data collected by the "default" collector. It contains two fields: * "collectors" - list of the enabled inspection collectors. * "managers" - list of the enabled hardware managers in their priority order. * Adds support to allow selection of RAID "5" and RAID "6" protection levels for software RAID support. This may only be the secondary volume, as these volume types of software RAID volumes cannot be used to directly boot an operating system. Upgrade Notes ************* * Python 2.7 support has been dropped. Last release of ironic- python- agent to support Python 2.7 is OpenStack Train. The minimum version of Python now supported by ironic-python-agent is Python 3.6. * For Software RAID, the IPA will no longer assume that the root file system is in the first partition of the deployed image. Instead, the IPA will use the UUID passed from the conductor to identify the root partition. Before upgrades, the root file system UUID needs hence to be set as part of the node's "driver_internal_info" or as "rootfs_uuid" image metadata. Security Issues *************** * Enables pre-hashed passwords to be supplied to the "rescue" extension. See story 2006777 (https://storyboard.openstack.org/#!/story/2006777) for more information. Bug Fixes ********* * Fixes the workflow for wholedisk images when using UEFI boot mode, when possible it will use efibootmgr instead of grub2 to update the NVRAM. * Fixes an issue with the tinyIPA CI testing image by providing a fallback root volume uuid detection method via the "findfs" utility, which is also already packaged in most distributions with "lsblk". This fallback was necesary as the "lsblk" command in "TinyCore" Linux, upon which TinyIPA is built, does not return data as expected for volume UUID values. * Fixes an issue where metadata erasure cleaning would fail on devices that are read-only at the hardware level. Typically these are virtual devices being offered to the operating system for purposes like OS self-installation. In the case of full device erasure, this is explicitly raised as a hard failure requiring operator intervention. * Fixes an issue in fallback error handling where native iSCSI controls are unavailable due to the composition of the IPA ramdisk and where direct "tgtadm" commands also fails. Before fallback error handling was added, the teardown was skipped completely in the event of the native iSCSI controls being unavailable. The end user behavior is now as it was previously prior to the fallback error handling being added, but IPA will still continue to attempt to clean up the iSCSI session. * Skips NIC "numa_node" discovery if it's not assigned to a numa_node as in some rare case, such as a VM with virtual NUMA node, NICs might not be in a NUMA node and this breaks "numa-topology" discovery. * Fixes the "numa-topology" inspection collector to be compatible with Pint < 0.5.2. * Fixes an issue where wholedisk images are requested for deployment and the bootloader is overridden. IPA now explicitly looks for the boot partition, and examines the contents if the disk appears to be MBR bootable. If override/skip bootloader installation does not apply if UEFI or PREP boot partitions are present on the disk. Other Notes *********** * Increases the default value for the "ipa-ip-lookup-attempts" kernel argument to 6, adding extra time for networking to be set up before giving up. * The output of "lsblk" and the contents of "/proc/mdstat" are now collected with the ramdisk logs for debugging. * The sample configuration file "etc/ironic_python_agent/ironic_python_agent.conf.sample" is no longer shipped with the source code. It can be generated locally with: tox -egenconfig Changes in ironic-python-agent 5.0.0..6.0.0 ------------------------------------------- 06d65e4 Tidy up relese notes for 6.0.0 cd7b269 Skip read-only devices with metadata erase 31b73b4 Expose collector and hardware manager names via introspection data 4b60277 Document introspection data and collectors 2017c27 Start installing DIB from Zuul-cloned sources in the CI a1a121f Skip nic numa_node discovery if it's not assigned to a numa_node b6210be Avoid grub2-install when on UEFI boot mode 74c6fe8 Update hardware to 0.24,0 d40132a Omit configdrive and system_logs from logging 584d209 Lower RAM for DIB jobs to 2 GiB 84f7a2d CI: add a non-voting partition-iscsi DIB job 38eda4f CI: make the metalsmith job voting and gating 96a0946 Allow reading root_device from instance_info 4cfd449 Run publishing jobs with CentOS 8 instead of 7 22ab827 Remove deprecated ironic-agent element 96d46aa Enforce running tox with correct python version based on env de90f54 Permit hashed passwords to be sent to IPA. 8aa9b79 Stop the API so rescue can exit and succeed 966356e Search for efi partition f1b2df9 Replace WSME and Pecan with Werkzeug 13a2655 Software RAID: Use UUID to find root fs 4354bc0 Replace netaddr dependency with stdlib ipaddress 9f6c2aa Remove the unused dependency on iso8601 8208473 Remove the configuration sample file ca7a46b Stop using six library e4659c9 RAID 5/6 cdee7bb Rename job to mention python3 18862bb Drop python 2.7 support and testing 4097847 Clean up options deprecated prehistory c4bb694 Bump up ipa-ip-lookup-attempts to 6 1d12505 Do not try to read raw disk data as unicode 11862cc Fix instructions for enabling SSH on recent tinyipa images 9f8fa28 Don't try to put a bootloader in place when bootable c5956bd Suppress errors from iscsi session cleanup 68fb800 Switch jobs to py3 cb96cec [Trivial]: Typo in comment for _get_partition 16f3598 Switch to Ussuri job d61887e Correct string formatting in logging 1975478 Set rd.md.uuid kernel parameter when deploying on software raid 4197e20 Remove imagebuild/common, it's not longer used by IPA-builder 3ee17e8 Last resort fallback to find a partition 11976c9 Collect lsblk and /proc/mdstat with ramdisk logs 12209f8 Add versions to release notes series 16d1593 Refer to ironic-python-agent-builder for image building fc068f2 tox.ini: remove the devenv environment 91ed556 Fix tox.ini to correctly test lower-constraints 386654f Fix compatibility with Pint 0.5 246dddf Update master for stable/train Diffstat (except docs and test files) ------------------------------------- .gitignore | 3 + bindep.txt | 1 + .../ironic_python_agent.conf.sample | 266 ----------- .../extract_upper_constraints_from_tox_ini.sh | 9 - imagebuild/common/generate_upper_constraints.sh | 87 ---- ironic_python_agent/agent.py | 58 ++- ironic_python_agent/api/app.py | 233 +++++++-- ironic_python_agent/api/config.py | 39 -- ironic_python_agent/api/controllers/__init__.py | 0 ironic_python_agent/api/controllers/root.py | 97 ---- ironic_python_agent/api/controllers/v1/__init__.py | 118 ----- ironic_python_agent/api/controllers/v1/base.py | 74 --- ironic_python_agent/api/controllers/v1/command.py | 126 ----- ironic_python_agent/api/controllers/v1/link.py | 43 -- ironic_python_agent/api/controllers/v1/status.py | 55 --- ironic_python_agent/config.py | 12 +- ironic_python_agent/extensions/base.py | 25 +- ironic_python_agent/extensions/clean.py | 2 +- ironic_python_agent/extensions/image.py | 316 ++++++++++++- ironic_python_agent/extensions/iscsi.py | 30 +- ironic_python_agent/extensions/rescue.py | 24 +- ironic_python_agent/extensions/standby.py | 13 +- ironic_python_agent/hardware.py | 122 +++-- ironic_python_agent/inspector.py | 12 +- ironic_python_agent/numa_inspector.py | 5 +- ironic_python_agent/utils.py | 57 ++- lower-constraints.txt | 7 +- plugin-requirements.txt | 2 +- ...id-grub2-using-efibootmgr-bd27c0978d1cf71b.yaml | 5 + .../bumpsipalookupattempts-29de7c949aaf6556.yaml | 6 + .../notes/collect-more-8bc9ad4c63e873e1.yaml | 5 + .../notes/drop-python2-2006fd8a4a6de56d.yaml | 7 + .../notes/fallback-to-findfs-59abde55221e1e84.yaml | 10 + ...cleaning-read-only-device-c8a0f4cc2f434d99.yaml | 10 + ...x-iscsi-teardown-handling-0df2345318d3c843.yaml | 12 + ...fix-nic-without-numa-node-b401f97c46afa4a1.yaml | 6 + ...instance-info-root-device-02fed0966bb00fb3.yaml | 5 + .../notes/inventory-conf-29b59ebe97aefbde.yaml | 9 + releasenotes/notes/no-sample-ac11bd0fa27af62a.yaml | 7 + ...e-hashed-rescue-passwords-4275f6e697533cec.yaml | 6 + releasenotes/notes/pint-0.5-816aaf3a4f6d4a6e.yaml | 5 + .../notes/raid5-6-support-0807597c3633a26c.yaml | 7 + .../skips-bootloader-install-35c463195aa61800.yaml | 8 + ...ware_raid_use_rootfs_uuid-9149cc0c8638d5d5.yaml | 8 + releasenotes/source/index.rst | 1 + releasenotes/source/train.rst | 6 + requirements.txt | 6 +- setup.cfg | 2 - test-requirements.txt | 2 - tox.ini | 33 +- zuul.d/ironic-python-agent-jobs.yaml | 32 +- zuul.d/project.yaml | 20 +- 67 files changed, 2135 insertions(+), 1511 deletions(-) Requirements updates -------------------- diff --git a/plugin-requirements.txt b/plugin-requirements.txt index 3a75a5e..9d393f2 100644 --- a/plugin-requirements.txt +++ b/plugin-requirements.txt @@ -2 +2 @@ -hardware>=0.20.1 +hardware>=0.24.0 diff --git a/requirements.txt b/requirements.txt index f8c4bb8..4905237 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,2 +5,0 @@ eventlet!=0.18.3,!=0.20.1,>=0.18.2 # MIT -iso8601>=0.1.11 # MIT -netaddr>=0.7.18 # BSD @@ -15 +12,0 @@ oslo.utils>=3.33.0 # Apache-2.0 -pecan!=1.0.2,!=1.0.3,!=1.0.4,!=1.2,>=1.0.0 # BSD @@ -21 +17,0 @@ rtslib-fb>=2.1.65 # Apache-2.0 -six>=1.10.0 # MIT @@ -23 +18,0 @@ stevedore>=1.20.0 # Apache-2.0 -WSME>=0.8.0 # MIT @@ -24,0 +20 @@ ironic-lib>=2.17.0 # Apache-2.0 +Werkzeug>=0.15.0 # BSD License diff --git a/test-requirements.txt b/test-requirements.txt index afc80a2..ad69171 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -16 +15,0 @@ doc8>=0.6.0 # Apache-2.0 -sphinx!=1.6.6,!=1.6.7,>=1.6.2,<2.0.0;python_version=='2.7' # BSD @@ -18 +16,0 @@ sphinx!=1.6.6,!=1.6.7,>=1.6.2;python_version>='3.4' # BSD -sphinxcontrib-pecanwsme>=0.8.0 # Apache-2.0