/*
 * Copyright 2020 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
 *
 *     https://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.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/dataflow/v1beta3/environment.proto

package com.google.dataflow.v1beta3;

public interface EnvironmentOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.dataflow.v1beta3.Environment)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * The prefix of the resources the system should use for temporary
   * storage.  The system will append the suffix "/temp-{JOBNAME} to
   * this resource prefix, where {JOBNAME} is the value of the
   * job_name field.  The resulting bucket and object prefix is used
   * as the prefix of the resources used to store temporary data
   * needed during the job execution.  NOTE: This will override the
   * value in taskrunner_settings.
   * The supported resource type is:
   * Google Cloud Storage:
   *   storage.googleapis.com/{bucket}/{object}
   *   bucket.storage.googleapis.com/{object}
   * </pre>
   *
   * <code>string temp_storage_prefix = 1;</code>
   *
   * @return The tempStoragePrefix.
   */
  java.lang.String getTempStoragePrefix();
  /**
   *
   *
   * <pre>
   * The prefix of the resources the system should use for temporary
   * storage.  The system will append the suffix "/temp-{JOBNAME} to
   * this resource prefix, where {JOBNAME} is the value of the
   * job_name field.  The resulting bucket and object prefix is used
   * as the prefix of the resources used to store temporary data
   * needed during the job execution.  NOTE: This will override the
   * value in taskrunner_settings.
   * The supported resource type is:
   * Google Cloud Storage:
   *   storage.googleapis.com/{bucket}/{object}
   *   bucket.storage.googleapis.com/{object}
   * </pre>
   *
   * <code>string temp_storage_prefix = 1;</code>
   *
   * @return The bytes for tempStoragePrefix.
   */
  com.google.protobuf.ByteString getTempStoragePrefixBytes();

  /**
   *
   *
   * <pre>
   * The type of cluster manager API to use.  If unknown or
   * unspecified, the service will attempt to choose a reasonable
   * default.  This should be in the form of the API service name,
   * e.g. "compute.googleapis.com".
   * </pre>
   *
   * <code>string cluster_manager_api_service = 2;</code>
   *
   * @return The clusterManagerApiService.
   */
  java.lang.String getClusterManagerApiService();
  /**
   *
   *
   * <pre>
   * The type of cluster manager API to use.  If unknown or
   * unspecified, the service will attempt to choose a reasonable
   * default.  This should be in the form of the API service name,
   * e.g. "compute.googleapis.com".
   * </pre>
   *
   * <code>string cluster_manager_api_service = 2;</code>
   *
   * @return The bytes for clusterManagerApiService.
   */
  com.google.protobuf.ByteString getClusterManagerApiServiceBytes();

  /**
   *
   *
   * <pre>
   * The list of experiments to enable. This field should be used for SDK
   * related experiments and not for service related experiments. The proper
   * field for service related experiments is service_options.
   * </pre>
   *
   * <code>repeated string experiments = 3;</code>
   *
   * @return A list containing the experiments.
   */
  java.util.List<java.lang.String> getExperimentsList();
  /**
   *
   *
   * <pre>
   * The list of experiments to enable. This field should be used for SDK
   * related experiments and not for service related experiments. The proper
   * field for service related experiments is service_options.
   * </pre>
   *
   * <code>repeated string experiments = 3;</code>
   *
   * @return The count of experiments.
   */
  int getExperimentsCount();
  /**
   *
   *
   * <pre>
   * The list of experiments to enable. This field should be used for SDK
   * related experiments and not for service related experiments. The proper
   * field for service related experiments is service_options.
   * </pre>
   *
   * <code>repeated string experiments = 3;</code>
   *
   * @param index The index of the element to return.
   * @return The experiments at the given index.
   */
  java.lang.String getExperiments(int index);
  /**
   *
   *
   * <pre>
   * The list of experiments to enable. This field should be used for SDK
   * related experiments and not for service related experiments. The proper
   * field for service related experiments is service_options.
   * </pre>
   *
   * <code>repeated string experiments = 3;</code>
   *
   * @param index The index of the value to return.
   * @return The bytes of the experiments at the given index.
   */
  com.google.protobuf.ByteString getExperimentsBytes(int index);

  /**
   *
   *
   * <pre>
   * The list of service options to enable. This field should be used for
   * service related experiments only. These experiments, when graduating to GA,
   * should be replaced by dedicated fields or become default (i.e. always on).
   * </pre>
   *
   * <code>repeated string service_options = 16;</code>
   *
   * @return A list containing the serviceOptions.
   */
  java.util.List<java.lang.String> getServiceOptionsList();
  /**
   *
   *
   * <pre>
   * The list of service options to enable. This field should be used for
   * service related experiments only. These experiments, when graduating to GA,
   * should be replaced by dedicated fields or become default (i.e. always on).
   * </pre>
   *
   * <code>repeated string service_options = 16;</code>
   *
   * @return The count of serviceOptions.
   */
  int getServiceOptionsCount();
  /**
   *
   *
   * <pre>
   * The list of service options to enable. This field should be used for
   * service related experiments only. These experiments, when graduating to GA,
   * should be replaced by dedicated fields or become default (i.e. always on).
   * </pre>
   *
   * <code>repeated string service_options = 16;</code>
   *
   * @param index The index of the element to return.
   * @return The serviceOptions at the given index.
   */
  java.lang.String getServiceOptions(int index);
  /**
   *
   *
   * <pre>
   * The list of service options to enable. This field should be used for
   * service related experiments only. These experiments, when graduating to GA,
   * should be replaced by dedicated fields or become default (i.e. always on).
   * </pre>
   *
   * <code>repeated string service_options = 16;</code>
   *
   * @param index The index of the value to return.
   * @return The bytes of the serviceOptions at the given index.
   */
  com.google.protobuf.ByteString getServiceOptionsBytes(int index);

  /**
   *
   *
   * <pre>
   * If set, contains the Cloud KMS key identifier used to encrypt data
   * at rest, AKA a Customer Managed Encryption Key (CMEK).
   * Format:
   *   projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY
   * </pre>
   *
   * <code>string service_kms_key_name = 12;</code>
   *
   * @return The serviceKmsKeyName.
   */
  java.lang.String getServiceKmsKeyName();
  /**
   *
   *
   * <pre>
   * If set, contains the Cloud KMS key identifier used to encrypt data
   * at rest, AKA a Customer Managed Encryption Key (CMEK).
   * Format:
   *   projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY
   * </pre>
   *
   * <code>string service_kms_key_name = 12;</code>
   *
   * @return The bytes for serviceKmsKeyName.
   */
  com.google.protobuf.ByteString getServiceKmsKeyNameBytes();

  /**
   *
   *
   * <pre>
   * The worker pools. At least one "harness" worker pool must be
   * specified in order for the job to have workers.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.WorkerPool worker_pools = 4;</code>
   */
  java.util.List<com.google.dataflow.v1beta3.WorkerPool> getWorkerPoolsList();
  /**
   *
   *
   * <pre>
   * The worker pools. At least one "harness" worker pool must be
   * specified in order for the job to have workers.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.WorkerPool worker_pools = 4;</code>
   */
  com.google.dataflow.v1beta3.WorkerPool getWorkerPools(int index);
  /**
   *
   *
   * <pre>
   * The worker pools. At least one "harness" worker pool must be
   * specified in order for the job to have workers.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.WorkerPool worker_pools = 4;</code>
   */
  int getWorkerPoolsCount();
  /**
   *
   *
   * <pre>
   * The worker pools. At least one "harness" worker pool must be
   * specified in order for the job to have workers.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.WorkerPool worker_pools = 4;</code>
   */
  java.util.List<? extends com.google.dataflow.v1beta3.WorkerPoolOrBuilder>
      getWorkerPoolsOrBuilderList();
  /**
   *
   *
   * <pre>
   * The worker pools. At least one "harness" worker pool must be
   * specified in order for the job to have workers.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.WorkerPool worker_pools = 4;</code>
   */
  com.google.dataflow.v1beta3.WorkerPoolOrBuilder getWorkerPoolsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * A description of the process that generated the request.
   * </pre>
   *
   * <code>.google.protobuf.Struct user_agent = 5;</code>
   *
   * @return Whether the userAgent field is set.
   */
  boolean hasUserAgent();
  /**
   *
   *
   * <pre>
   * A description of the process that generated the request.
   * </pre>
   *
   * <code>.google.protobuf.Struct user_agent = 5;</code>
   *
   * @return The userAgent.
   */
  com.google.protobuf.Struct getUserAgent();
  /**
   *
   *
   * <pre>
   * A description of the process that generated the request.
   * </pre>
   *
   * <code>.google.protobuf.Struct user_agent = 5;</code>
   */
  com.google.protobuf.StructOrBuilder getUserAgentOrBuilder();

  /**
   *
   *
   * <pre>
   * A structure describing which components and their versions of the service
   * are required in order to run the job.
   * </pre>
   *
   * <code>.google.protobuf.Struct version = 6;</code>
   *
   * @return Whether the version field is set.
   */
  boolean hasVersion();
  /**
   *
   *
   * <pre>
   * A structure describing which components and their versions of the service
   * are required in order to run the job.
   * </pre>
   *
   * <code>.google.protobuf.Struct version = 6;</code>
   *
   * @return The version.
   */
  com.google.protobuf.Struct getVersion();
  /**
   *
   *
   * <pre>
   * A structure describing which components and their versions of the service
   * are required in order to run the job.
   * </pre>
   *
   * <code>.google.protobuf.Struct version = 6;</code>
   */
  com.google.protobuf.StructOrBuilder getVersionOrBuilder();

  /**
   *
   *
   * <pre>
   * The dataset for the current project where various workflow
   * related tables are stored.
   * The supported resource type is:
   * Google BigQuery:
   *   bigquery.googleapis.com/{dataset}
   * </pre>
   *
   * <code>string dataset = 7;</code>
   *
   * @return The dataset.
   */
  java.lang.String getDataset();
  /**
   *
   *
   * <pre>
   * The dataset for the current project where various workflow
   * related tables are stored.
   * The supported resource type is:
   * Google BigQuery:
   *   bigquery.googleapis.com/{dataset}
   * </pre>
   *
   * <code>string dataset = 7;</code>
   *
   * @return The bytes for dataset.
   */
  com.google.protobuf.ByteString getDatasetBytes();

  /**
   *
   *
   * <pre>
   * The Cloud Dataflow SDK pipeline options specified by the user. These
   * options are passed through the service and are used to recreate the
   * SDK pipeline options on the worker in a language agnostic and platform
   * independent way.
   * </pre>
   *
   * <code>.google.protobuf.Struct sdk_pipeline_options = 8;</code>
   *
   * @return Whether the sdkPipelineOptions field is set.
   */
  boolean hasSdkPipelineOptions();
  /**
   *
   *
   * <pre>
   * The Cloud Dataflow SDK pipeline options specified by the user. These
   * options are passed through the service and are used to recreate the
   * SDK pipeline options on the worker in a language agnostic and platform
   * independent way.
   * </pre>
   *
   * <code>.google.protobuf.Struct sdk_pipeline_options = 8;</code>
   *
   * @return The sdkPipelineOptions.
   */
  com.google.protobuf.Struct getSdkPipelineOptions();
  /**
   *
   *
   * <pre>
   * The Cloud Dataflow SDK pipeline options specified by the user. These
   * options are passed through the service and are used to recreate the
   * SDK pipeline options on the worker in a language agnostic and platform
   * independent way.
   * </pre>
   *
   * <code>.google.protobuf.Struct sdk_pipeline_options = 8;</code>
   */
  com.google.protobuf.StructOrBuilder getSdkPipelineOptionsOrBuilder();

  /**
   *
   *
   * <pre>
   * Experimental settings.
   * </pre>
   *
   * <code>.google.protobuf.Any internal_experiments = 9;</code>
   *
   * @return Whether the internalExperiments field is set.
   */
  boolean hasInternalExperiments();
  /**
   *
   *
   * <pre>
   * Experimental settings.
   * </pre>
   *
   * <code>.google.protobuf.Any internal_experiments = 9;</code>
   *
   * @return The internalExperiments.
   */
  com.google.protobuf.Any getInternalExperiments();
  /**
   *
   *
   * <pre>
   * Experimental settings.
   * </pre>
   *
   * <code>.google.protobuf.Any internal_experiments = 9;</code>
   */
  com.google.protobuf.AnyOrBuilder getInternalExperimentsOrBuilder();

  /**
   *
   *
   * <pre>
   * Identity to run virtual machines as. Defaults to the default account.
   * </pre>
   *
   * <code>string service_account_email = 10;</code>
   *
   * @return The serviceAccountEmail.
   */
  java.lang.String getServiceAccountEmail();
  /**
   *
   *
   * <pre>
   * Identity to run virtual machines as. Defaults to the default account.
   * </pre>
   *
   * <code>string service_account_email = 10;</code>
   *
   * @return The bytes for serviceAccountEmail.
   */
  com.google.protobuf.ByteString getServiceAccountEmailBytes();

  /**
   *
   *
   * <pre>
   * Which Flexible Resource Scheduling mode to run in.
   * </pre>
   *
   * <code>.google.dataflow.v1beta3.FlexResourceSchedulingGoal flex_resource_scheduling_goal = 11;
   * </code>
   *
   * @return The enum numeric value on the wire for flexResourceSchedulingGoal.
   */
  int getFlexResourceSchedulingGoalValue();
  /**
   *
   *
   * <pre>
   * Which Flexible Resource Scheduling mode to run in.
   * </pre>
   *
   * <code>.google.dataflow.v1beta3.FlexResourceSchedulingGoal flex_resource_scheduling_goal = 11;
   * </code>
   *
   * @return The flexResourceSchedulingGoal.
   */
  com.google.dataflow.v1beta3.FlexResourceSchedulingGoal getFlexResourceSchedulingGoal();

  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string worker_region = 13;</code>
   *
   * @return The workerRegion.
   */
  java.lang.String getWorkerRegion();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string worker_region = 13;</code>
   *
   * @return The bytes for workerRegion.
   */
  com.google.protobuf.ByteString getWorkerRegionBytes();

  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string worker_zone = 14;</code>
   *
   * @return The workerZone.
   */
  java.lang.String getWorkerZone();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string worker_zone = 14;</code>
   *
   * @return The bytes for workerZone.
   */
  com.google.protobuf.ByteString getWorkerZoneBytes();

  /**
   *
   *
   * <pre>
   * Output only. The shuffle mode used for the job.
   * </pre>
   *
   * <code>
   * .google.dataflow.v1beta3.ShuffleMode shuffle_mode = 15 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The enum numeric value on the wire for shuffleMode.
   */
  int getShuffleModeValue();
  /**
   *
   *
   * <pre>
   * Output only. The shuffle mode used for the job.
   * </pre>
   *
   * <code>
   * .google.dataflow.v1beta3.ShuffleMode shuffle_mode = 15 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The shuffleMode.
   */
  com.google.dataflow.v1beta3.ShuffleMode getShuffleMode();

  /**
   *
   *
   * <pre>
   * Any debugging options to be supplied to the job.
   * </pre>
   *
   * <code>.google.dataflow.v1beta3.DebugOptions debug_options = 17;</code>
   *
   * @return Whether the debugOptions field is set.
   */
  boolean hasDebugOptions();
  /**
   *
   *
   * <pre>
   * Any debugging options to be supplied to the job.
   * </pre>
   *
   * <code>.google.dataflow.v1beta3.DebugOptions debug_options = 17;</code>
   *
   * @return The debugOptions.
   */
  com.google.dataflow.v1beta3.DebugOptions getDebugOptions();
  /**
   *
   *
   * <pre>
   * Any debugging options to be supplied to the job.
   * </pre>
   *
   * <code>.google.dataflow.v1beta3.DebugOptions debug_options = 17;</code>
   */
  com.google.dataflow.v1beta3.DebugOptionsOrBuilder getDebugOptionsOrBuilder();
}
