Skip to content

CNTRLPLANE-2205: cmd/aws: fix managed role handling and auto-detect on destroy - #7373

Merged
openshift-merge-bot[bot] merged 2 commits into
openshift:mainfrom
sjenning:e2e-shared-role-3
Dec 15, 2025
Merged

CNTRLPLANE-2205: cmd/aws: fix managed role handling and auto-detect on destroy#7373
openshift-merge-bot[bot] merged 2 commits into
openshift:mainfrom
sjenning:e2e-shared-role-3

Conversation

@sjenning

@sjenning sjenning commented Dec 11, 2025

Copy link
Copy Markdown
Contributor

#7356 got reverted.

This PR contains two of the three commits in that original PR, dropping the commit that caused CI issues by actually enabling it in CI, which didn't work due to #7356.

However, thses fixes to the --shared-role functionality in cmd need to be merged, independent of CI enabling of this feature.


Note

Auto-detect and delete a shared IAM role during AWS destroy (fallback to per-component roles), remove the --shared-role flag/field, adjust IAM deletion APIs, and allow attaching ROSA managed policies when creating a shared role.

  • AWS Destroy (CLI/Core):
    • Remove --shared-role flag and AWSPlatformDestroyOptions.SharedRole field.
    • IAM destroy now auto-detects: try deleting "<infraID>-shared-role"; if found, stop; otherwise delete individual component roles.
  • IAM Deletion Logic:
    • DestroyOIDCRole now returns (removed bool, error); DestroyOIDCRoleWithRetry(name) updated accordingly.
    • Detach managed policies and delete inline policies before role deletion.
    • Update shared VPC role deletions to new signature.
  • IAM Creation (shared role):
    • When UseROSAManagedPolicies, attach ROSA managed policies to the shared role; otherwise add inline policies.
    • Add corresponding log messages.

Written by Cursor Bugbot for commit 0f3e8b2. This will update automatically on new commits. Configure here.

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

openshift-ci-robot commented Dec 11, 2025

Copy link
Copy Markdown

@sjenning: This pull request references CNTRLPLANE-2205 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 story to target the "4.21.0" version, but no target version was set.

Details

In response to this:

#7356 got reverted.

This PR contains two of the three commits in that original PR, dropping the commit that caused CI issues by actually enabling it in CI, which didn't work due to #7356.

However, thses fixes to the --shared-role functionality in cmd need to be merged, independent of CI enabling of this feature.

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 added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Dec 11, 2025
@openshift-ci

openshift-ci Bot commented Dec 11, 2025

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@coderabbitai

coderabbitai Bot commented Dec 11, 2025

Copy link
Copy Markdown
Contributor

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Removed the SharedRole option from AWS destroy paths, changed DestroyOIDCRole/DestroyOIDCRoleWithRetry to return a removal boolean, updated callers to short-circuit when a shared role is removed, and added conditional attachment of ROSA managed policies instead of always creating inline policies.

Changes

Cohort / File(s) Summary
CLI & option struct updates
cmd/cluster/aws/destroy.go, cmd/cluster/core/destroy.go, cmd/infra/aws/destroy_iam.go
Removed the SharedRole flag/field from CLI registration and option structs; callers no longer set or rely on SharedRole.
OIDC role deletion API & call sites
cmd/infra/aws/destroy_iam.go
Changed DestroyOIDCRole signature to (...) (removed bool, reterr error) and DestroyOIDCRoleWithRetry to remove includeAssumePolicy parameter; updated callers (DestroyOIDCResources, DestroySharedVPCRoles, retries) to use the boolean to short-circuit flow when shared role is removed and adjusted error propagation.
ROSA managed policy handling
cmd/infra/aws/iam.go
Added conditional logic: when UseROSAManagedPolicies is true and a ROSA policy ARN is present, attach the ROSA managed policy to the shared OIDC role; otherwise create/update an inline policy per binding. Logging adjusted to reflect the chosen path.
Module file
go.mod
Module metadata updated (file touched in diff).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

  • Pay attention to all call sites of the updated signatures in cmd/infra/aws/destroy_iam.go to ensure boolean return is handled consistently.
  • Verify the new early-return behavior avoids unintended skips of cleanup steps.
  • Confirm ROSA-managed vs inline policy branches correctly select and log the chosen action.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

@openshift-ci

openshift-ci Bot commented Dec 11, 2025

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: sjenning

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added 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/platform/aws PR/issue for AWS (AWSPlatform) platform and removed do-not-merge/needs-area labels Dec 11, 2025
Original commit that introduced the shared role did not include
handling for using ROSA managed policies.  The commit adds code
to handle it.
@sjenning

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Dec 12, 2025

Copy link
Copy Markdown
Contributor
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@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

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 443ab62 and ebb68d4.

📒 Files selected for processing (3)
  • cmd/cluster/aws/destroy.go (0 hunks)
  • cmd/infra/aws/destroy_iam.go (7 hunks)
  • cmd/infra/aws/iam.go (1 hunks)
💤 Files with no reviewable changes (1)
  • cmd/cluster/aws/destroy.go
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.

Files:

  • cmd/infra/aws/iam.go
  • cmd/infra/aws/destroy_iam.go
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Red Hat Konflux / hypershift-operator-main-on-pull-request
  • GitHub Check: Red Hat Konflux / hypershift-cli-mce-211-on-pull-request
  • GitHub Check: Red Hat Konflux / hypershift-release-mce-211-on-pull-request
🔇 Additional comments (4)
cmd/infra/aws/iam.go (1)

1032-1056: LGTM!

The conditional logic properly differentiates between ROSA managed policies and inline policies. Error handling and logging are appropriate for each path. Bindings without a rosaManagedPolicyARN (like karpenterPolicy) will correctly fall back to inline policies.

cmd/infra/aws/destroy_iam.go (3)

149-158: LGTM!

The auto-detection approach is a clean improvement - it eliminates the need for a SharedRole configuration flag during destruction by probing for the shared role first and short-circuiting if found. This simplifies the API and makes the destroy flow self-adapting.


208-277: LGTM!

The new return signature (removed bool, reterr error) enables clean auto-detection of shared vs individual roles. The semantics are clear: removed=true indicates a role was found and deleted, removed=false with nil error indicates the role didn't exist.


377-383: LGTM!

The calls correctly use the new DestroyOIDCRole signature. Ignoring the removed return value is appropriate here since the function is performing cleanup regardless of whether roles existed.

Comment thread cmd/infra/aws/destroy_iam.go Outdated
@sjenning
sjenning marked this pull request as ready for review December 12, 2025 16:57
@openshift-ci-robot

openshift-ci-robot commented Dec 12, 2025

Copy link
Copy Markdown

@sjenning: This pull request references CNTRLPLANE-2205 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 story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

#7356 got reverted.

This PR contains two of the three commits in that original PR, dropping the commit that caused CI issues by actually enabling it in CI, which didn't work due to #7356.

However, thses fixes to the --shared-role functionality in cmd need to be merged, independent of CI enabling of this feature.


[!NOTE]
Cursor Bugbot is generating a summary for commit fff2699. Configure here.

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 removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Dec 12, 2025
@openshift-ci-robot

openshift-ci-robot commented Dec 12, 2025

Copy link
Copy Markdown

@sjenning: This pull request references CNTRLPLANE-2205 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 story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

#7356 got reverted.

This PR contains two of the three commits in that original PR, dropping the commit that caused CI issues by actually enabling it in CI, which didn't work due to #7356.

However, thses fixes to the --shared-role functionality in cmd need to be merged, independent of CI enabling of this feature.


[!NOTE]
Auto-detect and delete a shared IAM role first during destroy (fall back to component roles) and attach ROSA managed policies when creating a shared role; remove the --shared-role flag and update IAM deletion APIs.

  • IAM Destroy (AWS):
    • Auto-detect shared vs component roles: try deleting infraID-shared-role first; if present, stop; otherwise delete individual roles (openshift-ingress, image-registry, aws-ebs-csi-driver-controller, cloud-controller, node-pool, control-plane-operator, cloud-network-config-controller, kms-provider, karpenter).
    • Remove SharedRole option/flag from cmd/infra/aws destroy-iam; stop passing it from cmd/cluster/aws/destroy.go.
    • Update APIs: DestroyOIDCRole now returns (removed bool, error) and DestroyOIDCRoleWithRetry(name) drops includeAssumePolicy; adjust all call sites incl. DestroySharedVPCRoles.
  • IAM Create (AWS):
    • CreateSharedOIDCRole: attach ROSA managed policies when UseROSAManagedPolicies is enabled; otherwise add inline policies; retain optional assume-role policy when needed.

Written by Cursor Bugbot for commit fff2699. This will update automatically on new commits. Configure here.

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.

Comment thread cmd/cluster/aws/destroy.go
@openshift-ci
openshift-ci Bot requested review from jparrill and muraee December 12, 2025 17:05
We added a --shared-role flag to the iam destroy path, but this creates
and issue where the create and destroy must be run with the same flags,
otherwise the cluster doesn't clean up properly.

We can detect if a cluster was created with --shared-role in the destory
path so just Do The Right Thing and remove the flag.
@openshift-ci-robot

openshift-ci-robot commented Dec 12, 2025

Copy link
Copy Markdown

@sjenning: This pull request references CNTRLPLANE-2205 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 story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

#7356 got reverted.

This PR contains two of the three commits in that original PR, dropping the commit that caused CI issues by actually enabling it in CI, which didn't work due to #7356.

However, thses fixes to the --shared-role functionality in cmd need to be merged, independent of CI enabling of this feature.


[!NOTE]
Auto-detect and delete a shared IAM role during AWS destroy (fallback to per-component roles), remove the --shared-role flag/field, adjust IAM deletion APIs, and allow attaching ROSA managed policies when creating a shared role.

  • AWS Destroy (CLI/Core):
    • Remove --shared-role flag and AWSPlatformDestroyOptions.SharedRole field.
    • IAM destroy now auto-detects: try deleting "<infraID>-shared-role"; if found, stop; otherwise delete individual component roles.
  • IAM Deletion Logic:
    • DestroyOIDCRole now returns (removed bool, error); DestroyOIDCRoleWithRetry(name) updated accordingly.
    • Detach managed policies and delete inline policies before role deletion.
    • Update shared VPC role deletions to new signature.
  • IAM Creation (shared role):
    • When UseROSAManagedPolicies, attach ROSA managed policies to the shared role; otherwise add inline policies.
    • Add corresponding log messages.

Written by Cursor Bugbot for commit 0f3e8b2. This will update automatically on new commits. Configure here.

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.

@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: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
cmd/infra/aws/destroy_iam.go (1)

192-205: Propagate caller context (don’t use context.Background()), and avoid string-matching DeleteConflict.
Using context.Background() makes destroy-iam ignore cancellation/timeouts from the command context and can hang up to 3 minutes after the user cancels. Also, strings.Contains(err.Error(), "DeleteConflict") is fragile; prefer awserr.Error code matching.

-// DestroyOIDCRoleWithRetry retries the entire DestroyOIDCRole operation if it fails due to attached policies
-func (o *DestroyIAMOptions) DestroyOIDCRoleWithRetry(client iamiface.IAMAPI, name string) error {
-	return wait.PollUntilContextTimeout(context.Background(), 10*time.Second, 3*time.Minute, true, func(ctx context.Context) (bool, error) {
+// DestroyOIDCRoleWithRetry retries the entire DestroyOIDCRole operation if it fails due to attached policies
+func (o *DestroyIAMOptions) DestroyOIDCRoleWithRetry(ctx context.Context, client iamiface.IAMAPI, name string) error {
+	return wait.PollUntilContextTimeout(ctx, 10*time.Second, 3*time.Minute, true, func(ctx context.Context) (bool, error) {
 		_, err := o.DestroyOIDCRole(client, name)
 		if err != nil {
-			// Check if the error message indicates a delete conflict
-			if strings.Contains(err.Error(), "DeleteConflict") {
+			// Retry when IAM reports a delete conflict (typically due to still-attached policies)
+			if aerr, ok := err.(awserr.Error); ok && aerr.Code() == "DeleteConflict" {
 				o.Log.Info("Role deletion failed due to attached policies, retrying entire operation", "role", fmt.Sprintf("%s-%s", o.InfraID, name))
 				return false, nil
 			}
 			return false, err
 		}
 		return true, nil
 	})
 }

(And update the call site at Line 160 accordingly.)

🧹 Nitpick comments (1)
cmd/infra/aws/destroy_iam.go (1)

208-277: Good API change returning (removed bool, error); consider paginating IAM policy listings.
Returning removed cleanly supports the shared-role short-circuit. One concern: ListAttachedRolePolicies and ListRolePolicies are paginated; a role with >1 page of policies will not be fully cleaned up and DeleteRole can keep failing with DeleteConflict.

-	attachedPolicies, err := client.ListAttachedRolePolicies(&iam.ListAttachedRolePoliciesInput{
-		RoleName: aws.String(roleName),
-	})
-	if err != nil {
-		return false, fmt.Errorf("failed to list attached policies for role %s: %w", roleName, err)
-	}
-
-	for _, policy := range attachedPolicies.AttachedPolicies {
-		_, err = client.DetachRolePolicy(&iam.DetachRolePolicyInput{
-			PolicyArn: policy.PolicyArn,
-			RoleName:  aws.String(roleName),
-		})
-		if err != nil {
-			return false, fmt.Errorf("failed to detach policy %s from role %s: %w", *policy.PolicyArn, roleName, err)
-		}
-		o.Log.Info("Detached role policy", "role", roleName, "policy", *policy.PolicyArn)
-	}
+	err = client.ListAttachedRolePoliciesPages(
+		&iam.ListAttachedRolePoliciesInput{RoleName: aws.String(roleName)},
+		func(page *iam.ListAttachedRolePoliciesOutput, lastPage bool) bool {
+			for _, policy := range page.AttachedPolicies {
+				_, detachErr := client.DetachRolePolicy(&iam.DetachRolePolicyInput{
+					PolicyArn: policy.PolicyArn,
+					RoleName:  aws.String(roleName),
+				})
+				if detachErr != nil {
+					reterr = fmt.Errorf("failed to detach policy %s from role %s: %w", aws.StringValue(policy.PolicyArn), roleName, detachErr)
+					return false
+				}
+				o.Log.Info("Detached role policy", "role", roleName, "policy", aws.StringValue(policy.PolicyArn))
+			}
+			return !lastPage
+		},
+	)
+	if err != nil {
+		return false, fmt.Errorf("failed to list attached policies for role %s: %w", roleName, err)
+	}
+	if reterr != nil {
+		return false, reterr
+	}

(Same idea for ListRolePolicies via ListRolePoliciesPages.)

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between ebb68d4 and 0f3e8b2.

📒 Files selected for processing (3)
  • cmd/cluster/aws/destroy.go (0 hunks)
  • cmd/cluster/core/destroy.go (0 hunks)
  • cmd/infra/aws/destroy_iam.go (7 hunks)
💤 Files with no reviewable changes (2)
  • cmd/cluster/core/destroy.go
  • cmd/cluster/aws/destroy.go
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.

Files:

  • cmd/infra/aws/destroy_iam.go
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Red Hat Konflux / hypershift-operator-main-on-pull-request
  • GitHub Check: Red Hat Konflux / hypershift-release-mce-211-on-pull-request
  • GitHub Check: Red Hat Konflux / hypershift-cli-mce-211-on-pull-request
  • GitHub Check: Cursor Bugbot
🔇 Additional comments (2)
cmd/infra/aws/destroy_iam.go (2)

377-382: Updated callers for new (removed bool, error) signature look consistent.
No issues with ignoring the boolean here since you always want to attempt both role deletions.


149-186: Shared-role short-circuit and role-name conventions verified as correct.

The destroy logic properly tries ${infraID}-shared-role first and returns early when deleted, saving API calls. All ten per-component role-name suffixes (openshift-ingress, openshift-image-registry, aws-ebs-csi-driver-controller, cloud-controller, node-pool, control-plane-operator, cloud-network-config-controller, kms-provider, karpenter) exactly match the bindings created in CreateOIDCResources. The implementation gracefully handles missing roles by returning (false, nil) when a role doesn't exist, so unconditionally attempting to delete conditional roles (karpenter if not requested, kms-provider if no KMS key) poses no issue.

@sjenning sjenning added the acknowledge-critical-fixes-only Indicates if the issuer of the label is OK with the policy. label Dec 12, 2025
@sjenning

Copy link
Copy Markdown
Contributor Author

/override ci/prow/e2e-aws

failure due to branching and needing #7315

@openshift-ci

openshift-ci Bot commented Dec 12, 2025

Copy link
Copy Markdown
Contributor

@sjenning: Overrode contexts on behalf of sjenning: ci/prow/e2e-aws

Details

In response to this:

/override ci/prow/e2e-aws

failure due to branching and needing #7315

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.

@bryan-cox

Copy link
Copy Markdown
Member

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Dec 12, 2025
@sjenning

Copy link
Copy Markdown
Contributor Author

also for aks

/override ci/prow/e2e-aks

@openshift-ci

openshift-ci Bot commented Dec 12, 2025

Copy link
Copy Markdown
Contributor

@sjenning: Overrode contexts on behalf of sjenning: ci/prow/e2e-aks

Details

In response to this:

also for aks

/override ci/prow/e2e-aks

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.

@sjenning

Copy link
Copy Markdown
Contributor Author

/override ci/prow/e2e-kubevirt-aws-ovn-reduced

/hold

for #7315 to merge and not retest

@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 Dec 12, 2025
@openshift-ci

openshift-ci Bot commented Dec 12, 2025

Copy link
Copy Markdown
Contributor

@sjenning: Overrode contexts on behalf of sjenning: ci/prow/e2e-kubevirt-aws-ovn-reduced

Details

In response to this:

/override ci/prow/e2e-kubevirt-aws-ovn-reduced

/hold

for #7315 to merge and not retest

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.

@sjenning

Copy link
Copy Markdown
Contributor Author

/hold cancel

/verified by @sjenning

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Dec 15, 2025
@openshift-ci-robot

Copy link
Copy Markdown

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

Details

In response to this:

/hold cancel

/verified by @sjenning

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 removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Dec 15, 2025
@openshift-ci

openshift-ci Bot commented Dec 15, 2025

Copy link
Copy Markdown
Contributor

@sjenning: 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 e420fa6 into openshift:main Dec 15, 2025
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

acknowledge-critical-fixes-only Indicates if the issuer of the label is OK with the policy. 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/platform/aws PR/issue for AWS (AWSPlatform) platform 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.

3 participants