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

  """

  @derive [Poison.Encoder]
  defstruct [
    :Stop,
    :Region,
    :Namespace,
    :ID,
    :ParentID,
    :Name,
    :Type,
    :Priority,
    :AllAtOnce,
    :Datacenters,
    :Constraints,
    :Affinities,
    :TaskGroups,
    :Update,
    :Spreads,
    :Periodic,
    :ParameterizedJob,
    :Dispatched,
    :Payload,
    :Reschedule,
    :Migrate,
    :Meta,
    :ConsulToken,
    :VaultToken,
    :Status,
    :StatusDescription,
    :Stable,
    :Version,
    :SubmitTime,
    :CreateIndex,
    :ModifyIndex,
    :JobModifyIndex
  ]

  @type t :: %__MODULE__{
          :Stop => boolean() | nil,
          :Region => String.t() | nil,
          :Namespace => String.t() | nil,
          :ID => String.t() | nil,
          :ParentID => String.t() | nil,
          :Name => String.t() | nil,
          :Type => String.t() | nil,
          :Priority => integer() | nil,
          :AllAtOnce => boolean() | nil,
          :Datacenters => [String.t()] | nil,
          :Constraints => [NomadClient.Model.Constraint.t()] | nil,
          :Affinities => [NomadClient.Model.Affinity.t()] | nil,
          :TaskGroups => [NomadClient.Model.TaskGroup.t()] | nil,
          :Update => NomadClient.Model.UpdateStrategy.t() | nil,
          :Spreads => [NomadClient.Model.Spread.t()] | nil,
          :Periodic => NomadClient.Model.PeriodicConfig.t() | nil,
          :ParameterizedJob => NomadClient.Model.ParameterizedJobConfig.t() | nil,
          :Dispatched => boolean() | nil,
          :Payload => binary() | nil,
          :Reschedule => NomadClient.Model.ReschedulePolicy.t() | nil,
          :Migrate => NomadClient.Model.MigrateStrategy.t() | nil,
          :Meta => %{optional(String.t()) => String.t()} | nil,
          :ConsulToken => String.t() | nil,
          :VaultToken => String.t() | nil,
          :Status => String.t() | nil,
          :StatusDescription => String.t() | nil,
          :Stable => boolean() | nil,
          :Version => integer() | nil,
          :SubmitTime => integer() | nil,
          :CreateIndex => integer() | nil,
          :ModifyIndex => integer() | nil,
          :JobModifyIndex => integer() | nil
        }
end

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

  def decode(value, options) do
    value
    |> deserialize(:Constraints, :list, NomadClient.Model.Constraint, options)
    |> deserialize(:Affinities, :list, NomadClient.Model.Affinity, options)
    |> deserialize(:TaskGroups, :list, NomadClient.Model.TaskGroup, options)
    |> deserialize(:Update, :struct, NomadClient.Model.UpdateStrategy, options)
    |> deserialize(:Spreads, :list, NomadClient.Model.Spread, options)
    |> deserialize(:Periodic, :struct, NomadClient.Model.PeriodicConfig, options)
    |> deserialize(:ParameterizedJob, :struct, NomadClient.Model.ParameterizedJobConfig, options)
    |> deserialize(:Reschedule, :struct, NomadClient.Model.ReschedulePolicy, options)
    |> deserialize(:Migrate, :struct, NomadClient.Model.MigrateStrategy, options)
  end
end