# frozen_string_literal: true

# Copyright 2022 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.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module Run
      module V2
        # VPC Access settings. For more information on creating a VPC Connector, visit
        # https://cloud.google.com/vpc/docs/configure-serverless-vpc-access For
        # information on how to configure Cloud Run with an existing VPC Connector,
        # visit https://cloud.google.com/run/docs/configuring/connecting-vpc
        # @!attribute [rw] connector
        #   @return [::String]
        #     VPC Access connector name.
        #     Format: projects/\\{project}/locations/\\{location}/connectors/\\{connector},
        #     where \\{project} can be project id or number.
        # @!attribute [rw] egress
        #   @return [::Google::Cloud::Run::V2::VpcAccess::VpcEgress]
        #     Traffic VPC egress settings.
        class VpcAccess
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Egress options for VPC access.
          module VpcEgress
            # Unspecified
            VPC_EGRESS_UNSPECIFIED = 0

            # All outbound traffic is routed through the VPC connector.
            ALL_TRAFFIC = 1

            # Only private IP ranges are routed through the VPC connector.
            PRIVATE_RANGES_ONLY = 2
          end
        end

        # Settings for Binary Authorization feature.
        # @!attribute [rw] use_default
        #   @return [::Boolean]
        #     If True, indicates to use the default project's binary authorization
        #     policy. If False, binary authorization will be disabled.
        # @!attribute [rw] breakglass_justification
        #   @return [::String]
        #     If present, indicates to use Breakglass using this justification.
        #     If use_default is False, then it must be empty.
        #     For more information on breakglass, see
        #     https://cloud.google.com/binary-authorization/docs/using-breakglass
        class BinaryAuthorization
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Settings for revision-level scaling settings.
        # @!attribute [rw] min_instance_count
        #   @return [::Integer]
        #     Minimum number of serving instances that this resource should have.
        # @!attribute [rw] max_instance_count
        #   @return [::Integer]
        #     Maximum number of serving instances that this resource should have.
        class RevisionScaling
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Allowed ingress traffic for the Container.
        module IngressTraffic
          # Unspecified
          INGRESS_TRAFFIC_UNSPECIFIED = 0

          # All inbound traffic is allowed.
          INGRESS_TRAFFIC_ALL = 1

          # Only internal traffic is allowed.
          INGRESS_TRAFFIC_INTERNAL_ONLY = 2

          # Both internal and Google Cloud Load Balancer traffic is allowed.
          INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER = 3
        end

        # Alternatives for execution environments.
        module ExecutionEnvironment
          # Unspecified
          EXECUTION_ENVIRONMENT_UNSPECIFIED = 0

          # Uses the First Generation environment.
          EXECUTION_ENVIRONMENT_GEN1 = 1

          # Uses Second Generation environment.
          EXECUTION_ENVIRONMENT_GEN2 = 2
        end

        # Specifies behavior if an encryption key used by a resource is revoked.
        module EncryptionKeyRevocationAction
          # Unspecified
          ENCRYPTION_KEY_REVOCATION_ACTION_UNSPECIFIED = 0

          # Prevents the creation of new instances.
          PREVENT_NEW = 1

          # Shuts down existing instances, and prevents creation of new ones.
          SHUTDOWN = 2
        end
      end
    end
  end
end