2220 Commits

Author SHA1 Message Date
Dmitry Tantsur
2fcf35e56d Reduce logging verbosity when collecting logs
It's not uncommon that some commands fail when collecting logs.
We already log all failures in utils.execute, no need to duplicate
them with a non-fatal ERROR logging.

Change-Id: If151b3a3be979bd2b3ce01030e5d6242ad74eaa3
2021-06-11 16:04:59 +02:00
Julia Kreger
2fab70c36b Utilize CSV file for EFI loader selection
Adds support to identify and utilize a CSV file to signal which
bootloader to utilize, and set it when the OS is running as opposed
to when EFI is running. This works around EFI loader potentially
crashing some vendors hardware types when entry stored in the
image does not match the EFI loader record which was utilzied to
boot.

Grub2+shim specifically specifically needs the CSV file name
and entry label to match what the system was booted with in order
to prevent the machine from potentially crashing.

See https://storyboard.openstack.org/#!/story/2008962
and https://bugzilla.redhat.com/show_bug.cgi?id=1966129#c37
for more information.

Change-Id: Ibf1ef4fe0764c0a6f1a39cb7eebc23ecc0ee177d
Story: 2008962
Task: 42598
Co-Authored-By: Bob Fournier <bfournie@redhat.com>
2021-06-10 11:23:14 -07:00
Zuul
32e3b435bc Merge "Burn-in: Add disk step" 2021-06-07 12:46:15 +00:00
Zuul
434de569e6 Merge "Ignore efi grub2-install failure" 2021-06-07 09:47:12 +00:00
Zuul
6be440eb3b Merge "Refactor: use convert_image from ironic_lib" 2021-06-04 16:35:00 +00:00
Steve Baker
a057be7dad Ignore efi grub2-install failure
Recent releases of redhat grub2 will always fail when installing to
EFI paths, to encourage a transition to the signed shim bootloader.

Partition image deploys avoid calling grub2-install with the
preserve-efi-assets functions. Deploying whole disk images doesn't
require grub2-install. This leaves whole disk images installed onto
softraid devices, which still attempts to call grub2-install.

This change will still attempt to run grub2-install in this
one remaining case, but will ignore any failure.

A future enhancement can avoid calling grub2-install entirely so that
non-redhat secure-boot capable images can keep their signed
bootloaders.

Story: 2008923
Task: 42521
Change-Id: If432ef795d64d76442d739eb4f7d155ff847041e
2021-06-04 10:03:55 +12:00
likui
e27cdb3673 Changed minversion in tox to 3.18.0
The patch bumps min version of tox to 3.18.0 in order to
replace tox's whitelist_externals by allowlist_externals option:
https://github.com/tox-dev/tox/blob/master/docs/changelog.rst#v3180-2020-07-23

Change-Id: I434a6330defbc5cc65788f4d64b7f2d4d2b37db7
2021-06-03 16:51:06 +08:00
Iury Gregory Melo Ferreira
031b5c4b61 Clean-up releasenotes for 8.0.0 release
Change-Id: I6a52b55237225f169ff59ac8854f739d9c0f92c7
2021-06-02 18:59:10 +02:00
Zuul
7fdbcde3de Merge "Stop accepting duplicated configdrive" 2021-06-02 12:36:57 +00:00
Dmitry Tantsur
f657526807 Stop accepting duplicated configdrive
We're currently requiring it twice: in image_info and in a separate
configdrive argument. I think we should eventually settle on separate
arguments for separate entities, so this change makes the value in
image_info optional with a goal to stop accepting it.

We could probably just remove the handling in image_info, but a
deprecation is safer.

The (unused in ironic) cache_image call is updated with an optional
configdrive arguments.

Story: #2008904
Task: #42480
Change-Id: I1e2efa28efa3ea7e389774cb7633d916757bc6ed
2021-06-02 11:19:39 +02:00
Dmitry Tantsur
33d889c3c4 Refactor: use convert_image from ironic_lib
Change-Id: If890baf3545cff6cef7c645c42e7f9d9038c9aa7
2021-06-01 14:07:34 +02:00
Zuul
5c063c8224 Merge "Make _get_efi_bootloaders return relative paths" 2021-05-27 13:09:48 +00:00
Julia Kreger
9e4c7052a2 Limit qemu-img execution arenas
qemu-img attempts to launch multiple threads by default *and*
attempts to have multiple memory allocation arenas to operate
from. While multithreading can be good for performance, this
pattern and the memory footprint for process launch and
dependencies can turn the memory footprint for a cirros image
conversion (16MB) into 1.2GB of memory being asked for by the
qemu-img tool.

In order to limit this impact, as the default number of arenas
is governed by the number of CPUs times the number 8, it seems
reasonable to lower this to a more reasonable number which
also helps keep our possible memory footprint from being exceeded.

Change-Id: I71a28ec59ec31c691205eb34d9fcab63a2ccb682
Story: 2008928
Task: 42528
2021-05-26 13:04:46 -07:00
Zuul
2172122b87 Merge "Rewrite write_image.sh in Python" 2021-05-26 17:17:02 +00:00
Steve Baker
10d18c4113 Make _get_efi_bootloaders return relative paths
To make this function useful for purposes other than efibootmgr
entries, this change moves the path manipulation to _run_efibootmgr.

This change also adds boot*.efi entries to BOOTLOADERS_EFI so that it
includes every entry in the UEFI Spec 2.9[1] Table 3-2 UEFI Image
Types.

[1] https://uefi.org/sites/default/files/resources/UEFI_Spec_2_9_2021_03_18.pdf
Story: 2008923
Task: 42521

Change-Id: Ibe02786609aa0de65115897d8f4a9b4f36c8aed2
2021-05-26 11:21:15 +12:00
Zuul
b4dd03168e Merge "Enable out-of-order writes when writing whole disk images" 2021-05-25 13:03:29 +00:00
Arne Wiebalck
20c5894bc2 Burn-in: Add disk step
Add a clean step for disk burn-in via fio. Get basic
run parameters from the node's driver_info.

Story: #2007523
Task: #42384

Change-Id: I5f5e336bd629846b3d779fd0fc7a2060b385b035
2021-05-21 16:33:11 +02:00
Zuul
6fc5a14760 Merge "Do not serialize command_params" 2021-05-18 14:58:42 +00:00
Dmitry Tantsur
606e500312 Rewrite write_image.sh in Python
Change-Id: I0caa65561948f4e0934943a7a0d3a209701b5a59
2021-05-18 14:45:13 +02:00
Dmitry Tantsur
d1844c61b1 Enable out-of-order writes when writing whole disk images
Per documentation it improves performance when using -O host_device.

Change-Id: Ic6a97af9f865d07c9cb4257397a320475a28f88b
2021-05-18 14:41:21 +02:00
Dmitry Tantsur
51aa31070a Do not serialize command_params
The command params can be huge when configdrive is used. There is no
point in sending them back, Ironic does not use them anyhow.

Story: #2008904
Task: #42479
Change-Id: I6e3db5db2042ca3fb5dafacfacf036fd7fc2fc4c
2021-05-18 12:59:28 +02:00
Zuul
d6e4fbd827 Merge "Remove the iscsi extension" 2021-05-12 11:08:19 +00:00
Zuul
719f20aaf5 Merge "Migrate functional tests for work_on_disk from ironic-lib" 2021-05-12 09:15:49 +00:00
Zuul
823e0ed743 Merge "Burn-in: Add memory step" 2021-05-11 09:31:54 +00:00
Zuul
29f3230791 Merge "Software RAID: RAID the ESPs" 2021-05-11 09:31:36 +00:00
Zuul
9837f1c2f0 Merge "Fix NVMe Partition image on UEFI" 2021-05-10 15:00:21 +00:00
Zuul
5c01ec4f6f Merge "Burn-in: Add CPU step" 2021-05-10 15:00:14 +00:00
Dmitry Tantsur
5492f57dfd Migrate functional tests for work_on_disk from ironic-lib
Missed in commit 24951b1029170840484a50fdd38d2a57858a578c.

Change-Id: Iad5e8f161ac69b96b9332d83fe22b5e0b9192258
2021-05-10 13:00:12 +02:00
Dmitry Tantsur
be3882162e Remove the iscsi extension
Change-Id: I2f0e581575112d6c7ba0d211661cab3e0b6caca6
2021-05-10 12:43:44 +02:00
Zuul
6fb4cec7aa Merge "setup.cfg: Replace dashes with underscores" 2021-05-05 13:12:50 +00:00
Zuul
4ac3d79519 Merge "Remove runtime dependency on pbr" 2021-05-04 19:11:39 +00:00
Zuul
c09dd5ce0b Merge "Import deployment logic from ironic-lib" 2021-05-04 17:48:37 +00:00
Julia Kreger
fe825fa97e Fix NVMe Partition image on UEFI
The _manage_uefi code has a check where it attempts to just
identify the precise partition number of the device, in order
for configuration to be parsed and passed. However, the same code
did not handle the existence of a `p1` partition instead of just a
partition #1. This is because the device naming format is different
with NVMe and Software RAID.

Likely, this wasn't an issue with software raid due to how complex the
code interaction is, but the docs also indicate to use only whole disk
images in that case.

This patch was pulled down my one RH's professional services folks
who has confirmed it does indeed fix the issue at hand. This is noted
as a public comment on the Red Hat bugzilla.
https://bugzilla.redhat.com/show_bug.cgi?id=1954096

Story: 2008881
Task: 42426
Related: rhbz#1954096
Change-Id: Ie3bd49add9a57fabbcdcbae4b73309066b620d02
2021-05-04 16:44:37 +00:00
XinxinShen
353a3666c1 setup.cfg: Replace dashes with underscores
Setuptools v54.1.0 introduces a warning that the use of dash-separated
options in 'setup.cfg' will not be supported in a future version [1].
Get ahead of the issue by replacing the dashes with underscores. Without
this, we see 'UserWarning' messages like the following on new enough
versions of setuptools:

  UserWarning: Usage of dash-separated 'description-file' will not be
  supported in future versions. Please use the underscore name
  'description_file' instead

[1] https://github.com/pypa/setuptools/commit/a2e9ae4cb

Change-Id: I5b71e5ef287a9557ed60bd23cd97dfe74571b457
2021-05-04 17:11:13 +08:00
Dmitry Tantsur
24951b1029 Import deployment logic from ironic-lib
The two functions work_on_disk and create_config_drive_partition contain
a substantial part of the deployment logic. Previously we placed them in
ironic-lib for re-using on the conductor side in the iSCSI deploy
interface. Since the iSCSI deploy is going away, we can move this code
to ironic-python-agent to simplify maintenance.

Imports code from ironic_lib commit 9fb5be348202f4854a455cd08f400ae12b99e1f2.

Change-Id: I6cbcd81533f135208b57746cb0e33ffdfaf94eee
2021-05-03 14:17:57 +02:00
Arne Wiebalck
5c222560f0 Burn-in: Add memory step
Add a clean step for memory burn-in via stress-ng. Get basic
run parameters from the node's driver_info.

Story: #2007523
Task: #42383

Change-Id: I33a83968c9f87cf795ec7ec922bce98b52c5181c
2021-05-01 10:36:58 +02:00
Arne Wiebalck
6702fcaa43 Burn-in: Add CPU step
Add a clean step for CPU burn-in via stress-ng. Get basic
run parameters from the node's driver_info.

Story: #2007523
Task: #42382

Change-Id: I14fd4164991fb94263757244f716b6bfe8edf875
2021-05-01 10:36:20 +02:00
Dmitry Tantsur
764e29729d Stop testing the iscsi deploy interface
Remove the jobs that are now redundant.

Depends-On: https://review.opendev.org/c/openstack/diskimage-builder/+/788972
Depends-On: https://review.opendev.org/c/openstack/ironic-python-agent-builder/+/788971
Change-Id: Ic0b7bc509652c23cec85e685d66de368fdc4761d
2021-04-30 17:16:59 +02:00
Zuul
10c29cdc41 Merge "Fix getting memory size in some lshw output" 2021-04-30 12:24:44 +00:00
Zane Bitter
ed791d9778 Fix getting memory size in some lshw output
Due to a regression in lshw introduced by
https://github.com/lyonel/lshw/pull/60, there are some versions in the
wild that do not return sizes for memory banks <32GiB. In those cases,
work around the problem by looking at the top-level size (if available)
to find the total size. Previously we assumed that we only needed the
top-level size when there was no list of memory banks.

The issue is fixed upstream by https://github.com/lyonel/lshw/pull/65,
but the erroneous patch is still present in the lshw-B.02.19.2-5.el8
package in CentOS 8.4 and 8.5.

Change-Id: I6eb5981d28b9ae368239af0c1d0ec32ff79d95b3
Story: #2008865
Task: 42395
2021-04-29 14:41:11 -04:00
Zane Bitter
b510d2d4d0 unit tests: Capture log output
Debugging unit test failures is very challenging because all of the log
output is mixed together. Capture the log messages and store them as
part of the test, so that only log messages associated with failures are
output, interleaved correctly with the results.

This does not capture logs sent to stdout by _early_log(), although that
would be a nice further improvement.

Change-Id: I01e409ea73ff444e16caae0078e81585c703d5a5
2021-04-29 09:56:08 -04:00
Zane Bitter
c56cd4abc0 Fix missing data in log messages
Change-Id: I5d08deed86d79a7ea0b7a1625122af595037dab5
2021-04-29 09:55:56 -04:00
Dmitry Tantsur
3251d7b641 Remove runtime dependency on pbr
Pbr is a very heavy package to depend on. It requires git-core, which is
16 MiB on my Fedora. We only use it to detect the version, which can be
done without pbr using a much lighter importlib_metadata.

Copied from https://review.opendev.org/c/openstack/osprofiler/+/739379

Change-Id: I5f434e6bfde6f645804941f3a36d5458a28270e7
2021-04-26 09:16:34 +02:00
Riccardo Pittau
2057d861a6 [trivial] Add versions to wallaby release notes
Change-Id: I806b5f4b74c087a16d194d36665b1115f6d34184
2021-04-23 10:31:56 +02:00
Zuul
9edb13d891 Merge "Do not fail network interface collection on unsupported interface" 2021-04-22 16:35:25 +00:00
Derek Higgins
9c3fbfd000 Add a call to "udevadm settle" in write_image.sh
After GPT and MBR are destroyed systemd-udevd gets triggered
which may hold /dev/sda open preventing qemu-img from writting
its image.

Story: 2008830
Task: 42312
Change-Id: I6105192a16fcb7f6898910e8d0ab824d731d491d
2021-04-20 17:48:46 +01:00
Arne Wiebalck
c2d04dc156 Software RAID: RAID the ESPs
For software RAID in UEFI mode, we create ESPs on all holder disks
and copy the bootloader there. Since there is no mechanism to keep
the ESPs in sync, e.g. on kernel upgrades or when kernel parameters
are updated, the ESPs will get out of sync eventually. This may lead
to a situation where a node boots with outdated parameters or does
not have any of the installed kernels in the boot menu anymore.
This change proposes to RAID the ESPs. While the UEFI firmware will
find an ESP partition (one leg of the mirror), the node will see
an md device and all subsequent updates will go to all member disks.

Also, remove the source ESP after copying in order to avoid mount
confusion (same UUID!).

Story: #2008745
Task: #42103
Change-Id: I9078ef37f1e94382c645ae98ce724ac9ed87c287
2021-04-16 14:40:28 +02:00
Zuul
c72997d8d0 Merge "Always fall back to sysrq when power off fails" 2021-04-14 12:13:37 +00:00
Dmitry Tantsur
b395181b1b Always fall back to sysrq when power off fails
The line we're looking for is not there when IPA is in a container, at least
for CentOS based containers. Just fall back to sysrq on errors.

Change-Id: Ie4ee605ad9c6cda58808512a563247175859c71e
2021-04-13 19:05:04 +02:00
Zuul
5bac375f73 Merge "Capture the early logging" 2021-04-08 12:22:32 +00:00