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