Skip to content

ateapi: add the CsiDriverConfig resource - #3808

Open
Vu Le (lekhoavu2909) wants to merge 21 commits into
agent-substrate:mainfrom
lekhoavu2909:cdc-pr3-handlers
Open

Vu Le (lekhoavu2909) wants to merge 21 commits into
agent-substrate:mainfrom
lekhoavu2909:cdc-pr3-handlers

Conversation

@lekhoavu2909

@lekhoavu2909 Vu Le (lekhoavu2909) commented Nov 11, 2026 •

Copy link
Copy Markdown
Collaborator

Adds the CsiDriverConfig API resource, PostgreSQL storage, request and update validation, OpenFGA authorization, and Control service RPC handlers. Runtime CSI plugin wiring in ateapi and atelet follows in subsequent PRs.

A CsiDriverConfig is a global-scoped resource that configures how ate-api-server connects to an external CSI controller (controller_endpoint and tls) and how atelet locates the CSI node plugin socket (node_socket_override), replacing the cluster-scoped Kubernetes CSIDriverConfig CRD. driver_name is unique and immutable; endpoint and TLS settings are mutable via UpdateCsiDriverConfig, and DeleteCsiDriverConfig rejects deletion while any ExternalVolumeClass still references driver_name.

Stacked on #3774 (evc-pr5-cli); review the top 7 commits (472a0cf..8bc000d) or the isolated diff. Consolidates #3778, #3797, and #3808 into a single PR.

  • CsiDriverConfig and CsiDriverTlsConfig proto messages, custom validation, and apitool registration (472a0cf)
  • PostgreSQL migration, store.Interface, atepg CRUD with Delete in-use guard, defaults, and contract/tamper/concurrency tests (f8dc4ac, f8cf6c0)
  • OpenFGA model (global owners/viewers and atelet), contextual tuple, and authz helpers (b94e64d)
  • Create/Get/List/Update/DeleteCsiDriverConfig RPCs, two-step update validation, permission registry, and apitool example (1d1076f)
  • Resource model and authorization docs (ec9d915)
  • RPCService and ServiceImpl Control handlers and functional tests (8bc000d)

Part of #3754

AI use: AI-assisted, I reviewed and tested it.

Breaking change: no. Adds the csi_driver_configs table via migration; Create and Update require the ExternalVolumes preview gate, while Get, List, and Delete remain available when the gate is off.

  • Tests pass
  • Docs updated

regenerate ateapi.go, and register ExternalVolumeClass in apitool
TestBuild_Annotations.

Signed-off-by: Vu Le <vulk@google.com>
controlapi.ServiceImpl store pass-throughs

Signed-off-by: Vu Le <vulk@google.com>
table truncation and driver_name column test

Signed-off-by: Vu Le <vulk@google.com>
Signed-off-by: Vu Le <vulk@google.com>
Signed-off-by: Vu Le <vulk@google.com>
apitool example

Signed-off-by: Vu Le <vulk@google.com>
Signed-off-by: Vu Le <vulk@google.com>
Signed-off-by: Vu Le <vulk@google.com>
Signed-off-by: Vu Le <vulk@google.com>
Signed-off-by: Vu Le <vulk@google.com>
Signed-off-by: Vu Le <vulk@google.com>
Signed-off-by: Vu Le <vulk@google.com>
Signed-off-by: Vu Le <vulk@google.com>
Signed-off-by: Vu Le <vulk@google.com>
Signed-off-by: Vu Le <vulk@google.com>
@lekhoavu2909 Vu Le (lekhoavu2909) changed the title cdc pr3 handlers ateapi: serve the CsiDriverConfig RPCs Nov 11, 2026
@lekhoavu2909
Vu Le (lekhoavu2909) marked this pull request as ready for review November 12, 2026 23:18

This branch has not been deployed

No deployments
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