lib/nomad_client/model/host_stats.ex

# NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
# https://openapi-generator.tech
# Do not edit the class manually.

defmodule NomadClient.Model.HostStats do
  @moduledoc """

  """

  @derive [Poison.Encoder]
  defstruct [
    :Memory,
    :CPU,
    :DiskStats,
    :DeviceStats,
    :Uptime,
    :CpuTicksConsumed
  ]

  @type t :: %__MODULE__{
          :Memory => NomadClient.Model.HostMemoryStats.t() | nil,
          :CPU => [NomadClient.Model.HostCpuStats.t()] | nil,
          :DiskStats => [NomadClient.Model.HostDiskStats.t()] | nil,
          :DeviceStats => [NomadClient.Model.DeviceGroupStats.t()] | nil,
          :Uptime => integer() | nil,
          :CpuTicksConsumed => float() | nil
        }
end

defimpl Poison.Decoder, for: NomadClient.Model.HostStats do
  import NomadClient.Deserializer

  def decode(value, options) do
    value
    |> deserialize(:Memory, :struct, NomadClient.Model.HostMemoryStats, options)
    |> deserialize(:CPU, :list, NomadClient.Model.HostCpuStats, options)
    |> deserialize(:DiskStats, :list, NomadClient.Model.HostDiskStats, options)
    |> deserialize(:DeviceStats, :list, NomadClient.Model.DeviceGroupStats, options)
  end
end