2023-06-27 19:28:00 +00:00
|
|
|
defmodule Prymn.Agents do
|
2024-02-02 18:53:52 +00:00
|
|
|
alias Prymn.Messaging
|
2024-02-01 21:54:23 +00:00
|
|
|
alias Prymn.Agents
|
2023-08-25 21:51:04 +00:00
|
|
|
|
2024-02-01 21:54:23 +00:00
|
|
|
def from_server(%Prymn.Servers.Server{} = server) do
|
|
|
|
agent_id = to_string(server.id)
|
|
|
|
Phoenix.PubSub.subscribe(Prymn.PubSub, "agent:#{agent_id}")
|
|
|
|
Agents.Store.get_or_default(agent_id)
|
2023-12-14 12:27:05 +00:00
|
|
|
end
|
2023-11-14 15:23:50 +00:00
|
|
|
|
2024-02-01 21:54:23 +00:00
|
|
|
def from_servers(servers) when is_list(servers) do
|
|
|
|
Enum.reduce(servers, [], fn server, acc ->
|
|
|
|
[{server.id, from_server(server)} | acc]
|
|
|
|
end)
|
|
|
|
|> Map.new()
|
2023-12-16 20:40:57 +00:00
|
|
|
end
|
|
|
|
|
2024-02-01 21:54:23 +00:00
|
|
|
def update_health(agent_id, health) when is_binary(agent_id) do
|
|
|
|
agent = Agents.Store.update_health(agent_id, health)
|
|
|
|
Phoenix.PubSub.broadcast!(Prymn.PubSub, "agent:#{agent_id}", agent)
|
2023-08-25 21:51:04 +00:00
|
|
|
end
|
2024-02-02 18:53:52 +00:00
|
|
|
|
|
|
|
def open_terminal(%Agents.Agent{id: id}) do
|
|
|
|
Messaging.open_terminal(id)
|
|
|
|
end
|
|
|
|
|
|
|
|
def close_terminal(%Agents.Agent{id: id}) do
|
|
|
|
Messaging.close_terminal(id)
|
|
|
|
end
|
|
|
|
|
|
|
|
def resize_terminal(%Agents.Agent{id: id}, rows, cols) do
|
|
|
|
Messaging.resize_terminal(id, rows, cols)
|
|
|
|
end
|
|
|
|
|
|
|
|
def send_terminal_input(%Agents.Agent{id: id}, input) do
|
|
|
|
Messaging.send_terminal_input(id, input)
|
|
|
|
end
|
2023-06-27 19:28:00 +00:00
|
|
|
end
|