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

  """

  @derive [Poison.Encoder]
  defstruct [
    :Name,
    :Count,
    :Constraints,
    :Affinities,
    :Tasks,
    :Spreads,
    :Volumes,
    :RestartPolicy,
    :ReschedulePolicy,
    :EphemeralDisk,
    :Update,
    :Migrate,
    :Networks,
    :Meta,
    :Services,
    :ShutdownDelay,
    :Scaling
  ]

  @type t :: %__MODULE__{
          :Name => String.t() | nil,
          :Count => integer() | nil,
          :Constraints => [NomadClient.Model.Constraint.t()] | nil,
          :Affinities => [NomadClient.Model.Affinity.t()] | nil,
          :Tasks => [NomadClient.Model.Task.t()] | nil,
          :Spreads => [NomadClient.Model.Spread.t()] | nil,
          :Volumes => %{optional(String.t()) => NomadClient.Model.VolumeRequest.t()} | nil,
          :RestartPolicy => NomadClient.Model.RestartPolicy.t() | nil,
          :ReschedulePolicy => NomadClient.Model.ReschedulePolicy.t() | nil,
          :EphemeralDisk => NomadClient.Model.EphemeralDisk.t() | nil,
          :Update => NomadClient.Model.UpdateStrategy.t() | nil,
          :Migrate => NomadClient.Model.MigrateStrategy.t() | nil,
          :Networks => [NomadClient.Model.NetworkResource.t()] | nil,
          :Meta => %{optional(String.t()) => String.t()} | nil,
          :Services => [NomadClient.Model.Service.t()] | nil,
          :ShutdownDelay => integer() | nil,
          :Scaling => NomadClient.Model.ScalingPolicy.t() | nil
        }
end

defimpl Poison.Decoder, for: NomadClient.Model.TaskGroup 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(:Tasks, :list, NomadClient.Model.Task, options)
    |> deserialize(:Spreads, :list, NomadClient.Model.Spread, options)
    |> deserialize(:Volumes, :map, NomadClient.Model.VolumeRequest, options)
    |> deserialize(:RestartPolicy, :struct, NomadClient.Model.RestartPolicy, options)
    |> deserialize(:ReschedulePolicy, :struct, NomadClient.Model.ReschedulePolicy, options)
    |> deserialize(:EphemeralDisk, :struct, NomadClient.Model.EphemeralDisk, options)
    |> deserialize(:Update, :struct, NomadClient.Model.UpdateStrategy, options)
    |> deserialize(:Migrate, :struct, NomadClient.Model.MigrateStrategy, options)
    |> deserialize(:Networks, :list, NomadClient.Model.NetworkResource, options)
    |> deserialize(:Services, :list, NomadClient.Model.Service, options)
    |> deserialize(:Scaling, :struct, NomadClient.Model.ScalingPolicy, options)
  end
end