Skip to content

fix: migrate config dir to ~/.greennode with legacy fallback - #61

Merged
vks-team merged 1 commit into
mainfrom
fix/config-dir-greennode-rename
Jul 25, 2026
Merged

fix: migrate config dir to ~/.greennode with legacy fallback#61
vks-team merged 1 commit into
mainfrom
fix/config-dir-greennode-rename

Conversation

@vks-team

Copy link
Copy Markdown
Contributor

QC Handoff: Migrate config dir to ~/.greennode (legacy ~/.greenode fallback)

Summary

greennode-cli đã đổi thư mục cấu hình từ ~/.greenode sang ~/.greennode (double-n), giữ path cũ làm read-only fallback. Các MCP server vẫn hardcode ~/.greenode, nên user mới chạy grn configure (ghi vào ~/.greennode) sẽ khiến server không tìm thấy credentials → auth fail. Fix thêm resolve_config_dir() trong mcp-core (ưu tiên ~/.greennode, fallback legacy ~/.greenode) và áp cho vks-mcp-server + template, mirror effectiveConfigDir của CLI.

Impact assessment

Feature / Area Risk Reason
Credential loading (stdio) Medium Đổi path resolution — critical path cho mọi tool; có unit test phủ 3 nhánh (prefer/fallback/default)
Credential loading (HTTP / service-account) Medium Cùng CONFIG_PATH; passthrough-token flow không đổi nhưng service-account load qua path mới
Legacy users (~/.greenode cũ) Low Fallback giữ tương thích ngược khi chỉ có dir cũ
new-server template Low Chỉ ảnh hưởng server sinh mới sau này; không runtime hiện tại
Docs / CLAUDE.md / prompts text Low Không thay đổi hành vi runtime

Test checklist for QC

Golden path

  • Có sẵn ~/.greennode/credentials + ~/.greennode/config (chạy grn configure bản CLI mới) → uv run vks-mcp-server, gọi tool get_access_token → trả về IAM token thành công.
  • list_clusters chạy được với credentials từ ~/.greennode (đúng region trong config).

Edge cases

  • Chỉ có legacy dir: xóa/không có ~/.greennode, chỉ còn ~/.greenode cũ → server vẫn load được (fallback), get_access_token OK.
  • Có cả hai dir: cả ~/.greennode~/.greenode tồn tại → server đọc ~/.greennode (ưu tiên), bỏ qua legacy.
  • Không có dir nào + không env: stdio → exit với message "No credentials found (~/.greennode or GRN_CLIENT_ID/...)".
  • Env override: set GRN_CLIENT_ID/GRN_CLIENT_SECRET/GRN_DEFAULT_REGION, không có file dir nào → server vẫn chạy bằng env.
  • HTTP passthrough-only: --transport streamable-http không credentials → boot OK, request không token trả 401.

Regression risks

  • User-token passthrough (HTTP + Authorization: Bearer) vẫn chạy như caller, cache cô lập per-caller — không bị ảnh hưởng bởi đổi CONFIG_PATH.
  • mcp-core unit tests + vks-mcp-server tests xanh (đã chạy local: 22 + 277 pass).

Links

  • Spec: N/A — no design doc (bug-fix following upstream CLI rename)
  • Plan: N/A
  • Dev PR: N/A — repo trunk-based (main only), no dev branch
  • Dev image tag: N/A — production deploy is release-please driven after merge to main

greennode-cli renamed its config dir from ~/.greenode to ~/.greennode
(double-n) while keeping the old path as a read-only fallback. The MCP
servers still hardcoded ~/.greenode, so a fresh `grn configure` (writing
to ~/.greennode) would leave the server unable to find credentials.

- mcp-core: add resolve_config_dir() — prefers ~/.greennode, falls back
  to legacy ~/.greenode only when it alone exists (mirrors the CLI's
  effectiveConfigDir). Export from the package; cover with unit tests.
- vks-mcp-server: resolve CONFIG_PATH via resolve_config_dir(); update
  error message and drop the now-unused Path import.
- new-server template: use resolve_config_dir() so new servers inherit
  the behavior.
- docs: update READMEs, CLAUDE.md files, prompts, and smoke_test to
  ~/.greennode (noting the legacy fallback).
@vks-team
vks-team merged commit 040c479 into main Jul 25, 2026
8 checks passed
@vks-team vks-team mentioned this pull request Jul 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant