Skip to content

OCPBUGS-60093: fix(upsert): add desired-state hash to detect spec field removals - #7713

Merged
openshift-merge-bot[bot] merged 2 commits into
openshift:mainfrom
muraee:feat-cpov2-last-applied-annotation
Aug 7, 2026
Merged

OCPBUGS-60093: fix(upsert): add desired-state hash to detect spec field removals#7713
openshift-merge-bot[bot] merged 2 commits into
openshift:mainfrom
muraee:feat-cpov2-last-applied-annotation

Conversation

@muraee

@muraee muraee commented Feb 12, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a hypershift.openshift.io/desired-state-hash annotation containing a SHA-256 hash of the desired manifest state
  • On each reconcile, compares the hash against the stored value to detect changes that DeepDerivative cannot detect (field removals, trailing slice items, zero-value clearing)
  • Retains DeepDerivative as a fallback for drift detection (external modifications) and migration (objects without the annotation)

Details

DeepDerivative treats nil/empty fields as "don't care", making it impossible to detect when spec fields like nodeSelector, tolerations, or container args are explicitly removed. This has been a recurring class of bugs (e.g., OCPBUGS-65879).

This replaces the earlier full-JSON last-applied-configuration approach which was held due to etcd size explosion at fleet scale and security concerns from embedding Secret data in annotations. A hash (~64 bytes) has none of these costs.

The existing label-count removal workaround is preserved since hash-based detection cannot drive three-way metadata merges.

Test plan

  • Unit tests for hash stamping on create
  • Unit tests for trailing slice removal detection
  • Unit tests for nil/empty slice removal detection
  • Unit tests for idempotency (no-op on identical state)
  • Unit tests for migration force-stamp and subsequent no-op
  • Unit tests for non-self-referential hash content
  • Unit tests for deterministic JSON output
  • Unit tests for loop detector compatibility
  • Unit tests for toUnstructured field stripping
  • Fixture regeneration for CPO and hypershift-operator testdata
  • NodePool MachineTemplateBuilders test updated to account for hash annotation

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes
    • Improved reconciliation for manifest-based updates by adding desired-state hashing, reducing unnecessary changes and drift when only read-only metadata differs.
    • Refined reconciliation test behavior to account for automatically stamped desired-state hashes.
    • Updated generated manifests and fixtures to better reflect real deployed ownership and tracking metadata across components and cloud providers.
    • Enhanced startup behavior for some components, including token and certificate preparation, and expanded control-plane initialization manifests.

@openshift-ci-robot

Copy link
Copy Markdown

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

@muraee muraee changed the title fix(upsert): add last-applied-configuration annotation to detect manifest removals NO-JIRA: fix(upsert): add last-applied-configuration annotation to detect manifest removals Feb 12, 2026
@coderabbitai

coderabbitai Bot commented Feb 12, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

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 pull request adds a desired-state hash annotation to manifest creation and updates. Reconciliation compares stored and computed hashes, detects label removals, and falls back to normalized DeepDerivative comparison. Normalization ignores volatile metadata, status, and the hash annotation. Tests cover migration, idempotence, update detection, loop detection, and comparison filtering.

Sequence Diagram(s)

sequenceDiagram
  participant ApplyManifest
  participant Upsert
  participant KubernetesAPI
  ApplyManifest->>Upsert: compute and store desired-state hash
  Upsert->>KubernetesAPI: create or fetch object
  Upsert->>Upsert: compare hashes and normalized desired state
  Upsert->>KubernetesAPI: update when reconciliation detects drift
Loading

Possibly related PRs

Suggested reviewers: sjenning, clebs, enxebre, csrwng

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

Copy link
Copy Markdown

@muraee: This pull request explicitly references no jira issue.

Details

In response to this:

Summary

  • Adds a hypershift.openshift.io/last-applied-configuration annotation to ApplyManifest that stores the JSON representation of the desired manifest state after each successful apply
  • On subsequent reconciles, compares the new desired state against this annotation to detect changes that DeepDerivative cannot detect (trailing slice removals, zero-value field clearing)
  • Retains DeepDerivative as a fallback for drift detection (external modifications) and migration (objects without the annotation)
  • Fixes OCPBUGS-65879

Details

DeepDerivative has two fundamental flaws:

  1. Trailing slice items ignored: For slices, it only compares up to len(desired) items, so removing items from the end (e.g., --image-overrides args) goes undetected
  2. Zero-value heuristics: It treats nil/empty values as "don't care," so intentionally clearing a field to its zero value is also undetected

The annotation-based approach stores the full desired state as JSON on each apply. On next reconcile, a simple string comparison of desiredJSON != lastAppliedJSON catches any change including removals. Objects exceeding 128KB skip the annotation and fall back to DeepDerivative-only comparison.

For migration, objects created before this change get the annotation force-stamped on their first reconcile.

Test plan

  • Unit tests for annotation stamping on create
  • Unit tests for trailing slice removal detection
  • Unit tests for nil/empty slice removal detection
  • Unit tests for idempotency (no-op on identical state)
  • Unit tests for migration force-stamp and subsequent no-op
  • Unit tests for large object annotation skip
  • Unit tests for non-self-referential annotation content
  • Unit tests for deterministic JSON output
  • Unit tests for loop detector compatibility
  • Unit tests for toUnstructured field stripping
  • Fixture regeneration for CPO and hypershift-operator testdata
  • make lint passes
  • make vet passes
  • make test passes with race detection

🤖 Generated with Claude Code

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 requested review from csrwng and sjenning February 12, 2026 17:13
@openshift-ci openshift-ci Bot added area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release approved Indicates a PR has been approved by an approver from all required OWNERS files. area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform and removed do-not-merge/needs-area labels Feb 12, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In
`@control-plane-operator/controllers/hostedcontrolplane/testdata/azure-cloud-controller-manager/AROSwift/zz_fixture_TestControlPlaneComponents_azure_cloud_config_secret.yaml`:
- Around line 6-7: The last-applied-configuration annotation on the Secret
(annotation key hypershift.openshift.io/last-applied-configuration for Secret
name azure-cloud-config) contains embedded sensitive Secret data; remove that
annotation or replace its value with a non-sensitive placeholder in the fixture
so secret material is not stored in metadata. Locate the Secret YAML containing
the hypershift.openshift.io/last-applied-configuration annotation and either
delete the entire annotation entry or replace the embedded "cloud.conf" blob
with a sanitized placeholder (e.g., "<redacted>" or an empty object) and ensure
ownerReferences/metadata remain intact; for future fixtures prefer using
Server-Side Apply/managedFields or explicit, non-sensitive test values instead
of embedding real secret contents.

Comment thread support/upsert/apply.go

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This appears to be an extremely costly update to a large fleet that is already being stressed with etcd size explosion caused by HyperShift node pools. I don't think IBM Cloud can afford having hypershift.openshift.io/last-applied-configuration added. I would like to discuss with you all at our interlock meeting next week.

@muraee

muraee commented Feb 13, 2026

Copy link
Copy Markdown
Contributor Author

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Feb 13, 2026
@muraee muraee changed the title NO-JIRA: fix(upsert): add last-applied-configuration annotation to detect manifest removals WIP: fix(upsert): add last-applied-configuration annotation to detect manifest removals Feb 13, 2026
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Feb 13, 2026
@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Feb 21, 2026
@openshift-merge-robot

Copy link
Copy Markdown
Contributor

PR needs rebase.

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.

@muraee
muraee marked this pull request as draft April 8, 2026 09:44
muraee added a commit to muraee/hypershift that referenced this pull request Jun 26, 2026
DeepDerivative treats nil/empty fields as "don't care", making it
impossible to detect when spec fields like nodeSelector, tolerations,
or container args are explicitly removed. This has been a recurring
class of bugs (e.g., OCPBUGS-65879).

Add a SHA-256 hash of the desired manifest state as a lightweight
annotation (~64 bytes). On each reconcile the hash is computed before
metadata merging and compared against the stored value. When they
differ, an update is forced — catching removals that DeepDerivative
misses.

This replaces the earlier full-JSON last-applied-configuration
approach (PR openshift#7713) which was held due to etcd size explosion at
fleet scale and security concerns from embedding Secret data in
annotations. A hash has none of these costs.

DeepDerivative is retained as a fallback for drift detection, and
the existing label-count removal workaround is preserved since hash-
based detection cannot drive three-way metadata merges.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@muraee
muraee force-pushed the feat-cpov2-last-applied-annotation branch from edede18 to 5fb21f8 Compare June 26, 2026 15:45
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 26, 2026
@bryan-cox

Copy link
Copy Markdown
Member

/retest

@mgencur

mgencur commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

/unhold

@openshift-ci openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Aug 7, 2026
@mgencur

mgencur commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

/verified by mgencur

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

Copy link
Copy Markdown

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

Details

In response to this:

/verified by mgencur

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-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 3977578 and 2 for PR HEAD 8e047c8 in total

@openshift-ci

openshift-ci Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

@muraee: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-azure-self-managed edede18 link true /test e2e-azure-self-managed
ci/prow/verify-workflows edede18 link true /test verify-workflows

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.

@muraee

muraee commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

/retest

1 similar comment
@bryan-cox

Copy link
Copy Markdown
Member

/retest

@openshift-merge-bot
openshift-merge-bot Bot merged commit 9e00898 into openshift:main Aug 7, 2026
74 of 91 checks passed
@openshift-ci-robot

Copy link
Copy Markdown

@muraee: Jira Issue OCPBUGS-60093: Some pull requests linked via external trackers have merged:

The following pull request, linked via external tracker, has not merged:

All associated pull requests must be merged or unlinked from the Jira bug in order for it to move to the next state. Once unlinked, request a bug refresh with /jira refresh.

Jira Issue OCPBUGS-60093 has not been moved to the MODIFIED state.

This PR is marked as verified. If the remaining PRs listed above are marked as verified before merging, the issue will automatically be moved to VERIFIED after all of the changes from the PRs are available in an accepted nightly payload.

Details

In response to this:

Summary

  • Adds a hypershift.openshift.io/desired-state-hash annotation containing a SHA-256 hash of the desired manifest state
  • On each reconcile, compares the hash against the stored value to detect changes that DeepDerivative cannot detect (field removals, trailing slice items, zero-value clearing)
  • Retains DeepDerivative as a fallback for drift detection (external modifications) and migration (objects without the annotation)

Details

DeepDerivative treats nil/empty fields as "don't care", making it impossible to detect when spec fields like nodeSelector, tolerations, or container args are explicitly removed. This has been a recurring class of bugs (e.g., OCPBUGS-65879).

This replaces the earlier full-JSON last-applied-configuration approach which was held due to etcd size explosion at fleet scale and security concerns from embedding Secret data in annotations. A hash (~64 bytes) has none of these costs.

The existing label-count removal workaround is preserved since hash-based detection cannot drive three-way metadata merges.

Test plan

  • Unit tests for hash stamping on create
  • Unit tests for trailing slice removal detection
  • Unit tests for nil/empty slice removal detection
  • Unit tests for idempotency (no-op on identical state)
  • Unit tests for migration force-stamp and subsequent no-op
  • Unit tests for non-self-referential hash content
  • Unit tests for deterministic JSON output
  • Unit tests for loop detector compatibility
  • Unit tests for toUnstructured field stripping
  • Fixture regeneration for CPO and hypershift-operator testdata
  • NodePool MachineTemplateBuilders test updated to account for hash annotation

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes
  • Improved reconciliation for manifest-based updates by adding desired-state hashing, reducing unnecessary changes and drift when only read-only metadata differs.
  • Refined reconciliation test behavior to account for automatically stamped desired-state hashes.
  • Updated generated manifests and fixtures to better reflect real deployed ownership and tracking metadata across components and cloud providers.
  • Enhanced startup behavior for some components, including token and certificate preparation, and expanded control-plane initialization manifests.

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.

@muraee

muraee commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

/cherry-pick release-4.22 release-4.21 release-4.20

@openshift-cherrypick-robot

Copy link
Copy Markdown

@muraee: Failed to get PR patch from GitHub. This PR will need to be manually cherrypicked.

Error messagestatus code 406 not one of [200], body: {"message":"Sorry, the diff exceeded the maximum number of files (300). Consider using 'List pull requests files' API or locally cloning the repository instead.","errors":[{"resource":"PullRequest","field":"diff","code":"too_large"}],"documentation_url":"https://docs.github.com/rest/pulls/pulls#list-pull-requests-files","status":"406"}
Details

In response to this:

/cherry-pick release-4.22 release-4.21 release-4.20

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.

@muraee

muraee commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

/jira backport release-4.22

@openshift-ci-robot

Copy link
Copy Markdown

@muraee: The following backport issues have been created:

Queuing cherrypicks to the requested branches to be created after this PR merges:
/cherrypick release-4.22

Details

In response to this:

/jira backport release-4.22

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-cherrypick-robot

Copy link
Copy Markdown

@openshift-ci-robot: Failed to get PR patch from GitHub. This PR will need to be manually cherrypicked.

Error messagestatus code 406 not one of [200], body: {"message":"Sorry, the diff exceeded the maximum number of files (300). Consider using 'List pull requests files' API or locally cloning the repository instead.","errors":[{"resource":"PullRequest","field":"diff","code":"too_large"}],"documentation_url":"https://docs.github.com/rest/pulls/pulls#list-pull-requests-files","status":"406"}
Details

In response to this:

@muraee: The following backport issues have been created:

Queuing cherrypicks to the requested branches to be created after this PR merges:
/cherrypick release-4.22

In response to this:

/jira backport release-4.22

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.

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.

muraee added a commit to muraee/hypershift that referenced this pull request Aug 7, 2026
DeepDerivative treats nil/empty fields as "don't care", making it
impossible to detect when spec fields like nodeSelector, tolerations,
or container args are explicitly removed. This has been a recurring
class of bugs (e.g., OCPBUGS-65879).

Add a SHA-256 hash of the desired manifest state as a lightweight
annotation (~64 bytes). On each reconcile the hash is computed before
metadata merging and compared against the stored value. When they
differ, an update is forced — catching removals that DeepDerivative
misses.

This replaces the earlier full-JSON last-applied-configuration
approach (PR openshift#7713) which was held due to etcd size explosion at
fleet scale and security concerns from embedding Secret data in
annotations. A hash has none of these costs.

DeepDerivative is retained as a fallback for drift detection, and
the existing label-count removal workaround is preserved since hash-
based detection cannot drive three-way metadata merges.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
openshift-merge-bot Bot pushed a commit that referenced this pull request Aug 12, 2026
DeepDerivative treats nil/empty fields as "don't care", making it
impossible to detect when spec fields like nodeSelector, tolerations,
or container args are explicitly removed. This has been a recurring
class of bugs (e.g., OCPBUGS-65879).

Add a SHA-256 hash of the desired manifest state as a lightweight
annotation (~64 bytes). On each reconcile the hash is computed before
metadata merging and compared against the stored value. When they
differ, an update is forced — catching removals that DeepDerivative
misses.

This replaces the earlier full-JSON last-applied-configuration
approach (PR #7713) which was held due to etcd size explosion at
fleet scale and security concerns from embedding Secret data in
annotations. A hash has none of these costs.

DeepDerivative is retained as a fallback for drift detection, and
the existing label-count removal workaround is preserved since hash-
based detection cannot drive three-way metadata merges.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
redhat-chai-bot pushed a commit to redhat-chai-bot/hypershift that referenced this pull request Aug 18, 2026
DeepDerivative treats nil/empty fields as "don't care", making it
impossible to detect when spec fields like nodeSelector, tolerations,
or container args are explicitly removed. This has been a recurring
class of bugs (e.g., OCPBUGS-65879).

Add a SHA-256 hash of the desired manifest state as a lightweight
annotation (~64 bytes). On each reconcile the hash is computed before
metadata merging and compared against the stored value. When they
differ, an update is forced — catching removals that DeepDerivative
misses.

This replaces the earlier full-JSON last-applied-configuration
approach (PR openshift#7713) which was held due to etcd size explosion at
fleet scale and security concerns from embedding Secret data in
annotations. A hash has none of these costs.

DeepDerivative is retained as a fallback for drift detection, and
the existing label-count removal workaround is preserved since hash-
based detection cannot drive three-way metadata merges.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
mgencur added a commit to mgencur/hypershift that referenced this pull request Aug 25, 2026
  Add E2E v2 test covering the desired-state-hash annotation
  introduced in support/upsert.ApplyManifest (PR openshift#7713):

  - DesiredStateHashAnnotationTest: asserts every managed
    Deployment in the control plane namespace carries a valid 64-char
    hex desired-state-hash annotation
vsolanki12 pushed a commit to vsolanki12/hypershift that referenced this pull request Aug 25, 2026
DeepDerivative treats nil/empty fields as "don't care", making it
impossible to detect when spec fields like nodeSelector, tolerations,
or container args are explicitly removed. This has been a recurring
class of bugs (e.g., OCPBUGS-65879).

Add a SHA-256 hash of the desired manifest state as a lightweight
annotation (~64 bytes). On each reconcile the hash is computed before
metadata merging and compared against the stored value. When they
differ, an update is forced — catching removals that DeepDerivative
misses.

This replaces the earlier full-JSON last-applied-configuration
approach (PR openshift#7713) which was held due to etcd size explosion at
fleet scale and security concerns from embedding Secret data in
annotations. A hash has none of these costs.

DeepDerivative is retained as a fallback for drift detection, and
the existing label-count removal workaround is preserved since hash-
based detection cannot drive three-way metadata merges.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
rutvik23 pushed a commit to rutvik23/hypershift that referenced this pull request Aug 26, 2026
DeepDerivative treats nil/empty fields as "don't care", making it
impossible to detect when spec fields like nodeSelector, tolerations,
or container args are explicitly removed. This has been a recurring
class of bugs (e.g., OCPBUGS-65879).

Add a SHA-256 hash of the desired manifest state as a lightweight
annotation (~64 bytes). On each reconcile the hash is computed before
metadata merging and compared against the stored value. When they
differ, an update is forced — catching removals that DeepDerivative
misses.

This replaces the earlier full-JSON last-applied-configuration
approach (PR openshift#7713) which was held due to etcd size explosion at
fleet scale and security concerns from embedding Secret data in
annotations. A hash has none of these costs.

DeepDerivative is retained as a fallback for drift detection, and
the existing label-count removal workaround is preserved since hash-
based detection cannot drive three-way metadata merges.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
jpattara pushed a commit to jpattara/hypershift that referenced this pull request Sep 11, 2026
  Add E2E v2 test covering the desired-state-hash annotation
  introduced in support/upsert.ApplyManifest (PR openshift#7713):

  - DesiredStateHashAnnotationTest: asserts every managed
    Deployment in the control plane namespace carries a valid 64-char
    hex desired-state-hash annotation
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/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/gcp PR/issue for GCP (GCPPlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. 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.

7 participants