6fdb13d6d40d6f3b786dba8204579dca1d434341
Commit Graph

1283 Commits

Author SHA1 Message Date
Zuul
f0888131c1 Merge "Fix skip block devices for RAID arrays" 2025年09月30日 09:17:30 +00:00
kubajj
d43913453b Fix skip block devices for RAID arrays
The original implementation of the skip block devices for RAID arrays:
https://review.opendev.org/c/openstack/ironic-python-agent/+/852999
introduced a couple bugs which were uncaught:
1. Key error when a holder disk contains just logical disks on the skip list.
2. RAID arrays on skip list throw "Failed to remove partitions" because they are not removed from the list of remaining RAID devices when running wipefs
3. list_block_devices_check_skip_list does not match volume names to RAID arrays
4. MD superblock wrongly checked (detail instead of examine)
5. Partition tables are being created when a partition is on a skip list
6. EFI partition handling in a scenario when a partition on the same physical disk is not deleted
Closes-bug: #2080871
Signed-off-by: Jakub Jelinek <jakub.jelinek@cern.ch>
Signed-off-by: Morten Stephansen <morten.kaastrup.stephansen@cern.ch>
Change-Id: I59b65c6b69af2385ed8a5dcd427e4d9c91f90abe
2025年09月26日 12:17:55 +00:00
Jakub Jelinek
f14c187a64 Fix erasable devices check
There is a conditional which is supposed to check whether there are
any erasable devices. However, in the current state, the conditional
is wrong as the call is missing the node as a parameter.
Signed-off-by: Jakub Jelinek <jakub.jelinek@cern.ch>
Signed-off-by: Morten Stephansen <morten.kaastrup.stephansen@cern.ch>
Change-Id: I38768b9ba3dc1bb5160e5841865450a8d7df5466
2025年09月17日 14:22:52 +00:00
Zuul
ffafce66ca Merge "Support transport type as a root device hint" 2025年09月03日 22:24:16 +00:00
Morten Stephansen
41a00b2465 Removed redundant side-effects
In test_create_configuration_with_different_disks_skip_list there are redundant side-effects which are never used.
Change-Id: I7b6acbd6583831ba82d6a68ce0d8410ee0bd18a2
Signed-off-by: Morten Stephansen <morten.kaastrup.stephansen@cern.ch>
2025年09月02日 10:00:21 +00:00
Zuul
0fa82ee2ee Merge "Fix for motherboards where efibootmgr returns UTF-8." 2025年08月13日 16:45:19 +00:00
Morten Stephansen
f302c1c73e Fix for motherboards where efibootmgr returns UTF-8.
Some motherboards return UTF-8 for the efibootmgr. This results in IPA not being able to remove duplicate records, etc.
This change implements a check for UTF-16 compatibility and tries to decode efibootmgr output as UTF-8 otherwise.
Closes-bug: #2072336
Co-Authored-By: Jakub Jelinek <jakub.jelinek@cern.ch>
Change-Id: I35432773826d13edb1dc9dd25f99bb0907a8fa0d
Signed-off-by: Morten Stephansen <morten.kaastrup.stephansen@cern.ch>
Signed-off-by: Jakub Jelinek <jakub.jelinek@cern.ch>
2025年08月07日 06:57:42 +00:00
Zuul
f46f56decc Merge "Hard stop on image download duration threshold" 2025年07月31日 20:03:08 +00:00
Zuul
07f8c07674 Merge "Hint at sector sizes when reporting an invalid written image" 2025年07月25日 07:10:23 +00:00
Kaifeng Wang
2e4172a024 Support transport type as a root device hint
Adds a tran field to the block device and allow to use it
as a root device hint.
Change-Id: I3fc83730a6100abb2b2aa98fc894713ecbbe3043
Closes-Bug: #2100951
Signed-off-by: Kaifeng Wang <kaifeng.w@gmail.com>
2025年07月24日 16:36:19 +08:00
Zuul
5a96e0a937 Merge "Vendor own option for tls cert file and key file" 2025年07月23日 19:02:17 +00:00
Zuul
c2c72eef97 Merge "Provide usable __repr__ for serializable objects" 2025年07月22日 01:26:55 +00:00
Afonne-CID
e1a31eb97a Hard stop on image download duration threshold
Adds a wall timeout `image_download_max_timeout` to enforce an upper
bound on total download duration.
While the per-chunk timeout protects against stalled reads, downloads
that trickle in just under the timeout threshold (e.g., due to heavy
TCP retransmits) can hang for longer than intended.
Now, if the total allowed time is exceeded, the download is aborted with
a non-retryable `ImageDownloadTimeoutError` regardless of per-chunk
retry or connection success.
A value of 0 (the default) disables this feature.
Closes-Bug: #2115995
Change-Id: I3b56d21abae0488853bfed14072ba21116d47baf
Signed-off-by: Afonne-CID <afonnepaulc@gmail.com>
2025年07月21日 22:56:05 +01:00
Dmitry Tantsur
0ad2685ce4 Fix wrong result of filter_device in the base interface
Returning None means "exclude any device". It still works if the only
hardware manager is GenericHardwareManager, but enabling any more
without overriding filter_device causes all devices to get filtered.
Change-Id: I25eb028baa1b9182caee07a0b935e9fa107999a8
Closes-Bug: #2117234
Signed-off-by: Dmitry Tantsur <dtantsur@protonmail.com>
2025年07月21日 13:49:03 +02:00
Zuul
c3ef9a563d Merge "Fix software RAID creation on different physical devices" 2025年07月15日 18:29:00 +00:00
Zuul
a7d8afde40 Merge "Trivial: avoid root logger in modules" 2025年07月13日 17:23:29 +00:00
Zuul
4b0a3c162d Merge "Log efibootmgr output as part of the system logs" 2025年07月13日 02:31:43 +00:00
kubajj
46af01c82f Log efibootmgr output as part of the system logs
Create a file efibootmgr with the verbose output of the efibootmgr command
when collecting the system logs. This can be used for debugging of boot order.
Change-Id: Ic957024d19bb01a45a3014dc2a5e4492d087e893
Signed-off-by: Jakub Jelinek <vilouskubajj@gmail.com>
2025年07月10日 09:02:36 +00:00
Dmitry Tantsur
9e9334fa00 Hint at sector sizes when reporting an invalid written image
Change-Id: Iee7f22e9958b68f263d267c434678478b9a38648
Signed-off-by: Dmitry Tantsur <dtantsur@protonmail.com>
2025年07月09日 15:59:03 +02:00
Dmitry Tantsur
1840e987d5 Trivial: avoid root logger in modules
Change-Id: I1eb8c9637c38496b5d4dd6493be43f414f35680c
Signed-off-by: Dmitry Tantsur <dtantsur@protonmail.com>
2025年07月07日 15:16:35 +02:00
Takashi Kajinami
a2739f7e56 Vendor own option for tls cert file and key file
... instead of using oslo.service. Current usage of oslo.service is
too limited to add the dependency, because
 - oslo.service registers multiple options but only two of these are
 used
 - the wrap implementation from oslo.service is not actually used
Change-Id: I4e8f18951d73e329a54cf6546344c5704fe4aa90
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025年07月05日 22:07:34 +09:00
Dmitry Tantsur
9db3cd1e4d Graceful way for hardware managers to ignore certain devices
My use case for this feature is to exclude network devices that use
the cdc_ether driver. These USB network interfaces often cause all sorts
of issues. For example, some models have the same hardcoded MAC address,
which breaks inspection.
Currently, to exclude a certain device, a hardware manager must override
the entire listing function (in my case, list_interfaces). Not only is
it tedious, but it also requires constantly updating the hardware
managers to match the implementation in GenericHardware. Realistically,
it will cause hardware manager authors to inherit GenericHardware, which
is the opposite of how hardware managers should be written.
Note that the node-level skip list only affects root device selection
and cleaning for block devices. This feature affects everything that
uses list_block_devices and is applied before the node-level skip list.
This change adds a new hardware manager call filter_device. For each
network, block or USB device, it allows a hardware manager to do either
of four things:
1. Delegate the decision to a lower level hardware manager by raising
 IncompatibleHardwareMethodError
2. Remove the device by returning None
3. Change the device by returning a modified instance
4. Return the device unchanged to keep it in the listing.
Note that I'm removing debug logging when IncompatibleHardwareMethodError
is raised. Not only the log message is incorrect (the error does not
necessarily mean that the method is not implemented at all), it already
noticeable space in the logs, and with this change will become very
noisy.
Change-Id: I5437343af6c6157882bcf0600dd89bd20478c948
Signed-off-by: Dmitry Tantsur <dtantsur@protonmail.com>
2025年07月04日 16:31:02 +02:00
Dmitry Tantsur
9426df9ab3 Split hardware manager initialize out of evaluate_hardware_support
The current code in GenericHardware.evaluate_hardware_support ends up
using hardware manager calls, which then use partly initialized hardware
manager list and can even cause a recursion.
This change introduces a new optional call initialize() which is
guaranteed to run:
1) After all hardware managers have been evaluated
2) After the hardware manager cache is populated
3) In the order of the support level of hardware managers
Change-Id: I068d3d73483c161062aa3b48f3154a2d99941382
Signed-off-by: Dmitry Tantsur <dtantsur@protonmail.com>
2025年07月04日 16:30:40 +02:00
Dmitry Tantsur
ddeed6fa9e Provide usable __repr__ for serializable objects
These objects are frequently logged or compared in unit tests.
It's very helpful to be able to inspect their content.
Change-Id: Ib725dcd5f54f4492205f95974d887b8b42c74039
2025年06月26日 15:58:01 +02:00
Dmitry Tantsur
521811cbcc Fix software RAID creation on different physical devices
When creating multiple software RAID logical disks that use different
sets of physical devices, the partition indices were incorrectly shared
across all devices. This caused the second RAID array creation to fail
because it tried to use partition indices that didn't exist on those
specific devices.
This change fixes the issue by tracking partition indices separately for
each physical device, ensuring that each device's partitions are numbered
correctly starting from their first available index.
Closes-Bug: #2115211
Change-Id: I440db4654f3d1d54274d1eee8c4b21c2b0a18d22
Signed-off-by: Mohammed Naser <mnaser@vexxhost.com>
2025年06月25日 16:15:14 +00:00
Zuul
b64a41372d Merge "trivial: Fix missing extra space in logging" 2025年05月16日 17:34:11 +00:00
Zuul
b51cc75ff3 Merge "netutils: Use ethtool ioctl to get permanent mac address" 2025年05月07日 21:53:20 +00:00
Nicolas Belouin
48422a532f netutils: Use ethtool ioctl to get permanent mac address
Fetching the permanent MAC address of the interface instead of the
default one allows to get the right one in case it got changed during
setup (likely with a bonding setup).
In order to fetch the permanent MAC address of a given interface, one
can either use Netlink (either rtnetlink or ethtool), or use ethtool
ioctl.
The use of ioctl feels simpler and requires no additional dependency.
The implementation falls back to older behavior should an error occur.
Closes-Bug: #2103450
Change-Id: I54151990e396ddcf775128ca24d3db08e45c256d
Signed-off-by: Nicolas Belouin <nicolas.belouin@suse.com>
2025年04月25日 12:06:29 +02:00
cid
c03021fee2 Remove eventlet from Ironic Python Agent
This change removes several usages of eventlet from IPA:
- Upgrades all requirements on oslo library versions to new ones that
 support non-eventlet use.
- Removes use of the eventlet wsgi server (via oslo_service.wsgi) and
 replaces it with the cheroot wsgi server.
- Removes explicit patching of python modules with eventlet
Note that due to some oslo libraries still using ``eventlet`` to detect
and workaround it's use. This means that it is still installed in
environments alongside IPA, even if it's not used or patched into any
modules.
Depends-On: https://review.opendev.org/c/openstack/requirements/+/947727
Change-Id: I9accab2d5e9529a88ef5d3db85e76901f14114eb
2025年04月23日 11:01:10 -07:00
Zuul
b20ed83d78 Merge "Remove unnecessary +x mode" 2025年04月16日 10:31:06 +00:00
Takashi Kajinami
9b03ca7d52 Remove unnecessary +x mode
These files are not actually executable.
Change-Id: Id4208a91c005b8199d62320882c4f14dcd7f7761
2025年04月16日 12:07:58 +09:00
Julia Kreger
f359c81c28 trivial: Fix missing extra space in logging
Change-Id: Id85563015b3ea9e2802baa7b8ab1ca1d858568d5
2025年04月15日 06:57:35 -07:00
Zuul
53349cc7cf Merge "Remove agent_token_required upgrade knob" 2025年04月08日 20:38:18 +00:00
Zuul
88b6e914ad Merge "Run UT of metricis_lib" 2025年04月08日 20:02:36 +00:00
satoshi-sh
7e6bc5cb85 Implement manual cleaning for ContainerHardwareManager
- Implemented manual cleaning
- Refactored the code
Change-Id: I301aaf9dfd6aff90f505148b65e75033f5043553
2025年04月07日 11:14:10 +00:00
satoshi-sh
c3e9266f92 Ironic Config Intergration for IPA
Update container-based cleaning hardware manager to use ironic
conductor config.
Note:
- Moved conf variables from __init__ and evaluate_hardware_support
 as the config overwritten after those process
- Utilized getattr instead of making methods beforehand. The methods
 created don't stick for a new instance.
Partial-Bug: #2100556
Change-Id: I53d5a4f112fbed455d5574840611ef6ea2db3eae
2025年04月06日 19:23:36 +00:00
satoshi-sh
7efe3dfc04 Fix test_timeout on Python3.13
- Python 3.13 uses time.time_ns for logging
https://github.com/python/cpython/blob/main/Lib/logging/__init__.py#L303
Change-Id: I3de44cc0fda662f3d5b1c6ea8add973cf2ed3bd9
2025年04月03日 18:06:46 +00:00
luocanhui
228033e9b6 Run UT of metricis_lib
Change-Id: I54dc23d8e8cec12a4685a82c4807ddd6a2267533
2025年04月03日 16:31:51 +08:00
Zuul
c4f62beedb Merge "Remove eventlet greendns patching" 2025年03月31日 17:38:34 +00:00
Jay Faulkner
5d3192e93a Remove eventlet greendns patching
Eventlet patches two things in socket, effectively:
- create_connection
- various greendns things
By adding this environment variable, we're going to disable a large portion of the greened module code in IPA, which will be a boost to our migration off.
Change-Id: I1f94238c8d83f9e7cb0f7e096172ffb7c20c862b
2025年03月26日 22:11:09 +00:00
satoshi-sh
a3a2b83594 Add ContainerHardwareManager
Implement container-based cleaning process
Partial-Bug: #2100556
Change-Id: I39b92462d1454df888fc413e0aac439b9df199f7
2025年03月26日 19:21:11 +00:00
Zuul
1e73cba5cb Merge "Remove pre-victoria cycle agent token transition upgrade support" 2025年03月05日 17:05:19 +00:00
Zuul
03afbfe4bc Merge "Fix the way qemu-img is called with prlimits" 2025年03月05日 12:31:50 +00:00
Zuul
20e75c2480 Merge "Missing __init__.py file" 2025年03月05日 07:33:48 +00:00
Zuul
0067239074 Merge "Lockout agent command results if a token is received" 2025年03月05日 07:33:46 +00:00
Thomas Goirand
14009b994f Missing __init__.py file
Change-Id: I916fe8187fb9d8513852b620df133309fbc92af1
2025年03月03日 14:11:04 +01:00
Dmitry Tantsur
fd8032b360 Fix the way qemu-img is called with prlimits
Using prlimits is incompatible with passing arguments as a list:
oslo.concurrency ends up executing something like:
/opt/ironic-python-agent/bin/python3 -m oslo_concurrency.prlimit \
 --as=2147483648 -- ['env', 'LC_ALL=C', 'LANG=C', 'qemu-img', 'info', \
 '/tmp/cirros-0.6.2-x86_64-disk.img', '--output=json']
Which obviously fails. I don't understand how our CI has worked so far,
but the Metal3 BMO suite fails on this.
Change-Id: I46dbcb0f73bcbe09bb89b5c7195259570412698e
2025年02月25日 14:26:10 +01:00
Zuul
badcd94f9d Merge "oci: permit an 'unknown' but valid image" 2025年02月19日 23:36:53 +00:00
Zuul
173c754c61 Merge "oci: Enable embedded authentication passing" 2025年02月18日 19:22:06 +00:00
Julia Kreger
94fde4b3b4 Remove agent_token_required upgrade knob
To help ease upgrades to Victoria, IPA had a knob added
to enable operators to express if agent tokens were required
in their deployment. Since then, the feature is required, however
we left the logic enabling the fun upgrade case handling.
At this point, this knob serves no further use, and can be removed.
Change-Id: I202f06e1b6598a802c9853fb99201c55e7a40cb1
2025年02月18日 14:36:18 +00:00