/*
 * 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/cloud/lifesciences/v2beta/workflows.proto

package com.google.cloud.lifesciences.v2beta;

public interface PipelineOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.lifesciences.v2beta.Pipeline)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * The list of actions to execute, in the order they are specified.
   * </pre>
   *
   * <code>repeated .google.cloud.lifesciences.v2beta.Action actions = 1;</code>
   */
  java.util.List<com.google.cloud.lifesciences.v2beta.Action> getActionsList();
  /**
   *
   *
   * <pre>
   * The list of actions to execute, in the order they are specified.
   * </pre>
   *
   * <code>repeated .google.cloud.lifesciences.v2beta.Action actions = 1;</code>
   */
  com.google.cloud.lifesciences.v2beta.Action getActions(int index);
  /**
   *
   *
   * <pre>
   * The list of actions to execute, in the order they are specified.
   * </pre>
   *
   * <code>repeated .google.cloud.lifesciences.v2beta.Action actions = 1;</code>
   */
  int getActionsCount();
  /**
   *
   *
   * <pre>
   * The list of actions to execute, in the order they are specified.
   * </pre>
   *
   * <code>repeated .google.cloud.lifesciences.v2beta.Action actions = 1;</code>
   */
  java.util.List<? extends com.google.cloud.lifesciences.v2beta.ActionOrBuilder>
      getActionsOrBuilderList();
  /**
   *
   *
   * <pre>
   * The list of actions to execute, in the order they are specified.
   * </pre>
   *
   * <code>repeated .google.cloud.lifesciences.v2beta.Action actions = 1;</code>
   */
  com.google.cloud.lifesciences.v2beta.ActionOrBuilder getActionsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * The resources required for execution.
   * </pre>
   *
   * <code>.google.cloud.lifesciences.v2beta.Resources resources = 2;</code>
   *
   * @return Whether the resources field is set.
   */
  boolean hasResources();
  /**
   *
   *
   * <pre>
   * The resources required for execution.
   * </pre>
   *
   * <code>.google.cloud.lifesciences.v2beta.Resources resources = 2;</code>
   *
   * @return The resources.
   */
  com.google.cloud.lifesciences.v2beta.Resources getResources();
  /**
   *
   *
   * <pre>
   * The resources required for execution.
   * </pre>
   *
   * <code>.google.cloud.lifesciences.v2beta.Resources resources = 2;</code>
   */
  com.google.cloud.lifesciences.v2beta.ResourcesOrBuilder getResourcesOrBuilder();

  /**
   *
   *
   * <pre>
   * The environment to pass into every action. Each action can also specify
   * additional environment variables but cannot delete an entry from this map
   * (though they can overwrite it with a different value).
   * </pre>
   *
   * <code>map&lt;string, string&gt; environment = 3;</code>
   */
  int getEnvironmentCount();
  /**
   *
   *
   * <pre>
   * The environment to pass into every action. Each action can also specify
   * additional environment variables but cannot delete an entry from this map
   * (though they can overwrite it with a different value).
   * </pre>
   *
   * <code>map&lt;string, string&gt; environment = 3;</code>
   */
  boolean containsEnvironment(java.lang.String key);
  /** Use {@link #getEnvironmentMap()} instead. */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, java.lang.String> getEnvironment();
  /**
   *
   *
   * <pre>
   * The environment to pass into every action. Each action can also specify
   * additional environment variables but cannot delete an entry from this map
   * (though they can overwrite it with a different value).
   * </pre>
   *
   * <code>map&lt;string, string&gt; environment = 3;</code>
   */
  java.util.Map<java.lang.String, java.lang.String> getEnvironmentMap();
  /**
   *
   *
   * <pre>
   * The environment to pass into every action. Each action can also specify
   * additional environment variables but cannot delete an entry from this map
   * (though they can overwrite it with a different value).
   * </pre>
   *
   * <code>map&lt;string, string&gt; environment = 3;</code>
   */
  /* nullable */
  java.lang.String getEnvironmentOrDefault(
      java.lang.String key,
      /* nullable */
      java.lang.String defaultValue);
  /**
   *
   *
   * <pre>
   * The environment to pass into every action. Each action can also specify
   * additional environment variables but cannot delete an entry from this map
   * (though they can overwrite it with a different value).
   * </pre>
   *
   * <code>map&lt;string, string&gt; environment = 3;</code>
   */
  java.lang.String getEnvironmentOrThrow(java.lang.String key);

  /**
   *
   *
   * <pre>
   * The encrypted environment to pass into every action. Each action can also
   * specify its own encrypted environment.
   * The secret must decrypt to a JSON-encoded dictionary where key-value pairs
   * serve as environment variable names and their values. The decoded
   * environment variables can overwrite the values specified by the
   * `environment` field.
   * </pre>
   *
   * <code>.google.cloud.lifesciences.v2beta.Secret encrypted_environment = 5;</code>
   *
   * @return Whether the encryptedEnvironment field is set.
   */
  boolean hasEncryptedEnvironment();
  /**
   *
   *
   * <pre>
   * The encrypted environment to pass into every action. Each action can also
   * specify its own encrypted environment.
   * The secret must decrypt to a JSON-encoded dictionary where key-value pairs
   * serve as environment variable names and their values. The decoded
   * environment variables can overwrite the values specified by the
   * `environment` field.
   * </pre>
   *
   * <code>.google.cloud.lifesciences.v2beta.Secret encrypted_environment = 5;</code>
   *
   * @return The encryptedEnvironment.
   */
  com.google.cloud.lifesciences.v2beta.Secret getEncryptedEnvironment();
  /**
   *
   *
   * <pre>
   * The encrypted environment to pass into every action. Each action can also
   * specify its own encrypted environment.
   * The secret must decrypt to a JSON-encoded dictionary where key-value pairs
   * serve as environment variable names and their values. The decoded
   * environment variables can overwrite the values specified by the
   * `environment` field.
   * </pre>
   *
   * <code>.google.cloud.lifesciences.v2beta.Secret encrypted_environment = 5;</code>
   */
  com.google.cloud.lifesciences.v2beta.SecretOrBuilder getEncryptedEnvironmentOrBuilder();

  /**
   *
   *
   * <pre>
   * The maximum amount of time to give the pipeline to complete.  This includes
   * the time spent waiting for a worker to be allocated.  If the pipeline fails
   * to complete before the timeout, it will be cancelled and the error code
   * will be set to DEADLINE_EXCEEDED.
   * If unspecified, it will default to 7 days.
   * </pre>
   *
   * <code>.google.protobuf.Duration timeout = 4;</code>
   *
   * @return Whether the timeout field is set.
   */
  boolean hasTimeout();
  /**
   *
   *
   * <pre>
   * The maximum amount of time to give the pipeline to complete.  This includes
   * the time spent waiting for a worker to be allocated.  If the pipeline fails
   * to complete before the timeout, it will be cancelled and the error code
   * will be set to DEADLINE_EXCEEDED.
   * If unspecified, it will default to 7 days.
   * </pre>
   *
   * <code>.google.protobuf.Duration timeout = 4;</code>
   *
   * @return The timeout.
   */
  com.google.protobuf.Duration getTimeout();
  /**
   *
   *
   * <pre>
   * The maximum amount of time to give the pipeline to complete.  This includes
   * the time spent waiting for a worker to be allocated.  If the pipeline fails
   * to complete before the timeout, it will be cancelled and the error code
   * will be set to DEADLINE_EXCEEDED.
   * If unspecified, it will default to 7 days.
   * </pre>
   *
   * <code>.google.protobuf.Duration timeout = 4;</code>
   */
  com.google.protobuf.DurationOrBuilder getTimeoutOrBuilder();
}
