fix: mount parent directory in config helper pod - #534
Conversation
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>
Summary of ChangesHello, 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
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 AssistThe 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
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 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
|
There was a problem hiding this comment.
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" |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.
| t := corev1.HostPathDirectory | |
| t := corev1.HostPathDirectoryOrCreate |
Is this a BUG FIX or a FEATURE ?:
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:
AI Guidelines Acknowledgment: