# Generated by the protocol buffer compiler.  DO NOT EDIT!
# Source: google/logging/v2/logging_config.proto for package 'Google.Cloud.Logging.V2'
# Original file comments:
# 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
#
#     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.
#

require 'grpc'
require 'google/logging/v2/logging_config_pb'

module Google
  module Cloud
    module Logging
      module V2
        module ConfigServiceV2
          # Service for configuring sinks used to route log entries.
          class Service

            include GRPC::GenericService

            self.marshal_class_method = :encode
            self.unmarshal_class_method = :decode
            self.service_name = 'google.logging.v2.ConfigServiceV2'

            # Lists buckets.
            rpc :ListBuckets, ::Google::Cloud::Logging::V2::ListBucketsRequest, ::Google::Cloud::Logging::V2::ListBucketsResponse
            # Gets a bucket.
            rpc :GetBucket, ::Google::Cloud::Logging::V2::GetBucketRequest, ::Google::Cloud::Logging::V2::LogBucket
            # Creates a bucket that can be used to store log entries. Once a bucket has
            # been created, the region cannot be changed.
            rpc :CreateBucket, ::Google::Cloud::Logging::V2::CreateBucketRequest, ::Google::Cloud::Logging::V2::LogBucket
            # Updates a bucket. This method replaces the following fields in the
            # existing bucket with values from the new bucket: `retention_period`
            #
            # If the retention period is decreased and the bucket is locked,
            # FAILED_PRECONDITION will be returned.
            #
            # If the bucket has a LifecycleState of DELETE_REQUESTED, FAILED_PRECONDITION
            # will be returned.
            #
            # A buckets region may not be modified after it is created.
            rpc :UpdateBucket, ::Google::Cloud::Logging::V2::UpdateBucketRequest, ::Google::Cloud::Logging::V2::LogBucket
            # Deletes a bucket.
            # Moves the bucket to the DELETE_REQUESTED state. After 7 days, the
            # bucket will be purged and all logs in the bucket will be permanently
            # deleted.
            rpc :DeleteBucket, ::Google::Cloud::Logging::V2::DeleteBucketRequest, ::Google::Protobuf::Empty
            # Undeletes a bucket. A bucket that has been deleted may be undeleted within
            # the grace period of 7 days.
            rpc :UndeleteBucket, ::Google::Cloud::Logging::V2::UndeleteBucketRequest, ::Google::Protobuf::Empty
            # Lists views on a bucket.
            rpc :ListViews, ::Google::Cloud::Logging::V2::ListViewsRequest, ::Google::Cloud::Logging::V2::ListViewsResponse
            # Gets a view.
            rpc :GetView, ::Google::Cloud::Logging::V2::GetViewRequest, ::Google::Cloud::Logging::V2::LogView
            # Creates a view over logs in a bucket. A bucket may contain a maximum of
            # 50 views.
            rpc :CreateView, ::Google::Cloud::Logging::V2::CreateViewRequest, ::Google::Cloud::Logging::V2::LogView
            # Updates a view. This method replaces the following fields in the existing
            # view with values from the new view: `filter`.
            rpc :UpdateView, ::Google::Cloud::Logging::V2::UpdateViewRequest, ::Google::Cloud::Logging::V2::LogView
            # Deletes a view from a bucket.
            rpc :DeleteView, ::Google::Cloud::Logging::V2::DeleteViewRequest, ::Google::Protobuf::Empty
            # Lists sinks.
            rpc :ListSinks, ::Google::Cloud::Logging::V2::ListSinksRequest, ::Google::Cloud::Logging::V2::ListSinksResponse
            # Gets a sink.
            rpc :GetSink, ::Google::Cloud::Logging::V2::GetSinkRequest, ::Google::Cloud::Logging::V2::LogSink
            # Creates a sink that exports specified log entries to a destination. The
            # export of newly-ingested log entries begins immediately, unless the sink's
            # `writer_identity` is not permitted to write to the destination. A sink can
            # export log entries only from the resource owning the sink.
            rpc :CreateSink, ::Google::Cloud::Logging::V2::CreateSinkRequest, ::Google::Cloud::Logging::V2::LogSink
            # Updates a sink. This method replaces the following fields in the existing
            # sink with values from the new sink: `destination`, and `filter`.
            #
            # The updated sink might also have a new `writer_identity`; see the
            # `unique_writer_identity` field.
            rpc :UpdateSink, ::Google::Cloud::Logging::V2::UpdateSinkRequest, ::Google::Cloud::Logging::V2::LogSink
            # Deletes a sink. If the sink has a unique `writer_identity`, then that
            # service account is also deleted.
            rpc :DeleteSink, ::Google::Cloud::Logging::V2::DeleteSinkRequest, ::Google::Protobuf::Empty
            # Lists all the exclusions in a parent resource.
            rpc :ListExclusions, ::Google::Cloud::Logging::V2::ListExclusionsRequest, ::Google::Cloud::Logging::V2::ListExclusionsResponse
            # Gets the description of an exclusion.
            rpc :GetExclusion, ::Google::Cloud::Logging::V2::GetExclusionRequest, ::Google::Cloud::Logging::V2::LogExclusion
            # Creates a new exclusion in a specified parent resource.
            # Only log entries belonging to that resource can be excluded.
            # You can have up to 10 exclusions in a resource.
            rpc :CreateExclusion, ::Google::Cloud::Logging::V2::CreateExclusionRequest, ::Google::Cloud::Logging::V2::LogExclusion
            # Changes one or more properties of an existing exclusion.
            rpc :UpdateExclusion, ::Google::Cloud::Logging::V2::UpdateExclusionRequest, ::Google::Cloud::Logging::V2::LogExclusion
            # Deletes an exclusion.
            rpc :DeleteExclusion, ::Google::Cloud::Logging::V2::DeleteExclusionRequest, ::Google::Protobuf::Empty
            # Gets the Logs Router CMEK settings for the given resource.
            #
            # Note: CMEK for the Logs Router can currently only be configured for GCP
            # organizations. Once configured, it applies to all projects and folders in
            # the GCP organization.
            #
            # See [Enabling CMEK for Logs
            # Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
            # for more information.
            rpc :GetCmekSettings, ::Google::Cloud::Logging::V2::GetCmekSettingsRequest, ::Google::Cloud::Logging::V2::CmekSettings
            # Updates the Logs Router CMEK settings for the given resource.
            #
            # Note: CMEK for the Logs Router can currently only be configured for GCP
            # organizations. Once configured, it applies to all projects and folders in
            # the GCP organization.
            #
            # [UpdateCmekSettings][google.logging.v2.ConfigServiceV2.UpdateCmekSettings]
            # will fail if 1) `kms_key_name` is invalid, or 2) the associated service
            # account does not have the required
            # `roles/cloudkms.cryptoKeyEncrypterDecrypter` role assigned for the key, or
            # 3) access to the key is disabled.
            #
            # See [Enabling CMEK for Logs
            # Router](https://cloud.google.com/logging/docs/routing/managed-encryption)
            # for more information.
            rpc :UpdateCmekSettings, ::Google::Cloud::Logging::V2::UpdateCmekSettingsRequest, ::Google::Cloud::Logging::V2::CmekSettings
          end

          Stub = Service.rpc_stub_class
        end
      end
    end
  end
end