lib/google_api/dataflow/v1b3/model/runtime_environment.ex

# 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.Dataflow.V1b3.Model.RuntimeEnvironment do
  @moduledoc """
  The environment values to set at runtime.

  ## Attributes

  *   `additionalExperiments` (*type:* `list(String.t)`, *default:* `nil`) - Optional. Additional experiment flags for the job, specified with the `--experiments` option.
  *   `additionalPipelineOptions` (*type:* `list(String.t)`, *default:* `nil`) - Optional. Additional pipeline option flags for the job.
  *   `additionalUserLabels` (*type:* `map()`, *default:* `nil`) - Optional. Additional user labels to be specified for the job. Keys and values should follow the restrictions specified in the [labeling restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) page. An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1kg", "count": "3" }.
  *   `bypassTempDirValidation` (*type:* `boolean()`, *default:* `nil`) - Optional. Whether to bypass the safety checks for the job's temporary directory. Use with caution.
  *   `diskSizeGb` (*type:* `integer()`, *default:* `nil`) - Optional. The disk size, in gigabytes, to use on each remote Compute Engine worker instance.
  *   `enableStreamingEngine` (*type:* `boolean()`, *default:* `nil`) - Optional. Whether to enable Streaming Engine for the job.
  *   `ipConfiguration` (*type:* `String.t`, *default:* `nil`) - Optional. Configuration for VM IPs.
  *   `kmsKeyName` (*type:* `String.t`, *default:* `nil`) - Optional. Name for the Cloud KMS key for the job. Key format is: projects//locations//keyRings//cryptoKeys/
  *   `machineType` (*type:* `String.t`, *default:* `nil`) - Optional. The machine type to use for the job. Defaults to the value from the template if not specified.
  *   `maxWorkers` (*type:* `integer()`, *default:* `nil`) - Optional. The maximum number of Google Compute Engine instances to be made available to your pipeline during execution, from 1 to 1000. The default value is 1.
  *   `network` (*type:* `String.t`, *default:* `nil`) - Optional. Network to which VMs will be assigned. If empty or unspecified, the service will use the network "default".
  *   `numWorkers` (*type:* `integer()`, *default:* `nil`) - Optional. The initial number of Google Compute Engine instances for the job. The default value is 11.
  *   `serviceAccountEmail` (*type:* `String.t`, *default:* `nil`) - Optional. The email address of the service account to run the job as.
  *   `streamingMode` (*type:* `String.t`, *default:* `nil`) - Optional. Specifies the Streaming Engine message processing guarantees. Reduces cost and latency but might result in duplicate messages committed to storage. Designed to run simple mapping streaming ETL jobs at the lowest cost. For example, Change Data Capture (CDC) to BigQuery is a canonical use case. For more information, see [Set the pipeline streaming mode](https://cloud.google.com/dataflow/docs/guides/streaming-modes).
  *   `subnetwork` (*type:* `String.t`, *default:* `nil`) - Optional. Subnetwork to which VMs will be assigned, if desired. You can specify a subnetwork using either a complete URL or an abbreviated path. Expected to be of the form "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK" or "regions/REGION/subnetworks/SUBNETWORK". If the subnetwork is located in a Shared VPC network, you must use the complete URL.
  *   `tempLocation` (*type:* `String.t`, *default:* `nil`) - Required. The Cloud Storage path to use for temporary files. Must be a valid Cloud Storage URL, beginning with `gs://`.
  *   `workerRegion` (*type:* `String.t`, *default:* `nil`) - Required. The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. "us-west1". Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane's region.
  *   `workerZone` (*type:* `String.t`, *default:* `nil`) - Optional. The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. "us-west1-a". Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane's region is chosen based on available capacity. If both `worker_zone` and `zone` are set, `worker_zone` takes precedence.
  *   `zone` (*type:* `String.t`, *default:* `nil`) - Optional. The Compute Engine [availability zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) for launching worker instances to run your pipeline. In the future, worker_zone will take precedence.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :additionalExperiments => list(String.t()) | nil,
          :additionalPipelineOptions => list(String.t()) | nil,
          :additionalUserLabels => map() | nil,
          :bypassTempDirValidation => boolean() | nil,
          :diskSizeGb => integer() | nil,
          :enableStreamingEngine => boolean() | nil,
          :ipConfiguration => String.t() | nil,
          :kmsKeyName => String.t() | nil,
          :machineType => String.t() | nil,
          :maxWorkers => integer() | nil,
          :network => String.t() | nil,
          :numWorkers => integer() | nil,
          :serviceAccountEmail => String.t() | nil,
          :streamingMode => String.t() | nil,
          :subnetwork => String.t() | nil,
          :tempLocation => String.t() | nil,
          :workerRegion => String.t() | nil,
          :workerZone => String.t() | nil,
          :zone => String.t() | nil
        }

  field(:additionalExperiments, type: :list)
  field(:additionalPipelineOptions, type: :list)
  field(:additionalUserLabels, type: :map)
  field(:bypassTempDirValidation)
  field(:diskSizeGb)
  field(:enableStreamingEngine)
  field(:ipConfiguration)
  field(:kmsKeyName)
  field(:machineType)
  field(:maxWorkers)
  field(:network)
  field(:numWorkers)
  field(:serviceAccountEmail)
  field(:streamingMode)
  field(:subnetwork)
  field(:tempLocation)
  field(:workerRegion)
  field(:workerZone)
  field(:zone)
end

defimpl Poison.Decoder, for: GoogleApi.Dataflow.V1b3.Model.RuntimeEnvironment do
  def decode(value, options) do
    GoogleApi.Dataflow.V1b3.Model.RuntimeEnvironment.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Dataflow.V1b3.Model.RuntimeEnvironment do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end