Skip to content

feat(vdb): add grn vdb commands (relational, memorystore, postgresql, kafka) - #25

Merged
vks-team merged 9 commits into
mainfrom
vdb
Nov 3, 2026
Merged

vks-team merged 9 commits into
mainfrom
vdb

Conversation

@greennode-vdb

Copy link
Copy Markdown
Contributor

Summary

Adds grn vdb for GreenNode vDB, registered behind the !vks_only build tag (not in the public VKS-only release binary yet).

  • relational (/vdb-relational): instance lifecycle, replicas, settings/secrules, catalog lookups, backups, configuration groups, backup storage
  • memorystore (Redis): instance, catalog, backup, configuration, backup storage
  • postgresql cluster: list/get/create/resize/reboot/delete, multi-AZ, catalog, backups/restore points
  • kafka (/vdb-kafka): cluster, topic, user, versioned configuration groups, catalog

Shared changes

  • internal/client: SetHeaders for per-service headers (vDB user-type), plus Request/RequestRaw for Kafka's body-less PUTs with empty responses
  • internal/vdbclient: envelope unwrap, 1-based list query, ID guard, dry-run preview
  • internal/config: vdb_endpoint per region
  • CODEOWNERS for @GreenNodeHub/vdb; docs under docs/commands/vdb/ + mkdocs nav

Notes for review

  • vDB API quirks are documented in go/cmd/vdb/CLAUDE.md
  • The branch merges main (agentbase 1.14/1.15); conflicts were resolved in favor of main for agentbase and release files

Test plan

  • go build ./... and go build -tags vks_only ./...
  • go vet ./...
  • go test ./...

greennode-vdb and others added 8 commits September 7, 2026 16:11
- kafka cluster create: require --mtls-authen or --sasl-authen (gateway
  rejects both off with a field-less bad_request) and error when no
  project id resolves instead of sending ""
- always send configGroupVersionId: "" is read as "no config group"
  (confirmed live), not a malformed version id
- kafka user create/update: send topic-name lists as [] never null —
  the API 400s on null for these array fields
- kafka user get-creds: an mTLS answer is now a ZIP archive of the
  credential material, so read via the new vdbclient.Client.Raw and
  write to --output-file (default kafka-creds-<user-id>.zip, 0600);
  a JSON answer still prints as before
- tests for the new guards; docs updated to match

Co-Authored-By: Claude Code <noreply@anthropic.com>
The backend's create validation still calls getTags().size() on the
auto-payment flow even though the tagging feature was dropped, so a
request whose tags field is absent dies as a bare HTTP 500 (measured
live 2026-10-19). Send "tags": {} unconditionally; there is still no
way — or reason — to set a non-empty value. Also record the observed
create status pipeline in go/cmd/vdb/CLAUDE.md.

Co-Authored-By: Claude Code <noreply@anthropic.com>
The site/ directory is mkdocs build output and was committed by mistake
in a merge from main, including rendered internal superpowers docs.
Restore the site/ ignore rule that main already has.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve conflicts from the earlier snapshot-style "merge from main"
commit, which copied main's tree without recording main as a parent:

- agentbase sources/docs, CHANGELOG.md, .release-please-manifest.json,
  go/cmd/root.go: vdb carried older snapshots of main, take main's.
- CLAUDE.md: keep main's new agentbase tools entries plus the vdb tree.
- mkdocs.yml: take main's new agentbase nav entries.
- Drop go/internal/auth/token.go: the v1 IAM TokenManager that main
  removed in #8; it was re-added by the vdb init commit and is unused.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Comment thread go/cmd/vdb/postgresql/cluster/delete.go Resolved
Comment thread go/cmd/vdb/relational/backup/fields.go Resolved
Comment thread go/cmd/vdb/kafka/cluster/completion.go Resolved
Comment thread CLAUDE.md Resolved
- memorystore backup-storage: --storage-id completion read the purchasable
  packages (/packages) instead of the storage you own (basePath); fix the
  endpoint and the comment that described the mapping
- postgresql cluster delete: read the pre-delete target through
  vdbclient.PayloadObject and warn on a null payload instead of printing
  an envelope full of <nil> above the confirmation
- postgresql cluster completion: same PayloadObject check
- relational backup: drop subnetIDsOnly/subnetIDPrefix, dead code kept
  alive only by its own test
- kafka cluster: fix configGroupVersionResourc identifier typo
- CLAUDE.md: translate the vdb tree annotations to English

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vks-team
vks-team merged commit 773d76d into main Nov 3, 2026
9 checks passed
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.

3 participants