aprs.me/lib/aprsme/cluster/topology.ex

22 lines
668 B
Elixir

defmodule Aprsme.Cluster.Topology do
@moduledoc """
Wrapper for Cluster.Supervisor that only starts when clustering is enabled.
"""
def child_spec(opts) do
if Application.get_env(:aprsme, :cluster_enabled, false) do
topologies = Application.get_env(:libcluster, :topologies, [])
supervisor_opts = Keyword.merge([name: Aprsme.ClusterSupervisor], opts)
{Cluster.Supervisor, [topologies, supervisor_opts]}
else
# Return a no-op spec when clustering is disabled
%{
id: __MODULE__,
start: {__MODULE__, :start_link, [opts]},
type: :worker
}
end
end
def start_link(_opts), do: :ignore
end