Skip to content

Commit 0d8bab8

Browse files
kvapsclaude
andcommitted
docs(plan): record full controller↔satellite gRPC roundtrip on stand
ApplyResources via grpcurl from a cluster pod hits the satellite's gRPC server, the Reconciler runs, drbdadm shells out (and surfaces "no resources defined" because the req had no hosts — exactly the expected per-resource error). Every hop on the wire is now proven. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
1 parent f55ef29 commit 0d8bab8

1 file changed

Lines changed: 14 additions & 8 deletions

File tree

PLAN.md

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -250,14 +250,20 @@ Full scope list lives in `docs/csi-api-surface.md` (to be created in Phase 1).
250250
- [x] Resource reconciler (`pkg/satellite.Reconciler`) routes DesiredResource batches: storage provider CreateVolume per volume, ConfFileBuilder writes /etc/drbd.d/<name>.res, drbdadm create-md (first activation, non-DISKLESS) + adjust. Status writeback from events2 stream is the next slice.
251251
- [x] Status writeback first half: `pkg/satellite.Observer` translates parsed drbd.Event values into ResourceObservedEvent (4 contract tests). Wire-up to gRPC stream pending the controller-side handler.
252252
- [ ] Resource on 2 nodes replicates and goes UpToDate (real DRBD smoke)
253-
— Prereqs landed (controller running in-cluster, satellites
254-
registered, REST CRUD persists CRDs). Remaining wiring: server-
255-
side handler for `ApplyResources` (controller→satellite push) or
256-
a periodic pull RPC; controller-side reconcile that diffs the
257-
desired set and dispatches per node; storage-pool seeding so the
258-
satellite has somewhere to put the LV. Once those land, an
259-
autoplaced 2-replica RD walks all the way through to UpToDate
260-
without touching the Java oracle.
253+
**gRPC plumbing is now complete on the stand**: proto split
254+
into `service Controller` (Hello + ReportObserved) and `service
255+
Satellite` (ApplyResources + snapshot RPCs); the satellite
256+
hosts its own gRPC server on :7000 (reflection enabled),
257+
advertises its endpoint via Hello (`spec.props.SatelliteEndpoint`
258+
on the Node CRD), and `grpcurl ... ApplyResources` from a
259+
cluster pod actually drives Reconciler.Apply → drbd.Build →
260+
drbdadm. End-to-end smoke against `test-worker-1` returned a
261+
per-resource error ("drbdadm adjust: no resources defined!"
262+
because the test req had no hosts), proving every hop works.
263+
Remaining for green UpToDate: controller-side reconciler that
264+
diffs RD/Resource CRDs and dispatches a populated
265+
ApplyResourcesRequest with hosts/peers/minors; storage-pool
266+
seeding so a non-DISKLESS resource has somewhere to put its LV.
261267

262268
**Stand walkthrough so far** (proven on `ssh ubuntu@129.213.29.101`,
263269
2026-05-08):

0 commit comments

Comments
 (0)