FLPATH-3558 Automate acm tests#8
Merged
testetson22 merged 3 commits intoApr 14, 2026
Merged
Conversation
… and multi-sp testing - Updated CLAUDE.md to include service provider configuration details and deployment options for ACM and MCE. - Expanded README.md to clarify the service provider registry and prerequisites for using ACM and KubeVirt providers. - Modified deploy-dcm.sh to support dynamic loading of service providers from configuration files, improving extensibility. - Updated run-e2e.sh to include new service provider flags for ACM and MCE deployments. Signed-off-by: Thomas Stetson <tstetson@redhat.com>
Refactor deploy-dcm.sh to use declarative provider registry (providers/*.conf) replacing hardcoded per-provider logic. Add ACM cluster SP E2E tests (health, registration, validation, CRUD), compose overlay, idempotent --deploy-acm/--deploy-mce support, and ensure_podman_running auto-start. Add GH action to validate scripts Signed-off-by: Thomas Stetson <tstetson@redhat.com>
- Updated namespace resolution to use indirect variable expansion for better clarity. - Enhanced error reporting when starting the Podman machine by capturing output. - Ensured temporary directories are removed after deployment attempts, regardless of success or failure. Additionally, added comments in compose-acm-cluster-sp.yaml to clarify the use of the latest image for active development. Signed-off-by: Thomas Stetson <tstetson@redhat.com>
chadcrum
approved these changes
Apr 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Integrate the ACM Cluster Service Provider into the DCM E2E stack with automated API tests, compose overlay, and optional ACM/MCE deployment. Refactor
deploy-dcm.shwith a declarative provider registry (providers/*.conf) so adding new service providers requires no changes to flag parsing, usage, or compose wiring.Key Changes
providers/*.conffiles replace hardcoded per-provider logic indeploy-dcm.sh. Flags, usage, compose args, validation, and env exports are all generated from the registry. Current providers:kubevirt,k8s-container,acm-cluster--deploy-acm/--deploy-mceinstall ACM or MCE on the OCP cluster. Idempotent — detects existing installations, creates missing CRs, or runs the full upstream script as needed. Clonesacm-cluster-service-providerrepo forhack/deploy-acm-mce.shtests/compose-acm-cluster-sp.yamladds the ACM SP container with kubeconfig mount, pull secret, and NATS wiring. Auto-injected by the provider registryensure_podman_running()auto-starts the Podman machine;validate_acm_cluster_provider()creates the target namespace and resolves the pull secret from the cluster's globalopenshift-config/pull-secretrun-e2e.shforwards--acm-cluster-service-provider,--deploy-acm/mce, and--acm-cluster-sp-repo/branchflags; exportsDCM_ACM_CLUSTER_SP_URL.github/workflows/validate-scripts.yamlvalidates flag parsing, provider registry loading, mutual exclusivity (--deploy-acm+--deploy-mce), required-arg enforcement, and unknown flag rejection for bothdeploy-dcm.sh(11 cases) andrun-e2e.sh(5 cases) — runs without deployment infrastructureACM Cluster SP Test Coverage
Per upstream spec PR #2:
DefaultCompatibilityMatrix) needs OCP 4.19+ entriesProvider Registry
Service providers are defined declaratively in
providers/*.conf:providers/kubevirt.confcompose.yamlproviders/k8s-container.conftests/compose-sp-test.yamloverlayproviders/acm-cluster.conftests/compose-acm-cluster-sp.yamloverlayAdding a new provider requires only a
.conffile and (optionally) a validation hook function indeploy-dcm.sh.ACM/MCE Deployment Flow
--deploy-acm/--deploy-mcefollows this idempotent flow:MultiClusterHuborMultiClusterEngine) is alreadyRunning→ skiphack/deploy-acm-mce.shRunning(default timeout: 1200s viaDEPLOY_TIMEOUT)No redundancy with upstream/product repo tests. The ACM Cluster SP repo (
dcm-project/acm-cluster-service-provider) has extensive unit and integration tests (health, registration, handler, monitoring, cluster operations, config, status mappers) but these all test internal Go packages in isolation or with mocked dependencies. Our tests are external E2E tests that hit the running SP over HTTP through the compose stack -- a fundamentally different test layer.health_unit_test.go,health_integration_test.goregistration_unit_test.go,registration_integration_test.goservice_type=clustervia the gateway's/providersAPIhandler_unit_test.go,server_unit_test.go/clusterswith empty body, missing fields, wrong types, RFC 7807 response -- over the networkserver_integration_test.go,cluster_test.goThe upstream tests validate internal correctness; ours validate the deployed service behaves correctly as part of the full DCM stack. No overlap.
Checklist
providers/*.conf) replaces hardcoded provider logic--deploy-acm,--deploy-mce)ensure_podman_running()auto-starts Podman machinevalidate_acm_cluster_provider()creates namespace + resolves pull secretmake test-acm-sptargetDCM_ACM_CLUSTER_SP_URL