+
+ rpc get-shard-role {
+ input {
+ uses datastore-shard-id;
+ }
+
+ output {
+ leaf role {
+ type string;
+ description "Current role for the given shard, if not present the shard currently does not have a role";
+ }
+ }
+
+ description "Returns the current role for the requested module shard.";
+ }
+
+ rpc locate-shard {
+ description "Return the transport-level information about where a shard has a home.";
+ input {
+ uses datastore-shard-id;
+ }
+
+ output {
+ choice member-node {
+ description "Location of the hypothetical cluster member node. Relationship to the input parameters
+ and the transport protocol.";
+
+ leaf local {
+ description "Local node is the best node to talk to when it comes from efficiency perspective
+ of underlying implementation. The requester of this RPC is advised to contact
+ any services to the specified shard via the channel on which this RPC was invoked.";
+ type empty;
+ }
+
+ leaf leader-actor-ref {
+ description "Actor reference to the actor which is currently acting as the leader.";
+ type string;
+ }
+ }
+ }
+ }
+
+ rpc get-known-clients-for-all-shards {
+ description "Request all shards to report their known frontend clients. This is useful for determining what
+ generation should a resurrected member node should use.";
+
+ output {
+ uses shard-result-output {
+ augment shard-result {
+ list known-clients {
+ when "../succeeded = true";
+
+ uses cds:client-identifier;
+ key "member type";
+ }
+ }
+ }
+ }
+ }
+
+ rpc activate-eos-datacenter {
+ description "Activates the datacenter that the node this rpc is called on belongs to. The caller must maintain
+ only a single active datacenter at a time as the singleton components will interfere with each
+ other otherwise. This only needs to be used if configuring multiple datacenters or if not using
+ default datacenter.";
+ }
+
+ rpc deactivate-eos-datacenter {
+ description "Deactivates the datacenter that the node this rpc is called on belongs to. The caller must maintain
+ only a single active datacenter at a time as the singleton components will interfere with each
+ other otherwise. This only needs to be used if configuring multiple datacenters or if not using
+ default datacenter.";
+ }
+}