# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Batch.V1.Model.AgentTaskRunnable do
  @moduledoc """
  AgentTaskRunnable is the Runnable representation between Agent and CLH communication.

  ## Attributes

  *   `alwaysRun` (*type:* `boolean()`, *default:* `nil`) - By default, after a Runnable fails, no further Runnable are executed. This flag indicates that this Runnable must be run even if the Task has already failed. This is useful for Runnables that copy output files off of the VM or for debugging. The always_run flag does not override the Task's overall max_run_duration. If the max_run_duration has expired then no further Runnables will execute, not even always_run Runnables.
  *   `background` (*type:* `boolean()`, *default:* `nil`) - This flag allows a Runnable to continue running in the background while the Task executes subsequent Runnables. This is useful to provide services to other Runnables (or to provide debugging support tools like SSH servers).
  *   `container` (*type:* `GoogleApi.Batch.V1.Model.AgentContainer.t`, *default:* `nil`) - Container runnable.
  *   `environment` (*type:* `GoogleApi.Batch.V1.Model.AgentEnvironment.t`, *default:* `nil`) - Environment variables for this Runnable (overrides variables set for the whole Task or TaskGroup).
  *   `ignoreExitStatus` (*type:* `boolean()`, *default:* `nil`) - Normally, a non-zero exit status causes the Task to fail. This flag allows execution of other Runnables to continue instead.
  *   `script` (*type:* `GoogleApi.Batch.V1.Model.AgentScript.t`, *default:* `nil`) - Script runnable.
  *   `timeout` (*type:* `String.t`, *default:* `nil`) - Timeout for this Runnable.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :alwaysRun => boolean() | nil,
          :background => boolean() | nil,
          :container => GoogleApi.Batch.V1.Model.AgentContainer.t() | nil,
          :environment => GoogleApi.Batch.V1.Model.AgentEnvironment.t() | nil,
          :ignoreExitStatus => boolean() | nil,
          :script => GoogleApi.Batch.V1.Model.AgentScript.t() | nil,
          :timeout => String.t() | nil
        }

  field(:alwaysRun)
  field(:background)
  field(:container, as: GoogleApi.Batch.V1.Model.AgentContainer)
  field(:environment, as: GoogleApi.Batch.V1.Model.AgentEnvironment)
  field(:ignoreExitStatus)
  field(:script, as: GoogleApi.Batch.V1.Model.AgentScript)
  field(:timeout)
end

defimpl Poison.Decoder, for: GoogleApi.Batch.V1.Model.AgentTaskRunnable do
  def decode(value, options) do
    GoogleApi.Batch.V1.Model.AgentTaskRunnable.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Batch.V1.Model.AgentTaskRunnable do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
