David Galloway [Wed, 4 Feb 2026 14:29:48 +0000 (09:29 -0500)]
selinux: allowlist bpf podman denials
Rocky Linux 10 logs SELinux AVCs for systemd BPF operations during container startup due to incomplete SELinux policy coverage. These AVCs occur in permissive mode, are reproducible without Ceph, and do not indicate functional failure. Tests should ignore this specific AVC class while continuing to fail on enforced denials.
Fixes: https://tracker.ceph.com/issues/74553 Signed-off-by: David Galloway <david.galloway@ibm.com>
David Galloway [Thu, 9 Jul 2026 19:56:58 +0000 (15:56 -0400)]
task/kernel: fix distro kernel boot on BLS legacy-BIOS nodes
Rocky 10 smithi jobs installed the new distro kernel but rebooted back
into the old one; the same code worked on UEFI testnodes. Three fixes:
- The grubby detection compared the output of `command -v grubby &&
echo yes` against 'yes', but command -v prints the binary path first,
so grubby was never used even when installed. Test for non-empty
output instead.
- Run grub2-mkconfig before grub2-set-default/grubby, not after. EL's
patched grub2-mkconfig and grub.d scripts can rewrite grubenv, which
clobbered the default entry we had just set. This restores the
ordering that previously worked (8ce0b025).
- Force GRUB_DEFAULT=saved in /etc/default/grub on RPM distros before
regenerating grub.cfg. grubby/grub2-set-default record the desired
entry as saved_entry in grubenv, but the generated config only
consults saved_entry when GRUB_DEFAULT=saved. On images without it
(e.g. Rocky 10 legacy-BIOS smithi images, whose BIOS bootloader is
hand-installed because Rocky 10 ships no grub2-pc) grub fell back to
menu position and booted the old kernel. Selecting by exact BLS
entry id makes the boot deterministic regardless of how the grub
build sorts entries.
Note: the lab images' /etc/default/grub can lack both a GRUB_DEFAULT
line and a trailing newline, so the setting is applied by deleting any
existing GRUB_DEFAULT line and appending with a leading newline; a
plain echo >> would glue onto the last line and break grub2-mkconfig
('Invalid output terminal').
Signed-off-by: David Galloway <david.galloway@ibm.com>
Vaibhav Mahajan [Mon, 22 Jun 2026 13:19:50 +0000 (18:49 +0530)]
packaging: use major version for Pulp `distro_version` label
`PulpProject._search()` was sending the full `os_version` in the `distro_version`
Pulp label, while repo paths and Shaman use the major version. Derive
`distro_version` from `_get_distro()` so RPM distros search by major release
and deb distros still use codename.
Zack Cerza [Thu, 18 Jun 2026 00:30:23 +0000 (18:30 -0600)]
Move tests to tests/
This has more or less become the standard. It is also the best way for us to
avoid shipping tests in the wheel, because of setuptools' behavior when using
pyproject.toml. For more information, see:
https://github.com/pypa/setuptools/issues/3260
Zack Cerza [Mon, 8 Jun 2026 19:54:34 +0000 (13:54 -0600)]
pyproject.toml: Exclude docs from wheel
This fixes the following warning:
_Warning: Package 'docs.docker-compose.testnode' is absent from the `packages` configuration.
!!
********************************************************************************
############################
# Package would be ignored #
############################
Python recognizes 'docs.docker-compose.testnode' as an importable package[^1],
but it is absent from setuptools' `packages` configuration.
This leads to an ambiguous overall configuration. If you want to distribute this
package, please make sure that 'docs.docker-compose.testnode' is explicitly added
to the `packages` configuration field.
Alternatively, you can also rely on setuptools' discovery methods
(for example by using `find_namespace_packages(...)`/`find_namespace:`
instead of `find_packages(...)`/`find:`).
You can read more about "package discovery" on setuptools documentation page:
If you don't want 'docs.docker-compose.testnode' to be distributed and are
already explicitly excluding 'docs.docker-compose.testnode' via
`find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
you can try to use `exclude_package_data`, or `include-package-data=False` in
combination with a more fine grained `package-data` configuration.
You can read more about "package data files" on setuptools documentation page:
[^1]: For Python, any directory (with suitable naming) can be imported,
even if it does not contain any `.py` files.
On the other hand, currently there is no concept of package data
directory, all directories are treated like packages.
********************************************************************************
dependabot[bot] [Wed, 17 Jun 2026 01:01:37 +0000 (01:01 +0000)]
build(deps): bump cryptography from 48.0.0 to 48.0.1
Bumps [cryptography](https://github.com/pyca/cryptography) from 48.0.0 to 48.0.1.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/48.0.0...48.0.1)
Vaibhav Mahajan [Wed, 25 Mar 2026 14:18:44 +0000 (19:48 +0530)]
feature: add `PulpProject` class for Pulp-based package repository support
Add a `PulpProject` subclass of `GitbuilderProject` so teuthology can use
Pulp-hosted package repos when `config.package_source` is `pulp`, alongside
the existing `Gitbuilder` and `Shaman` artifact backends.
teuthology/repo_utils: Optimize repository cloning via bare repositories and worktrees
Repeatedly performing full clones of the QA suite and other repositories
for different commits or branches slows down testing iterations and
consumes excess disk space and I/O.
This commit introduces an optimization that initializes a single bare
clone of a target repository. It subsequently utilizes git worktree to
provision lightweight, isolated workspaces for requested commits. This
reduces redundant network fetches and significantly accelerates
repository checkout operations.
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
Kyr Shatskyy [Tue, 12 May 2026 20:02:19 +0000 (22:02 +0200)]
dispatcher: save default job config to a separate file
In order to still make it possible to reuse original config
from the queue, don't be confused by 'orig.config.yaml',
which is used in teuthology.run after joining arguments.
So we save it to 'default.config.yaml', and later can
be used like:
For correct overrides which can be provided in extra yaml arguments
to teuthology-suites the joined yaml of job_config from suite directory
must go first in order.