diff --git a/lib/uplink/availability.ex b/lib/uplink/availability.ex index 7a5b813..b56a50c 100644 --- a/lib/uplink/availability.ex +++ b/lib/uplink/availability.ex @@ -27,9 +27,13 @@ defmodule Uplink.Availability do Query.index_types() |> Enum.map(&Metrics.index/1) - members = LXD.list_cluster_members() + nodes = + LXD.list_cluster_members() + |> Enum.map(fn member -> + LXD.get_node(member.server_name) + end) - query = Query.build(members, indices) + query = Query.build(nodes, indices) Metrics.query!(monitor, query) end diff --git a/lib/uplink/availability/query.ex b/lib/uplink/availability/query.ex index e17fc56..858aa82 100644 --- a/lib/uplink/availability/query.ex +++ b/lib/uplink/availability/query.ex @@ -1,6 +1,6 @@ defmodule Uplink.Availability.Query do + alias Uplink.Clients.LXD.Node alias Uplink.Availability.Attribute - alias Uplink.Clients.LXD.Cluster.Member @metrics_mappings %{ "metrics-system.memory-" => :memory, @@ -33,16 +33,16 @@ defmodule Uplink.Availability.Query do Map.values(@metrics_mappings) end - @spec build([Member.t()] | Member.t(), [String.t()]) :: String.t() - def build(members, indices) when is_list(members) do - members + @spec build([Node.t()] | Member.t(), [String.t()]) :: String.t() + def build(nodes, indices) when is_list(members) do + nodes |> Enum.flat_map(fn node -> build(node, indices) end) |> Enum.join("\n") end - def build(%Member{server_name: key}, indices) + def build(%Node{name: key}, indices) when is_list(indices) do valid_prefixes = Map.keys(@metrics_mappings) diff --git a/lib/uplink/clients/lxd/node.ex b/lib/uplink/clients/lxd/node.ex index d1e840d..42c47f9 100644 --- a/lib/uplink/clients/lxd/node.ex +++ b/lib/uplink/clients/lxd/node.ex @@ -2,6 +2,8 @@ defmodule Uplink.Clients.LXD.Node do use Ecto.Schema import Ecto.Changeset + @type t :: %__MODULE__{} + @derive Jason.Encoder @primary_key false diff --git a/test/uplink/availability_test.exs b/test/uplink/availability_test.exs new file mode 100644 index 0000000..f7c1d0b --- /dev/null +++ b/test/uplink/availability_test.exs @@ -0,0 +1,2 @@ +defmodule Uplink.AvailabilityTest do +end