Commit Graph
490 Commits
Author SHA1 Message Date
Joshua Hoblitt 8839f0775d ci: reduce CephUpgradeSuite flakes
The CephUpgradeSuite workflow failed ~31% of PR runs vs the ~19%
broken-PR baseline of the other integration suites. Classifying the
failing step of every failed run from the last ~400 PR runs and the
logs of every failure on non-dependabot branches shows the excess
comes from a handful of too-tight waits, unretried network fetches,
and environment races rather than from the upgrade logic itself:

- The biggest class (21 of 44 genuine test-phase failure runs):
  "giving up waiting for deployment(s) with label
  app=rook-ceph-{rgw,osd},ceph-version!=..." during the
  Squid->Tentacle upgrade. The operator updates daemons sequentially
  (mons, mgr, osds with PG health gates between them, mds, rgw), so
  each later daemon's fixed 275s wait also absorbs the time spent on
  every daemon before it; rgw, last in the sequence, failed most
  often. The mon wait was already extended for slow image pulls in
  98bd03a42; extend the same retry count to all the daemon waits.

- ~7 runs: "snapshot controller is not ready" in the Helm upgrade
  path. WaitForSnapshotController(30) allows only 150s, and the logs
  show the deployment still converging (readyreplicas 1 < replicas 2)
  on the final poll. Raise to 90 retries.

- InstallOrUpgradeHelmRepoChart ran helm with no retry; an observed
  failure fetched the ceph-csi-drivers chart tarball from GitHub
  release assets and got a 504. Retry up to 5 times, as
  InstallLocalHelmChart already does.

- Raise the go test timeouts (2400s->3600s rook, 1800s->2700s helm).
  Failed runs ended in "panic: test timed out" during teardown, which
  aborts cleanup and log collection; the longer daemon waits above
  also need the headroom.

- The "setup cluster resources" composite action (shared by all
  suites) accounted for half of all failed jobs. The one steady class
  there (8 distinct runs across 7 different days): minikube exits with
  K8S_FAIL_CONNECT (code 40) when the requested kubernetes version is
  missing from its bundled version list, because it then validates the
  version with an anonymous GitHub API request (GITHUB_TOKEN is not
  honored on that code path), and anonymous requests from shared
  runner IPs are regularly rate-limited. minikube 1.38.x predates
  v1.35.5, so only the v1.35.5 jobs hit this class. Pass --force to
  minikube start to skip that check: the kubernetes versions used in
  CI are pinned constants already validated by the PRs that bump
  them, and an invalid version would still fail fast at the kubeadm
  download. Also seen twice: dpkg failing on a corrupt cri-dockerd .deb
  because curl ran without --fail and saved an HTTP error page as the
  package; add --fail and retries.

- On runners without the /mnt resource disk, the fallback OSD disk is
  an iSCSI (LIO) device and use_local_disk_for_integration_test
  returned early on those runners, skipping the udev nowatch
  workaround for the device re-probe storms of rook issue 8975. A burn-in
  failure on this PR captured the consequence with full kernel
  forensics: ~100 udev change events on the OSD disk, and ceph-volume
  activate wedged in uninterruptible sleep on the block device lock
  (blkdev_llseek -> rwsem_down_write_slowpath) for 18+ minutes during
  the ceph version upgrade while the cluster's only OSD stayed down.
  Install the nowatch rule before the early return so it applies to
  every runner type, and before the disk is first written rather than
  after.

- One burn-in round failed before the upgrade even began: the
  pre-upgrade PVC create on the Helm path expired WaitUntilPVCIsBound
  (RetryLoop, 275s) while the CSI provisioner pods were still
  starting. Set RETRY_MAX=110 for this workflow to double the
  framework's base wait budget, instead of extending individual waits
  one flake at a time.

- minikube also exits with GUEST_START (code 80) when its internal 6
  minute node-ready wait expires on slow runners (5 runs in the
  dataset, two more observed while burning in this PR, one of them on
  another suite). Pass --wait-timeout=15m to minikube start.

Not addressed (small or episodic classes): OSDs never coming up on
initial deploy (3 runs, possibly the same udev/iSCSI wedge), the
filesystem not becoming active (2 runs), and several day-clustered
minikube incidents (exit codes 65/67/90).

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit cff8b7f311)
2026-06-16 21:14:15 +00:00
Joshua Hoblitt 5449820ec8 test: run object suite store with a single rgw instance
rgw quota checks run against per-instance cached stats kept current by
local per-op deltas; the durable user stats object only catches up on
rgw_user_quota_bucket_sync_interval (180s), and a peer instance only
reloads it on the rgw_bucket_quota_ttl refresh cycle. With 3 gateways
behind the service, an S3 reconnect mid-test can land on an instance
that is blind to the objects already written, letting over-quota writes
pass until those clocks line up. A single gateway serves all writes
from one accurate cache, so enforcement is immediate and deterministic.

Multi-instance rgw deployment remains covered by the keystone suite,
and this matches the notification, COSI, and sharedstore fixtures that
already run one instance.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 8cbec942f4)
2026-06-12 19:06:04 +00:00
Oded Viner 37e92fd749 object: remove AWS SDK v1 dependency
Remove the AWS SDK v1 (github.com/aws/aws-sdk-go)
dependency entirely. All S3 operations now use AWS SDK v2
exclusively.

- Remove the v1 Client field from S3Agent struct and
  rename ClientV2 to Client
- Remove v1 session/client initialization from NewS3Agent
- Update all call sites referencing ClientV2
- Convert integration tests to use v2 API calling
  conventions (context parameter) and smithy error handling
- Remove aws-sdk-go v1.55.8 from go.mod

Signed-off-by: Oded Viner <oviner@redhat.com>
(cherry picked from commit 254965fff1)

# Conflicts:
#	go.mod
#	go.sum
2026-05-27 10:38:23 -06:00
subhamkrai a9d29bdec6 csi: move csi management to admin
Going forward, admin will manage the csi operator
CR's and rook will only manage Ceph Connection cr
and client Profile cr.

The old csi driver is completely removed from Rook
and can no longer be used starting in Rook v1.20.

The upgrade guide will contain the needed transition steps
for managing the csi operator settings.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 4eefad42e8)
2026-05-12 12:49:21 -10:00
Travis Nielsen aff4a6b9f8 ci: upgrade tests from v1.19 to master
The upgrade integration tests for the v1.20 release need to
validate the upgrade starting from v1.19 to the latest.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 1f205c4be4)
2026-05-11 13:02:16 -10:00
Madhu Rajanna eb38b091ed csi: wait for the PV deletion
Wait for the PV deletion before deleting
the ceph resources like pools.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit 799bd66243)
2026-05-06 08:21:10 +00:00
Oded Viner d11ef74a9b object: migrate bucket provisioner to aws sdk v2
migrate bucket provisioner from aws sdk v1 to v2.

replace awserr.Error type assertions with smithy.APIError
using errors.As for v2-style error handling.

switch setBucketPolicy and setBucketLifecycle to use
the v2 s3 client (ClientV2) directly with context.

replace v1 s3 types (BucketLifecycleConfiguration,
GetBucketLifecycleConfigurationOutput) with v2 equivalents
from s3types and s3v2 packages.

add cmpopts.IgnoreUnexported to cmp.Diff calls to handle
unexported noSmithyDocumentSerde fields in v2 sdk types.

add nil guard on lifecycle output before accessing rules
to prevent nil dereference when get returns an error.

depends on #17414

Signed-off-by: Oded Viner <oviner@redhat.com>
(cherry picked from commit 5ba3e1a2c0)
2026-04-29 16:24:17 +00:00
Oded Viner 9341b3dcfa object: migrate s3agent object methods to aws sdk v2
migrate PutObjectInBucket, GetObjectInBucket, and
DeleteObjectInBucket to use aws sdk v2 client.
replace v1 awserr error handling in DeleteObjectInBucket
with v2 typed errors (errors.As).
remove unused v1 awserr import.

Signed-off-by: Oded Viner <oviner@redhat.com>
(cherry picked from commit 2cb714dabd)
2026-04-27 15:48:57 +00:00
Joshua Hoblitt 0139637e34 test: add integration tests for CephObjectStoreUser capabilities
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-04-02 09:44:28 -07:00
Joshua Hoblitt 92f6d3fb67 test: factor out shared object store creation from ns'd object suite tests
This factors out the creation of a single CephObjectStore instance to be
shared between the individually namespaced object suite packages.

This reduces the object suite runtime by the cost of starting up and
tearing down an object store three times.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-03-27 14:42:51 -07:00
Artem Torubarov 91086e5803 rgw: fix integration test to detect new zone pools
Signed-off-by: Artem Torubarov <artem.torubarov@sap.com>
2026-03-11 16:39:53 +01:00
Artem Torubarov 3c0bfd8572 rgw: integration test to check new pools in zone.json
Signed-off-by: Artem Torubarov <artem.torubarov@sap.com>
2026-03-09 15:11:28 +01:00
Joshua Hoblitt 3ef0c90ef8 object: add ObjectStoreUserSpec.OpMask field
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-02-10 15:10:28 -07:00
subhamkrai 20f350a71a csi: remove automated node fencing code
since node fencing is disabled in rook for sometime
and this feature is implemented in csi. So, this
commits remove obsolete code related to node loss

Signed-off-by: subhamkrai <srai@redhat.com>
2026-01-22 15:19:12 +05:30
Travis Nielsen 94e9e2ba91 ci: test rook upgrade from 1.18
The upgrade test is expected to check from the previous minor
release to the current master or latest release. With the
release of 1.19 coming soon, the upgrade test will now
check from v1.18.x.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2025-12-15 11:44:38 -07:00
subhamkrai 304cdc8c83 core: remove support for reef v18 in Rook v1.19
For Rook v1.19,removing support for Ceph Reef. It is at end of life.
Users on Reef can continue to use Rook v1.18.x or older.
The latest two Ceph versions Squid and Tentacle are supported.

Signed-off-by: subhamkrai <srai@redhat.com>
2025-12-04 13:11:35 +05:30
Travis Nielsen 83047a17d1 operator: fix concurrency issues in the cluster controller
Use a sync map for the clusterMap in the cluster controller
and fix other issues to allow for concurrent cluster
reconcile.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2025-11-17 11:46:33 -07:00
Joshua Hoblitt 61cbe4fc23 object: fix user quotas being overwritten when obc bucketOwner is set
Resolves https://github.com/rook/rook/issues/16417

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2025-11-06 16:31:12 -07:00
subhamkrai 11fac627b0 core: add support for ceph tentacle
we are now adding tentacle to the supported versions and add the
upgrade test from squid to tentacle. Also, clean some unused code.

Signed-off-by: subhamkrai <srai@redhat.com>
2025-09-19 12:03:45 +05:30
subhamkraiandTravis Nielsen c57a47f774 ci: run csi-operator only in canary and upgrade suite
this commit add check to only run the csi-operator in
all the canary tests and upgrade suite only, other suite
like smoke and object will still test csi-driver.

Also, adding changes to make CI happy.

Signed-off-by: subhamkrai <srai@redhat.com>
Co-Authored-by: Travis Nielsen <tnielsen@redhat.com>
Signed-off-by: subhamkrai <srai@redhat.com>
2025-08-19 11:23:14 +05:30
Travis Nielsen 86d30082ab tests: upgrade from 1.17 to master
For the integration tests, now we start upgrading from v1.17.x
to the master branch, to test that the upgrades are stable
to what will become the 1.18 release.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2025-08-06 15:02:50 -06:00
Travis Nielsen dc09e78ece Merge pull request #16224 from jhoblitt/maint/integration-ceph-admin-client
test: factor out util/admin package for setup of ceph admin client
2025-08-06 10:51:34 -06:00
Joshua Hoblitt 36f1a3308f test: factor out util/admin package for setup of ceph admin client
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2025-08-01 14:44:58 -07:00
Joshua Hoblitt 1163133aec object: simplify CephObjectStoreUser deletion logic
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2025-08-01 12:41:10 -07:00
Travis Nielsen db2e547779 tests: skip bucket lifecycle policy removal test
In ceph v19.2.3 bucket lifecycle policy removal appears to
be broken, so skip this test for now.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2025-07-29 12:40:48 -06:00
Michael AdamandTravis Nielsen fc10f61444 ci: stop using helm.sh up
use setup-helm instead.

Signed-off-by: Michael Adam <obnox@samba.org>
Co-authored-by: Travis Nielsen <tnielsen@redhat.com>
2025-06-12 19:47:24 +02:00
Artem Torubarov df3ce489d6 tests: change project name in keystone e2e test
Signed-off-by: Artem Torubarov <artem.torubarov@sap.com>
2025-06-03 10:30:04 +02:00
Carlos Barria c63ebbe0e3 core: fix golangci-lint check ST1019
This change cleans up and standardizes import statements across the Ceph operator code. It removes redundant or duplicate imports and reorganizes alias names for improved clarity and consistency. Additionally, the ST1019 exception was removed from .golangci.yaml now that the code complies with the rule.

Signed-off-by: Carlos Barria <cbarria@yahoo.com>
2025-05-27 17:38:22 -04:00
Carlos Barria c044ca9e77 core: fix golangci-lint check ST1008
Signed-off-by: Carlos Barria <cbarria@yahoo.com>
2025-05-22 15:39:30 -04:00
Carlos Barria 8afc4ee548 core: fix golangci-lint check QF1004
Signed-off-by: Carlos Barria <cbarria@yahoo.com>
2025-05-22 11:21:45 -04:00
Carlos Barria 61494d1baf core: fix golangci-lint check ST1005
Signed-off-by: Carlos Barria <cbarria@yahoo.com>
2025-05-19 17:52:22 -04:00
Blaine Gardner e650d4e025 Merge pull request #15779 from rook/revert-15776-more-logging-for-obc-test
Revert "ci: increase logging and time for OBC lifecycle rm test"
2025-04-29 16:19:16 -06:00
Blaine Gardner 9c8c74e24b Revert "ci: increase logging and time for OBC lifecycle rm test"
Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2025-04-29 16:11:40 -06:00
Blaine Gardner c4363ab81a Merge pull request #15804 from BlaineEXE/ci-wait-longer-for-upgrade-image-pull
ci: extend timeout for mons in upgrade test
2025-04-29 14:18:32 -06:00
Blaine Gardner 98bd03a420 ci: extend timeout for mons in upgrade test
When upgrading from one Ceph version to another, the new image to
upgrade to can take a long time to pull in some cases before the upgrade
can even begin. For example, some ceph-ci images regularly take 6+
minutes to pull, which exceeds the timeout waiting for mons to be ready.

Extend the timeout for mons to account for these cases.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2025-04-29 13:53:43 -06:00
Blaine Gardner bd12f214b4 ci: increase logging and time for OBC lifecycle rm test
Nightly CI has been failing recently having issues with removing a
bucket's lifecycle config after initially applying it. A Ceph RGW issue
is suspected, but more information is needed. Attempt a longer timeout,
to see if it is a slow async process. Also log the returned info to see
if it is helpful.

This commit is intended to be eventually reverted, but it must be
checked into master so that nightly CI runs provide the needed info.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2025-04-24 14:06:28 -06:00
Joshua Hoblitt 7887f03c5c object: add CephBucketTopic .spec.endpoint.kafka.{user,password}SecretRef
userSecretRef and passwordSecretRef fields are added to allow the Kafka
endpoint username and password to be supplied from a Kubernetes Secret,
rather than exposed as plaintext as part of the endpoint URI. If the
endpoint URI has HTTP basic auth user-id and user-pass components, they
are overridden by userSecretRef and passwordSecretRef.

Squid added bucket topic attributes for configuring the user-name and
password for pushing notifications to Kafka as an alternative to
encoding credentials into the URI. However, these attributes are not
supported under Reef. Thus, this initial implementation relies on URI
mangling for compatible with both Reef and Squid. Future work could
using Ceph version detection and switch to the new attributes to be used
with Squid and/or the implementation could be converted exclusively to
use the new attributes once Rook has dropped support for Reef.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2025-04-16 10:53:11 -07:00
Joshua Hoblitt 6b2c357871 object: add CephObjectStoreUser.spec.keys
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2025-04-03 09:09:01 -07:00
Travis Nielsen d3cb7271a7 tests: upgrade from rook 1.16 to master
The upgrade tests in master have been upgrading from 1.15 to
master. In anticipation of the v1.17 release, we change
the upgrade tests to start from v1.16 to test if there
are any regressions in the supported upgrades.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2025-03-27 13:06:55 -06:00
Joshua Hoblitt 3cb343f62a core: run gofumpt on all files
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2025-03-26 10:41:48 -07:00
Travis Nielsen c7e5a4c236 tests: enable csi operator for go test suites
Create the CSI operator in the go integration test suites
to test the new CSI operator scenarios. For the upgrade
test suite, enable the CSI operator after the upgrade
to verify the working cluster after it is enabled.

Signed-off-by: subhamkrai <srai@redhat.com>
2025-03-19 21:02:05 +05:30
subhamkrai 45e76204bf ci: wait for pod before exec into pod
keystone integration test has recentally starting to fail
as pod with lable osc-admin-admin was not in running status
and we're trying to exec into the pod.

Signed-off-by: subhamkrai <srai@redhat.com>
2025-02-20 12:25:07 +05:30
Joshua Hoblitt 9d21fe0f5c test: add obc bucketOwner integration test
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2025-02-04 12:10:20 -07:00
Joshua Hoblitt b689038ffc test: add obc bucketLifecycle integration test
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2025-01-21 16:01:37 -07:00
df511fb58f ci: update golangci-lint to the latest version (v1.62)
The ci was using a pretty old version og golangci-lint.
This updates to the latest version.

Additionally, it  silences some
gosec integer conversion overflow false positves
and fixes some real errors of this category
 and string format errors found by golangci-lint, while at it.

Co-authored-by: Blaine Gardner <b.blaine.gardner@gmail.com>
Co-authored-by: Travis Nielsen <tnielsen@redhat.com>
Signed-off-by: Michael Adam <obnox@samba.org>
2024-12-14 14:47:30 +01:00
Joshua Hoblitt 8fd34e88bb test: add obc bucketPolicy integration test
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2024-12-12 13:36:26 -07:00
Joshua Hoblitt 57b7eeec80 object: add httpClient param to object.NewS3Agent()
To allow the caller to pass in their own transport when testing.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2024-12-12 10:20:41 -07:00
Travis Nielsen 23f3db1261 ci: suppress the error from creating the dashboard admin user
The dashboard admin rgw user has timing isssues in the CI.
For now, just suppress the CI failure and log the error
until we can spend more time to get a reliable wait for the
user creation.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2024-12-11 09:42:59 -07:00
Blaine Gardner e6db006501 Merge pull request #15035 from BlaineEXE/object-revert-cosi-user-autocreation
Revert "object: create cosi user for each object store"
2024-12-09 16:21:58 -07:00
Travis Nielsen 506407b5ea tests: upgrade from rook 1.15 to master
The upgrade tests in master have been upgrading from 1.14 to
master. In anticipation of the v1.16 release, we change
the upgrade tests to start from v1.15 to test if there
are any regressions in the supported upgrades.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2024-11-22 10:40:02 -07:00