David Galloway [Fri, 27 Mar 2026 15:32:08 +0000 (11:32 -0400)]
mgr/rook: fix prometheus federation selector to avoid unencoded '!'
The Python requests library leaves '!' unencoded in URLs, causing
prometheus to return a parse error instead of metrics when using the
!= operator in the federation match selector. Use =~ instead.
Signed-off-by: David Galloway <david.galloway@ibm.com>
David Galloway [Fri, 27 Mar 2026 13:39:01 +0000 (09:39 -0400)]
mgr/rook: copy updated dashboard cli and plugin into rook e2e test image
The base image's dashboard/cli.py imports Command directly from
mgr_module, which is incompatible with the new CLICommandBase API.
Copy the source tree's dashboard/cli.py and plugins/plugin.py into
the test image so that dashboard uses DBCommand, which is consistent
with the updated mgr_module.
Signed-off-by: David Galloway <david.galloway@ibm.com>
David Galloway [Fri, 27 Mar 2026 01:17:20 +0000 (21:17 -0400)]
mgr/rook: bump prometheus-operator to v0.90.1 and use server-side apply
v0.40.0 was too old and its pod failed to become ready in time.
v0.90.1 CRDs exceed kubectl's 262144-byte annotation limit for
client-side apply, so switch to --server-side.
Signed-off-by: David Galloway <david.galloway@ibm.com>
David Galloway [Fri, 27 Mar 2026 00:36:59 +0000 (20:36 -0400)]
mgr/mgr_module: add backward-compatible Command shim for CLICommandBase
The dashboard module and others instantiate Command with a handler
keyword argument, which CLICommandBase does not support. Add a Command
subclass that accepts the old constructor signature so these modules
continue to load correctly.
Signed-off-by: David Galloway <david.galloway@ibm.com>
David Galloway [Thu, 26 Mar 2026 21:42:28 +0000 (17:42 -0400)]
mgr/mgr_module: add CLICommand, CLIReadCommand, CLIWriteCommand aliases for CLICommandBase
The mgr daemon binary and built-in modules import CLICommand,
CLIReadCommand, and CLIWriteCommand by name. Adding aliases so existing
code continues to work while the new CLICommandBase name is introduced.
Signed-off-by: David Galloway <david.galloway@ibm.com>
David Galloway [Thu, 26 Mar 2026 20:48:34 +0000 (16:48 -0400)]
mgr/rook: copy all mgr Python modules into rook e2e test image
The base image (quay.io/ceph/daemon-base:latest-main) may lag behind
the source tree for any number of mgr Python modules. Rather than
copying files individually as mismatches are discovered, copy all
*.py files from src/pybind/mgr/ into /usr/share/ceph/mgr/ so the
test image always reflects the current state of the codebase.
Signed-off-by: David Galloway <david.galloway@ibm.com>
David Galloway [Thu, 26 Mar 2026 21:51:26 +0000 (17:51 -0400)]
mgr/mgr_module.py: add COMMANDS class attribute to CLICommandBase
CLICommandBase was missing a COMMANDS dict, causing an AttributeError
when the mgr daemon tried to load the rook module. Subtypes created via
make_registry_subtype get their own COMMANDS dict, but the base class
needs one too as a fallback.
Signed-off-by: David Galloway <david.galloway@ibm.com>
David Galloway [Thu, 26 Mar 2026 21:29:23 +0000 (17:29 -0400)]
mgr/rook: handle inactive libvirt default network in recreate_default_network
net-destroy fails if the network exists but is already inactive, causing
the script to exit before net-define is attempted. Check for this case
and fall through to net-undefine directly so the network can be cleanly
recreated regardless of its initial state.
Signed-off-by: David Galloway <david.galloway@ibm.com>
David Galloway [Thu, 26 Mar 2026 21:01:31 +0000 (17:01 -0400)]
mgr/rook: pin DOCKER_API_VERSION to minikube's daemon version
The host Docker client may be newer than the Docker daemon running
inside minikube, causing builds to fail with "client version X is too
new". Export DOCKER_API_VERSION set to the server's actual API version
after sourcing the minikube docker-env to prevent the mismatch.
Signed-off-by: David Galloway <david.galloway@ibm.com>
David Galloway [Thu, 26 Mar 2026 13:46:09 +0000 (09:46 -0400)]
mgr/rook: Use sg to run minikube in bootstrap-rook-cluster
`newgrp libvirt` doesn't work as expected in a non-interactive script. It spawns a subshell, that subshell exits, and execution continues in the original shell without the group applied.
Signed-off-by: David Galloway <david.galloway@ibm.com>
Adam Kupczyk [Thu, 25 Sep 2025 07:03:12 +0000 (03:03 -0400)]
extblkdev/fcm: Refuse to operate on multimedia lvm block devices
BlueStore is selecting were data is put to the device.
Merging 2 FCM devices together means that BlueStore will see free space
on one of the devices, but not know the other is full and asking to put
data there. It will cause -ENOSPC while free space is reported.
John Mulligan [Mon, 10 Nov 2025 21:15:29 +0000 (16:15 -0500)]
cephadm: add pid file directory option to cfg watch sidecar
This will enable the config watch sidecar to signal processes
with a SIGHUP to tell them to reload configuration when config
watch has detected a configuration change. Currently only used
by keybridge.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
John Mulligan [Tue, 22 Jul 2025 23:24:11 +0000 (19:24 -0400)]
mgr/smb: add new cephfs parameter for getting fscrypt keys
Add a new field to the cephfs configuration section for shares. This
section selects the keybridge scope and key name to use when acquiring
the key to use for fscrypt.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
John Mulligan [Tue, 22 Jul 2025 23:22:15 +0000 (19:22 -0400)]
mgr/smb: add keybridge configuration to cluster resource
Add keybridge service configuration classes and parameters to the
resources module. This supports enabling the keybridge, setting up
scopes for the keybridge and it's access control.
A helper class is added that parses and helps validate the scope names.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
John Mulligan [Wed, 16 Jul 2025 21:55:44 +0000 (17:55 -0400)]
mgr/smb: add enums that will be used for configuring keybridge
Add a pair of enum types that will be used for configuring the
keybridge. The scope type identifies what kind of scope is being
used. The peer policy can be used to allow a dev or other user
more access to the keybridge api for development purposes.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
John Mulligan [Fri, 18 Jul 2025 14:23:31 +0000 (10:23 -0400)]
mgr/smb: fix a resource error unpacking str instead of list
Add special handling for the case where a string is passed instead of a
list. Without this fix a string will be converted into a list of single
letter items, something pretty much no one ever wants. Raise an
exception instead.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
John Mulligan [Fri, 18 Jul 2025 16:20:17 +0000 (12:20 -0400)]
cephadm: add keybridge sidecar to smb daemon module
The keybridge uses the sambacc configuration but can also be passed
CLI options. Since cephadm writes the cert files, cephadm must also
pass the file names to use to the container args.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
John Mulligan [Wed, 16 Jul 2025 21:08:49 +0000 (17:08 -0400)]
python-common/deployment: add keybridge feature to smb service spec
The keybridge sidecar is enabled by the keybridge feature flag.
This sidecar will be used to help fetch keys over various protocols
for the ceph module to use to set up fs encryption.
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Adam Kupczyk [Thu, 22 Jan 2026 15:23:56 +0000 (15:23 +0000)]
os/bluestore: Add config bluestore_use_ebd
When EBD(extblkdev) plugin is in use usually it needs to present all the time.
For bluestore deployed with EBD plugin it makes it an error if bluestore tries
to mount and EBD plugin is not present.
Preload of extblkdev plugins was misplaced.
Moved loading plugins into BlueStore.
This way both OSD and tools can load plugins.
Plugins are now loaded only:
- before mkfs
- when extblkdev plugin is signalled in label meta
tests: LibRadosIoEC allows for overwrites / unalligned writes on crimson
1. crimson-osd does support solely the FastEC flavor of EC pools;
SlowEC isn't now and won't be implemented.
2. FastEC imposes the EC overwrites support.
3. When run against crimson's EC implementation, the tests shall
not enforce e.g. ENOTSUPP on overwrite.