Skip to content

fix: mount parent directory in config helper pod - #534

Open
fedepaol wants to merge 1 commit into
openperouter:mainfrom
fedepaol:fix/helper-pod-mount-path
Open

fix: mount parent directory in config helper pod#534
fedepaol wants to merge 1 commit into
openperouter:mainfrom
fedepaol:fix/helper-pod-mount-path

Conversation

@fedepaol

@fedepaol fedepaol commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Is this a BUG FIX or a FEATURE ?:

Uncomment only one, leave it on its own line:

/kind bug
/kind cleanup
/kind feature
/kind design
/kind flake
/kind failing
/kind documentation
/kind regression
/kind example

What this PR does / why we need it:

The config-helper DaemonSet was mounting /var/lib/openperouter/configs directly, while the controller's quadlet mounts the parent /var/lib/openperouter. In nested container environments (Kind nodes), these can resolve to different overlayfs layers, causing files written by the helper pod to be invisible to the controller's file watcher.

Mount the same parent directory (/var/lib/openperouter) in the helper pod so both containers see the same filesystem.

Attempt to fix the flake Single Session Baseline > verifies L2 and L3 connectivity

in https://github.com/openperouter/openperouter/actions/runs/28377843441/job/84073427518?pr=469

Special notes for your reviewer:

Release note:

NONE

AI Guidelines Acknowledgment:

  • I have reviewed all changes in this PR, including any AI-generated content, and I take full responsibility for its accuracy and correctness.

The config-helper DaemonSet was mounting /var/lib/openperouter/configs
directly, while the controller's quadlet mounts the parent
/var/lib/openperouter. In nested container environments (Kind nodes),
these can resolve to different overlayfs layers, causing files written
by the helper pod to be invisible to the controller's file watcher.

Mount the same parent directory (/var/lib/openperouter) in the helper
pod so both containers see the same filesystem.

Signed-off-by: Federico Paolinelli <fpaoline@redhat.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request addresses a synchronization issue between the config-helper DaemonSet and the controller in nested container environments, such as Kind nodes. By mounting the parent directory, it ensures that both components operate on the same filesystem layer, resolving inconsistencies that previously caused files written by the helper pod to be invisible to the controller's file watcher.

Highlights

  • Mount Configuration: Updated the config-helper DaemonSet to mount the parent directory /var/lib/openperouter instead of the specific configs subdirectory.
  • Filesystem Consistency: Ensured both the controller and the helper pod resolve to the same overlayfs layer to prevent visibility issues in nested container environments.
  • Volume Configuration: Adjusted the host path volume type to HostPathDirectory and updated the mount paths to ensure consistent file access.
New Features

🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request updates the end-to-end test configuration in e2etests/tests/static_and_api.go by changing the host configuration directory mount path and switching the host path volume type to HostPathDirectory. Feedback on these changes highlights two potential issues: first, writing to the nested configs subdirectory may fail if it is not explicitly created beforehand; second, changing the volume type to HostPathDirectory requires the directory to exist beforehand, which could cause the helper pod to fail to start if the directory is missing. Reverting to HostPathDirectoryOrCreate is recommended.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

// The systemd setup mounts /var/lib/openperouter -> /etc/openperouter in the controller container.
// We mount the same parent directory in the helper pod so both resolve to the same overlayfs layer.
hostConfigDir = "/var/lib/openperouter"
podConfigMount = "/hostconfig/configs"

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.

medium

Since the parent directory /var/lib/openperouter is mounted to /hostconfig, the configs subdirectory may not exist on the host. Writing to /hostconfig/configs/openpe_vni_red.yaml will fail with a 'No such file or directory' error if the directory is not created first. To prevent this, the test setup should create the directory (e.g., using mkdir -p) before writing files to it.

Path: hostConfigDir,
Type: func() *corev1.HostPathType {
t := corev1.HostPathDirectoryOrCreate
t := corev1.HostPathDirectory

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.

medium

Using HostPathDirectory requires the host directory /var/lib/openperouter to already exist. If the helper pod starts before the directory is created on the host, the pod will fail to start. Reverting this to HostPathDirectoryOrCreate makes the test setup more robust by automatically creating the directory if it does not exist.

Suggested change
t := corev1.HostPathDirectory
t := corev1.HostPathDirectoryOrCreate

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.

1 participant