Skip to content

Syncing latest changes from main for ceph-volsync-plugin#9

Open
df-build-team wants to merge 44 commits intorelease-4.22from
sync_ds--main
Open

Syncing latest changes from main for ceph-volsync-plugin#9
df-build-team wants to merge 44 commits intorelease-4.22from
sync_ds--main

Conversation

@df-build-team
Copy link
Copy Markdown

PR containing the latest commits from main branch

Rakshith-R and others added 14 commits February 26, 2026 10:49
Signed-off-by: Rakshith R <rar@redhat.com>
Add e2e test infrastructure with Rook Ceph deployment,
VolSync snapshot controller installation, and test scripts.
Update CI workflow to use Minikube instead of kind and
include operator deployment and cleanup steps.

Signed-off-by: Rakshith R <rar@redhat.com>
…-main

Signed-off-by: DF Build Team <df-build-team@redhat.com>
e2e: add rook ceph and volsync test setup
Syncing latest changes from upstream main for ceph-volsync-plugin
…-main

Signed-off-by: DF Build Team <df-build-team@redhat.com>
Syncing latest changes from upstream main for ceph-volsync-plugin
Merge codespell workflow into lint.yml and add govulncheck job.
All three linting jobs (codespell, golangci-lint, govulncheck) now
run as parallel jobs under a single Lint workflow.
Vulnerability #1: GO-2026-4394
    OpenTelemetry Go SDK Vulnerable to Arbitrary Code Execution via PATH
    Hijacking in go.opentelemetry.io/otel/sdk
  More info: https://pkg.go.dev/vuln/GO-2026-4394
  Module: go.opentelemetry.io/otel/sdk
    Found in: go.opentelemetry.io/otel/sdk@v1.33.0
    Fixed in: go.opentelemetry.io/otel/sdk@v1.40.0

Signed-off-by: Praveen M <m.praveen@ibm.com>
…-main

Signed-off-by: DF Build Team <df-build-team@redhat.com>
Syncing latest changes from upstream main for ceph-volsync-plugin
Signed-off-by: Praveen M <m.praveen@ibm.com>
The manager entrypoint was moved to cmd/manager/main.go but the
Makefile build and run targets still referenced the old cmd/main.go
path.
@df-build-team df-build-team requested a review from a team March 4, 2026 15:06
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Mar 4, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: df-build-team
Once this PR has been reviewed and has the lgtm label, please assign nikhil-ladha for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Rakshith-R and others added 14 commits March 9, 2026 16:20
Signed-off-by: Rakshith R <rar@redhat.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Part 1: Add replication source and destination controllers
Add a tmate session in detached mode before running e2e tests,
allowing SSH access for debugging during test execution.
- Add build/build.env to pin Ceph, Go, rsync, and stunnel
  versions in one place
- Include build.env from Makefile and pass versions as
  --build-arg to mover container builds
- Narrow controller-gen paths to internal/controller
- Add ceph_preview tag to go vet
- Substitute MOVER_IMAGE_PLACEHOLDER in deploy and
  build-installer targets
- Set ignore-not-found to true by default

Signed-off-by: Rakshith R <rar@redhat.com>
- Switch from distroless to quay.io/ceph/ceph:v20 base
  image for go-ceph CGO bindings
- Enable CGO and build with ceph_preview tag
- Install Ceph dev headers in builder stage
- Install rsync, stunnel, and bash in final stage
- Add ldd check to verify all shared libraries resolve

Signed-off-by: Rakshith R <rar@redhat.com>
- Add GOLANG_VERSION build-arg to Containerfile.manager
  so the Go version is controlled from build.env
- Pass --build-arg GOLANG_VERSION to docker-build target

Signed-off-by: Rakshith R <rar@redhat.com>
- Remove hardcoded Namespace resource in favor of
  kustomize-managed namespace
- Add MOVER_IMAGE env var to manager container
- Mount ceph-csi-config ConfigMap for Ceph CSI
  configuration

Signed-off-by: Rakshith R <rar@redhat.com>
- Add CONTAINER_TOOL, IMG, and MOVER_IMG as job-level
  env vars
- Install Ceph dev headers for local go vet/test
- Split build and deploy into separate steps
- Deploy operator into rook-ceph namespace
- Install ginkgo and run e2e tests in parallel
- Run cleanup step only on success

Signed-off-by: Rakshith R <rar@redhat.com>
- Replace utils-based CertManager setup with controller-runtime
  and client-go clients for typed access to VolSync CRDs,
  VolumeSnapshots, and core resources
- Split e2e tests into helpers, manual trigger,
  and schedule trigger files
- Add parameterized tests across nfs, cephfs, and rbd drivers
- Add FailFast config and change namespace to rook-ceph
- Extract debug log collection into debugAfterEach helper
- Add createRS to codespell ignore list
- Promote k8s.io/utils to a direct dependency

E2E now covers most of the scenarios:
- data write + validation
- 3 drivers
- copyMethod: direct and copy
- triger:
  - RepSource: schedule, manual
  - RepDestination: schedule, manual, None

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
e2e: add test suite with controller-runtime client
Rakshith-R and others added 16 commits March 26, 2026 17:28
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Add containerized protoc code generation support:

- build/Containerfile.protoc: multi-stage image with
  protoc, protoc-gen-go, and protoc-gen-go-grpc
- build/build.env: pin protoc tooling versions
- Makefile: proto-image, proto-generate, proto-verify
  targets; add proto-verify to test prerequisites

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Add the gRPC service contract definitions for data
transfer between source and destination worker pods.

SyncService (api/v1/sync.proto) consolidates all
data-path RPCs:
- Write, CompareHashes, Commit, Delete (bidi-streaming)
- Done (unary)

VersionService (version/v1/version.proto):
- GetVersion (unary)

Includes .proto source files and generated Go code
(protoc-gen-go v1.36.11, protoc-gen-go-grpc v1.6.1).

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Document the gRPC service definitions, directory
structure, Go import paths, code generation workflow,
tooling versions, and versioning guidance.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Add shared worker interfaces, gRPC client/server setup, base source/destination
implementations, and TLS tunnel management via stunnel and rsync.

Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Concurrent 6-stage pipeline for block-level data transfer with
semaphore-based flow control, compression, and hash comparison.

Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Ceph configuration, CephFS operations, connection pooling, RBD device
management, volume ID parsing, and error types.

Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
CephFS source and destination workers with block iteration, snapshot
diff reading, commit draining, and hash comparison.

Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
RBD block device source and destination workers with hash comparison.

Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Register CephFS and RBD source/destination workers with tunnel setup.

Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Source mover pods need hostNetwork to access Ceph OSDs/MDS via
userspace libraries (libcephfs, librbd). Replace source-side
stunnel TCP endpoints with Unix domain sockets to avoid port
conflicts on the host network. Add socat for rsync UDS bridge.
Destination pods remain on pod network unchanged.

- Add hostNetwork and DNSClusterFirstWithHostNet for source pods
- Fix AllowPrivilegeEscalation to ptr.To(true)
- Set allowHostPorts to false in SCC (no TCP ports exposed)
- Add socat to mover container image for rsync UDS bridge

Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Rakshith R <rar@redhat.com>
…-main

Signed-off-by: DF Build Team <df-build-team@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants