Skip to content

OCPBUGS-83580: Skip dev fuse test on runc runtime#31140

Open
Chandan9112 wants to merge 1 commit intoopenshift:mainfrom
Chandan9112:fix-devfuse-runc-skip
Open

OCPBUGS-83580: Skip dev fuse test on runc runtime#31140
Chandan9112 wants to merge 1 commit intoopenshift:mainfrom
Chandan9112:fix-devfuse-runc-skip

Conversation

@Chandan9112
Copy link
Copy Markdown
Contributor

@Chandan9112 Chandan9112 commented May 7, 2026

The io.kubernetes.cri-o.Devices annotation is only supported by crun. This will detect the actual runtime via crio status config on the node and skip when runc is there.

Bug

OCPBUGS-83580

Follow-up PR

#PR

Fix

Added a runtime check before test execution: query crio config on a worker node to detect the default runtime
Skip the test with a clear message when runc is the default runtime, since the /dev/fuse device annotation is not applicable

Testing

Tested on a fresh OCP 4.17 GCP cluster where the default runtime is runc.

➜  origin git:(fix-devfuse-runc-skip) ✗ oc debug node/$(oc get nodes -l node-role.kubernetes.io/worker -o jsonpath='{.items[0].metadata.name}') -- chroot /host crio config 2>/dev/null | grep 'default_runtime'
# default_runtime is the _name_ of the OCI runtime to be used as the default.
# default_runtime = "runc"
# If no runtime handler is provided, the "default_runtime" will be used.

**Test skipping on runc as runtime**

➜  origin git:(fix-devfuse-runc-skip) ✗ ./openshift-tests run-test "[sig-node] [Jira:Node/Kubelet] Kubelet, CRI-O, CPU manager [OTP] Allow dev fuse by default in CRI-O [OCP-70987] [Suite:openshift/conformance/parallel]"

  Running Suite:  - /Users/cmaurya/go/src/github.com/openshift/origin
  ===================================================================
  Random Seed: 1778134978 - will randomize all specs

  Will run 1 of 1 specs
  ------------------------------
  [sig-node] [Jira:Node/Kubelet] Kubelet, CRI-O, CPU manager [OTP] Allow dev fuse by default in CRI-O [OCP-70987]
  github.com/openshift/origin/test/extended/node/node_e2e/node.go:111
    STEP: Creating a kubernetes client @ 05/07/26 11:53:05.357
  I0507 11:53:05.358716   88095 discovery.go:214] Invalidating discovery information
  I0507 11:53:05.360912 88095 framework.go:2330] [precondition-check] checking if cluster is MicroShift
  I0507 11:53:05.678972 88095 framework.go:2353] IsMicroShiftCluster: microshift-version configmap not found, not MicroShift
    STEP: Skip if the default runtime is runc @ 05/07/26 11:53:05.679
    [SKIPPED] in [It] - github.com/openshift/origin/test/extended/node/node_e2e/node.go:126 @ 05/07/26 11:53:10.981
  S [SKIPPED] [5.663 seconds]
  [sig-node] [Jira:Node/Kubelet] Kubelet, CRI-O, CPU manager [It] [OTP] Allow dev fuse by default in CRI-O [OCP-70987]
  github.com/openshift/origin/test/extended/node/node_e2e/node.go:111

    [SKIPPED] Skipping: not applicable to runc runtime
    In [It] at: github.com/openshift/origin/test/extended/node/node_e2e/node.go:126 @ 05/07/26 11:53:10.981
  ------------------------------

  Ran 0 of 1 Specs in 5.664 seconds
  SUCCESS! -- 0 Passed | 0 Failed | 0 Pending | 1 Skipped

**Test getting pased on crun as runtime**

➜  origin git:(fix-devfuse-runc-skip) ✗ oc debug node/$(oc get nodes -l node-role.kubernetes.io/worker -o jsonpath='{.items[0].metadata.name}') -- chroot /host crio config 2>/dev/null | grep 'default_runtime'
# default_runtime is the _name_ of the OCI runtime to be used as the default.
default_runtime = "crun"
# If no runtime handler is provided, the "default_runtime" will be used.

  Running Suite:  - /Users/cmaurya/go/src/github.com/openshift/origin
  ===================================================================
  Random Seed: 1778135873 - will randomize all specs

  Will run 1 of 1 specs
  ------------------------------
  [sig-node] [Jira:Node/Kubelet] Kubelet, CRI-O, CPU manager [OTP] Allow dev fuse by default in CRI-O [OCP-70987]
  github.com/openshift/origin/test/extended/node/node_e2e/node.go:111
    STEP: Creating a kubernetes client @ 05/07/26 12:08:00.683
  I0507 12:08:00.684730   90487 discovery.go:214] Invalidating discovery information
  I0507 12:08:00.691999 90487 framework.go:2330] [precondition-check] checking if cluster is MicroShift
  I0507 12:08:00.996333 90487 framework.go:2353] IsMicroShiftCluster: microshift-version configmap not found, not MicroShift
    STEP: Skip if the default runtime is runc @ 05/07/26 12:08:00.997
    STEP: Create a test namespace @ 05/07/26 12:08:06.911
  namespace/devfuse-test created
    STEP: Create a pod with dev fuse annotation @ 05/07/26 12:08:08.265
  pod/pod-devfuse created
    STEP: Wait for pod to be ready @ 05/07/26 12:08:10.062
    STEP: Check /dev/fuse is mounted inside the pod @ 05/07/26 12:08:16.221
  I0507 12:08:19.716678 90487 node.go:156] /dev/fuse mount output: File: /dev/fuse
    Size: 0             Blocks: 0          IO Block: 4096   character special file
  Device: 1000b0h/1048752d      Inode: 6           Links: 1     Device type: a,e5
  Access: (0666/crw-rw-rw-)  Uid: (    0/    root)   Gid: (    0/    root)
  Access: 2026-05-07 06:38:12.935627171 +0000
  Modify: 2026-05-07 06:38:12.935627171 +0000
  Change: 2026-05-07 06:38:12.935627171 +0000
   Birth: 2026-05-07 06:38:12.935627171 +0000
  namespace "devfuse-test" deleted
  • [58.651 seconds]
  ------------------------------

  Ran 1 of 1 Specs in 58.660 seconds
  SUCCESS! -- 1 Passed | 0 Failed | 0 Pending | 0 Skipped

cc: @ngopalak-redhat

Summary by CodeRabbit

  • Tests
    • Improved CRI-O runtime test: now reads the runtime from a worker node’s CRI-O config (selects the first worker and parses/trims default_runtime) and skips only when the extracted value is exactly "runc", removing the previous MachineConfiguration API-based check.

@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: automatic mode

@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 May 7, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 7, 2026

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

@openshift-ci-robot openshift-ci-robot added jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels May 7, 2026
@openshift-ci-robot
Copy link
Copy Markdown

@Chandan9112: This pull request references Jira Issue OCPBUGS-83580, which is invalid:

  • expected the bug to be in one of the following states: NEW, ASSIGNED, POST, but it is MODIFIED instead

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:

The io.kubernetes.cri-o.Devices annotation is only supported by crun. This will detect the actual runtime via crio status config on the node and skip when runc is there.

Bug

OCPBUGS-83580

Follow-up PR

#PR

Fix

Added a runtime check before test execution: query crio config on a worker node to detect the default runtime
Skip the test with a clear message when runc is the default runtime, since the /dev/fuse device annotation is not applicable

Testing

Tested on a fresh OCP 4.17 GCP cluster where the default runtime is runc.

➜  origin git:(fix-devfuse-runc-skip) ✗ oc debug node/$(oc get nodes -l node-role.kubernetes.io/worker -o jsonpath='{.items[0].metadata.name}') -- chroot /host crio config 2>/dev/null | grep 'default_runtime'
# default_runtime is the _name_ of the OCI runtime to be used as the default.
# default_runtime = "runc"
# If no runtime handler is provided, the "default_runtime" will be used.

**Test skipping on runc as runtime**

➜  origin git:(fix-devfuse-runc-skip) ✗ ./openshift-tests run-test "[sig-node] [Jira:Node/Kubelet] Kubelet, CRI-O, CPU manager [OTP] Allow dev fuse by default in CRI-O [OCP-70987] [Suite:openshift/conformance/parallel]"

 Running Suite:  - /Users/cmaurya/go/src/github.com/openshift/origin
 ===================================================================
 Random Seed: 1778134978 - will randomize all specs

 Will run 1 of 1 specs
 ------------------------------
 [sig-node] [Jira:Node/Kubelet] Kubelet, CRI-O, CPU manager [OTP] Allow dev fuse by default in CRI-O [OCP-70987]
 github.com/openshift/origin/test/extended/node/node_e2e/node.go:111
   STEP: Creating a kubernetes client @ 05/07/26 11:53:05.357
 I0507 11:53:05.358716   88095 discovery.go:214] Invalidating discovery information
 I0507 11:53:05.360912 88095 framework.go:2330] [precondition-check] checking if cluster is MicroShift
 I0507 11:53:05.678972 88095 framework.go:2353] IsMicroShiftCluster: microshift-version configmap not found, not MicroShift
   STEP: Skip if the default runtime is runc @ 05/07/26 11:53:05.679
   [SKIPPED] in [It] - github.com/openshift/origin/test/extended/node/node_e2e/node.go:126 @ 05/07/26 11:53:10.981
 S [SKIPPED] [5.663 seconds]
 [sig-node] [Jira:Node/Kubelet] Kubelet, CRI-O, CPU manager [It] [OTP] Allow dev fuse by default in CRI-O [OCP-70987]
 github.com/openshift/origin/test/extended/node/node_e2e/node.go:111

   [SKIPPED] Skipping: not applicable to runc runtime
   In [It] at: github.com/openshift/origin/test/extended/node/node_e2e/node.go:126 @ 05/07/26 11:53:10.981
 ------------------------------

 Ran 0 of 1 Specs in 5.664 seconds
 SUCCESS! -- 0 Passed | 0 Failed | 0 Pending | 1 Skipped

**Test getting pased on crun as runtime**

➜  origin git:(fix-devfuse-runc-skip) ✗ oc debug node/$(oc get nodes -l node-role.kubernetes.io/worker -o jsonpath='{.items[0].metadata.name}') -- chroot /host crio config 2>/dev/null | grep 'default_runtime'
# default_runtime is the _name_ of the OCI runtime to be used as the default.
default_runtime = "crun"
# If no runtime handler is provided, the "default_runtime" will be used.

 Running Suite:  - /Users/cmaurya/go/src/github.com/openshift/origin
 ===================================================================
 Random Seed: 1778135873 - will randomize all specs

 Will run 1 of 1 specs
 ------------------------------
 [sig-node] [Jira:Node/Kubelet] Kubelet, CRI-O, CPU manager [OTP] Allow dev fuse by default in CRI-O [OCP-70987]
 github.com/openshift/origin/test/extended/node/node_e2e/node.go:111
   STEP: Creating a kubernetes client @ 05/07/26 12:08:00.683
 I0507 12:08:00.684730   90487 discovery.go:214] Invalidating discovery information
 I0507 12:08:00.691999 90487 framework.go:2330] [precondition-check] checking if cluster is MicroShift
 I0507 12:08:00.996333 90487 framework.go:2353] IsMicroShiftCluster: microshift-version configmap not found, not MicroShift
   STEP: Skip if the default runtime is runc @ 05/07/26 12:08:00.997
   STEP: Create a test namespace @ 05/07/26 12:08:06.911
 namespace/devfuse-test created
   STEP: Create a pod with dev fuse annotation @ 05/07/26 12:08:08.265
 pod/pod-devfuse created
   STEP: Wait for pod to be ready @ 05/07/26 12:08:10.062
   STEP: Check /dev/fuse is mounted inside the pod @ 05/07/26 12:08:16.221
 I0507 12:08:19.716678 90487 node.go:156] /dev/fuse mount output: File: /dev/fuse
   Size: 0             Blocks: 0          IO Block: 4096   character special file
 Device: 1000b0h/1048752d      Inode: 6           Links: 1     Device type: a,e5
 Access: (0666/crw-rw-rw-)  Uid: (    0/    root)   Gid: (    0/    root)
 Access: 2026-05-07 06:38:12.935627171 +0000
 Modify: 2026-05-07 06:38:12.935627171 +0000
 Change: 2026-05-07 06:38:12.935627171 +0000
  Birth: 2026-05-07 06:38:12.935627171 +0000
 namespace "devfuse-test" deleted
 • [58.651 seconds]
 ------------------------------

 Ran 1 of 1 Specs in 58.660 seconds
 SUCCESS! -- 1 Passed | 0 Failed | 0 Pending | 0 Skipped

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
Copy link
Copy Markdown

coderabbitai Bot commented May 7, 2026

Note

Reviews paused

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

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 8eda5b06-46b2-45da-b29d-7c2337ae5dbe

📥 Commits

Reviewing files that changed from the base of the PR and between ab6efb4 and e386c75.

📒 Files selected for processing (1)
  • test/extended/node/node_e2e/node.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/extended/node/node_e2e/node.go

Walkthrough

The node e2e test's skip logic now detects CRI-O's default runtime by running crio status config on a selected worker node instead of querying MachineConfig/ContainerRuntimeConfig via the API; unused context and metav1 imports were removed.

Changes

Test Skip Logic Refinement

Layer / File(s) Summary
Import Cleanup
test/extended/node/node_e2e/node.go
Removed unused context and metav1 imports.
Runtime Detection
test/extended/node/node_e2e/node.go
Replaced MachineConfig/ContainerRuntimeConfig API-based detection with: pick first worker node, run crio status config on that node, extract default_runtime (trimmed); if empty log warning; skip only when value == runc.
Unchanged Test Flow
test/extended/node/node_e2e/node.go
Remaining test steps (namespace/pod creation, readiness polling, fuse mount checks) are unchanged.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 11 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Test Structure And Quality ⚠️ Warning Test lacks meaningful assertion messages on 6 of 8 assertions. Critical assertions (node retrieval, runtime detection, namespace/pod creation, exec) lack failure context. Add assertion messages to all assertions without context. E.g., "o.Expect(err).NotTo(o.HaveOccurred(), \"failed to get worker node\")". Aligns with codebase patterns where 60+ similar assertions include messages.
✅ Passed checks (11 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: updating the dev fuse test to skip when the runtime is runc instead of querying MachineConfiguration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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 Test titles contain only static, descriptive strings. The modified test uses a clear stable name with no dynamic values; logic is properly confined to test body.
Microshift Test Compatibility ✅ Passed New e2e tests in test/extended/node/node_e2e/node.go are protected from MicroShift via exutil.IsMicroShiftCluster() check with g.Skip() in a BeforeEach block wrapping all tests.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The new e2e tests do not make multi-node assumptions. The modified dev fuse test explicitly selects the first worker node and works correctly on Single Node OpenShift.
Topology-Aware Scheduling Compatibility ✅ Passed This PR modifies only test code, not deployment manifests, operator code, or controllers. The topology-aware scheduling check is not applicable to test file modifications.
Ote Binary Stdout Contract ✅ Passed Code in test blocks has intercepted stdout. Uses proper patterns: ExecOnNodeWithChroot returns strings, g.Skip is Ginkgo mechanism. No process-level stdout violations.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed This PR modifies an existing test, not adding a new one. The custom check applies only to new Ginkgo tests. The modified test contains no IPv4 assumptions or external connectivity requirements.

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

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

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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 and usage tips.

Copy link
Copy Markdown

@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

🧹 Nitpick comments (1)
test/extended/node/node_e2e/node.go (1)

123-123: ⚡ Quick win

awk pattern matches commented-out default_runtime lines

/default_runtime/ matches any line containing that string, including commented-out lines such as # default_runtime = "runc". This would cause the test to skip incorrectly on a crun cluster that has a commented-out runc line in its config.

Anchor the pattern to non-comment lines:

♻️ Proposed fix
-		"crio status config 2>/dev/null | awk -F'\"' '/default_runtime/{print $2}'")
+		"crio status config 2>/dev/null | awk -F'\"' '/^[[:space:]]*default_runtime[[:space:]]*=/{print $2}'")
🤖 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/extended/node/node_e2e/node.go` at line 123, The awk pattern in the crio
command currently matches any line containing "default_runtime" including
commented lines; update the pattern string in node.go that contains "crio status
config 2>/dev/null | awk -F'\"' '/default_runtime/{print $2}'" to anchor to
non-commented lines by using a regex that requires the line to start (optionally
after whitespace) with default_runtime, e.g. change the awk match portion to
/^[[:space:]]*default_runtime/ (so the full command becomes something like "crio
status config 2>/dev/null | awk -F'\"' '/^[[:space:]]*default_runtime/{print
$2}'") to avoid matching commented-out lines.
🤖 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/extended/node/node_e2e/node.go`:
- Around line 122-127: The runtime detection swallows stderr and hides failures;
change the ExecOnNodeWithChroot invocation (the call assigning runtime) to not
redirect stderr to /dev/null so ExecOnNodeWithChroot can surface command errors
(i.e., remove "2>/dev/null" from the command string passed to
ExecOnNodeWithChroot), and add an explicit guard after the call: if err != nil
or strings.TrimSpace(runtime) == "" then fail/skip with a clear message (use the
existing o.Expect(err).NotTo(...) or g.Skip with a diagnostic) before checking
for "runc" so a missing/failed crio detection is surfaced instead of silently
proceeding.

---

Nitpick comments:
In `@test/extended/node/node_e2e/node.go`:
- Line 123: The awk pattern in the crio command currently matches any line
containing "default_runtime" including commented lines; update the pattern
string in node.go that contains "crio status config 2>/dev/null | awk -F'\"'
'/default_runtime/{print $2}'" to anchor to non-commented lines by using a regex
that requires the line to start (optionally after whitespace) with
default_runtime, e.g. change the awk match portion to
/^[[:space:]]*default_runtime/ (so the full command becomes something like "crio
status config 2>/dev/null | awk -F'\"' '/^[[:space:]]*default_runtime/{print
$2}'") to avoid matching commented-out lines.
🪄 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: Enterprise

Run ID: e5ebacfd-8b08-499c-a323-00e97e3f5014

📥 Commits

Reviewing files that changed from the base of the PR and between 65324f7 and e46c62a.

📒 Files selected for processing (1)
  • test/extended/node/node_e2e/node.go

Comment thread test/extended/node/node_e2e/node.go
@Chandan9112 Chandan9112 force-pushed the fix-devfuse-runc-skip branch from e46c62a to e12f8e8 Compare May 7, 2026 08:56
@Chandan9112 Chandan9112 marked this pull request as ready for review May 7, 2026 09:10
@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 May 7, 2026
@openshift-ci openshift-ci Bot requested review from BhargaviGudi and mrunalp May 7, 2026 09:10
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

@Chandan9112 Chandan9112 force-pushed the fix-devfuse-runc-skip branch from e12f8e8 to dfb8aa2 Compare May 7, 2026 12:31
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

Comment thread test/extended/node/node_e2e/node.go Outdated
"crio status config 2>/dev/null | awk -F'\"' '/default_runtime/{print $2}'")
o.Expect(err).NotTo(o.HaveOccurred())
runtime = strings.TrimSpace(runtime)
if runtime == "" {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This seems backwards. If we can't determine the default runtime, at best it would be crun, so we should skip, at worst the cluster is in a weird state and we shouldn't be testing on it, so again skip.

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.

Pretty sure default_runtime should always be set. Someone correct me if I am wrong.

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.

This seems backwards. If we can't determine the default runtime, at best it would be crun, so we should skip, at worst the cluster is in a weird state and we shouldn't be testing on it, so again skip.

@cpmeadors, corrected in the latest commit.

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.

If default_runtime should always be set, it should fail, shouldn't it?
and I think it should be set.

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.

Not a hard opinion though

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.

Copy link
Copy Markdown
Contributor Author

@Chandan9112 Chandan9112 May 7, 2026

Choose a reason for hiding this comment

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

@bitoku, @cpmeadors ., since CRI-O falls back to crun when empty, should I remove the empty check. If default_runtime is unset, the test will run as expected on crun.

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.

That seems right. Skip only if default_runtime is set to runc.

Copy link
Copy Markdown
Contributor

@bitoku bitoku May 8, 2026

Choose a reason for hiding this comment

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

+1 from me. just a small correction, it shouldn't be empty. if it's empty cri-o set it crun explicitly instead of treating it as crun silently.

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.

Modified the code in latest commit. Please feel free to add if anything needed.

@Chandan9112 Chandan9112 force-pushed the fix-devfuse-runc-skip branch from dfb8aa2 to ab6efb4 Compare May 7, 2026 13:40
@openshift-merge-bot openshift-merge-bot Bot added the ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review label May 7, 2026
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

The io.kubernetes.cri-o.Devices annotation is only supported by crun.
Detect the actual runtime via crio status config on the node and skip
when runc is in use. This reliably handles both platform-default and
explicitly configured runc environments.
@Chandan9112 Chandan9112 force-pushed the fix-devfuse-runc-skip branch from ab6efb4 to e386c75 Compare May 8, 2026 04:27
@Chandan9112
Copy link
Copy Markdown
Contributor Author

/retest

@BhargaviGudi
Copy link
Copy Markdown
Contributor

/pipeline required

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

@BhargaviGudi
Copy link
Copy Markdown
Contributor

/test images

@BhargaviGudi
Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label May 8, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 8, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: BhargaviGudi, Chandan9112
Once this PR has been reviewed and has the lgtm label, please assign sairameshv 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

@Chandan9112
Copy link
Copy Markdown
Contributor Author

/retest

1 similar comment
@Chandan9112
Copy link
Copy Markdown
Contributor Author

/retest

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 9, 2026

@Chandan9112: 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/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants