lib/nomad_client/model/node.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.Node do
  @moduledoc """

  """

  @derive [Poison.Encoder]
  defstruct [
    :ID,
    :Datacenter,
    :Name,
    :HttpAddr,
    :TlsEnabled,
    :Attributes,
    :Resources,
    :Reserved,
    :NodeResources,
    :ReservedResources,
    :Links,
    :Meta,
    :NodeClass,
    :Drain,
    :DrainStrategy,
    :SchedulingEligibility,
    :Status,
    :StatusDescription,
    :StatusUpdatedAt,
    :Events,
    :Drivers,
    :HostVolumes,
    :CsiControllerPlugins,
    :CsiNodePlugins,
    :CreateIndex,
    :ModifyIndex
  ]

  @type t :: %__MODULE__{
          :ID => String.t() | nil,
          :Datacenter => String.t() | nil,
          :Name => String.t() | nil,
          :HttpAddr => String.t() | nil,
          :TlsEnabled => boolean() | nil,
          :Attributes => %{optional(String.t()) => String.t()} | nil,
          :Resources => NomadClient.Model.Resources.t() | nil,
          :Reserved => NomadClient.Model.Resources.t() | nil,
          :NodeResources => NomadClient.Model.NodeResources.t() | nil,
          :ReservedResources => NomadClient.Model.NodeReservedResources.t() | nil,
          :Links => %{optional(String.t()) => String.t()} | nil,
          :Meta => %{optional(String.t()) => String.t()} | nil,
          :NodeClass => String.t() | nil,
          :Drain => boolean() | nil,
          :DrainStrategy => NomadClient.Model.DrainStrategy.t() | nil,
          :SchedulingEligibility => String.t() | nil,
          :Status => String.t() | nil,
          :StatusDescription => String.t() | nil,
          :StatusUpdatedAt => integer() | nil,
          :Events => [NomadClient.Model.NodeEvent.t()] | nil,
          :Drivers => %{optional(String.t()) => NomadClient.Model.DriverInfo.t()} | nil,
          :HostVolumes => %{optional(String.t()) => NomadClient.Model.HostVolumeInfo.t()} | nil,
          :CsiControllerPlugins => %{optional(String.t()) => NomadClient.Model.CsiInfo.t()} | nil,
          :CsiNodePlugins => %{optional(String.t()) => NomadClient.Model.CsiInfo.t()} | nil,
          :CreateIndex => integer() | nil,
          :ModifyIndex => integer() | nil
        }
end

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

  def decode(value, options) do
    value
    |> deserialize(:Resources, :struct, NomadClient.Model.Resources, options)
    |> deserialize(:Reserved, :struct, NomadClient.Model.Resources, options)
    |> deserialize(:NodeResources, :struct, NomadClient.Model.NodeResources, options)
    |> deserialize(:ReservedResources, :struct, NomadClient.Model.NodeReservedResources, options)
    |> deserialize(:DrainStrategy, :struct, NomadClient.Model.DrainStrategy, options)
    |> deserialize(:Events, :list, NomadClient.Model.NodeEvent, options)
    |> deserialize(:Drivers, :map, NomadClient.Model.DriverInfo, options)
    |> deserialize(:HostVolumes, :map, NomadClient.Model.HostVolumeInfo, options)
    |> deserialize(:CsiControllerPlugins, :map, NomadClient.Model.CsiInfo, options)
    |> deserialize(:CsiNodePlugins, :map, NomadClient.Model.CsiInfo, options)
  end
end