Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ceph/ceph-devstack
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: ceph/ceph-devstack
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: deploy-config
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 9 commits
  • 55 files changed
  • 1 contributor

Commits on Aug 7, 2026

  1. 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).
    zmc committed Aug 7, 2026
    Configuration menu
    Copy the full SHA
    bf3b668 View commit details
    Browse the repository at this point in the history
  2. 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.
    zmc committed Aug 7, 2026
    Configuration menu
    Copy the full SHA
    8d08202 View commit details
    Browse the repository at this point in the history
  3. 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.
    zmc committed Aug 7, 2026
    Configuration menu
    Copy the full SHA
    c338ec0 View commit details
    Browse the repository at this point in the history
  4. 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.
    zmc committed Aug 7, 2026
    Configuration menu
    Copy the full SHA
    40c1387 View commit details
    Browse the repository at this point in the history
  5. 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.
    zmc committed Aug 7, 2026
    Configuration menu
    Copy the full SHA
    6b9417e View commit details
    Browse the repository at this point in the history
  6. 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.
    zmc committed Aug 7, 2026
    Configuration menu
    Copy the full SHA
    3e790cd View commit details
    Browse the repository at this point in the history
  7. 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]>
    zmc committed Aug 7, 2026
    Configuration menu
    Copy the full SHA
    9a4b7dd View commit details
    Browse the repository at this point in the history
  8. 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.
    zmc committed Aug 7, 2026
    Configuration menu
    Copy the full SHA
    9a6745b View commit details
    Browse the repository at this point in the history
  9. 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.
    zmc committed Aug 7, 2026
    Configuration menu
    Copy the full SHA
    4633c0a View commit details
    Browse the repository at this point in the history
Loading