Packages

Service mesh distribution module

Current section

Files

Jump to
meshx_node lib default.ex
Raw

lib/default.ex

defmodule MeshxNode.Default do
@moduledoc """
Defaults for "node service" and upstream node connections registration parameters with service mesh adapter.
"""
@doc """
Returns service `params` required by `c:Meshx.ServiceMesh.start/4` as first argument.
When node is transformed to distributed one using `Node.start/3` or `:net_kernel.start/1`, special downstream "node service" is registered with `:mesh_adapter` service mesh adapter using `c:Meshx.ServiceMesh.start/4` callback. `service_params/2` function return value is passed as first argument to this callback.
Starting node by running `Node.start(:mynode@myhost)` will register "node service" with `params` set to: `{"mynode@myhost", "mynode@myhost"}`.
Function can be overwritten by `:service_params` config option.
"""
@spec service_params(name :: atom(), host :: nonempty_charlist()) :: {node :: String.t(), node :: String.t()}
def service_params(name, host) do
node = "#{name}@#{host}"
{node, node}
end
@doc """
Returns upstream `params` required by `c:Meshx.ServiceMesh.connect/3` as first argument.
When connection to other node is requested by `Node.connect/1` or `:net_kernel.connect_node/1` `MeshxNode` will ask service mesh adapter to prepare mesh upstream endpoint associated with other node "node service" by running `c:Meshx.ServiceMesh.connect/3`. `upstream_params/1` function return value is passed as first argument to this callback.
Function can be overwritten by `:upstream_params` config option.
"""
@spec upstream_params(node :: atom()) :: node :: atom()
def upstream_params(node), do: node
@doc """
Returns sidecar proxy service name used to register upstream connections to other nodes ("nodes services").
Function return value is passed as third argument to `c:Meshx.ServiceMesh.connect/3`.
Can be overwritten by `:upstream_proxy` config option.
"""
@spec upstream_proxy(node :: atom(), my_node :: atom()) :: {my_node :: atom(), my_node :: atom()}
def upstream_proxy(_node, my_node), do: {my_node, my_node}
end