Skip to content

Setting option for node draining by external controllers #952

Merged
adrianchiris merged 3 commits intok8snetworkplumbingwg:masterfrom
heyvister1:disable-drain-controller
Jan 8, 2026
Merged

Setting option for node draining by external controllers #952
adrianchiris merged 3 commits intok8snetworkplumbingwg:masterfrom
heyvister1:disable-drain-controller

Conversation

@heyvister1
Copy link
Contributor

@heyvister1 heyvister1 commented Oct 9, 2025

SRIOV OP internal drain controller can be disabled, through USE_EXTERNAL_DRAINER. For example draining can be performed by external NVIDIA maintenance operator

Summary by CodeRabbit

  • New Features

    • Opt-in external drainer mode via env/Helm flag (USE_EXTERNAL_DRAINER) to delegate node drain operations to external maintenance tooling.
  • Behavior

    • Operator skips internal drain reconciliation for nodes marked for external draining; pool config changes won’t apply during those external drains.
  • Documentation

    • Design docs updated with notes on external drain-controller delegation and effects.
  • Tests

    • Added tests for external drainer flows and annotation handling.

✏️ Tip: You can customize this high-level summary in your review settings.

@github-actions
Copy link

github-actions bot commented Oct 9, 2025

Thanks for your PR,
To run vendors CIs, Maintainers can use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs, Maintainers can use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

@github-actions github-actions bot added the docs label Oct 9, 2025
@heyvister1 heyvister1 force-pushed the disable-drain-controller branch 2 times, most recently from 30699af to cc4a257 Compare October 9, 2025 09:52
@coveralls
Copy link

coveralls commented Oct 9, 2025

Pull Request Test Coverage Report for Build 20809145270

Details

  • 46 of 59 (77.97%) changed or added relevant lines in 5 files are covered.
  • 2 unchanged lines in 1 file lost coverage.
  • Overall coverage increased (+0.09%) to 63.253%

Changes Missing Coverage Covered Lines Changed/Added Lines %
controllers/drain_controller.go 1 5 20.0%
pkg/daemon/daemon.go 40 49 81.63%
Files with Coverage Reduction New Missed Lines %
controllers/helper.go 2 70.61%
Totals Coverage Status
Change from base Build 20777027733: 0.09%
Covered Lines: 9161
Relevant Lines: 14483

💛 - Coveralls

Copy link
Collaborator

@SchSeba SchSeba left a comment

Choose a reason for hiding this comment

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

In general I am fine with having this here. but can we please have a more generic name for the variable?

@heyvister1 heyvister1 force-pushed the disable-drain-controller branch from cc4a257 to 62632d8 Compare October 16, 2025 12:19
@heyvister1 heyvister1 force-pushed the disable-drain-controller branch from 62632d8 to 237e08b Compare October 16, 2025 12:25
@heyvister1 heyvister1 force-pushed the disable-drain-controller branch 2 times, most recently from 16474e5 to cd01dcf Compare October 16, 2025 14:52
@heyvister1 heyvister1 changed the title Support node draining by external NVIDIA maintenance OP Setting option for node draining by external controllers Oct 16, 2025
@github-actions github-actions bot added the tests label Oct 17, 2025
@heyvister1 heyvister1 force-pushed the disable-drain-controller branch from a7fbd43 to c3d7edf Compare October 17, 2025 08:23
@heyvister1 heyvister1 force-pushed the disable-drain-controller branch 4 times, most recently from daaf0f6 to 7fed536 Compare October 17, 2025 09:48
@heyvister1
Copy link
Contributor Author

/test-all

@heyvister1 heyvister1 force-pushed the disable-drain-controller branch from 7fed536 to ade293d Compare October 19, 2025 10:13
…rnal-drainer=true' in case exteranl drainer is enabled

The motivation is for external drainer verification, that SRIOV operator is set with external drainer
Signed-off-by: Ido Heyvi <iheyvi@nvidia.com>
@heyvister1 heyvister1 force-pushed the disable-drain-controller branch 2 times, most recently from 2b29581 to cfd4970 Compare January 4, 2026 09:17
@heyvister1 heyvister1 closed this Jan 4, 2026
@heyvister1 heyvister1 reopened this Jan 4, 2026
@github-actions
Copy link

github-actions bot commented Jan 4, 2026

Thanks for your PR,
To run vendors CIs, Maintainers can use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs, Maintainers can use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

@heyvister1
Copy link
Contributor Author

@SchSeba , @adrianchiris PTAL upon last commit changes, handling Sebastian's proposal
#952 (comment)

@heyvister1 heyvister1 requested a review from SchSeba January 4, 2026 09:52

// manages addition/removal of external drainer annotation upon node state objects
func (dn *NodeReconciler) addRemoveExternalDrainerAnnotation(ctx context.Context, desiredNodeState *sriovnetworkv1.SriovNetworkNodeState) error {
funcLog := log.Log.WithName("addRemoveExternalDrainerAnnotation")
Copy link
Collaborator

Choose a reason for hiding this comment

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

lets use the log from context:

reqLogger := log.FromContext(ctx).WithName("addRemoveExternalDrainerAnnotation")

func (dn *NodeReconciler) addRemoveExternalDrainerAnnotation(ctx context.Context, desiredNodeState *sriovnetworkv1.SriovNetworkNodeState) error {
funcLog := log.Log.WithName("addRemoveExternalDrainerAnnotation")

// external drainer annotation will be added/removed only when both desired/current node state are in 'Idle' state
Copy link
Collaborator

Choose a reason for hiding this comment

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

i believe we need to take into consideration also when the annotation does not exist.

e.g first time node state is created, the annotation is only set later in the reconcile process (and moved to idle after successfull first configuration)

so i would proceed with setting this annotation when either:

  1. both annotations are unset
  2. both annotations are idle

funcLog.Info("remove external drainer nodestate annotation", "annotation", consts.NodeStateExternalDrainerAnnotation)
original := desiredNodeState.DeepCopy()
delete(annotations, consts.NodeStateExternalDrainerAnnotation)
desiredNodeState.SetAnnotations(annotations)
Copy link
Collaborator

Choose a reason for hiding this comment

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

is this needed ? i believe you get a reference for the map at L683
which you then update.

no copy takes place for this map

return nil
}

// check if external drainer environment variable is enabled, before adding external drainer annotation
Copy link
Collaborator

Choose a reason for hiding this comment

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

i dont understand the comment. maybe just remove it ? it doesnt add much here IMO

@heyvister1 heyvister1 force-pushed the disable-drain-controller branch 2 times, most recently from ae5083f to 82aff1d Compare January 6, 2026 10:22
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
README.md (1)

467-468: PR reference in documentation should be removed.

The documentation note includes a parenthetical reference "(PR #952)" which is unusual for user-facing documentation. This should be removed, as PR references are better tracked in version control/changelog rather than in the README. The rest of the text—clarifying that draining is "delegated" rather than "disabled"—effectively addresses the previous feedback about ambiguous wording.

🔎 Proposed fix
-> **NOTE**: Node draining can be delegated to an external drain-controller by setting `USE_EXTERNAL_DRAINER=true` (e.g. using [NVIDIA maintenance-operator](https://github.com/Mellanox/maintenance-operator)) (PR #952). This means that internal drain-controller continues to work on nodeState objects which were not annotated with `sriovnetwork.openshift.io/use-external-drainer`. In addition, `SriovNetworkPoolConfig` will not take any effect during drain procedure, since the maintenance operator will be in charge of [parallel node operations](https://github.com/Mellanox/maintenance-operator/blob/main/api/v1alpha1/maintenanceoperatorconfig_types.go#L38-L46).
+> **NOTE**: Node draining can be delegated to an external drain-controller by setting `USE_EXTERNAL_DRAINER=true` (e.g., [NVIDIA maintenance-operator](https://github.com/Mellanox/maintenance-operator)). The internal drain-controller continues to work on nodeState objects not annotated with `sriovnetwork.openshift.io/use-external-drainer`. When external draining is active, `SriovNetworkPoolConfig.maxUnavailable` is not enforced; the external controller owns parallelism configuration (see [MaintenanceOperatorConfig](https://github.com/Mellanox/maintenance-operator/blob/main/api/v1alpha1/maintenanceoperatorconfig_types.go#L38-L46)).

This revision:

  • Removes the PR reference
  • Clarifies the annotation label that triggers external draining
  • Breaks the long sentence into shorter, more scannable statements
  • Uses more concise language ("not enforced; owns parallelism") per the LanguageTool hint
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ae5083f and 82aff1d.

📒 Files selected for processing (4)
  • README.md
  • doc/design/parallel-node-config.md
  • pkg/consts/constants.go
  • pkg/daemon/daemon.go
🚧 Files skipped from review as they are similar to previous changes (2)
  • pkg/consts/constants.go
  • pkg/daemon/daemon.go
🧰 Additional context used
🪛 LanguageTool
README.md

[style] ~467-~467: Consider using more formal and concise wording here.
Context: ...re, since the maintenance operator will be in charge of [parallel node operations](https://gith...

(RESPONSIBLE_FOR)

doc/design/parallel-node-config.md

[style] ~63-~63: Consider using more formal and concise wording here.
Context: ...re, since the maintenance operator will be in charge of parallel node operations. Draining pro...

(RESPONSIBLE_FOR)

⏰ 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). (5)
  • GitHub Check: Analyze (go)
  • GitHub Check: build
  • GitHub Check: test-coverage
  • GitHub Check: Golangci-lint
  • GitHub Check: test

@heyvister1 heyvister1 force-pushed the disable-drain-controller branch from 82aff1d to 0c29812 Compare January 6, 2026 10:54
Copy link

@coderabbitai coderabbitai bot left a comment

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 @pkg/daemon/daemon.go:
- Around line 675-685: The early-return condition is inverted: currently it
returns when either `neitherExists` or `bothIdle` is true, preventing annotation
changes; change the guard so the function returns early only when NEITHER
condition holds (i.e., proceed only if `neitherExists` OR `bothIdle` is true).
Locate the block that computes `neitherExists` and `bothIdle` (using
`utils.ObjectHasAnnotationKey` and `utils.ObjectHasAnnotation` with
`consts.NodeStateDrainAnnotationCurrent`, `consts.NodeStateDrainAnnotation`, and
`consts.DrainIdle`) and replace the `if` check to return when not (neitherExists
OR bothIdle) so the code proceeds for the two valid scenarios.
🧹 Nitpick comments (2)
README.md (1)

467-467: Remove PR reference and formalize the documentation language.

The NOTE contains a PR reference "(PR #952)" which is inappropriate in user-facing documentation. Additionally, the phrase "in charge of" is informal; use "manages" or "controls" instead. The sentence is also complex with multiple clauses that could be simplified for clarity.

🔎 Proposed documentation improvement
-> **NOTE**: Node draining can be delegated to an external drain-controller by setting `USE_EXTERNAL_DRAINER=true` (e.g. using [NVIDIA maintenance-operator](https://github.com/Mellanox/maintenance-operator)) (PR #952). This means that internal drain-controller continues to work on nodeState objects which were not annotated with `sriovnetwork.openshift.io/use-external-drainer`. In addition, `SriovNetworkPoolConfig` will not take any effect during drain procedure, since the maintenance operator will be in charge of [parallel node operations](https://github.com/Mellanox/maintenance-operator/blob/main/api/v1alpha1/maintenanceoperatorconfig_types.go#L38-L46).
+> **NOTE**: Node draining can be delegated to an external drain-controller by setting `USE_EXTERNAL_DRAINER=true` (for example, using the [NVIDIA maintenance-operator](https://github.com/Mellanox/maintenance-operator)). When enabled, the SR-IOV operator's internal drain-controller skips draining nodes annotated with `sriovnetwork.openshift.io/use-external-drainer`, while the external controller manages parallelism via [MaintenanceOperatorConfig](https://github.com/Mellanox/maintenance-operator/blob/main/api/v1alpha1/maintenanceoperatorconfig_types.go#L38-L46). Note that `SriovNetworkPoolConfig.maxUnavailable` is not enforced during externally-delegated draining.
doc/design/parallel-node-config.md (1)

63-64: Consider more concise wording.

The phrase "will be in charge of" could be replaced with "will manage" or "will control" for more formal technical documentation.

🔎 Suggested rewording
-*NOTE:* Node draining can be delegated to an external drain-controller by setting `USE_EXTERNAL_DRAINER=true` (e.g. using [NVIDIA maintenance-operator](https://github.com/Mellanox/maintenance-operator)) (PR #952). In addition, `SriovNetworkPoolConfig` will not take any effect during drain procedure, since the maintenance operator will be in charge of parallel node operations.
+*NOTE:* Node draining can be delegated to an external drain-controller by setting `USE_EXTERNAL_DRAINER=true` (e.g. using [NVIDIA maintenance-operator](https://github.com/Mellanox/maintenance-operator)) (PR #952). In addition, `SriovNetworkPoolConfig` will not take any effect during drain procedure, since the maintenance operator will manage parallel node operations.

Based on static analysis hints.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 82aff1d and 0c29812.

📒 Files selected for processing (4)
  • README.md
  • doc/design/parallel-node-config.md
  • pkg/consts/constants.go
  • pkg/daemon/daemon.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • pkg/consts/constants.go
🧰 Additional context used
🧬 Code graph analysis (1)
pkg/daemon/daemon.go (3)
pkg/utils/cluster.go (3)
  • ObjectHasAnnotationKey (16-19)
  • ObjectHasAnnotation (22-27)
  • AnnotateObject (30-60)
pkg/consts/constants.go (4)
  • NodeStateDrainAnnotationCurrent (82-82)
  • NodeStateDrainAnnotation (81-81)
  • DrainIdle (85-85)
  • NodeStateExternalDrainerAnnotation (83-83)
pkg/vars/vars.go (1)
  • UseExternalDrainer (91-91)
🪛 LanguageTool
README.md

[style] ~467-~467: Consider using more formal and concise wording here.
Context: ...re, since the maintenance operator will be in charge of [parallel node operations](https://gith...

(RESPONSIBLE_FOR)

doc/design/parallel-node-config.md

[style] ~63-~63: Consider using more formal and concise wording here.
Context: ...re, since the maintenance operator will be in charge of parallel node operations. Draining pro...

(RESPONSIBLE_FOR)

⏰ 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). (5)
  • GitHub Check: test
  • GitHub Check: Golangci-lint
  • GitHub Check: test-coverage
  • GitHub Check: build
  • GitHub Check: Analyze (go)
🔇 Additional comments (3)
doc/design/parallel-node-config.md (1)

9-9: LGTM!

The metadata update reflects the current documentation revision date appropriately.

pkg/daemon/daemon.go (2)

152-157: LGTM!

The function is invoked at the appropriate point in the reconcile loop—early enough to set up external drainer annotation state before drain logic executes.


687-711: Addition and removal logic is correct.

The annotation removal logic (lines 687-701) properly checks for annotation existence and uses client.MergeFrom for efficient patching. The addition logic (lines 703-709) correctly delegates to utils.AnnotateObject, which handles idempotency.

However, this code is currently unreachable due to the critical bug at line 683.

@heyvister1 heyvister1 force-pushed the disable-drain-controller branch from 0c29812 to 84a9721 Compare January 6, 2026 12:08
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (2)
doc/design/parallel-node-config.md (1)

63-64: Optional: Minor wording refinement for formality.

The NOTE accurately describes the external drainer feature and has been reviewed by maintainers. For slightly more formal documentation style, consider rephrasing "will be in charge of" to "will manage" or "will handle".

Optional rewording
-*NOTE:* Node draining can be delegated to an external drain-controller by setting `USE_EXTERNAL_DRAINER=true` (e.g. using [NVIDIA maintenance-operator](https://github.com/Mellanox/maintenance-operator)) (PR #952). In addition, `SriovNetworkPoolConfig` will not take any effect during drain procedure, since the maintenance operator will be in charge of parallel node operations.
+*NOTE:* Node draining can be delegated to an external drain-controller by setting `USE_EXTERNAL_DRAINER=true` (e.g. using [NVIDIA maintenance-operator](https://github.com/Mellanox/maintenance-operator)) (PR #952). In addition, `SriovNetworkPoolConfig` will not take any effect during drain procedure, since the maintenance operator will manage parallel node operations.

Based on static analysis hints.

README.md (1)

467-467: LGTM with optional wording refinement.

The NOTE accurately describes the external drainer feature with helpful clarification that the internal drain-controller continues handling non-annotated nodeState objects. For consistency with formal documentation style, consider the same minor refinement as in the design doc.

Optional rewording for consistency
-> **NOTE**: Node draining can be delegated to an external drain-controller by setting `USE_EXTERNAL_DRAINER=true` (e.g. using [NVIDIA maintenance-operator](https://github.com/Mellanox/maintenance-operator)) (PR #952). This means that internal drain-controller continues to work on nodeState objects which were not annotated with `sriovnetwork.openshift.io/use-external-drainer`. In addition, `SriovNetworkPoolConfig` will not take any effect during drain procedure, since the maintenance operator will be in charge of [parallel node operations](https://github.com/Mellanox/maintenance-operator/blob/main/api/v1alpha1/maintenanceoperatorconfig_types.go#L38-L46).
+> **NOTE**: Node draining can be delegated to an external drain-controller by setting `USE_EXTERNAL_DRAINER=true` (e.g. using [NVIDIA maintenance-operator](https://github.com/Mellanox/maintenance-operator)) (PR #952). This means that internal drain-controller continues to work on nodeState objects which were not annotated with `sriovnetwork.openshift.io/use-external-drainer`. In addition, `SriovNetworkPoolConfig` will not take any effect during drain procedure, since the maintenance operator will manage [parallel node operations](https://github.com/Mellanox/maintenance-operator/blob/main/api/v1alpha1/maintenanceoperatorconfig_types.go#L38-L46).

Based on static analysis hints.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0c29812 and 84a9721.

📒 Files selected for processing (4)
  • README.md
  • doc/design/parallel-node-config.md
  • pkg/consts/constants.go
  • pkg/daemon/daemon.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • pkg/consts/constants.go
🧰 Additional context used
🪛 LanguageTool
README.md

[style] ~467-~467: Consider using more formal and concise wording here.
Context: ...re, since the maintenance operator will be in charge of [parallel node operations](https://gith...

(RESPONSIBLE_FOR)

doc/design/parallel-node-config.md

[style] ~63-~63: Consider using more formal and concise wording here.
Context: ...re, since the maintenance operator will be in charge of parallel node operations. Draining pro...

(RESPONSIBLE_FOR)

⏰ 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). (5)
  • GitHub Check: Golangci-lint
  • GitHub Check: test-coverage
  • GitHub Check: test
  • GitHub Check: build
  • GitHub Check: Analyze (go)
🔇 Additional comments (3)
doc/design/parallel-node-config.md (1)

9-9: LGTM: Documentation date updated appropriately.

The last-updated date correctly reflects the timing of this enhancement.

pkg/daemon/daemon.go (2)

152-161: LGTM: External drainer annotation managed before drain processing.

The early invocation of addRemoveExternalDrainerAnnotation correctly ensures the external drainer annotation state is synchronized before the daemon processes drain requests. The immediate return when the annotation changes allows the drain controller to observe and react to the updated state.


675-722: LGTM: External drainer annotation logic is correct.

The addRemoveExternalDrainerAnnotation method correctly manages the external drainer annotation lifecycle:

  1. Timing guard (lines 689-691): Annotation changes are permitted only when both drain annotations are Idle OR neither exists yet, preventing mid-drain state corruption.

  2. Removal path (lines 694-708): When UseExternalDrainer is disabled, the annotation is cleanly removed using client.Patch with MergeFrom.

  3. Addition path (lines 710-719): When UseExternalDrainer is enabled, the annotation is added via the existing AnnotateObject utility.

The conditional logic at lines 689-691 correctly evaluates to:

  • Proceed when neitherExists=true (first reconcile)
  • Proceed when bothIdle=true (safe toggle point)
  • Return early when drain is requested or in progress (avoid mid-drain changes)

This addresses the state machine requirements discussed in past reviews.

@heyvister1 heyvister1 closed this Jan 6, 2026
@heyvister1 heyvister1 reopened this Jan 6, 2026
@github-actions
Copy link

github-actions bot commented Jan 6, 2026

Thanks for your PR,
To run vendors CIs, Maintainers can use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs, Maintainers can use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

return ctrl.Result{}, err
}
if changed {
reqLogger.Info("external drainer annotation changed, return to allow drain controller to react")
Copy link
Collaborator

Choose a reason for hiding this comment

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

the last part of the log is missleading

we may have the idle annot already there. we will requeue since we patch the node state annotation which will trigger a reconcile.

@heyvister1 heyvister1 force-pushed the disable-drain-controller branch 3 times, most recently from 86176f9 to a10be09 Compare January 7, 2026 12:01
@heyvister1 heyvister1 closed this Jan 8, 2026
@heyvister1 heyvister1 reopened this Jan 8, 2026
@github-actions
Copy link

github-actions bot commented Jan 8, 2026

Thanks for your PR,
To run vendors CIs, Maintainers can use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs, Maintainers can use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

1 similar comment
@github-actions
Copy link

github-actions bot commented Jan 8, 2026

Thanks for your PR,
To run vendors CIs, Maintainers can use one of:

  • /test-all: To run all tests for all vendors.
  • /test-e2e-all: To run all E2E tests for all vendors.
  • /test-e2e-nvidia-all: To run all E2E tests for NVIDIA vendor.

To skip the vendors CIs, Maintainers can use one of:

  • /skip-all: To skip all tests for all vendors.
  • /skip-e2e-all: To skip all E2E tests for all vendors.
  • /skip-e2e-nvidia-all: To skip all E2E tests for NVIDIA vendor.
    Best regards.

…n in daemon reconcile loop

Signed-off-by: Ido Heyvi <iheyvi@nvidia.com>
Copy link
Member

@zeeke zeeke left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Collaborator

@adrianchiris adrianchiris left a comment

Choose a reason for hiding this comment

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

LGTM ! 🎉

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants