Packages
libcluster_gce
0.0.1
Clustering strategy for connecting nodes running on Google App Engine.
Current section
Files
Jump to
Current section
Files
lib/cluster_gce/instances.ex
defmodule ClusterGCE.Instances do
def get(project, headers, zone_names) do
zone_names
|> Enum.map(fn z ->
api_url =
'https://compute.googleapis.com/compute/v1/projects/#{project}/zones/#{z}/instances'
:get
|> :httpc.request({api_url, headers}, [], [])
|> case do
{:ok, {{_, 200, _}, _headers, body}} ->
instances =
body
|> Jason.decode!()
|> Map.get("items", [])
{:ok, instances}
error ->
error
end
end)
|> Enum.filter(fn
{:ok, _} -> true
_ -> false
end)
|> Enum.reduce(
{:ok, []},
fn {:ok, i}, {:ok, instances} ->
{:ok, instances ++ i}
end
)
end
end