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

  """

  @derive [Poison.Encoder]
  defstruct [
    :ID,
    :Namespace,
    :EvalID,
    :Name,
    :NodeID,
    :NodeName,
    :JobID,
    :Job,
    :TaskGroup,
    :Resources,
    :TaskResources,
    :AllocatedResources,
    :Services,
    :Metrics,
    :DesiredStatus,
    :DesiredDescription,
    :DesiredTransition,
    :ClientStatus,
    :ClientDescription,
    :TaskStates,
    :DeploymentID,
    :DeploymentStatus,
    :FollowupEvalID,
    :PreviousAllocation,
    :NextAllocation,
    :RescheduleTracker,
    :PreemptedAllocations,
    :PreemptedByAllocation,
    :CreateIndex,
    :ModifyIndex,
    :AllocModifyIndex,
    :CreateTime,
    :ModifyTime
  ]

  @type t :: %__MODULE__{
          :ID => String.t() | nil,
          :Namespace => String.t() | nil,
          :EvalID => String.t() | nil,
          :Name => String.t() | nil,
          :NodeID => String.t() | nil,
          :NodeName => String.t() | nil,
          :JobID => String.t() | nil,
          :Job => NomadClient.Model.Job.t() | nil,
          :TaskGroup => String.t() | nil,
          :Resources => NomadClient.Model.Resources.t() | nil,
          :TaskResources => %{optional(String.t()) => NomadClient.Model.Resources.t()} | nil,
          :AllocatedResources => NomadClient.Model.AllocatedResources.t() | nil,
          :Services => %{optional(String.t()) => String.t()} | nil,
          :Metrics => NomadClient.Model.AllocationMetric.t() | nil,
          :DesiredStatus => String.t() | nil,
          :DesiredDescription => String.t() | nil,
          :DesiredTransition => NomadClient.Model.DesiredTransition.t() | nil,
          :ClientStatus => String.t() | nil,
          :ClientDescription => String.t() | nil,
          :TaskStates => %{optional(String.t()) => NomadClient.Model.TaskState.t()} | nil,
          :DeploymentID => String.t() | nil,
          :DeploymentStatus => NomadClient.Model.AllocDeploymentStatus.t() | nil,
          :FollowupEvalID => String.t() | nil,
          :PreviousAllocation => String.t() | nil,
          :NextAllocation => String.t() | nil,
          :RescheduleTracker => NomadClient.Model.RescheduleTracker.t() | nil,
          :PreemptedAllocations => [String.t()] | nil,
          :PreemptedByAllocation => String.t() | nil,
          :CreateIndex => integer() | nil,
          :ModifyIndex => integer() | nil,
          :AllocModifyIndex => integer() | nil,
          :CreateTime => integer() | nil,
          :ModifyTime => integer() | nil
        }
end

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

  def decode(value, options) do
    value
    |> deserialize(:Job, :struct, NomadClient.Model.Job, options)
    |> deserialize(:Resources, :struct, NomadClient.Model.Resources, options)
    |> deserialize(:TaskResources, :map, NomadClient.Model.Resources, options)
    |> deserialize(:AllocatedResources, :struct, NomadClient.Model.AllocatedResources, options)
    |> deserialize(:Metrics, :struct, NomadClient.Model.AllocationMetric, options)
    |> deserialize(:DesiredTransition, :struct, NomadClient.Model.DesiredTransition, options)
    |> deserialize(:TaskStates, :map, NomadClient.Model.TaskState, options)
    |> deserialize(:DeploymentStatus, :struct, NomadClient.Model.AllocDeploymentStatus, options)
    |> deserialize(:RescheduleTracker, :struct, NomadClient.Model.RescheduleTracker, options)
  end
end