Skip to content

OCPBUGS-82191: Surface async GCP instance creation errors#160

Open
RadekManak wants to merge 1 commit into
openshift:mainfrom
openshift-cloud-team:mapgcp-error-surfacing
Open

OCPBUGS-82191: Surface async GCP instance creation errors#160
RadekManak wants to merge 1 commit into
openshift:mainfrom
openshift-cloud-team:mapgcp-error-surfacing

Conversation

@RadekManak

@RadekManak RadekManak commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

Make provider-side instance creation failures visible during reconciliation by checking the returned insert operation and visible in-flight operations instead of relying only on instance lookup.

Summary by CodeRabbit

  • New Features

    • Added compute operations listing to improve visibility into async instance creation.
  • Bug Fixes

    • Surface provider-side errors from async instance creation and record failures when appropriate.
    • Treat transient instance lookup 404s and in-progress prior inserts as requeueable instead of failures.
    • Requeue on instance creation conflicts (HTTP 409) to avoid spurious failures.
  • Tests

    • Expanded coverage for async workflows, requeue logic, conflict handling, and operation-error aggregation.

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

Copy link
Copy Markdown
Contributor

@RadekManak: This pull request references Jira Issue OCPBUGS-82191, which is invalid:

  • expected the bug to target the "5.0.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

Make provider-side instance creation failures visible during reconciliation by checking the returned insert operation and visible in-flight operations instead of relying only on instance lookup.

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 jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. label Apr 21, 2026
@coderabbitai

coderabbitai Bot commented Apr 21, 2026

Copy link
Copy Markdown

Walkthrough

Create flow now checks recent zone insert operations before inserting an instance, requeues for in-progress/conflict cases, records provider-side operation errors to MachineCreated, and treats InstancesGet not-found as transient. Compute service API and mocks gained zone-operations list support; tests expanded for async insert scenarios.

Changes

Cohort / File(s) Summary
Reconciler Core Logic
pkg/cloud/gcp/actuators/machine/reconciler.go
create() consults latestVisibleInsertOperation() and requeues if a prior insert is not DONE; if DONE with errors, records failed MachineCreated via recordFailedInstanceCreate() and returns error. InstancesInsert now handles HTTP 409 as requeue and inspects returned operation via operationError(). reconcileMachineWithCloudState() gained a boolean flag to treat InstancesGet not-found as transient when set. New helpers added: latestVisibleInsertOperation(), operationError(), recordFailedInstanceCreate().
Reconciler Tests
pkg/cloud/gcp/actuators/machine/reconciler_test.go
Expanded tests to cover zone-operation discovery and async insert workflows: cases for DONE-with-errors (including ZONE_RESOURCE_POOL_EXHAUSTED), RUNNING operations (requeue), wrapped 404 treated as transient (requeue), ZoneOperationsList indicating pending insert (skip insert, requeue), 409 conflict requeue, retry after prior async failure, adjusted reconcileMachineWithCloudState tests for new flag, and a new TestOperationError for error-string formatting.
Compute Service Interface
pkg/cloud/gcp/actuators/services/compute/computeservice.go
Added ZoneOperationsList(project, zone, filter, orderBy) to GCPComputeService; implementation builds service.ZoneOperations.List, applies Filter(filter) and optional OrderBy(orderBy), then .Do().
Compute Service Mock
pkg/cloud/gcp/actuators/services/compute/computeservice_mock.go
Exported mock hooks: MockZoneOperationsGet, MockInstancesGet; added MockZoneOperationsList and implemented ZoneOperationsList. Mock constructors/initialization updated to expose these hooks for tests.

Sequence Diagram

sequenceDiagram
    participant Reconciler as Reconciler
    participant ZoneOps as ZoneOperations
    participant ComputeAPI as GCP Compute API

    Reconciler->>ZoneOps: ZoneOperationsList(filter by target instance/selfLink)
    ZoneOps-->>Reconciler: Operation (found / not found)

    alt Operation exists and status != "DONE"
        Reconciler->>Reconciler: RequeueAfter
    else Operation exists and status == "DONE" and has errors
        Reconciler->>Reconciler: recordFailedInstanceCreate()
        Reconciler-->>Reconciler: Return error
    else No relevant operation or DONE without errors
        Reconciler->>ComputeAPI: InstancesInsert(instance)
        alt InstancesInsert returns 409 Conflict
            Reconciler->>Reconciler: RequeueAfter
        else InstancesInsert returns Operation
            ComputeAPI-->>Reconciler: Operation
            Reconciler->>Reconciler: operationError() check
            alt operationError present
                Reconciler->>Reconciler: recordFailedInstanceCreate()
                Reconciler-->>Reconciler: Return error
            else
                Reconciler->>Reconciler: Continue (creation in progress)
            end
        end
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

🚥 Pre-merge checks | ✅ 11 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (11 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title clearly and concisely summarizes the main change: surfacing async GCP instance creation errors, which aligns with the core modifications across all modified files.
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 The test file uses Go's standard table-driven test pattern, not Ginkgo-style tests. Test case names are static descriptive strings without dynamic content like timestamps or UUIDs.
Test Structure And Quality ✅ Passed The custom check is not applicable to this pull request because the codebase uses standard Go testing with table-driven tests, not Ginkgo testing framework.
Microshift Test Compatibility ✅ Passed The pull request does not add any Ginkgo e2e tests; all test additions use standard Go testing.T framework with unit tests only.
Single Node Openshift (Sno) Test Compatibility ✅ Passed This pull request does not add any Ginkgo e2e tests. The test files use standard Go testing framework with table-driven test cases, not Ginkgo syntax.
Topology-Aware Scheduling Compatibility ✅ Passed PR modifies only Go business logic in machine provider controller with no deployment manifests or scheduling configuration changes.
Ote Binary Stdout Contract ✅ Passed Modified files are library code without process-level stdout writes. No main(), TestMain(), suite setup, or direct stdout emission patterns found.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed Modified test files use standard Go testing package patterns, not Ginkgo e2e tests. Custom check targets new Ginkgo e2e tests only.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

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

Review rate limit: 9/10 reviews remaining, refill in 6 minutes.

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

@openshift-ci openshift-ci Bot requested review from damdo and racheljpg April 21, 2026 14:32
@openshift-ci

openshift-ci Bot commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign nrb for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found 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

@RadekManak

Copy link
Copy Markdown
Contributor Author

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Apr 21, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@RadekManak: This pull request references Jira Issue OCPBUGS-82191, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state ASSIGNED, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

/jira refresh

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

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
pkg/cloud/gcp/actuators/machine/reconciler.go (1)

462-470: Record failed-create metrics for async operation failures too.

This new return path updates conditions, but it bypasses metrics.RegisterFailedInstanceCreate, so async provider-side failures won't show up in the existing failed-create metrics/alerts.

📈 Proposed fix
 	if err := operationError(insertOp); err != nil {
+		metrics.RegisterFailedInstanceCreate(&metrics.MachineLabels{
+			Name:      r.machine.Name,
+			Namespace: r.machine.Namespace,
+			Reason:    "failed to create instance via compute service",
+		})
 		r.providerStatus.Conditions = reconcileConditions(r.providerStatus.Conditions, metav1.Condition{
 			Type:    string(machinev1.MachineCreated),
 			Reason:  machineCreationFailedReason,
 			Message: err.Error(),
 			Status:  metav1.ConditionFalse,
 		})
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/cloud/gcp/actuators/machine/reconciler.go` around lines 462 - 470, The
return path when operationError(insertOp) is true updates
r.providerStatus.Conditions but skips recording failed-create metrics; call
metrics.RegisterFailedInstanceCreate (with the same labels/context used
elsewhere for machine failures) immediately before returning from the
operationError(insertOp) branch so async/provider-side failures are counted,
keeping the existing condition update; locate the operationError(insertOp) check
in reconciler.go and add the metrics.RegisterFailedInstanceCreate invocation
prior to the fmt.Errorf return.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/cloud/gcp/actuators/machine/reconciler.go`:
- Around line 423-430: The current logic in reconciler.go's
latestVisibleInsertOperation check only skips re-create when existingOp.Status
!= "DONE" but allows a DONE operation with provider-side errors to fall through
to InstancesInsert; update the check in the reconciler (function
latestVisibleInsertOperation usage) to detect when existingOp.Status == "DONE"
and existingOp.Error != nil && len(existingOp.Error.Errors) > 0 and treat that
as a terminal failure: log the error (including existingOp.Error.Errors and
r.machine.Name), surface or return an appropriate non-retry error instead of
proceeding to InstancesInsert, and ensure any Requeue/Failure state prevents
issuing a new InstancesInsert for that same visible insert operation.

---

Nitpick comments:
In `@pkg/cloud/gcp/actuators/machine/reconciler.go`:
- Around line 462-470: The return path when operationError(insertOp) is true
updates r.providerStatus.Conditions but skips recording failed-create metrics;
call metrics.RegisterFailedInstanceCreate (with the same labels/context used
elsewhere for machine failures) immediately before returning from the
operationError(insertOp) branch so async/provider-side failures are counted,
keeping the existing condition update; locate the operationError(insertOp) check
in reconciler.go and add the metrics.RegisterFailedInstanceCreate invocation
prior to the fmt.Errorf return.
🪄 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: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d4c33b05-57d3-4057-b16a-74abdfd9d1eb

📥 Commits

Reviewing files that changed from the base of the PR and between 065e2b6 and 3441b64.

📒 Files selected for processing (4)
  • pkg/cloud/gcp/actuators/machine/reconciler.go
  • pkg/cloud/gcp/actuators/machine/reconciler_test.go
  • pkg/cloud/gcp/actuators/services/compute/computeservice.go
  • pkg/cloud/gcp/actuators/services/compute/computeservice_mock.go

Comment thread pkg/cloud/gcp/actuators/machine/reconciler.go
@RadekManak RadekManak force-pushed the mapgcp-error-surfacing branch from 3441b64 to 8e39814 Compare April 22, 2026 12:03
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@RadekManak: This pull request references Jira Issue OCPBUGS-82191, which is valid.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (5.0.0) matches configured target version for branch (5.0.0)
  • bug is in the state POST, which is one of the valid states (NEW, ASSIGNED, POST)
Details

In response to this:

Make provider-side instance creation failures visible during reconciliation by checking the returned insert operation and visible in-flight operations instead of relying only on instance lookup.

Summary by CodeRabbit

  • New Features

  • Added compute operations listing support to improve visibility into async instance inserts.

  • Bug Fixes

  • Improved handling of async insert operations, surfacing provider-side errors and requeuing appropriately.

  • Requeued instead of failing when instance lookups are temporarily unavailable.

  • Requeued on instance creation conflicts (409) instead of treating as immediate failures.

  • Tests

  • Expanded tests covering async failures, requeue scenarios, operation-error aggregation, and conflict handling.

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

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/cloud/gcp/actuators/machine/reconciler.go`:
- Around line 504-506: The current check using isNotFoundError(...) only matches
a bare *googleapi.Error and misses wrapped 404 errors; update the logic so the
code uses errors.As to detect a *googleapi.Error (or modify isNotFoundError to
internally use errors.As) and then checks err.Code == 404 before returning
&machinecontroller.RequeueAfterError{RequeueAfter: requeueAfterSeconds *
time.Second}; apply this change for all spots that currently call
isNotFoundError for requeue handling (the 404 requeue branches in reconciler.go,
e.g., the places around the RequeueAfterError returns) so wrapped errors are
handled consistently like the 409 handling that already uses errors.As.
🪄 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: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 0f81abaf-5607-41b7-b590-375f1cedc8de

📥 Commits

Reviewing files that changed from the base of the PR and between 3441b64 and 8e39814.

📒 Files selected for processing (4)
  • pkg/cloud/gcp/actuators/machine/reconciler.go
  • pkg/cloud/gcp/actuators/machine/reconciler_test.go
  • pkg/cloud/gcp/actuators/services/compute/computeservice.go
  • pkg/cloud/gcp/actuators/services/compute/computeservice_mock.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • pkg/cloud/gcp/actuators/services/compute/computeservice.go
  • pkg/cloud/gcp/actuators/services/compute/computeservice_mock.go
  • pkg/cloud/gcp/actuators/machine/reconciler_test.go

@RadekManak RadekManak force-pushed the mapgcp-error-surfacing branch from 8e39814 to f5b6f13 Compare April 22, 2026 14:36

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/cloud/gcp/actuators/machine/reconciler.go`:
- Around line 504-506: reconcileMachineWithCloudState currently treats an
InstancesGet 404 as a transient condition and always returns a
RequeueAfterError, which causes endless retries when invoked from update();
change reconcileMachineWithCloudState signature to accept a boolean (e.g.,
treatNotFoundAsTransient bool) and only return
&machinecontroller.RequeueAfterError{...} when isNotFoundError(err) &&
treatNotFoundAsTransient is true; update all call sites so create() invokes
reconcileMachineWithCloudState(..., true) and update() invokes
reconcileMachineWithCloudState(..., false), leaving isNotFoundError and
RequeueAfterError logic intact otherwise.
🪄 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: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d9048dd5-fbe5-4632-917f-04e678716bbd

📥 Commits

Reviewing files that changed from the base of the PR and between 8e39814 and f5b6f13.

📒 Files selected for processing (4)
  • pkg/cloud/gcp/actuators/machine/reconciler.go
  • pkg/cloud/gcp/actuators/machine/reconciler_test.go
  • pkg/cloud/gcp/actuators/services/compute/computeservice.go
  • pkg/cloud/gcp/actuators/services/compute/computeservice_mock.go

Comment thread pkg/cloud/gcp/actuators/machine/reconciler.go Outdated
@newtonheath

Copy link
Copy Markdown

@RadekManak can we get help getting this reviewed please - its a release blocker

Make provider-side instance creation failures visible during reconciliation by checking the returned insert operation and visible in-flight operations instead of relying only on instance lookup.
@RadekManak RadekManak force-pushed the mapgcp-error-surfacing branch from f5b6f13 to 73fee98 Compare April 29, 2026 14:57

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
pkg/cloud/gcp/actuators/machine/reconciler_test.go (1)

197-203: Assert ZoneOperationsList query arguments to lock behavior.

These mocks drive return shape, but they don’t validate the filter and orderBy inputs. Adding assertions for expected query content would prevent silent regressions in latestVisibleInsertOperation() construction.

Also applies to: 220-224, 1178-1187

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/cloud/gcp/actuators/machine/reconciler_test.go` around lines 197 - 203,
The mock implementation for mockZoneOperationsList used in tests should assert
the incoming query args (filter and orderBy, and optionally project/zone) to
ensure latestVisibleInsertOperation() constructs the correct query; update the
mock callbacks (mockZoneOperationsList at the instances around the given diffs
and the ones at lines ~220 and ~1178) to check that the received filter string
contains the expected operation type and instance metadata and that orderBy
equals the expected sort (e.g., "insertTime desc") and fail the test (return an
error or call t.Fatalf) when they don’t match so regressions in query
construction are detected.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/cloud/gcp/actuators/machine/reconciler.go`:
- Around line 742-749: The loop over op.Error.Errors panics if any slice element
is nil — modify the block in reconciler.go that iterates "for _, e := range
op.Error.Errors" to skip nil entries (if e == nil continue) and also defensively
ensure op.Error and op.Error.Errors are non-nil before iterating; then build
msgs using e.Code and e.Message as before and return the formatted error string.
This prevents a nil dereference while preserving the existing error-message
aggregation.

---

Nitpick comments:
In `@pkg/cloud/gcp/actuators/machine/reconciler_test.go`:
- Around line 197-203: The mock implementation for mockZoneOperationsList used
in tests should assert the incoming query args (filter and orderBy, and
optionally project/zone) to ensure latestVisibleInsertOperation() constructs the
correct query; update the mock callbacks (mockZoneOperationsList at the
instances around the given diffs and the ones at lines ~220 and ~1178) to check
that the received filter string contains the expected operation type and
instance metadata and that orderBy equals the expected sort (e.g., "insertTime
desc") and fail the test (return an error or call t.Fatalf) when they don’t
match so regressions in query construction are detected.
🪄 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: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 35e9b6bd-5ef3-4114-a95c-fbccf95ed61d

📥 Commits

Reviewing files that changed from the base of the PR and between f5b6f13 and 73fee98.

📒 Files selected for processing (4)
  • pkg/cloud/gcp/actuators/machine/reconciler.go
  • pkg/cloud/gcp/actuators/machine/reconciler_test.go
  • pkg/cloud/gcp/actuators/services/compute/computeservice.go
  • pkg/cloud/gcp/actuators/services/compute/computeservice_mock.go

Comment on lines +742 to +749
for _, e := range op.Error.Errors {
if e.Message != "" {
msgs = append(msgs, e.Code+": "+e.Message)
} else {
msgs = append(msgs, e.Code)
}
}
return fmt.Errorf("GCP operation failed: %s", strings.Join(msgs, "; "))

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Guard against nil entries in operation error details.

Line 743 dereferences e unconditionally. If op.Error.Errors contains a nil element, this panics and masks the provider failure path.

💡 Suggested fix
 func operationError(op *compute.Operation) error {
 	if op == nil || op.Error == nil || len(op.Error.Errors) == 0 {
 		return nil
 	}
 	msgs := make([]string, 0, len(op.Error.Errors))
 	for _, e := range op.Error.Errors {
+		if e == nil {
+			continue
+		}
 		if e.Message != "" {
 			msgs = append(msgs, e.Code+": "+e.Message)
 		} else {
 			msgs = append(msgs, e.Code)
 		}
 	}
+	if len(msgs) == 0 {
+		return fmt.Errorf("GCP operation failed: unknown provider-side error")
+	}
 	return fmt.Errorf("GCP operation failed: %s", strings.Join(msgs, "; "))
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/cloud/gcp/actuators/machine/reconciler.go` around lines 742 - 749, The
loop over op.Error.Errors panics if any slice element is nil — modify the block
in reconciler.go that iterates "for _, e := range op.Error.Errors" to skip nil
entries (if e == nil continue) and also defensively ensure op.Error and
op.Error.Errors are non-nil before iterating; then build msgs using e.Code and
e.Message as before and return the formatted error string. This prevents a nil
dereference while preserving the existing error-message aggregation.

@openshift-ci

openshift-ci Bot commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants