-
Notifications
You must be signed in to change notification settings - Fork 14
Comparing changes
Open a pull request
base repository: ceph/ceph-devstack
base: main
head repository: ceph/ceph-devstack
compare: deploy-config
- 9 commits
- 55 files changed
- 1 contributor
Commits on Aug 7, 2026
-
Add resource infrastructure: StackResource protocol, utilities, and C…
…ontainer improvements Introduce the foundational abstractions that configurable stacks depend on: - StackResource protocol defining the interface every managed service must implement. - PodmanResource gains data_dir, active_services, config_key, and config_bool for per-stack scoping. - Container accepts the new PodmanResource kwargs, adds should_build / build_dir properties, and switches build gating from "repo" to "build_image". - Subprocess gains collect_output() and log_failure() helpers. - Host.cmd/run/arun accept str|Path for cwd; ismount() added. - Small utility modules: distros (package type detection), resources/utils (host_arch, normalize_distro, build_image_tags), and build_config (CephBuildConfigMixin).
Configuration menu - View commit details
-
Copy full SHA for bf3b668 - Browse repository at this point
Copy the full SHA bf3b668View commit details -
Add block pool and block device management
BlockPool manages a shared parent block device with atomic lock-file coordination: enroll/unenroll, partition allocation/release, and state persistence. BlockDeviceProvisioner wraps BlockPool to create loop-backed or partition-backed block devices for containers. LoopDeviceMixin provides the mixin interface that container classes (TestNode, CephNode) use to acquire devices at create time. A class-level allocation set in LoopDeviceMixin prevents concurrent callers from racing on the same device numbers when multiple containers are created in parallel via asyncio.gather.
Configuration menu - View commit details
-
Copy full SHA for 8d08202 - Browse repository at this point
Copy the full SHA 8d08202View commit details -
Add CephNode container for single-node Ceph clusters
CephNode runs a minimal Ceph cluster inside one rootless container. The entrypoint script bootstraps a mon/mgr/osd cluster from scratch using loop-backed block devices and cephadm, with optional dashboard and RGW support. Shared test fixtures for builder and node configs are added to the ceph conftest.
Configuration menu - View commit details
-
Copy full SHA for c338ec0 - Browse repository at this point
Copy the full SHA c338ec0View commit details -
Add CephBuilder for compiling Ceph and building container images
CephBuilder drives build-with-container.py and cpatch to compile Ceph inside a container, with optional sccache and npm caching. ContainerRepo serves the resulting RPMs over HTTP for container/build.sh image builds. Both support binary-patch and full-build image strategies. In binary-patch mode, the builder auto-detects the target image's Python version and selects a matching build distro so compiled artifacts are ABI-compatible.
Configuration menu - View commit details
-
Copy full SHA for 40c1387 - Browse repository at this point
Copy the full SHA 40c1387View commit details -
Configurable stacks: multi-stack CLI, config, and orchestration
Make ceph-devstack's deployment configurable via named stacks defined in config.toml. The existing teuthology services become the "teuthology" stack; new "ceph" and "build-ceph" stacks deploy CephNode and CephBuilder respectively. - CephDevStack constructor accepts stack_name and resolves services, secrets, data_dir, and dependency stacks from config. - CLI gains --stack flag, block-pool subcommand, and structured action dispatch replacing the old COMMAND_HANDLERS dict. - TestNode uses LoopDeviceMixin; PackageRepo and Registry containers serve locally-built artifacts to testnodes. - Teuthology container generates a merged .teuthology.yaml when local artifact services are active. - Stack-level depends so prerequisite stacks run automatically. - Pre-allocate loop device numbers sequentially in create() so concurrent asyncio.gather doesn't race. - Block pool requirement checks, CI workflow, integration tests, and README documentation.
Configuration menu - View commit details
-
Copy full SHA for 6b9417e - Browse repository at this point
Copy the full SHA 6b9417eView commit details -
Allow teuthology to use locally-built artifacts
Push locally-built container images to the local registry after all containers are running, auto-detecting the builder distro so image tags match. Point teuthology at the locally-built ceph repo by mounting it and passing --suite-dir, --sha1, --suite-sha1, and --validate-sha1 false. Gate the local-artifact config merge on a new local_artifacts flag (default false) to avoid regressing the default teuthology path. Document the full local-artifacts workflow in README.
Configuration menu - View commit details
-
Copy full SHA for 3e790cd - Browse repository at this point
Copy the full SHA 3e790cdView commit details -
TestNode: Mount /run/udev from the host
As read-only, for cephadm. This required a few SELinux updates. Signed-off-by: Zack Cerza <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 9a4b7dd - Browse repository at this point
Copy the full SHA 9a4b7ddView commit details -
Skip teuthology container restart in watch mode
Teuthology is expected to exit when its run completes; restarting it defeats the purpose of watch mode's wait-for-teuthology loop.
Configuration menu - View commit details
-
Copy full SHA for 9a6745b - Browse repository at this point
Copy the full SHA 9a6745bView commit details -
Add HTTP API for on-demand testnode provisioning
Introduce a lightweight aiohttp-based API service (DevStackAPI) that allows teuthology to dynamically create and destroy testnode containers. This enables on-demand provisioning rather than requiring all testnodes to be pre-created at stack start time.
Configuration menu - View commit details
-
Copy full SHA for 4633c0a - Browse repository at this point
Copy the full SHA 4633c0aView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main...deploy-config