Skip to content

CNTRLPLANE-3646: wire up AWS v2 e2e lifecycle test coverage - #9174

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
ironcladlou:ws/e2e-v2-aws
Jul 31, 2026
Merged

CNTRLPLANE-3646: wire up AWS v2 e2e lifecycle test coverage#9174
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
ironcladlou:ws/e2e-v2-aws

Conversation

@ironcladlou

@ironcladlou ironcladlou commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Add AWS platform lifecycle support for v2 e2e tests with a single public cluster variant for the initial implementation. The test matrix uses !lifecycle || hosted-cluster-aws to match existing prow step-registry coverage and add hosted-cluster-aws as lifecycle proof. Backwards compatible with existing step-registry workflow.

EXTRA_ARGS provides a generic flag passthrough for cluster creation arguments used for local development.

Summary by CodeRabbit

  • New Features
    • Added AWS support to the end-to-end lifecycle test framework, including an AWS public-cluster test matrix.
    • Enabled runtime selection of the end-to-end test binary (via E2EV2_BIN_DIR) and hosted-cluster namespace (via HYPERSHIFT_NAMESPACE).
  • Bug Fixes
    • Updated guest create/destroy/dump and test execution to consistently pass the selected hypershift namespace to the underlying CLI, defaulting to clusters when unset.

@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 Jul 29, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 29, 2026

Copy link
Copy Markdown

@ironcladlou: This pull request references CNTRLPLANE-3646 which is a valid jira issue.

Details

In response to this:

Add AWS platform lifecycle support for v2 e2e tests with a single public cluster variant for the initial implementation. The test matrix uses !lifecycle || hosted-cluster-aws to match existing prow step-registry coverage and add hosted-cluster-aws as lifecycle proof. Backwards compatible with existing step-registry workflow.

HYPERSHIFT_CREATE_EXTRA_ARGS provides a generic flag passthrough for local development without per-flag env vars or framework changes.

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 commented Jul 29, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The e2e v2 lifecycle framework now supports AWS platform configuration, including AWS-specific cluster creation arguments, test selection, lifecycle hooks, and teardown settings. Platform selection reads AWS region and zone environment variables. Guest creation, destruction, and dump commands pass a configurable hosted-cluster namespace. The test runner resolves the test binary and namespace at runtime and forwards them to test processes.

Sequence Diagram(s)

sequenceDiagram
  participant LifecycleRunner
  participant NewPlatformConfig
  participant AWSPlatformConfig
  participant HypershiftCLI
  LifecycleRunner->>NewPlatformConfig: select aws platform
  NewPlatformConfig->>AWSPlatformConfig: construct AWS configuration
  LifecycleRunner->>AWSPlatformConfig: request lifecycle arguments
  AWSPlatformConfig->>HypershiftCLI: provide AWS create and destroy arguments
Loading

Suggested reviewers: clebs, enxebre, bryan-cox

🚥 Pre-merge checks | ✅ 10 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Ipv6 And Disconnected Network Test Compatibility ⚠️ Warning AWS lifecycle now runs tests that use aws-sdk-go-v2 and AWS creds, so they require external AWS API connectivity. Mark AWS lifecycle e2e as [Skipped:Disconnected] or restrict it to connected jobs; otherwise it will fail in disconnected IPv6 CI.
✅ Passed checks (10 passed)
Check name Status Explanation
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 No added It/Describe/Context/When titles in changed files; new AWS group names are static and used only as labels/logs.
Test Structure And Quality ✅ Passed No Ginkgo specs changed; touched code is CLI/lifecycle plumbing, and the existing waits use explicit timeouts.
Topology-Aware Scheduling Compatibility ✅ Passed The PR only changes e2e lifecycle/CLI plumbing; no node selectors, anti-affinity, topology spread, PDBs, or CP/worker targeting were added.
No-Weak-Crypto ✅ Passed No weak crypto, custom crypto, or secret/token comparisons were added; the only hash use is existing SHA-256 for deterministic cluster names.
Container-Privileges ✅ Passed No changed manifests or securityContext/privileged settings; diff only updates CLI args and AWS lifecycle config.
No-Sensitive-Data-In-Logs ✅ Passed No direct secrets/PII are logged; new AWS logging only prints region/zones/tags, and other logs show cluster names or commands without secret contents.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: adding AWS v2 e2e lifecycle test coverage.
✨ 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.

@openshift-ci openshift-ci Bot added area/platform/aws PR/issue for AWS (AWSPlatform) platform area/testing Indicates the PR includes changes for e2e testing and removed do-not-merge/needs-area labels Jul 29, 2026
@openshift-ci
openshift-ci Bot requested review from clebs and enxebre July 29, 2026 21:21
@ironcladlou

ironcladlou commented Jul 29, 2026

Copy link
Copy Markdown
Contributor Author

Manual e2e validation

Platform aws
Mgmt cluster OCP 4.22.3
Release quay.io/openshift-release-dev/ocp-release@sha256:0ec3d3d152...
Node count 2
Clusters public

Steps:

  1. bin/create-guests
  2. bin/run-tests
  3. bin/destroy-guests

Results: passed — 553 passed, 0 failed, 411 skipped (25s)

Suite Tests Pass Fail Skip Time
aws-public 964 553 0 411 25s

@codecov

codecov Bot commented Jul 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 44.77%. Comparing base (60a298a) to head (2d435b1).
⚠️ Report is 33 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #9174      +/-   ##
==========================================
+ Coverage   44.70%   44.77%   +0.07%     
==========================================
  Files         775      775              
  Lines       97116    97210      +94     
==========================================
+ Hits        43415    43528     +113     
+ Misses      50707    50681      -26     
- Partials     2994     3001       +7     

see 9 files with indirect coverage changes

Flag Coverage Δ
cmd-support 38.42% <ø> (+0.03%) ⬆️
cpo-hostedcontrolplane 47.25% <ø> (+0.02%) ⬆️
cpo-other 45.45% <ø> (+0.14%) ⬆️
hypershift-operator 54.63% <ø> (ø)
other 34.32% <ø> (+0.42%) ⬆️

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.

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

🧹 Nitpick comments (1)
test/e2e/v2/cmd/run-tests/main.go (1)

33-38: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add unit coverage for the new resolution paths.

resolveTestBinary and the HYPERSHIFT_NAMESPACE fallback add behavior without corresponding tests. Add table-driven cases for configured/unconfigured values; extracting namespace resolution into a small helper would make it directly testable. As per coding guidelines, Go changes must be unit tested, and table-driven tests should be used where possible.

Also applies to: 49-52

🤖 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 `@test/e2e/v2/cmd/run-tests/main.go` around lines 33 - 38, The new resolution
logic lacks unit coverage for configured and fallback paths. Add table-driven
tests for resolveTestBinary, covering E2EV2_BIN_DIR set and unset, and extract
HYPERSHIFT_NAMESPACE fallback resolution into a small testable helper before
adding equivalent configured/unconfigured cases; keep existing defaults and
behavior unchanged.

Source: Coding guidelines

🤖 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 `@test/e2e/v2/cmd/create-guests/main.go`:
- Line 271: Ensure the create-guest argument construction around the namespace
arguments keeps cfg.namespace authoritative by appending the framework namespace
after user-provided extras or rejecting namespace overrides. Preserve consistent
namespace usage for post-create and cleanup operations, and add a
buildCreateArgs regression test covering an extra --namespace override.

In `@test/e2e/v2/lifecycle/aws.go`:
- Around line 29-43: Add focused unit tests for the AWS lifecycle implementation
beyond ParseExtraArgs: verify create and destroy argument generation, and
validate PostCreate HostedCluster patch behavior. Include a test covering the
failure path when the required public output is missing, using the existing AWS
lifecycle symbols and test conventions.
- Around line 84-89: Update PostCreate’s handling of clusterNames so a missing
“cluster-name-public” entry returns a contextual error instead of silently
succeeding. Preserve the existing postCreatePublic call and error propagation
when the required output is present.

---

Nitpick comments:
In `@test/e2e/v2/cmd/run-tests/main.go`:
- Around line 33-38: The new resolution logic lacks unit coverage for configured
and fallback paths. Add table-driven tests for resolveTestBinary, covering
E2EV2_BIN_DIR set and unset, and extract HYPERSHIFT_NAMESPACE fallback
resolution into a small testable helper before adding equivalent
configured/unconfigured cases; keep existing defaults and behavior unchanged.
🪄 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: Pro Plus

Run ID: ca92c2e0-da74-42c7-b696-d8f06890c7f7

📥 Commits

Reviewing files that changed from the base of the PR and between 60a298a and 4584b93.

📒 Files selected for processing (7)
  • test/e2e/v2/cmd/create-guests/main.go
  • test/e2e/v2/cmd/destroy-guests/main.go
  • test/e2e/v2/cmd/dump-guests/main.go
  • test/e2e/v2/cmd/run-tests/main.go
  • test/e2e/v2/lifecycle/aws.go
  • test/e2e/v2/lifecycle/platform.go
  • test/e2e/v2/lifecycle/platform_test.go

Comment thread test/e2e/v2/cmd/create-guests/main.go
Comment thread test/e2e/v2/lifecycle/aws.go
Comment thread test/e2e/v2/lifecycle/aws.go Outdated
@ironcladlou

Copy link
Copy Markdown
Contributor Author

/pipeline required

@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-4-22
/test e2e-aws-4-22
/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
/test unit
/test verify

@ironcladlou

ironcladlou commented Jul 30, 2026

Copy link
Copy Markdown
Contributor Author

/verified by manual e2e testing and existing e2e test regression analysis

Manual e2e validation

Platform aws
Mgmt cluster OCP 4.22.3
Release quay.io/openshift-release-dev/ocp-release@sha256:0ec3d3d152...
Node count 2
Clusters public

Steps:

  1. bin/create-guests
  2. bin/run-tests
  3. bin/destroy-guests

Results: passed — 553 passed, 0 failed, 411 skipped (25s)

Suite Tests Pass Fail Skip Time
aws-public 964 553 0 411 25s

@cwbotbot

cwbotbot commented Jul 30, 2026

Copy link
Copy Markdown

Test Results

e2e-aws

e2e-aks

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

Copy link
Copy Markdown

@ironcladlou: This PR has been marked as verified by manual e2e testing.

Details

In response to this:

/verified by manual e2e testing

Manual e2e validation

Platform aws
Mgmt cluster OCP 4.22.3
Release quay.io/openshift-release-dev/ocp-release@sha256:0ec3d3d152...
Node count 2
Clusters public

Steps:

  1. bin/create-guests
  2. bin/run-tests
  3. bin/destroy-guests

Results: passed — 553 passed, 0 failed, 411 skipped (25s)

Suite Tests Pass Fail Skip Time
aws-public 964 553 0 411 25s

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 test/e2e/v2/lifecycle/aws.go Outdated
cfg.zones = strings.Split(opts.Zones, ",")

cfg.additionalTags = []string{
fmt.Sprintf("expirationDate=%s", time.Now().Add(4*time.Hour).UTC().Format(time.RFC3339)),

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.

Is this necessary? AFAIK, the CI jobs can be configured to run longer as part of CI config. What is the purpose of this? Thanks

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

behavioral carryover from the v1 aws flow: https://github.com/openshift/hypershift/blob/main/test/e2e/util/options.go#L340

if our AWS tests take >4 hours that would be a big problem. That said, we probably need to audit tag handling generally in the v2 paths (e.g. #8909), we may not need this anymore. Seems benign at the moment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

For reference, the current v2 AWS tests execute in 26 seconds :)

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.

OK. So let's keep as it is now 👍

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Since I wanted to go ahead and refactor the extra args stuff in line with your suggestion and @georgelipceanu I went ahead and cut these tags out for now

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

And now I've discovered there's actually a hidden dependency on this... EnsureInfrastructureResourceTagsTest was basing its assertion on the presence of this tag. I don't think that's a great way to structure the test, but to remain less intrusive for this patch I'll restore the expirationDate tag. I guess that answers what it was really for...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Restored the tag and added a comment about why it exists and that it should be refactored away

Comment thread test/e2e/v2/cmd/create-guests/main.go Outdated
args = append(args, "--etcd-storage-class="+cfg.etcdSC)
}

args = append(args, cfg.extraCreateArgs...)

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.

Isn't this already available two lines below? We just need a way to get it to the spec.ExtraArgs. Something like it's done in this fresh PR: #8926 Note, there the flag is also called differently: EXTRA_ARGS. We should align this.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yeah, I could have mapped the env onto that struct with the same effect. The intention here is for the extra arguments to be platform agnostic. That said, I think that the way we're handling flags and environment throughout this v2 setup is a mess and needs re-thought and refactored en-masse with a new design of some kind instead of these environment variables. Thinking we need a followup to think through it and discuss holistically, otherwise it'll be more of these isolated and disjointed changes

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Went ahead and refactored to match the approach from #8926 which I agree with you and @georgelipceanu is cleaner and suits my needs

Comment thread test/e2e/v2/lifecycle/aws.go Outdated
@ironcladlou

Copy link
Copy Markdown
Contributor Author

@mgencur thanks for the feedback and discussion, I think I want to go ahead and make the changes now before merging. Just have to wait for testing...

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

openshift-ci-robot commented Jul 30, 2026

Copy link
Copy Markdown

@ironcladlou: This pull request references CNTRLPLANE-3646 which is a valid jira issue.

Details

In response to this:

Add AWS platform lifecycle support for v2 e2e tests with a single public cluster variant for the initial implementation. The test matrix uses !lifecycle || hosted-cluster-aws to match existing prow step-registry coverage and add hosted-cluster-aws as lifecycle proof. Backwards compatible with existing step-registry workflow.

HYPERSHIFT_CREATE_EXTRA_ARGS provides a generic flag passthrough for local development without per-flag env vars or framework changes.

Summary by CodeRabbit

  • New Features

  • Added AWS support to the end-to-end lifecycle test framework.

  • Added AWS public-cluster test coverage with configurable region and availability zone settings.

  • Added runtime selection of the end-to-end test binary and hosted-cluster namespace.

  • Bug Fixes

  • Cluster creation, destruction, and artifact collection now consistently target the configured namespace, defaulting to clusters when unspecified.

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: 2

🤖 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 `@test/e2e/v2/lifecycle/aws.go`:
- Around line 43-46: Update the environment lookup in the EXTRA_ARGS parsing
block to read HYPERSHIFT_CREATE_EXTRA_ARGS instead of EXTRA_ARGS, preserving the
existing strings.Fields parsing and empty-value behavior.
- Around line 26-33: Update NewAWSPlatformConfig to copy opts.Zones into
cfg.zones alongside the existing region and sharedDir assignments, so CreateArgs
preserves and emits the configured or default availability zones.
🪄 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: Pro Plus

Run ID: a2bb9906-6367-4c67-9a6d-72e4f70a5af3

📥 Commits

Reviewing files that changed from the base of the PR and between 4584b93 and 77956c3.

📒 Files selected for processing (6)
  • test/e2e/v2/cmd/create-guests/main.go
  • test/e2e/v2/cmd/destroy-guests/main.go
  • test/e2e/v2/cmd/dump-guests/main.go
  • test/e2e/v2/cmd/run-tests/main.go
  • test/e2e/v2/lifecycle/aws.go
  • test/e2e/v2/lifecycle/platform.go

Comment thread test/e2e/v2/lifecycle/aws.go
Comment thread test/e2e/v2/lifecycle/aws.go
@ironcladlou
ironcladlou force-pushed the ws/e2e-v2-aws branch 2 times, most recently from e7121d3 to eb91608 Compare July 30, 2026 15:48
Add AWS platform lifecycle support for v2 e2e tests with a single
public cluster variant for the initial implementation. The test matrix
uses !lifecycle || hosted-cluster-aws to match existing prow
step-registry coverage and add hosted-cluster-aws as lifecycle proof.
Backwards compatible with existing step-registry workflow.

EXTRA_ARGS provides a generic flag passthrough for cluster creation
arguments used for local development.

@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.

♻️ Duplicate comments (2)
test/e2e/v2/lifecycle/aws.go (2)

49-54: 🎯 Functional Correctness | 🟠 Major

Read HYPERSHIFT_CREATE_EXTRA_ARGS.

The PR contract defines HYPERSHIFT_CREATE_EXTRA_ARGS, but this code reads EXTRA_ARGS; the documented variable is silently ignored.

Proposed fix
-	if envArgs := os.Getenv("EXTRA_ARGS"); envArgs != "" {
+	if envArgs := os.Getenv("HYPERSHIFT_CREATE_EXTRA_ARGS"); envArgs != "" {
🤖 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 `@test/e2e/v2/lifecycle/aws.go` around lines 49 - 54, Update
AWSPlatformConfig.ClusterSpecs to read HYPERSHIFT_CREATE_EXTRA_ARGS instead of
EXTRA_ARGS when parsing environment-provided arguments, while preserving the
existing strings.Fields behavior and empty-value handling.

28-40: 🎯 Functional Correctness | 🟠 Major

Preserve the configured AWS zones.

NewPlatformConfig supplies AWSPlatformOptions.Zones, but this constructor never copies it into cfg.zones. CreateArgs() therefore emits --zones= and ignores HYPERSHIFT_AWS_ZONES.

Proposed fix
 func NewAWSPlatformConfig(opts AWSPlatformOptions, sharedDir string) *AWSPlatformConfig {
+	zones := make([]string, 0, 1)
+	for _, zone := range strings.Split(opts.Zones, ",") {
+		if zone = strings.TrimSpace(zone); zone != "" {
+			zones = append(zones, zone)
+		}
+	}
 	cfg := &AWSPlatformConfig{
 		region:    opts.Region,
+		zones:     zones,
 		sharedDir: sharedDir,
🤖 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 `@test/e2e/v2/lifecycle/aws.go` around lines 28 - 40, Update
NewAWSPlatformConfig to copy opts.Zones into cfg.zones when constructing
AWSPlatformConfig. Preserve the configured zones so CreateArgs emits them and
HYPERSHIFT_AWS_ZONES is honored.
🧹 Nitpick comments (1)
test/e2e/v2/lifecycle/aws.go (1)

16-28: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Document the exported AWS lifecycle API.

Add comments describing the actual behavior of the exported AWS types, constructor, and methods. In particular, document that the lifecycle hook methods currently perform no work and return nil.

As per path instructions, exported functions in test/e2e/v2 must describe actual behavior, including panic conditions.

Also applies to: 43-118

🤖 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 `@test/e2e/v2/lifecycle/aws.go` around lines 16 - 28, Document the exported AWS
lifecycle API around AWSPlatformOptions, NewAWSPlatformConfig,
AWSPlatformConfig, and its lifecycle hook methods, using Go-style comments that
state their actual behavior. Explicitly note that the lifecycle hooks perform no
work and return nil, and include any panic conditions for exported functions as
required by the path guidance.

Source: Path instructions

🤖 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.

Duplicate comments:
In `@test/e2e/v2/lifecycle/aws.go`:
- Around line 49-54: Update AWSPlatformConfig.ClusterSpecs to read
HYPERSHIFT_CREATE_EXTRA_ARGS instead of EXTRA_ARGS when parsing
environment-provided arguments, while preserving the existing strings.Fields
behavior and empty-value handling.
- Around line 28-40: Update NewAWSPlatformConfig to copy opts.Zones into
cfg.zones when constructing AWSPlatformConfig. Preserve the configured zones so
CreateArgs emits them and HYPERSHIFT_AWS_ZONES is honored.

---

Nitpick comments:
In `@test/e2e/v2/lifecycle/aws.go`:
- Around line 16-28: Document the exported AWS lifecycle API around
AWSPlatformOptions, NewAWSPlatformConfig, AWSPlatformConfig, and its lifecycle
hook methods, using Go-style comments that state their actual behavior.
Explicitly note that the lifecycle hooks perform no work and return nil, and
include any panic conditions for exported functions as required by the path
guidance.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Pro Plus

Run ID: 143ef6e8-ab4b-42df-b505-2047ce075167

📥 Commits

Reviewing files that changed from the base of the PR and between 77956c3 and e7121d3.

📒 Files selected for processing (6)
  • test/e2e/v2/cmd/create-guests/main.go
  • test/e2e/v2/cmd/destroy-guests/main.go
  • test/e2e/v2/cmd/dump-guests/main.go
  • test/e2e/v2/cmd/run-tests/main.go
  • test/e2e/v2/lifecycle/aws.go
  • test/e2e/v2/lifecycle/platform.go

@ironcladlou

Copy link
Copy Markdown
Contributor Author

/verified by manual e2e testing and CI regression analysis

Manual e2e validation

Platform aws
Mgmt cluster OCP 4.22.3
Release quay.io/openshift-release-dev/ocp-release@sha256:0ec3d3d152...
Node count 2
Clusters public

Steps:

  1. e2e-env run create (create-guests)
  2. e2e-env run sync
  3. e2e-env run test (run-tests)
  4. e2e-env run destroy (destroy-guests)

Results: passed — 552 passed, 0 failed, 416 skipped (22s)

Suite Tests Pass Fail Skip Time
aws-public 968 552 0 416 22s

@openshift-ci-robot

Copy link
Copy Markdown

@ironcladlou: This PR has been marked as verified by manual e2e testing and CI regression analysis.

Details

In response to this:

/verified by manual e2e testing and CI regression analysis

Manual e2e validation

Platform aws
Mgmt cluster OCP 4.22.3
Release quay.io/openshift-release-dev/ocp-release@sha256:0ec3d3d152...
Node count 2
Clusters public

Steps:

  1. e2e-env run create (create-guests)
  2. e2e-env run sync
  3. e2e-env run test (run-tests)
  4. e2e-env run destroy (destroy-guests)

Results: passed — 552 passed, 0 failed, 416 skipped (22s)

Suite Tests Pass Fail Skip Time
aws-public 968 552 0 416 22s

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-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jul 30, 2026
@ironcladlou

Copy link
Copy Markdown
Contributor Author

/pipeline required

@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-4-22
/test e2e-aws-4-22
/test e2e-aks
/test e2e-aws
/test e2e-aws-upgrade-hypershift-operator
/test e2e-kubevirt-aws-ovn-reduced
/test e2e-v2-aws
/test e2e-v2-azure-self-managed
/test e2e-v2-gke
/test unit
/test verify

@devguyio

Copy link
Copy Markdown
Contributor

/approve

@openshift-ci

openshift-ci Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: devguyio, ironcladlou

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 the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 30, 2026
@ironcladlou

Copy link
Copy Markdown
Contributor Author

/retest

2 similar comments
@ironcladlou

Copy link
Copy Markdown
Contributor Author

/retest

@ironcladlou

Copy link
Copy Markdown
Contributor Author

/retest

@mgencur

mgencur commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

/lgtm

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

Copy link
Copy Markdown
Contributor

Tests from second stage were triggered manually. Pipeline can be controlled only manually, until HEAD changes. Use command to trigger second stage.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD 6160c9d and 2 for PR HEAD 2d435b1 in total

@openshift-ci

openshift-ci Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

@ironcladlou: 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 60ada1e into openshift:main Jul 31, 2026
44 checks passed
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/platform/aws PR/issue for AWS (AWSPlatform) platform area/testing Indicates the PR includes changes for e2e testing 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