33 lines
880 B
Elixir
33 lines
880 B
Elixir
defmodule BackendWeb.ClusterStatusChannel do
|
|
@moduledoc """
|
|
Channel for cluster status information
|
|
"""
|
|
use BackendWeb, :channel
|
|
require Logger
|
|
|
|
@impl true
|
|
def join("cluster_status", _params, socket) do
|
|
Logger.info("Client joined clusterstatus channel")
|
|
{:ok, %{status: "connected"}, socket}
|
|
end
|
|
|
|
@impl true
|
|
def handle_in("get_nodes", _payload, socket) do
|
|
Logger.info("Client requested node list #{inspect(Node.list())}")
|
|
push(socket, "node_list", %{other_nodes: Node.list(), connected_node: node()})
|
|
{:noreply, socket}
|
|
end
|
|
|
|
@impl true
|
|
def handle_in("kill_node", %{"node" => node_to_kill}, socket) do
|
|
Logger.warning("Client requested to kill node: #{node_to_kill}")
|
|
Backend.Cluster.kill_node(node_to_kill)
|
|
{:noreply, socket}
|
|
end
|
|
|
|
@impl true
|
|
def handle_in(_event, _payload, socket) do
|
|
{:noreply, socket}
|
|
end
|
|
end
|