lib/phoenix/node_dashboard/instance.ex

defmodule Phoenix.NodeDashboard.Instance do
  def current() do
    node_info()
  end

  def rpc(node) do
    {time, response} =
      :timer.tc(fn ->
        :rpc.call(node, __MODULE__, :node_info, [])
      end)

    Map.put(response, :time, div(time, 1_000))
  end

  def node_info do
    %{
      status: "loaded",
      node: Node.self(),
      time: nil,
      uptime: :erlang.statistics(:wall_clock) |> elem(0)
    }
  end

  def region_name(code) do
    case code do
      "ams" -> "Amsterdam, Netherlands"
      "atl" -> "Atlanta, Georgia (US)"
      "cdg" -> "Paris, France"
      "dfw" -> "Dallas, Texas (US)"
      "ewr" -> "Parsippany, NJ (US)"
      "fra" -> "Frankfurt, Germany"
      "gru" -> "Sao Paulo, Brazil"
      "hkg" -> "Hong Kong"
      "iad" -> "Ashburn, Virginia (US)"
      "lax" -> "Los Angeles, California (US)"
      "lhr" -> "London, United Kingdom"
      "maa" -> "Chennai (Madras), India"
      "nrt" -> "Tokyo, Japan"
      "ord" -> "Chicago, Illinois (US)"
      "scl" -> "Santiago, Chile"
      "sea" -> "Seattle, Washington (US)"
      "sin" -> "Singapore"
      "sjc" -> "Sunnyvale, California (US)"
      "syd" -> "Sydney, Australia"
      "yyz" -> "Toronto, Canada"
      _ -> "Unknown"
    end
  end
end