Skip to content

Add ocp4_workload_s4 role and integrate S4 storage with Quay#84

Merged
treddy08 merged 13 commits intomainfrom
feature-ocp4-workload-s4
Mar 13, 2026
Merged

Add ocp4_workload_s4 role and integrate S4 storage with Quay#84
treddy08 merged 13 commits intomainfrom
feature-ocp4-workload-s4

Conversation

@treddy08
Copy link
Contributor

  • New role: ocp4_workload_s4 deploys S4 (Super Simple Storage Service) via GitOps
  • S4 provides S3-compatible object storage using Ceph RADOS Gateway
  • Supports optional S3 bucket creation with configurable bucket list
  • Modified ocp4_workload_quay_operator to use S4 storage backend instead of Noobaa
  • Uses RadosGWStorage driver for internal Kubernetes service endpoint
  • Refactored S4 user info messages to use loop pattern for cleaner code
  • Updated GitOps role to use debug output (temporary for testing)

treddy08 and others added 13 commits March 13, 2026 16:44
- New role: ocp4_workload_s4 deploys S4 (Super Simple Storage Service) via GitOps
- S4 provides S3-compatible object storage using Ceph RADOS Gateway
- Supports optional S3 bucket creation with configurable bucket list
- Modified ocp4_workload_quay_operator to use S4 storage backend instead of Noobaa
- Uses RadosGWStorage driver for internal Kubernetes service endpoint
- Refactored S4 user info messages to use loop pattern for cleaner code
- Updated GitOps role to use debug output (temporary for testing)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…lity

- Add ocp4_workload_quay_operator_use_s4_storage boolean (default: false)
- When false: preserves exact original Noobaa/OCS behavior from main branch
- When true: enables new S4 storage backend functionality
- Separate conditional code paths ensure zero impact on existing deployments
- Restored original agnosticd_user_info calls for proper AgnosticD integration
- Updated documentation to explain both storage backend options
- No additional steps or overhead for default Noobaa usage

This ensures existing workloads continue working without any changes while
allowing users to opt-in to S4 storage by explicitly setting the boolean.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove testing changes to GitOps role - restore original agnosticd_user_info.
This role is unchanged from main branch.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Config bundle will always be created fresh during new installations,
no need to delete existing secret first.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Use fully qualified collection name for agnosticd_user_info module calls
to ensure proper module resolution.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Renamed from ocp4_workload_quay_operator_use_s4_storage for better
naming consistency with other enabled/disabled boolean variables.

Updated in:
- defaults/main.yml
- tasks/workload.yml
- templates/config.yaml.j2
- templates/quay_registry.yaml.j2
- readme.adoc

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Removed s4_credentials_secret.yaml.j2 template (unused)
- S4 credentials are embedded directly in config bundle secret via config.yaml.j2
- Consolidated duplicate resource creation tasks into single unconditional task
- Both Noobaa and S4 modes now create identical resources (namespace, config, registry)
- Storage backend differentiation happens in config.yaml.j2 template based on s4_storage_enabled flag

This simplifies the logic and removes unnecessary overhead.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Changed image tag from 'latest' to '0.3.2' for version pinning
- Changed pull policy from 'Always' to 'IfNotPresent' (best practice for versioned images)
- Ensures consistent deployments with specific S4 version

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Changed chart_revision from 'main' to 'v0.3.2' to match image tag
- Ensures Helm chart and container image versions are aligned
- Provides stable, versioned deployment

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Renamed ocp4_workload_s4_route_s3_enabled to ocp4_workload_s4_route_s3_api_enabled
to make it clear this controls the S3 API route, not just any S3 route.

Updated in:
- defaults/main.yml
- tasks/workload.yml
- templates/application.yaml.j2
- readme.adoc

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Renamed ocp4_workload_s4_route_s3_host to ocp4_workload_s4_route_s3_api_host
to match the naming convention of ocp4_workload_s4_route_s3_api_enabled.

Updated in:
- defaults/main.yml
- templates/application.yaml.j2

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Renamed internal variables for clarity:
- _ocp4_workload_s4_s3_endpoint_internal → _ocp4_workload_s4_s3_api_endpoint_internal
- _ocp4_workload_s4_s3_endpoint_external → _ocp4_workload_s4_s3_api_endpoint_external

Also renamed user data output fields:
- s4_s3_endpoint_internal → s4_s3_api_endpoint_internal
- s4_s3_endpoint_external → s4_s3_api_endpoint_external

All S3-related variables now consistently include 'api' in their names.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Removed configurable variables and hard-coded values directly:
- Application/Deployment waits: 60 retries, 10 second delay
- Route waits: 30 retries, 5 second delay (already hard-coded)
- Bucket job waits: 30 retries, 5 second delay (already hard-coded)

Removed from defaults/main.yml:
- ocp4_workload_s4_wait_retries
- ocp4_workload_s4_wait_delay

Kept ocp4_workload_s4_wait_for_deployment boolean flag to enable/disable waiting.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@treddy08 treddy08 marked this pull request as ready for review March 13, 2026 08:17
@treddy08 treddy08 merged commit a98b6de into main Mar 13, 2026
2 checks passed
@treddy08 treddy08 deleted the feature-ocp4-workload-s4 branch March 13, 2026 09:22
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.

2 participants