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

  """

  @derive [Poison.Encoder]
  defstruct [
    :Name,
    :Driver,
    :User,
    :Lifecycle,
    :Config,
    :Constraints,
    :Affinities,
    :Env,
    :Services,
    :Resources,
    :Meta,
    :KillTimeout,
    :LogConfig,
    :Artifacts,
    :Vault,
    :Templates,
    :DispatchPayload,
    :VolumeMounts,
    :Csi_plugin,
    :Leader,
    :ShutdownDelay,
    :KillSignal,
    :Kind
  ]

  @type t :: %__MODULE__{
          :Name => String.t() | nil,
          :Driver => String.t() | nil,
          :User => String.t() | nil,
          :Lifecycle => NomadClient.Model.TaskLifecycle.t() | nil,
          :Config => %{optional(String.t()) => map()} | nil,
          :Constraints => [NomadClient.Model.Constraint.t()] | nil,
          :Affinities => [NomadClient.Model.Affinity.t()] | nil,
          :Env => %{optional(String.t()) => String.t()} | nil,
          :Services => [NomadClient.Model.Service.t()] | nil,
          :Resources => NomadClient.Model.Resources.t() | nil,
          :Meta => %{optional(String.t()) => String.t()} | nil,
          :KillTimeout => integer() | nil,
          :LogConfig => NomadClient.Model.LogConfig.t() | nil,
          :Artifacts => [NomadClient.Model.TaskArtifact.t()] | nil,
          :Vault => NomadClient.Model.Vault.t() | nil,
          :Templates => [NomadClient.Model.Template.t()] | nil,
          :DispatchPayload => NomadClient.Model.DispatchPayloadConfig.t() | nil,
          :VolumeMounts => [NomadClient.Model.VolumeMount.t()] | nil,
          :Csi_plugin => NomadClient.Model.TaskCsiPluginConfig.t() | nil,
          :Leader => boolean() | nil,
          :ShutdownDelay => integer() | nil,
          :KillSignal => String.t() | nil,
          :Kind => String.t() | nil
        }
end

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

  def decode(value, options) do
    value
    |> deserialize(:Lifecycle, :struct, NomadClient.Model.TaskLifecycle, options)
    |> deserialize(:Constraints, :list, NomadClient.Model.Constraint, options)
    |> deserialize(:Affinities, :list, NomadClient.Model.Affinity, options)
    |> deserialize(:Services, :list, NomadClient.Model.Service, options)
    |> deserialize(:Resources, :struct, NomadClient.Model.Resources, options)
    |> deserialize(:LogConfig, :struct, NomadClient.Model.LogConfig, options)
    |> deserialize(:Artifacts, :list, NomadClient.Model.TaskArtifact, options)
    |> deserialize(:Vault, :struct, NomadClient.Model.Vault, options)
    |> deserialize(:Templates, :list, NomadClient.Model.Template, options)
    |> deserialize(:DispatchPayload, :struct, NomadClient.Model.DispatchPayloadConfig, options)
    |> deserialize(:VolumeMounts, :list, NomadClient.Model.VolumeMount, options)
    |> deserialize(:Csi_plugin, :struct, NomadClient.Model.TaskCsiPluginConfig, options)
  end
end