Feature request
Expose a Python API on Client that returns the TCP transport addresses of an endpoint's currently-registered instances, e.g.:
client = await endpoint.client()
addrs = client.instance_tcp_addresses()
# ["10.0.0.12:9401/ns/component/endpoint", ...]
The binding would read the runtime Client's watched instance set (client.instances()) and return each instance's TransportType::Tcp address string. Non-TCP transports (e.g. NATS) are skipped. Like instance_ids(), the result is a snapshot; callers can pair it with wait_for_instances() to block until instances exist.
Describe the problem you're encountering
From Python there is currently no dynamo API to learn where an endpoint's peer instances are running (their node addresses). Client.instance_ids() only returns opaque instance IDs.
A concrete use case: in a disaggregated deployment, a worker wants to run a startup RDMA connectivity check against its peer workers, which requires the peer node IPs. Today the only way to get them is to read the discovery/etcd registry layout directly and parse the registered instance records, which couples user code to dynamo's internal registry schema and can break on upgrades.
Environment: any deployment using the Python bindings (dynamo._core.Client); observed on Linux with recent main.
Describe alternatives you've tried
- Reading the etcd/discovery registry directly from Python and parsing the instance JSON to extract the transport address. This works but depends on the internal key layout and record schema, which are not a public contract.
- Passing peer addresses out-of-band via deployment configuration (env vars / operator-rendered config). This duplicates information dynamo already tracks and goes stale when instances are rescheduled.
Implementation is proposed in PR #11540.
Feature request
Expose a Python API on
Clientthat returns the TCP transport addresses of an endpoint's currently-registered instances, e.g.:The binding would read the runtime
Client's watched instance set (client.instances()) and return each instance'sTransportType::Tcpaddress string. Non-TCP transports (e.g. NATS) are skipped. Likeinstance_ids(), the result is a snapshot; callers can pair it withwait_for_instances()to block until instances exist.Describe the problem you're encountering
From Python there is currently no dynamo API to learn where an endpoint's peer instances are running (their node addresses).
Client.instance_ids()only returns opaque instance IDs.A concrete use case: in a disaggregated deployment, a worker wants to run a startup RDMA connectivity check against its peer workers, which requires the peer node IPs. Today the only way to get them is to read the discovery/etcd registry layout directly and parse the registered instance records, which couples user code to dynamo's internal registry schema and can break on upgrades.
Environment: any deployment using the Python bindings (
dynamo._core.Client); observed on Linux with recentmain.Describe alternatives you've tried
Implementation is proposed in PR #11540.