defmodule HAHandler.Web.Controller do import Plug.Conn alias HAHandler.{HAProxy, PGSQL, DRBD, Cluster} @template_dir "lib/ha_handler/web/templates" @index_template EEx.compile_file(Path.join(@template_dir, "index.html.eex")) defp render(conn, template, assigns) do {body, _binding} = Code.eval_quoted(template, assigns) conn |> put_resp_content_type("text/html") |> send_resp(200, body) end def index(conn) do {:ok, hostname} = :net_adm.dns_hostname(:net_adm.localhost()) haproxy_stats = HAProxy.get_stats(hide_error: true) pgsql_stats = PGSQL.get_stats() drbd_stats = DRBD.get_stats() handler_stats = Cluster.get_instance_details() assigns = [ haproxy_stats: haproxy_stats, pgsql_status: pgsql_stats, drbd_status: drbd_stats, handler_status: handler_stats, hostname: hostname, otp_app: HAHandler.otp_app(), version: HAHandler.version(), env: HAHandler.env() ] render(conn, @index_template, assigns) end end