mirror of
https://github.com/benbusby/farside.git
synced 2025-05-03 17:10:03 +00:00
Validate status code for all service instances
Updated to filter out all instances that either time out (I believe default timeout for HTTPoison is 5s) or return a non-200 status code.
This commit is contained in:
parent
cf8dfc5a85
commit
b0953f0777
4 changed files with 30 additions and 8 deletions
22
update.exs
22
update.exs
|
@ -1,19 +1,31 @@
|
|||
defmodule Instance do
|
||||
defstruct [
|
||||
instance_type: nil,
|
||||
instance_test: nil,
|
||||
instance_list: []
|
||||
]
|
||||
end
|
||||
|
||||
defmodule Instances do
|
||||
def request(url) do
|
||||
case HTTPoison.get(url) do
|
||||
{:ok, %HTTPoison.Response{status_code: 200}} ->
|
||||
# TODO: Add validation of results, not just status code
|
||||
:good
|
||||
_ ->
|
||||
:bad
|
||||
end
|
||||
end
|
||||
|
||||
def update(filename) do
|
||||
{:ok, file} = File.read(filename)
|
||||
{:ok, json} = Poison.decode(file, as: [%Instance{}])
|
||||
for x <- json do
|
||||
IO.puts(x.instance_type)
|
||||
for y <- x.instance_list do
|
||||
IO.puts(" - " <> y)
|
||||
end
|
||||
for service <- json do
|
||||
result = Enum.filter(service.instance_list, fn(url) ->
|
||||
request(url <> service.instance_test) == :good
|
||||
end)
|
||||
# TODO: Output result to redis
|
||||
IO.inspect(result)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue