Skip to content

AROSLSRE-1158: add --install-scope flag to hypershift install - #8725

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
shubhadapaithankar:AROSLSRE-1158-add-install-scope-flag
Jul 9, 2026
Merged

AROSLSRE-1158: add --install-scope flag to hypershift install#8725
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
shubhadapaithankar:AROSLSRE-1158-add-install-scope-flag

Conversation

@shubhadapaithankar

@shubhadapaithankar shubhadapaithankar commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

What this PR does / why we need it

Adds a new --install-scope flag to the hypershift install command that controls which subset of manifests are applied:

  • all (default): installs CRDs and resources (existing behavior, fully backwards compatible)
  • crds: installs only CRDs
  • resources: installs only resources (operator deployment and RBAC)

Why we need it

In ARO-HCP, the HyperShift Helm chart uses post-install hooks to run hypershift install. There's a race condition where the operator starts and creates a ClusterSizingConfiguration before the Helm hook can apply its own version, causing apply conflicts.

Splitting the install into phases allows:

  1. CRDs to be installed first (--install-scope=crds)
  2. CRD-dependent manifests (like ClusterSizingConfiguration) to be applied by Helm
  3. The operator to start last (--install-scope=resources)

Which issue(s) this PR fixes

Fixes: https://redhat.atlassian.net/browse/AROSLSRE-1158
Related: https://redhat.atlassian.net/browse/AROSLSRE-313

Checklist

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • New Features

    • Added --install-scope (default: all) to control whether CRDs, operator resources, or both are installed.
    • The installer now runs CRD-related steps only when the scope includes CRDs, and operator resource steps only when it includes resources.
  • Refactor

    • Improved --outputs validation and manifest selection using explicit CRD-vs-resource scoping rules.
  • Tests

    • Extended validation tests for --install-scope.
    • Added tests ensuring rendered manifests match the selected scope, including CRD presence/absence checks.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 11, 2026
@openshift-ci-robot

openshift-ci-robot commented Jun 11, 2026

Copy link
Copy Markdown

@shubhadapaithankar: This pull request references AROSLSRE-1158 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "5.0.0" version, but no target version was set.

Details

In response to this:

What this PR does / why we need it

Adds a new --install-scope flag to the hypershift install command that controls which subset of manifests are applied:

  • all (default): installs CRDs and resources (existing behavior, fully backwards compatible)
  • crds: installs only CRDs
  • resources: installs only resources (operator deployment and RBAC)

Why we need it

In ARO-HCP, the HyperShift Helm chart uses post-install hooks to run hypershift install. There's a race condition where the operator starts and creates a ClusterSizingConfiguration before the Helm hook can apply its own version, causing apply conflicts.

Splitting the install into phases allows:

  1. CRDs to be installed first (--install-scope=crds)
  2. CRD-dependent manifests (like ClusterSizingConfiguration) to be applied by Helm
  3. The operator to start last (--install-scope=resources)

Which issue(s) this PR fixes

Fixes: https://redhat.atlassian.net/browse/AROSLSRE-1158
Related: https://redhat.atlassian.net/browse/AROSLSRE-313

Checklist

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Made with Cursor

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci

openshift-ci Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Please specify an area label

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@openshift-ci
openshift-ci Bot requested review from Nirshal and sdminonne June 11, 2026 21:23
@openshift-ci openshift-ci Bot added the area/cli Indicates the PR includes changes for CLI label Jun 11, 2026
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR adds InstallScope to Options, validates it, and wires a new --install-scope flag defaulting to all. InstallHyperShiftOperator() now gates CRD and operator resource installation by the resolved scope. It also adds Outputs helper methods for render scoping, updates render validation to use them, and adds tests for install-scope and output-scope behavior.

Sequence Diagram(s)

sequenceDiagram
  participant CLI
  participant Options
  participant InstallHyperShiftOperator
  participant KubernetesAPI
  participant ClusterCAPI

  CLI->>Options: set --install-scope
  Options->>InstallHyperShiftOperator: resolved InstallScope
  alt scope includes CRDs
    InstallHyperShiftOperator->>KubernetesAPI: dry-run validate CRDs
    InstallHyperShiftOperator->>ClusterCAPI: coordinate unmanaged CRDs
    InstallHyperShiftOperator->>KubernetesAPI: apply CRDs
    InstallHyperShiftOperator->>KubernetesAPI: wait for CRD establishment
  end
  alt scope includes resources
    InstallHyperShiftOperator->>KubernetesAPI: apply operator resources
    InstallHyperShiftOperator->>KubernetesAPI: wait until available
  end
Loading
🚥 Pre-merge checks | ✅ 11
✅ Passed checks (11 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding the --install-scope flag to hypershift install.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed Added test titles are static strings (e.g. 'all includes CRDs and resources'); no generated names, timestamps, or variable interpolation found.
Test Structure And Quality ✅ Passed New install tests are table-driven unit tests with scoped setups, no cluster ops/waits, and no cleanup leaks; they follow existing repo style.
Topology-Aware Scheduling Compatibility ✅ Passed No new scheduling constraints were added; changes only add install-scope/output filtering, and the deployment spec still uses preferred anti-affinity only.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e specs were added; the new tests are local unit tests and don’t hardcode IPv4 or require external connectivity.
No-Weak-Crypto ✅ Passed Touched files only add install-scope/output filtering and tests; no weak-crypto APIs, custom crypto, or secret/token comparisons were introduced.
Container-Privileges ✅ Passed PR only changes install-scope logic/tests; changed files contain no privileged/host* fields, and operator securityContext stays privileged=false with allowPrivilegeEscalation=false.
No-Sensitive-Data-In-Logs ✅ Passed New install-scope logs only status/counts and CRD names; no passwords, tokens, PII, API keys, internal hostnames, or customer data are logged.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@shubhadapaithankar
shubhadapaithankar force-pushed the AROSLSRE-1158-add-install-scope-flag branch from fe80425 to ed5f298 Compare June 11, 2026 21:26
@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/area hypershift-operator

@openshift-ci openshift-ci Bot added the area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release label Jun 11, 2026
@codecov

codecov Bot commented Jun 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 47.88732% with 37 lines in your changes missing coverage. Please review.
✅ Project coverage is 43.53%. Comparing base (da61727) to head (2dd1478).
⚠️ Report is 23 commits behind head on main.

Files with missing lines Patch % Lines
cmd/install/install.go 30.18% 37 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8725      +/-   ##
==========================================
+ Coverage   43.37%   43.53%   +0.15%     
==========================================
  Files         771      771              
  Lines       95718    95753      +35     
==========================================
+ Hits        41520    41683     +163     
+ Misses      51313    51172     -141     
- Partials     2885     2898      +13     
Files with missing lines Coverage Δ
cmd/install/install_render.go 61.94% <100.00%> (+5.64%) ⬆️
cmd/install/install.go 68.89% <30.18%> (+5.87%) ⬆️

... and 2 files with indirect coverage changes

Flag Coverage Δ
cmd-support 37.20% <47.88%> (+0.32%) ⬆️
cpo-hostedcontrolplane 45.51% <ø> (+0.29%) ⬆️
cpo-other 45.10% <ø> (ø)
hypershift-operator 53.65% <ø> (ø)
other 32.08% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@shubhadapaithankar
shubhadapaithankar force-pushed the AROSLSRE-1158-add-install-scope-flag branch from ed5f298 to ff45f66 Compare June 11, 2026 21:52

@celebdor celebdor left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR! The approach makes sense given the container constraints (no kubectl available in the Helm hook image).

The hypershift install render subcommand already defines an Outputs type with OutputAll, OutputCRDs, and OutputResources constants, along with validation logic in ValidateRender(). This PR duplicates those values as raw strings in both the validation switch and the scope conditionals.

I'd suggest reusing the existing type by adding methods to it:

func (o Outputs) IsValid() bool {
    switch o {
    case OutputAll, OutputCRDs, OutputResources:
        return true
    default:
        return false
    }
}

func (o Outputs) IncludesCRDs() bool {
    return o == OutputAll || o == OutputCRDs
}

func (o Outputs) IncludesResources() bool {
    return o == OutputAll || o == OutputResources
}

Then the install path becomes:

scope := Outputs(opts.InstallScope)
if scope == "" {
    scope = OutputAll
}

if scope.IncludesCRDs() {
    // ...
}
if scope.IncludesResources() {
    // ...
}

And the validation simplifies to:

if o.InstallScope != "" && !Outputs(o.InstallScope).IsValid() {
    errs = append(errs, fmt.Errorf("invalid --install-scope value %q: must be '%s', '%s', or '%s'", o.InstallScope, OutputAll, OutputCRDs, OutputResources))
}

This also benefits the render path — its switch and validation can use the same methods, and the sets import can be dropped.

Additionally, the --outputs scope filtering on the render side has no test coverage today either. Since both paths would now share the same methods, adding a test that calls RenderHyperShiftOperator with each scope value and asserts CRDs vs resources in the output (using *apiextensionsv1.CustomResourceDefinition type checks) would cover the logic for both commands. I prototyped this locally — happy to share the test if helpful.

@celebdor

Copy link
Copy Markdown
Collaborator

I prototyped the aforementioned refactor and tests at celebdor/hypershift@prototype/install-scope-dry. Feel free to disregard, cherry-pick or adapt as you see fit.

@shubhadapaithankar
shubhadapaithankar force-pushed the AROSLSRE-1158-add-install-scope-flag branch 2 times, most recently from 90f713b to 67b79f6 Compare June 11, 2026 22:34
@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

Thanks @celebdor for the review and the prototype! Addressed all feedback:

  • Refactored to reuse the existing \Outputs\ type from \install_render.go\ with \IsValid(), \IncludesCRDs(), \IncludesResources()\ helper methods
  • Both \install.go\ and \install_render.go\ now use the shared helpers (dropped \sets\ import from render path)
  • Added unit tests: 4 validation cases in \TestOptions_Validate\ for --install-scope\ + \TestRenderOutputsScope\ integration test that verifies CRD vs resource filtering via \RenderHyperShiftOperator\
  • All CI passing, Codecov green

@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

@Nirshal @sdminonne friendly ping - could you take a look when you get a chance? Small change adding --install-scope flag to split CRD vs resource installation. Tests included, celebdor's feedback addressed.

@shubhadapaithankar
shubhadapaithankar force-pushed the AROSLSRE-1158-add-install-scope-flag branch 4 times, most recently from 917d4d5 to a9f2c29 Compare June 22, 2026 18:14

@celebdor celebdor left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm
Thanks for the changes

@celebdor

Copy link
Copy Markdown
Collaborator

Oh. I just realized that it decreases the codecov

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jun 26, 2026
@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/retest e2e-azure-v2-self-managed

@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/retest

@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/retest e2e-azure-v2-self-managed

@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/verified by @shubhadapaithankar

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jul 7, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@shubhadapaithankar: This PR has been marked as verified by @shubhadapaithankar.

Details

In response to this:

/verified by @shubhadapaithankar

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Add a new --install-scope flag to the hypershift install command that
controls which subset of manifests are applied:

- "all" (default): installs CRDs and resources (existing behavior)
- "crds": installs only CRDs
- "resources": installs only resources (operator deployment and RBAC)

Reuses the existing Outputs type from the render subcommand, adding
IsValid(), IncludesCRDs(), and IncludesResources() helper methods.
Both the install and render paths now use the shared methods, and the
render path's switch statement is replaced with the same conditional
pattern. The sets import is dropped.

Includes unit tests for validation (valid/invalid scope values),
Outputs helper methods (all enum values + edge cases), and render
output filtering (verifying CRDs vs resources in output).

This enables consumers to split the hypershift install into phases,
allowing CRD-dependent manifests to be applied between the CRD
installation and operator startup.

Ref: https://redhat.atlassian.net/browse/AROSLSRE-1158

Co-authored-by: celebdor <celebdor@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@shubhadapaithankar
shubhadapaithankar force-pushed the AROSLSRE-1158-add-install-scope-flag branch from 48338ef to 2dd1478 Compare July 8, 2026 15:27
@openshift-ci-robot openshift-ci-robot removed the verified Signifies that the PR passed pre-merge verification criteria label Jul 8, 2026
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jul 8, 2026
@celebdor

celebdor commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jul 8, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aks
/test e2e-aws
/test e2e-aws-upgrade-hypershift-operator
/test e2e-azure-v2-self-managed
/test e2e-kubevirt-aws-ovn-reduced
/test e2e-v2-aws
/test e2e-v2-gke

@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/verified

@openshift-ci-robot

Copy link
Copy Markdown

@shubhadapaithankar: The /verified command must be used with one of the following actions: by, later, remove, or bypass. See https://docs.ci.openshift.org/docs/architecture/jira/#premerge-verification for more information.

Details

In response to this:

/verified

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/retest e2e-aks

@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/verified by @shubhadapaithankar

@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/retest e2e-aks

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jul 8, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@shubhadapaithankar: This PR has been marked as verified by @shubhadapaithankar.

Details

In response to this:

/verified by @shubhadapaithankar

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/test e2e-aks

@hypershift-jira-solve-ci

Copy link
Copy Markdown
Contributor

Now I have the complete picture. Here is the final report:

Test Failure Analysis: ci/prow/e2e-aks — PR #8725

Job: pull-ci-openshift-hypershift-main-e2e-aks
Build ID: 2074943581054832640
Target: e2e-aks
Result: 17 failures out of 91 tests (25 skipped, 49 passed)

Failed Tests (all share identical root cause)

Test Duration Failure Mode
TestCreateCluster 1460s ExternalDNSHostNotReachable
TestCreateClusterCustomConfig 1447s ExternalDNSHostNotReachable
TestCreateClusterHABreakGlassCredentials 1529s ExternalDNSHostNotReachable
TestAutoscaling 1533s ExternalDNSHostNotReachable
TestAzureScheduler 1518s ExternalDNSHostNotReachable
TestUpgradeControlPlane 1558s ExternalDNSHostNotReachable
TestNodePool 0s ExternalDNSHostNotReachable

Passing Tests (do not require DNS resolution or worker nodes)

  • TestHAEtcdChaos (667s) — uses zero workers
  • TestPullSecretUnavailable (687s) — uses zero workers
  • TestCreateClusterDefaultSecurityContextUID (241s)
  • TestNodePoolMultiArch (0s)

Root Cause

Expired/invalid Azure AD client secret for ExternalDNS service principal.

The external-dns pod was running but continuously failing to authenticate to Azure DNS API with error code AADSTS7000215: Invalid client secret provided. Every 60 seconds from 20:16:02Z through 20:34:16Z (18+ minutes of continuous failure), external-dns attempted to refresh its OAuth2 token against Azure AD endpoint login.microsoftonline.com for app ID 9de86ce0-995b-4731-93d2-24849ecae5e3 in tenant 520cf09d-78ff-44ed-a731-abd623e73b09, and every attempt was rejected with HTTP 401.

Because external-dns could never authenticate, it could never create DNS A/CNAME records in Azure DNS zone aks-e2e.hypershift.azure.devcluster.openshift.com. Without DNS records, every hosted cluster's API endpoint (e.g., api-control-plane-upgrade-gsckp.aks-e2e.hypershift.azure.devcluster.openshift.com) resolved to no such host, causing the ExternalDNSReachable=False and Available=False (KASLoadBalancerNotReachable) conditions on all hosted clusters.

This is a CI infrastructure credential issue, NOT a regression caused by PR #8725. The PR only adds a new --install-scope flag to hypershift install with a default value of all, which preserves the existing behavior (install both CRDs and resources). The code changes are purely additive — the filterManifestsByScope() function returns all CRDs and all resources when scope is all. The install log confirms the operator deployed successfully and external-dns was configured with the correct provider/domain-filter settings. The failure is that the credential secret itself (mounted at /etc/provider/credentials in the external-dns pod) contains an expired or rotated client secret.

Recommendations

  1. Rotate the Azure AD client secret for app registration 9de86ce0-995b-4731-93d2-24849ecae5e3 in the CI infrastructure. Update the corresponding Prow secret that provides --external-dns-credentials to the hypershift install step.

  2. Re-run the e2e-aks job after the credential is rotated — /retest on the PR should be sufficient once the secret is fixed.

  3. Verify the secret is not expired by checking the App Registration in Azure Portal → Certificates & secrets → Client secrets for the app 9de86ce0-995b-4731-93d2-24849ecae5e3 in tenant 520cf09d-78ff-44ed-a731-abd623e73b09.

  4. Consider adding credential validity monitoring — an alert on AADSTS7000215 errors in external-dns logs would catch this sooner in CI.

  5. This failure is unrelated to PR AROSLSRE-1158: add --install-scope flag to hypershift install #8725 — the PR can be merged once the credential issue is fixed and e2e-aks passes on re-run.

Evidence

# Source Detail
1 external-dns-87c5d7ff5-5k6ps container log 27 consecutive AADSTS7000215: Invalid client secret provided errors from 20:16:02Z to 20:34:16Z, one per minute. Azure AD rejected every token refresh attempt for app 9de86ce0-995b-4731-93d2-24849ecae5e3.
2 build-log.txt All 7 failing tests report identical condition: ExternalDNSReachable=False: ExternalDNSHostNotReachable(lookup api-{name}.aks-e2e.hypershift.azure.devcluster.openshift.com ... no such host)
3 build-log.txt All 7 failing tests also report: Available=False: KASLoadBalancerNotReachable — DNS resolution fails so the API server can never be reached
4 hypershift-install build-log.txt Operator install succeeded: deployment "operator" successfully rolled out (line 405). External-dns deployment was applied with correct config: --external-dns-provider=azure, --external-dns-domain-filter=aks-e2e.hypershift.azure.devcluster.openshift.com
5 junit_operator.xml Test phase failed: pod e2e-aks-hypershift-azure-run-e2e exited with code 1. 17 failures out of 91 tests.
6 PR #8725 diff Changes are purely additive: adds --install-scope flag with default all. filterManifestsByScope(crds, objects, OutputAll) returns all CRDs and all objects — identical behavior to pre-PR code. No changes to external-dns configuration, credentials handling, or DNS logic.
7 Passing tests TestHAEtcdChaos and TestPullSecretUnavailable passed — both use zero worker nodes and don't validate ExternalDNSReachable, confirming the operator itself works correctly.

@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/retest-required

@shubhadapaithankar

Copy link
Copy Markdown
Contributor Author

/retest

@openshift-ci

openshift-ci Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

@shubhadapaithankar: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@openshift-merge-bot
openshift-merge-bot Bot merged commit 3fc211a into openshift:main Jul 9, 2026
39 checks passed
@shubhadapaithankar
shubhadapaithankar deleted the AROSLSRE-1158-add-install-scope-flag branch July 9, 2026 05:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. area/cli Indicates the PR includes changes for CLI area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants