roadmap: mark phase 7 done (unfeed ErlangDistTransport)
ErlangDistTransport itself lives in unfeed/unfeed/wallet.py to keep erldistpy app-agnostic. Tests + docs there. Pending the Elixir-side wallet_rpc gen_server, then staging soak, then prod switch.
This commit is contained in:
parent
531c26fcfb
commit
c870bdb2ac
1 changed files with 17 additions and 5 deletions
|
|
@ -94,9 +94,21 @@ if we hit a peer that requires it.
|
|||
the tunnel. Negative tests confirm: plaintext connection fails,
|
||||
wrong-CA client cert fails.
|
||||
|
||||
## Phase 7 — unfeed integration
|
||||
## Phase 7 — unfeed integration ✅
|
||||
|
||||
- `ErlangDistTransport` implementing unfeed's `WalletTransport` Protocol
|
||||
- Maps `/v1/health`, `/v1/address`, ... to gen_call requests
|
||||
- `unfeed` deploys with a config switch: `wallet_transport = http | erldist`
|
||||
- Cutover after a soak period on staging
|
||||
- `ErlangDistTransport` lives in `unfeed/wallet.py` (not erldistpy
|
||||
itself — keeps erldistpy app-agnostic)
|
||||
- Implements `WalletTransport` Protocol via `erldistpy.Node.call`
|
||||
- Wraps each HTTP-shape `(method, path, json, params)` into a single
|
||||
`{:unfeed_rpc, Method, Path, JsonBody, Params}` gen_server request
|
||||
- Reply translation: atoms/binaries → str, nested maps/lists recurse
|
||||
- Error mapping: `{:error, code, msg, retryable}` → `WalletBridgeError`;
|
||||
`CallTimeout` → `bridge_timeout`; `NodeError` → `bridge_unreachable`
|
||||
- Selected per-deploy via `unfeed.wallet_transport = http | erldist`
|
||||
- Optional TLS dist by setting `wallet_node_tls_*` config keys
|
||||
- 11 tests in unfeed/tests/test_wallet_erldist.py mock `Node.call`
|
||||
and verify the full request/reply contract
|
||||
|
||||
The Elixir-side gen_server (`wallet_rpc`) doesn't exist yet — it's
|
||||
the next ticket on the Elixir wallet bridge side. Once it lands and a
|
||||
staging deploy stays healthy, flip the production switch.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue