diff options
| author | Ben Busby <noreply+git@benbusby.com> | 2021-10-21 21:15:58 -0600 |
|---|---|---|
| committer | Ben Busby <noreply+git@benbusby.com> | 2021-10-21 21:15:58 -0600 |
| commit | b0953f07779a4fc6fdfe650a872c4e39251db3ee (patch) | |
| tree | 2831514760005b3b0ad2acc8dc0b579e875d49bf /update.exs | |
| parent | cf8dfc5a85a7d655fef36ce735472a16635d8b7a (diff) | |
| download | farside-b0953f07779a4fc6fdfe650a872c4e39251db3ee.tar.gz | |
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.
Diffstat (limited to 'update.exs')
| -rw-r--r-- | update.exs | 22 |
1 files changed, 17 insertions, 5 deletions
@@ -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 |
