ARO-HCP: Introduce slot manager#79042
Conversation
|
Skipping CI for Draft Pull Request. |
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Repository YAML (base), Central YAML (inherited) Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (25)
WalkthroughThe PR implements an explicit lease acquisition and release workflow for ARO-HCP E2E tests by introducing dedicated lease management steps, transitioning from inline lease declarations to pre/post workflow execution, and updating Boskos to use slot-based resources instead of quota-slice resources. ChangesLease Management & Resource Slot Migration
Sequence DiagramsequenceDiagram
participant Prow
participant LeaseAcquire as Lease Acquire Step
participant SlotManager as Slot Manager
participant Boskos
participant Provision as Provision/Test Steps
participant LeaseRelease as Lease Release Step
Prow->>LeaseAcquire: run (pre-phase)
LeaseAcquire->>SlotManager: run_slot_manager acquire
SlotManager->>Boskos: request aro-hcp-{env}-{location}-slot
Boskos-->>SlotManager: allocate slot resource
SlotManager->>LeaseAcquire: export LOCATION, CUSTOMER_SUBSCRIPTION
LeaseAcquire->>LeaseAcquire: write aro-hcp-slot-env.sh to SHARED_DIR
Prow->>Provision: run (main workflow)
Provision->>Provision: source aro-hcp-slot-env.sh
Provision->>Provision: use LOCATION, CUSTOMER_SUBSCRIPTION from lease
Provision->>Provision: provision infrastructure & run tests
Prow->>LeaseRelease: run (post-phase)
LeaseRelease->>SlotManager: run_slot_manager release
SlotManager->>Boskos: release slot resource
Boskos-->>SlotManager: mark resource free
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: roivaz The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (4)
ci-operator/step-registry/aro-hcp/lease/release/aro-hcp-lease-release-ref.yaml (1)
1-20: ⚡ Quick winAdd an explicit timeout for the post release step.
Without a timeout, a stuck release command can prolong post execution unnecessarily. A small explicit cap makes failure mode clearer.
Proposed diff
ref: as: aro-hcp-lease-release from: aro-hcp-e2e-tests commands: aro-hcp-lease-release-commands.sh resources: requests: cpu: 10m memory: 100Mi + timeout: 5m env: - name: ARO_HCP_SLOT_MANAGER_GIT_REF default: ""🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@ci-operator/step-registry/aro-hcp/lease/release/aro-hcp-lease-release-ref.yaml` around lines 1 - 20, Add an explicit timeout key to the aro-hcp-lease-release step definition so the post-release command cannot hang indefinitely; modify the ref block for "as: aro-hcp-lease-release" (the step that runs "aro-hcp-lease-release-commands.sh") to include a sensible timeout (e.g. "timeout: 10m" or another small cap appropriate for the release task) so stuck releases fail fast and clearly.ci-operator/step-registry/aro-hcp/lease/acquire/aro-hcp-lease-acquire-ref.yaml (1)
36-38: ⚡ Quick winUse a non-empty default for
ARO_HCP_DEPLOY_ENV.At Line 37, defaulting to
""increases the chance of opaque runtime failures when this env is not explicitly set. A safe fallback likeprowis lower-risk.Proposed diff
- name: ARO_HCP_DEPLOY_ENV - default: "" + default: "prow" documentation: Config environment name (prow, ci01, int, stg, prod).🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@ci-operator/step-registry/aro-hcp/lease/acquire/aro-hcp-lease-acquire-ref.yaml` around lines 36 - 38, The ARO_HCP_DEPLOY_ENV variable is defaulting to an empty string which risks runtime failures; update the variable default for ARO_HCP_DEPLOY_ENV to a safe fallback value (e.g., "prow") instead of "" and ensure the documentation string remains accurate (Config environment name (prow, ci01, int, stg, prod)).ci-operator/step-registry/aro-hcp/e2e/aro-hcp-e2e-workflow.yaml (1)
11-13: ⚡ Quick winMove lease release to the end of
postfor safer sequencing.At Line 11, releasing before gather steps can make future post-step dependencies on lease context fragile. Keeping release last is safer and matches typical cleanup ordering.
Proposed diff
post: - - ref: aro-hcp-lease-release - ref: aro-hcp-gather-test-visualization - ref: aro-hcp-gather-custom-link-tools + - ref: aro-hcp-lease-release🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@ci-operator/step-registry/aro-hcp/e2e/aro-hcp-e2e-workflow.yaml` around lines 11 - 13, The post-step currently lists aro-hcp-lease-release before gather steps (aro-hcp-gather-test-visualization and aro-hcp-gather-custom-link-tools); move the aro-hcp-lease-release ref to the end of the post sequence so both gather steps run while the lease is still held and release happens last to ensure safe cleanup ordering.ci-operator/step-registry/aro-hcp/gather/snapshot/aro-hcp-gather-snapshot-commands.sh (1)
21-21: 💤 Low valueConsider suppressing
az account setoutput for consistency.
az loginon Line 20 uses--output none, butaz account seton Line 21 does not. While not harmful, the output can be noisy in CI logs.🔧 Proposed fix
-az account set --subscription "${GLOBAL_INFRA_SUBSCRIPTION_ID}" +az account set --subscription "${GLOBAL_INFRA_SUBSCRIPTION_ID}" --output none🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@ci-operator/step-registry/aro-hcp/gather/snapshot/aro-hcp-gather-snapshot-commands.sh` at line 21, The az account set command currently prints output and should be made consistent with az login by suppressing output; update the az account set invocation (the line with az account set --subscription "${GLOBAL_INFRA_SUBSCRIPTION_ID}") to include the same output suppression flag (e.g., --output none) so CI logs remain quiet and consistent.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@ci-operator/step-registry/aro-hcp/lease/acquire/aro-hcp-lease-acquire-ref.yaml`:
- Around line 39-46: The slot-manager override currently accepts arbitrary git
refs; update prepare_slot_manager_checkout() in aro-hcp-lease-common-commands.sh
to validate ARO_HCP_SLOT_MANAGER_GIT_REF before using it: ensure the variable is
non-empty and matches exactly a 40-character hexadecimal SHA (/[0-9a-f]{40}/i);
if it fails validation, print a clear error and exit non-zero, and only proceed
to git fetch and go run when the ref passes this SHA check to guarantee
immutable commit usage for slot-manager.
In
`@ci-operator/step-registry/aro-hcp/lease/common/aro-hcp-lease-common-commands.sh`:
- Around line 29-40: The prepare function
(aro_hcp_lease::prepare_slot_manager_checkout) currently accepts any git ref and
fetches it directly, which allows mutable refs; change it to require and
validate an immutable 40-character commit SHA (hex) for git_ref before
performing git operations, returning an error if validation fails; apply the
same SHA-only check to the sibling checkout logic in the other block covering
lines 61-78 so CI only fetches and checks out immutable commit SHAs.
---
Nitpick comments:
In `@ci-operator/step-registry/aro-hcp/e2e/aro-hcp-e2e-workflow.yaml`:
- Around line 11-13: The post-step currently lists aro-hcp-lease-release before
gather steps (aro-hcp-gather-test-visualization and
aro-hcp-gather-custom-link-tools); move the aro-hcp-lease-release ref to the end
of the post sequence so both gather steps run while the lease is still held and
release happens last to ensure safe cleanup ordering.
In
`@ci-operator/step-registry/aro-hcp/gather/snapshot/aro-hcp-gather-snapshot-commands.sh`:
- Line 21: The az account set command currently prints output and should be made
consistent with az login by suppressing output; update the az account set
invocation (the line with az account set --subscription
"${GLOBAL_INFRA_SUBSCRIPTION_ID}") to include the same output suppression flag
(e.g., --output none) so CI logs remain quiet and consistent.
In
`@ci-operator/step-registry/aro-hcp/lease/acquire/aro-hcp-lease-acquire-ref.yaml`:
- Around line 36-38: The ARO_HCP_DEPLOY_ENV variable is defaulting to an empty
string which risks runtime failures; update the variable default for
ARO_HCP_DEPLOY_ENV to a safe fallback value (e.g., "prow") instead of "" and
ensure the documentation string remains accurate (Config environment name (prow,
ci01, int, stg, prod)).
In
`@ci-operator/step-registry/aro-hcp/lease/release/aro-hcp-lease-release-ref.yaml`:
- Around line 1-20: Add an explicit timeout key to the aro-hcp-lease-release
step definition so the post-release command cannot hang indefinitely; modify the
ref block for "as: aro-hcp-lease-release" (the step that runs
"aro-hcp-lease-release-commands.sh") to include a sensible timeout (e.g.
"timeout: 10m" or another small cap appropriate for the release task) so stuck
releases fail fast and clearly.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 1da56a63-9905-41e4-a3f1-3b61e2d29f57
⛔ Files ignored due to path filters (1)
ci-operator/jobs/Azure/ARO-HCP/Azure-ARO-HCP-main-presubmits.yamlis excluded by!ci-operator/jobs/**
📒 Files selected for processing (29)
ci-operator/config/Azure/ARO-HCP/Azure-ARO-HCP-main.yamlci-operator/config/Azure/ARO-HCP/Azure-ARO-HCP-main__e2e.yamlci-operator/config/Azure/ARO-HCP/Azure-ARO-HCP-main__periodic.yamlci-operator/step-registry/aro-hcp/e2e/aro-hcp-e2e-workflow.yamlci-operator/step-registry/aro-hcp/gather/observability/aro-hcp-gather-observability-ref.yamlci-operator/step-registry/aro-hcp/gather/provision-failure/aro-hcp-gather-provision-failure-ref.yamlci-operator/step-registry/aro-hcp/gather/snapshot/aro-hcp-gather-snapshot-commands.shci-operator/step-registry/aro-hcp/gather/snapshot/aro-hcp-gather-snapshot-ref.yamlci-operator/step-registry/aro-hcp/lease/acquire/OWNERSci-operator/step-registry/aro-hcp/lease/acquire/aro-hcp-lease-acquire-commands.shci-operator/step-registry/aro-hcp/lease/acquire/aro-hcp-lease-acquire-ref.metadata.jsonci-operator/step-registry/aro-hcp/lease/acquire/aro-hcp-lease-acquire-ref.yamlci-operator/step-registry/aro-hcp/lease/common/OWNERSci-operator/step-registry/aro-hcp/lease/common/aro-hcp-lease-common-commands.shci-operator/step-registry/aro-hcp/lease/common/aro-hcp-lease-common-ref.metadata.jsonci-operator/step-registry/aro-hcp/lease/common/aro-hcp-lease-common-ref.yamlci-operator/step-registry/aro-hcp/lease/release/OWNERSci-operator/step-registry/aro-hcp/lease/release/aro-hcp-lease-release-commands.shci-operator/step-registry/aro-hcp/lease/release/aro-hcp-lease-release-ref.metadata.jsonci-operator/step-registry/aro-hcp/lease/release/aro-hcp-lease-release-ref.yamlci-operator/step-registry/aro-hcp/local-e2e/aro-hcp-local-e2e-workflow.yamlci-operator/step-registry/aro-hcp/provision/environment/aro-hcp-provision-environment-commands.shci-operator/step-registry/aro-hcp/provision/environment/aro-hcp-provision-environment-ref.yamlci-operator/step-registry/aro-hcp/test/local/aro-hcp-test-local-commands.shci-operator/step-registry/aro-hcp/test/persistent/aro-hcp-test-persistent-commands.shci-operator/step-registry/aro-hcp/write-config/aro-hcp-write-config-commands.shci-operator/step-registry/aro-hcp/write-config/aro-hcp-write-config-ref.yamlcore-services/prow/02_config/_boskos.yamlcore-services/prow/02_config/generate-boskos.py
💤 Files with no reviewable changes (3)
- ci-operator/config/Azure/ARO-HCP/Azure-ARO-HCP-main__e2e.yaml
- ci-operator/config/Azure/ARO-HCP/Azure-ARO-HCP-main__periodic.yaml
- ci-operator/config/Azure/ARO-HCP/Azure-ARO-HCP-main.yaml
| - name: ARO_HCP_SLOT_MANAGER_GIT_REF | ||
| default: "" | ||
| documentation: |- | ||
| Temporary opt-in override for release-side rehearsals. When set, | ||
| the lease step fetches this ref from github.com/Azure/ARO-HCP and | ||
| runs `slot-manager` via `go run` instead of the built binary. | ||
| Normal ARO-HCP PR jobs should leave this unset because the | ||
| `aro-hcp-e2e-tests` image is already built from the PR source. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Inspect how the override is implemented and whether ref validation/trust gating exists.
fd -i 'aro-hcp-lease-common-commands.sh' ci-operator/step-registry/aro-hcp/lease --exec sed -n '1,260p' {}
# Show all related call sites and git/go-run usage.
rg -n -C3 'ARO_HCP_SLOT_MANAGER_GIT_REF|go run|git (clone|fetch|checkout)|github.com/Azure/ARO-HCP' ci-operator/step-registry/aro-hcp/lease
# Expected: explicit check that ref is a full immutable commit SHA and/or trusted-job gating.Repository: openshift/release
Length of output: 8874
🏁 Script executed:
# Search for where ARO_HCP_SLOT_MANAGER_GIT_REF is defined and used in prow/rehearsal configs
rg -n 'ARO_HCP_SLOT_MANAGER_GIT_REF' --type yaml --type yml
# Check for any validation logic or constraints
rg -n 'sha|commit|ref.*valid|trusted' ci-operator/step-registry/aro-hcp/lease/common --type bash -A2 -B2
# Look for rehearsal/prow job definitions for aro-hcp-lease
fd -i 'rehearse|prow' . --type f | head -20Repository: openshift/release
Length of output: 1462
🏁 Script executed:
# Search for all uses of ARO_HCP_SLOT_MANAGER_GIT_REF across the repo
rg -n 'ARO_HCP_SLOT_MANAGER_GIT_REF' .
# Check for any validation logic for git refs in the codebase
rg -n 'git.*ref|commit.*sha|ref.*valid' ci-operator/step-registry/aro-hcp/lease/common -A2 -B2
# Check the acquire step file itself for any validation
cat -n ci-operator/step-registry/aro-hcp/lease/acquire/aro-hcp-lease-acquire-ref.yaml
# Check if there's a commands file for acquire step
find ci-operator/step-registry/aro-hcp/lease/acquire -name '*.sh'Repository: openshift/release
Length of output: 4640
🏁 Script executed:
# Check the acquire commands file
cat -n ci-operator/step-registry/aro-hcp/lease/acquire/aro-hcp-lease-acquire-commands.sh
# Check release commands file for comparison
cat -n ci-operator/step-registry/aro-hcp/lease/release/aro-hcp-lease-release-commands.sh
# Look for any validation patterns in the entire aro-hcp directory
rg -n 'ref.*=~|sha.*=~|^\s*if.*ref|validate.*ref' ci-operator/step-registry/aro-hcp/ -A2Repository: openshift/release
Length of output: 727
🏁 Script executed:
# Look for prow job definitions using aro-hcp-lease steps
rg -n 'aro-hcp-lease-acquire|aro-hcp-lease-release' ci-operator/jobs/ | head -20
# Check if there's any environment variable validation in prow job definitions
rg -n 'param|env|ARO_HCP' ci-operator/jobs/ | grep -i aro-hcp | head -30
# Look for rehearsal-specific config that might restrict variable setting
find . -name '*rehearse*' -o -name '*rehearsal*' | grep -E '\.(yaml|yml|sh)$' | head -10Repository: openshift/release
Length of output: 3709
🏁 Script executed:
# Check if any job definitions actually set ARO_HCP_SLOT_MANAGER_GIT_REF
rg -n 'ARO_HCP_SLOT_MANAGER_GIT_REF' ci-operator/ -B5 -A5
# Look at the prow rehearsal configuration to understand variable access control
cat -n clusters/core-ci/assets/pj-rehearse.yaml | head -100
# Check if there's documentation on variable validation in prow configs
rg -n 'rehearse|param.*valid|env.*valid' clusters/core-ci/ | head -20Repository: openshift/release
Length of output: 8485
Enforce immutable commit SHA validation for slot-manager override.
The ARO_HCP_SLOT_MANAGER_GIT_REF parameter allows arbitrary git references (branches, tags, or annotated commits) to be passed to git fetch without validation. In aro-hcp-lease-common-commands.sh line 39, the ref is fetched as-is and then executed via go run, creating non-reproducible behavior and weakening supply-chain safety. Add validation to the prepare_slot_manager_checkout() function to accept only full 40-character commit SHAs, ensuring immutable and auditable builds during rehearsals.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@ci-operator/step-registry/aro-hcp/lease/acquire/aro-hcp-lease-acquire-ref.yaml`
around lines 39 - 46, The slot-manager override currently accepts arbitrary git
refs; update prepare_slot_manager_checkout() in aro-hcp-lease-common-commands.sh
to validate ARO_HCP_SLOT_MANAGER_GIT_REF before using it: ensure the variable is
non-empty and matches exactly a 40-character hexadecimal SHA (/[0-9a-f]{40}/i);
if it fails validation, print a clear error and exit non-zero, and only proceed
to git fetch and go run when the ref passes this SHA check to guarantee
immutable commit usage for slot-manager.
| function aro_hcp_lease::prepare_slot_manager_checkout() { | ||
| local git_ref temp_dir repo_dir | ||
| git_ref="$1" | ||
| temp_dir="$2" | ||
| repo_dir="${temp_dir}/ARO-HCP" | ||
|
|
||
| printf 'Using slot-manager override ref %s from %s\n' "${git_ref}" "${ARO_HCP_SLOT_MANAGER_DEFAULT_GIT_REMOTE}" >&2 | ||
|
|
||
| git init --quiet "${repo_dir}" | ||
| git -C "${repo_dir}" remote add origin "${ARO_HCP_SLOT_MANAGER_DEFAULT_GIT_REMOTE}" | ||
| git -C "${repo_dir}" fetch --depth=1 origin "${git_ref}" | ||
| git -C "${repo_dir}" checkout --detach --quiet FETCH_HEAD |
There was a problem hiding this comment.
Require immutable commit SHA for slot-manager override refs.
Line 39 fetches a user-provided ref and Line 77 executes it. Allowing mutable refs (branches/tags) introduces non-reproducible and avoidable supply-chain risk in CI.
Suggested hardening
function aro_hcp_lease::prepare_slot_manager_checkout() {
local git_ref temp_dir repo_dir
git_ref="$1"
temp_dir="$2"
repo_dir="${temp_dir}/ARO-HCP"
+ if [[ ! "${git_ref}" =~ ^[0-9a-fA-F]{40}$ ]]; then
+ printf 'ARO_HCP_SLOT_MANAGER_GIT_REF must be a full 40-char commit SHA: %s\n' "${git_ref}" >&2
+ return 1
+ fi
+
printf 'Using slot-manager override ref %s from %s\n' "${git_ref}" "${ARO_HCP_SLOT_MANAGER_DEFAULT_GIT_REMOTE}" >&2
git init --quiet "${repo_dir}"
git -C "${repo_dir}" remote add origin "${ARO_HCP_SLOT_MANAGER_DEFAULT_GIT_REMOTE}"
git -C "${repo_dir}" fetch --depth=1 origin "${git_ref}"
git -C "${repo_dir}" checkout --detach --quiet FETCH_HEADAlso applies to: 61-78
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@ci-operator/step-registry/aro-hcp/lease/common/aro-hcp-lease-common-commands.sh`
around lines 29 - 40, The prepare function
(aro_hcp_lease::prepare_slot_manager_checkout) currently accepts any git ref and
fetches it directly, which allows mutable refs; change it to require and
validate an immutable 40-character commit SHA (hex) for git_ref before
performing git operations, returning an error if validation fails; apply the
same SHA-only check to the sibling checkout logic in the other block covering
lines 61-78 so CI only fetches and checks out immutable commit SHAs.
b3bb933 to
fee1f37
Compare
fee1f37 to
30376eb
Compare
30376eb to
6e4fc42
Compare
|
[REHEARSALNOTIFIER]
Interacting with pj-rehearseComment: Once you are satisfied with the results of the rehearsals, comment: |
|
[REHEARSALNOTIFIER]
Interacting with pj-rehearseComment: Once you are satisfied with the results of the rehearsals, comment: |
https://redhat.atlassian.net/browse/ARO-25833
Summary
This PR introduces a slot manager for ARO-HCP E2E testing workflows, moving lease acquisition from static job configuration to runtime pipeline steps. This enables more flexible slot/environment selection while maintaining compatibility with existing job definitions.
Key Changes
Lease Management Refactoring
aro-hcp-lease-acquireandaro-hcp-lease-releasesteps that handle Boskos resource allocation at runtime rather than through static job configurationaro-hcp-lease-common-commands.sh) providing:go runfrom ARO-HCP repository (controlled by optionalARO_HCP_SLOT_MANAGER_GIT_REFoverride)SHARED_DIRWorkflow Integration
aro-hcp-e2e-workflow.yamlandaro-hcp-local-e2e-workflow.yamlto include lease acquire inprephase and lease release inpostphaseleasesblocks from E2E job configurations (*-e2e-parallel*jobs in main/periodic/e2e variants) while keeping workflow references intacte2e-paralleljob into single configuration running againstci01environment instead of maintaining separateprowandci01job variantsResource Pool Transition
aro-hcp-int-quota-slice,aro-hcp-prod-quota-slice,aro-hcp-stg-quota-slice) with slot-based resource pools:aro-hcp-dev-westus3-slot(15 slots)aro-hcp-int-uksouth-slot(1 slot)aro-hcp-prod-uksouth-slot(10 slots)aro-hcp-stg-uksouth-slot(1 slot)Cross-Subscription Support
gather-snapshotstep to support cross-subscription operations:infra-global-subscription-idfrom cluster profile instead of environment-specific Vault pathsTest Script Updates
aro-hcp-test-local-commands.sh,aro-hcp-test-persistent-commands.sh,aro-hcp-write-config-commands.sh) now source lease exports rather than reading subscription/location from static filesConfiguration Changes
LOCATIONandMULTISTAGE_PARAM_OVERRIDE_LOCATIONparameters from write-config steparo-hcp-msi-mock-cs-sp-dev) to provision environment stepImpact
The refactoring shifts ARO-HCP E2E pipeline control from static job-level lease declarations to dynamic runtime slot management, enabling more flexible environment selection while simplifying job configuration. All changes remain localized to step registry and configuration, maintaining the existing job contracts for downstream consumers.
Note: The PR temporarily references slot-manager from an unmerged ARO-HCP repository commit via the
ARO_HCP_SLOT_MANAGER_GIT_REFoverride capability, with fallback to the built-in binary.