diff --git a/google-cloud-database_center-v1beta/.owlbot-manifest.json b/google-cloud-database_center-v1beta/.owlbot-manifest.json index 73a53a00c0e2..121b1c7c2a57 100644 --- a/google-cloud-database_center-v1beta/.owlbot-manifest.json +++ b/google-cloud-database_center-v1beta/.owlbot-manifest.json @@ -56,6 +56,7 @@ "snippets/Gemfile", "snippets/database_center/aggregate_fleet.rb", "snippets/database_center/aggregate_issue_stats.rb", + "snippets/database_center/aggregate_query_stats.rb", "snippets/database_center/query_database_resource_groups.rb", "snippets/database_center/query_issues.rb", "snippets/database_center/query_products.rb", diff --git a/google-cloud-database_center-v1beta/gapic_metadata.json b/google-cloud-database_center-v1beta/gapic_metadata.json index 48cacf49f126..eb3861205e26 100644 --- a/google-cloud-database_center-v1beta/gapic_metadata.json +++ b/google-cloud-database_center-v1beta/gapic_metadata.json @@ -30,6 +30,11 @@ "aggregate_issue_stats" ] }, + "AggregateQueryStats": { + "methods": [ + "aggregate_query_stats" + ] + }, "QueryIssues": { "methods": [ "query_issues" diff --git a/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/client.rb b/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/client.rb index ead427033f89..3aea94adea2a 100644 --- a/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/client.rb +++ b/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/client.rb @@ -731,6 +731,143 @@ def aggregate_issue_stats request, options = nil raise ::Google::Cloud::Error.from_error(e) end + ## + # AggregateQueryStats provides database resource query execution statistics. + # + # @overload aggregate_query_stats(request, options = nil) + # Pass arguments to `aggregate_query_stats` via a request object, either of type + # {::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest} or an equivalent Hash. + # + # @param request [::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload aggregate_query_stats(parent: nil, order_by: nil, filter: nil, page_size: nil, page_token: nil) + # Pass arguments to `aggregate_query_stats` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param parent [::String] + # Required. Parent can be a project, a folder, or an organization. The search + # is limited to the resources within the `parent`. + # + # The allowed values are: + # + # * projects/\\{PROJECT_ID} (e.g., "projects/foo-bar") + # * projects/\\{PROJECT_NUMBER} (e.g., "projects/12345678") + # * folders/\\{FOLDER_NUMBER} (e.g., "folders/1234567") + # * organizations/\\{ORGANIZATION_NUMBER} (e.g., "organizations/123456") + # @param order_by [::String] + # Optional. The expression to order the results by. + # Example: `order_by="execution_count"` + # Example: `order_by="execution_count desc"` + # Supported order by fields are `execution_count`, `rows_processed`, + # `total_cpu_time`, `avg_cpu_time`. + # @param filter [::String] + # Optional. The expression to filter resources. + # + # Supported fields are: `full_resource_name`, `resource_type`, `container`, + # `product.type`, `product.engine`, `product.version`, `location`, + # `labels`, `issues`, fields of availability_info, + # data_protection_info,'resource_name', etc. + # + # The expression is a list of zero or more restrictions combined via logical + # operators `AND` and `OR`. When `AND` and `OR` are both used in the + # expression, parentheses must be appropriately used to group the + # combinations. + # + # Example: `location="us-east1"` + # Example: `container="projects/123" OR container="projects/456"` + # Example: `(container="projects/123" OR + # container="projects/456") AND location="us-east1"` + # Additional specific fields for query stats are: `metric_window`, + # `query_hash`, `normalized_query`. + # Example: `metric_window="LAST_ONE_DAY"` + # (Possible values for `metric_window` are: `LAST_ONE_DAY`, + # `LAST_ONE_WEEK`, `LAST_TWO_WEEKS`) + # Example: `query_hash="12345678"` + # Example: `normalized_query="SELECT * FROM table"` + # @param page_size [::Integer] + # Optional. If unspecified, at most 100 query stats will be returned. + # The maximum value is 1000; values above 1000 will be coerced to 1000. + # @param page_token [::String] + # Optional. A page token, received from a previous + # `AggregateQueryStatsRequest` call. Provide this to retrieve the subsequent + # page. All parameters except page_token should match the parameters in the + # call that provided the page token. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Gapic::PagedEnumerable<::Google::Cloud::DatabaseCenter::V1beta::QueryStatsInfo>] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Gapic::PagedEnumerable<::Google::Cloud::DatabaseCenter::V1beta::QueryStatsInfo>] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/cloud/database_center/v1beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Cloud::DatabaseCenter::V1beta::DatabaseCenter::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest.new + # + # # Call the aggregate_query_stats method. + # result = client.aggregate_query_stats request + # + # # The returned object is of type Gapic::PagedEnumerable. You can iterate + # # over elements, and API calls will be issued to fetch pages as needed. + # result.each do |item| + # # Each element is of type ::Google::Cloud::DatabaseCenter::V1beta::QueryStatsInfo. + # p item + # end + # + def aggregate_query_stats request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.aggregate_query_stats.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::DatabaseCenter::V1beta::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.parent + header_params["parent"] = request.parent + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.aggregate_query_stats.timeout, + metadata: metadata, + retry_policy: @config.rpcs.aggregate_query_stats.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @database_center_stub.call_rpc :aggregate_query_stats, request, options: options do |response, operation| + response = ::Gapic::PagedEnumerable.new @database_center_stub, :aggregate_query_stats, request, response, operation, options + yield response, operation if block_given? + throw :response, response + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + ## # QueryIssues provides a list of issues and recommendations # that a user has access to and that are within the requested scope. @@ -1057,6 +1194,11 @@ class Rpcs # attr_reader :aggregate_issue_stats ## + # RPC-specific configuration for `aggregate_query_stats` + # @return [::Gapic::Config::Method] + # + attr_reader :aggregate_query_stats + ## # RPC-specific configuration for `query_issues` # @return [::Gapic::Config::Method] # @@ -1072,6 +1214,8 @@ def initialize parent_rpcs = nil @query_database_resource_groups = ::Gapic::Config::Method.new query_database_resource_groups_config aggregate_issue_stats_config = parent_rpcs.aggregate_issue_stats if parent_rpcs.respond_to? :aggregate_issue_stats @aggregate_issue_stats = ::Gapic::Config::Method.new aggregate_issue_stats_config + aggregate_query_stats_config = parent_rpcs.aggregate_query_stats if parent_rpcs.respond_to? :aggregate_query_stats + @aggregate_query_stats = ::Gapic::Config::Method.new aggregate_query_stats_config query_issues_config = parent_rpcs.query_issues if parent_rpcs.respond_to? :query_issues @query_issues = ::Gapic::Config::Method.new query_issues_config diff --git a/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/rest/client.rb b/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/rest/client.rb index a09dfb6324a8..0aed4c3fe130 100644 --- a/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/rest/client.rb +++ b/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/rest/client.rb @@ -728,6 +728,136 @@ def aggregate_issue_stats request, options = nil raise ::Google::Cloud::Error.from_error(e) end + ## + # AggregateQueryStats provides database resource query execution statistics. + # + # @overload aggregate_query_stats(request, options = nil) + # Pass arguments to `aggregate_query_stats` via a request object, either of type + # {::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest} or an equivalent Hash. + # + # @param request [::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @overload aggregate_query_stats(parent: nil, order_by: nil, filter: nil, page_size: nil, page_token: nil) + # Pass arguments to `aggregate_query_stats` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param parent [::String] + # Required. Parent can be a project, a folder, or an organization. The search + # is limited to the resources within the `parent`. + # + # The allowed values are: + # + # * projects/\\{PROJECT_ID} (e.g., "projects/foo-bar") + # * projects/\\{PROJECT_NUMBER} (e.g., "projects/12345678") + # * folders/\\{FOLDER_NUMBER} (e.g., "folders/1234567") + # * organizations/\\{ORGANIZATION_NUMBER} (e.g., "organizations/123456") + # @param order_by [::String] + # Optional. The expression to order the results by. + # Example: `order_by="execution_count"` + # Example: `order_by="execution_count desc"` + # Supported order by fields are `execution_count`, `rows_processed`, + # `total_cpu_time`, `avg_cpu_time`. + # @param filter [::String] + # Optional. The expression to filter resources. + # + # Supported fields are: `full_resource_name`, `resource_type`, `container`, + # `product.type`, `product.engine`, `product.version`, `location`, + # `labels`, `issues`, fields of availability_info, + # data_protection_info,'resource_name', etc. + # + # The expression is a list of zero or more restrictions combined via logical + # operators `AND` and `OR`. When `AND` and `OR` are both used in the + # expression, parentheses must be appropriately used to group the + # combinations. + # + # Example: `location="us-east1"` + # Example: `container="projects/123" OR container="projects/456"` + # Example: `(container="projects/123" OR + # container="projects/456") AND location="us-east1"` + # Additional specific fields for query stats are: `metric_window`, + # `query_hash`, `normalized_query`. + # Example: `metric_window="LAST_ONE_DAY"` + # (Possible values for `metric_window` are: `LAST_ONE_DAY`, + # `LAST_ONE_WEEK`, `LAST_TWO_WEEKS`) + # Example: `query_hash="12345678"` + # Example: `normalized_query="SELECT * FROM table"` + # @param page_size [::Integer] + # Optional. If unspecified, at most 100 query stats will be returned. + # The maximum value is 1000; values above 1000 will be coerced to 1000. + # @param page_token [::String] + # Optional. A page token, received from a previous + # `AggregateQueryStatsRequest` call. Provide this to retrieve the subsequent + # page. All parameters except page_token should match the parameters in the + # call that provided the page token. + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Gapic::Rest::PagedEnumerable<::Google::Cloud::DatabaseCenter::V1beta::QueryStatsInfo>] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Gapic::Rest::PagedEnumerable<::Google::Cloud::DatabaseCenter::V1beta::QueryStatsInfo>] + # + # @raise [::Google::Cloud::Error] if the REST call is aborted. + # + # @example Basic example + # require "google/cloud/database_center/v1beta" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Cloud::DatabaseCenter::V1beta::DatabaseCenter::Rest::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest.new + # + # # Call the aggregate_query_stats method. + # result = client.aggregate_query_stats request + # + # # The returned object is of type Gapic::PagedEnumerable. You can iterate + # # over elements, and API calls will be issued to fetch pages as needed. + # result.each do |item| + # # Each element is of type ::Google::Cloud::DatabaseCenter::V1beta::QueryStatsInfo. + # p item + # end + # + def aggregate_query_stats request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + call_metadata = @config.rpcs.aggregate_query_stats.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::DatabaseCenter::V1beta::VERSION, + transports_version_send: [:rest] + + call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.aggregate_query_stats.timeout, + metadata: call_metadata, + retry_policy: @config.rpcs.aggregate_query_stats.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @database_center_stub.aggregate_query_stats request, options do |result, operation| + result = ::Gapic::Rest::PagedEnumerable.new @database_center_stub, :aggregate_query_stats, "query_stats", request, result, options + yield result, operation if block_given? + throw :response, result + end + rescue ::Gapic::Rest::Error => e + raise ::Google::Cloud::Error.from_error(e) + end + ## # QueryIssues provides a list of issues and recommendations # that a user has access to and that are within the requested scope. @@ -1018,6 +1148,11 @@ class Rpcs # attr_reader :aggregate_issue_stats ## + # RPC-specific configuration for `aggregate_query_stats` + # @return [::Gapic::Config::Method] + # + attr_reader :aggregate_query_stats + ## # RPC-specific configuration for `query_issues` # @return [::Gapic::Config::Method] # @@ -1033,6 +1168,8 @@ def initialize parent_rpcs = nil @query_database_resource_groups = ::Gapic::Config::Method.new query_database_resource_groups_config aggregate_issue_stats_config = parent_rpcs.aggregate_issue_stats if parent_rpcs.respond_to? :aggregate_issue_stats @aggregate_issue_stats = ::Gapic::Config::Method.new aggregate_issue_stats_config + aggregate_query_stats_config = parent_rpcs.aggregate_query_stats if parent_rpcs.respond_to? :aggregate_query_stats + @aggregate_query_stats = ::Gapic::Config::Method.new aggregate_query_stats_config query_issues_config = parent_rpcs.query_issues if parent_rpcs.respond_to? :query_issues @query_issues = ::Gapic::Config::Method.new query_issues_config diff --git a/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/rest/service_stub.rb b/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/rest/service_stub.rb index 6a06184bfd64..e20bd7031f4b 100644 --- a/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/rest/service_stub.rb +++ b/google-cloud-database_center-v1beta/lib/google/cloud/database_center/v1beta/database_center/rest/service_stub.rb @@ -233,6 +233,46 @@ def aggregate_issue_stats request_pb, options = nil end end + ## + # Baseline implementation for the aggregate_query_stats REST call + # + # @param request_pb [::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest] + # A request object representing the call parameters. Required. + # @param options [::Gapic::CallOptions] + # Overrides the default settings for this call, e.g, timeout, retries etc. Optional. + # + # @yield [result, operation] Access the result along with the TransportOperation object + # @yieldparam result [::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsResponse] + # @yieldparam operation [::Gapic::Rest::TransportOperation] + # + # @return [::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsResponse] + # A result object deserialized from the server's reply + def aggregate_query_stats request_pb, options = nil + raise ::ArgumentError, "request must be provided" if request_pb.nil? + + verb, uri, query_string_params, body = ServiceStub.transcode_aggregate_query_stats_request request_pb + query_string_params = if query_string_params.any? + query_string_params.to_h { |p| p.split "=", 2 } + else + {} + end + + response = @client_stub.make_http_request( + verb, + uri: uri, + body: body || "", + params: query_string_params, + method_name: "aggregate_query_stats", + options: options + ) + operation = ::Gapic::Rest::TransportOperation.new response + result = ::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsResponse.decode_json response.body, ignore_unknown_fields: true + catch :response do + yield result, operation if block_given? + result + end + end + ## # Baseline implementation for the query_issues REST call # @@ -351,6 +391,44 @@ def self.transcode_aggregate_issue_stats_request request_pb transcoder.transcode request_pb end + ## + # @private + # + # GRPC transcoding helper method for the aggregate_query_stats REST call + # + # @param request_pb [::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest] + # A request object representing the call parameters. Required. + # @return [Array(String, [String, nil], Hash{String => String})] + # Uri, Body, Query string parameters + def self.transcode_aggregate_query_stats_request request_pb + transcoder = Gapic::Rest::GrpcTranscoder.new + .with_bindings( + uri_method: :post, + uri_template: "/v1beta/{parent}:aggregateQueryStats", + body: "*", + matches: [ + ["parent", %r{^organizations/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :post, + uri_template: "/v1beta/{parent}:aggregateQueryStats", + body: "*", + matches: [ + ["parent", %r{^folders/[^/]+/?$}, false] + ] + ) + .with_bindings( + uri_method: :post, + uri_template: "/v1beta/{parent}:aggregateQueryStats", + body: "*", + matches: [ + ["parent", %r{^projects/[^/]+/?$}, false] + ] + ) + transcoder.transcode request_pb + end + ## # @private # diff --git a/google-cloud-database_center-v1beta/lib/google/cloud/databasecenter/v1beta/service_pb.rb b/google-cloud-database_center-v1beta/lib/google/cloud/databasecenter/v1beta/service_pb.rb index 87efadcd3346..c021c3a0aaad 100644 --- a/google-cloud-database_center-v1beta/lib/google/cloud/databasecenter/v1beta/service_pb.rb +++ b/google-cloud-database_center-v1beta/lib/google/cloud/databasecenter/v1beta/service_pb.rb @@ -7,16 +7,18 @@ require 'google/api/annotations_pb' require 'google/api/client_pb' require 'google/api/field_behavior_pb' +require 'google/api/resource_pb' require 'google/cloud/databasecenter/v1beta/affiliation_pb' require 'google/cloud/databasecenter/v1beta/machine_config_pb' require 'google/cloud/databasecenter/v1beta/maintenance_pb' require 'google/cloud/databasecenter/v1beta/metric_data_pb' require 'google/cloud/databasecenter/v1beta/product_pb' require 'google/cloud/databasecenter/v1beta/signals_pb' +require 'google/protobuf/duration_pb' require 'google/type/date_pb' -descriptor_data = "\n0google/cloud/databasecenter/v1beta/service.proto\x12\"google.cloud.databasecenter.v1beta\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x34google/cloud/databasecenter/v1beta/affiliation.proto\x1a\x37google/cloud/databasecenter/v1beta/machine_config.proto\x1a\x34google/cloud/databasecenter/v1beta/maintenance.proto\x1a\x34google/cloud/databasecenter/v1beta/metric_data.proto\x1a\x30google/cloud/databasecenter/v1beta/product.proto\x1a\x30google/cloud/databasecenter/v1beta/signals.proto\x1a\x16google/type/date.proto\"\\\n\x14QueryProductsRequest\x12\x13\n\x06parent\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\x16\n\tpage_size\x18\x01 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\x89\x01\n\x15QueryProductsResponse\x12=\n\x08products\x18\x01 \x03(\x0b\x32+.google.cloud.databasecenter.v1beta.Product\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\x12\x18\n\x0bunreachable\x18\x03 \x03(\tB\x03\xe0\x41\x06\"\xbb\x02\n\"QueryDatabaseResourceGroupsRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x13\n\x06\x66ilter\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12T\n\x12signal_type_groups\x18\x03 \x03(\x0b\x32\x33.google.cloud.databasecenter.v1beta.SignalTypeGroupB\x03\xe0\x41\x01\x12M\n\x0esignal_filters\x18\x04 \x03(\x0b\x32\x30.google.cloud.databasecenter.v1beta.SignalFilterB\x03\xe0\x41\x01\x12\x15\n\x08order_by\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tpage_size\x18\x06 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x07 \x01(\tB\x03\xe0\x41\x01\"\xac\x01\n#QueryDatabaseResourceGroupsResponse\x12R\n\x0fresource_groups\x18\x01 \x03(\x0b\x32\x39.google.cloud.databasecenter.v1beta.DatabaseResourceGroup\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\x12\x18\n\x0bunreachable\x18\x03 \x03(\tB\x03\xe0\x41\x06\"\xac\x01\n\x15\x44\x61tabaseResourceGroup\x12L\n\x0eroot_resources\x18\x01 \x03(\x0b\x32\x34.google.cloud.databasecenter.v1beta.DatabaseResource\x12\x45\n\rsignal_groups\x18\x02 \x03(\x0b\x32..google.cloud.databasecenter.v1beta.IssueCount\"\xa2\x08\n\x10\x44\x61tabaseResource\x12M\n\x0f\x63hild_resources\x18\x01 \x03(\x0b\x32\x34.google.cloud.databasecenter.v1beta.DatabaseResource\x12\x1a\n\x12\x66ull_resource_name\x18\x03 \x01(\t\x12\x11\n\tcontainer\x18\x04 \x01(\t\x12<\n\x07product\x18\x05 \x01(\x0b\x32+.google.cloud.databasecenter.v1beta.Product\x12\x10\n\x08location\x18\x06 \x01(\t\x12\x39\n\x06labels\x18\x07 \x03(\x0b\x32).google.cloud.databasecenter.v1beta.Label\x12\x35\n\x04tags\x18\x10 \x03(\x0b\x32\'.google.cloud.databasecenter.v1beta.Tag\x12\x15\n\rresource_type\x18\x08 \x01(\t\x12N\n\x11sub_resource_type\x18\t \x01(\x0e\x32\x33.google.cloud.databasecenter.v1beta.SubResourceType\x12I\n\x0emachine_config\x18\x0c \x01(\x0b\x32\x31.google.cloud.databasecenter.v1beta.MachineConfig\x12\x46\n\rsignal_groups\x18\n \x03(\x0b\x32/.google.cloud.databasecenter.v1beta.SignalGroup\x12<\n\x07metrics\x18\r \x01(\x0b\x32+.google.cloud.databasecenter.v1beta.Metrics\x12O\n\x11resource_category\x18\x0e \x01(\x0e\x32\x34.google.cloud.databasecenter.v1beta.ResourceCategory\x12\x15\n\rresource_name\x18\x0f \x01(\t\x12P\n\x0f\x62\x61\x63kupdr_config\x18\x11 \x01(\x0b\x32\x32.google.cloud.databasecenter.v1beta.BackupDRConfigB\x03\xe0\x41\x01\x12<\n\x07\x65\x64ition\x18\x12 \x01(\x0e\x32+.google.cloud.databasecenter.v1beta.Edition\x12R\n\x10maintenance_info\x18\x13 \x01(\x0b\x32\x33.google.cloud.databasecenter.v1beta.MaintenanceInfoB\x03\xe0\x41\x01\x12J\n\x0c\x61\x66\x66iliations\x18\x14 \x03(\x0b\x32/.google.cloud.databasecenter.v1beta.AffiliationB\x03\xe0\x41\x01\"\xe2\x01\n\x1a\x41ggregateIssueStatsRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x13\n\x06\x66ilter\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12T\n\x12signal_type_groups\x18\x03 \x03(\x0b\x32\x33.google.cloud.databasecenter.v1beta.SignalTypeGroupB\x03\xe0\x41\x01\x12\x32\n\rbaseline_date\x18\x04 \x01(\x0b\x32\x11.google.type.DateB\x03\xe0\x41\x01H\x00\x88\x01\x01\x42\x10\n\x0e_baseline_date\"\xcb\x01\n\x1b\x41ggregateIssueStatsResponse\x12N\n\x11issue_group_stats\x18\x01 \x03(\x0b\x32\x33.google.cloud.databasecenter.v1beta.IssueGroupStats\x12\x1d\n\x15total_resources_count\x18\x02 \x01(\x05\x12#\n\x1btotal_resource_groups_count\x18\x03 \x01(\x05\x12\x18\n\x0bunreachable\x18\x04 \x03(\tB\x03\xe0\x41\x06\"\xec\x01\n\x0fIssueGroupStats\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x1d\n\x15resource_groups_count\x18\x02 \x01(\x05\x12\x17\n\x0fresources_count\x18\x03 \x01(\x05\x12%\n\x1dhealthy_resource_groups_count\x18\x04 \x01(\x05\x12\x1f\n\x17healthy_resources_count\x18\x05 \x01(\x05\x12\x43\n\x0bissue_stats\x18\x06 \x03(\x0b\x32..google.cloud.databasecenter.v1beta.IssueStats\"\xb1\x02\n\nIssueStats\x12\x43\n\x0bsignal_type\x18\x01 \x01(\x0e\x32..google.cloud.databasecenter.v1beta.SignalType\x12\x16\n\x0eresource_count\x18\x02 \x01(\x05\x12Q\n\rdelta_details\x18\x03 \x01(\x0b\x32\x30.google.cloud.databasecenter.v1beta.DeltaDetailsB\x03\xe0\x41\x01H\x00\x88\x01\x01\x12N\n\x0eissue_severity\x18\x04 \x01(\x0e\x32\x31.google.cloud.databasecenter.v1beta.IssueSeverityH\x01\x88\x01\x01\x42\x10\n\x0e_delta_detailsB\x11\n\x0f_issue_severity\"3\n\x05Label\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\x12\x0e\n\x06source\x18\x03 \x01(\t\"\xe6\x01\n\x15\x41ggregateFleetRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x13\n\x06\x66ilter\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x15\n\x08group_by\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x15\n\x08order_by\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tpage_size\x18\x05 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x06 \x01(\tB\x03\xe0\x41\x01\x12\x32\n\rbaseline_date\x18\x07 \x01(\x0b\x32\x11.google.type.DateB\x03\xe0\x41\x01H\x00\x88\x01\x01\x42\x10\n\x0e_baseline_date\"\xd3\x01\n\x16\x41ggregateFleetResponse\x12\x43\n\x04rows\x18\x01 \x03(\x0b\x32\x35.google.cloud.databasecenter.v1beta.AggregateFleetRow\x12#\n\x1bresource_groups_total_count\x18\x02 \x01(\x05\x12\x1c\n\x14resource_total_count\x18\x03 \x01(\x05\x12\x17\n\x0fnext_page_token\x18\x04 \x01(\t\x12\x18\n\x0bunreachable\x18\x05 \x03(\tB\x03\xe0\x41\x06\"\xf2\x01\n\x11\x41ggregateFleetRow\x12@\n\tdimension\x18\x01 \x03(\x0b\x32-.google.cloud.databasecenter.v1beta.Dimension\x12\x1d\n\x15resource_groups_count\x18\x02 \x01(\x05\x12\x17\n\x0fresources_count\x18\x03 \x01(\x05\x12Q\n\rdelta_details\x18\x04 \x01(\x0b\x32\x30.google.cloud.databasecenter.v1beta.DeltaDetailsB\x03\xe0\x41\x01H\x00\x88\x01\x01\x42\x10\n\x0e_delta_details\"\xa1\x06\n\tDimension\x12\x13\n\tcontainer\x18\x02 \x01(\tH\x00\x12G\n\x0cproduct_type\x18\x03 \x01(\x0e\x32/.google.cloud.databasecenter.v1beta.ProductTypeH\x00\x12\x44\n\x0eproduct_engine\x18\x04 \x01(\x0e\x32*.google.cloud.databasecenter.v1beta.EngineH\x00\x12\x19\n\x0fproduct_version\x18\x05 \x01(\tH\x00\x12\x12\n\x08location\x18\x06 \x01(\tH\x00\x12\x17\n\rresource_type\x18\x07 \x01(\tH\x00\x12P\n\x11sub_resource_type\x18\x08 \x01(\x0e\x32\x33.google.cloud.databasecenter.v1beta.SubResourceTypeH\x00\x12Q\n\x11resource_category\x18\t \x01(\x0e\x32\x34.google.cloud.databasecenter.v1beta.ResourceCategoryH\x00\x12M\n\x0fmanagement_type\x18\n \x01(\x0e\x32\x32.google.cloud.databasecenter.v1beta.ManagementTypeH\x00\x12>\n\x07\x65\x64ition\x18\x0b \x01(\x0e\x32+.google.cloud.databasecenter.v1beta.EditionH\x00\x12\x11\n\x07tag_key\x18\x0c \x01(\tH\x00\x12\x13\n\ttag_value\x18\r \x01(\tH\x00\x12\x14\n\ntag_source\x18\x0e \x01(\tH\x00\x12\x17\n\rtag_inherited\x18\x0f \x01(\x08H\x00\x12\x13\n\tlabel_key\x18\x10 \x01(\tH\x00\x12\x15\n\x0blabel_value\x18\x11 \x01(\tH\x00\x12\x16\n\x0clabel_source\x18\x12 \x01(\tH\x00\x12\"\n\x18has_maintenance_schedule\x18\x13 \x01(\x08H\x00\x12(\n\x1ehas_deny_maintenance_schedules\x18\x14 \x01(\x08H\x00\x42\x0b\n\tdimension\"D\n\x0e\x42\x61\x63kupDRConfig\x12\x1d\n\x10\x62\x61\x63kupdr_managed\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\x13\n\x11_backupdr_managed\"\xe7\x01\n\x12QueryIssuesRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x13\n\x06\x66ilter\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12_\n\x17signal_products_filters\x18\x03 \x03(\x0b\x32\x39.google.cloud.databasecenter.v1beta.SignalProductsFiltersB\x03\xe0\x41\x01\x12\x15\n\x08order_by\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tpage_size\x18\x05 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x06 \x01(\tB\x03\xe0\x41\x01\"\xa5\x01\n\x15SignalProductsFilters\x12H\n\x0bsignal_type\x18\x01 \x01(\x0e\x32..google.cloud.databasecenter.v1beta.SignalTypeB\x03\xe0\x41\x01\x12\x42\n\x08products\x18\x02 \x03(\x0b\x32+.google.cloud.databasecenter.v1beta.ProductB\x03\xe0\x41\x01\"\x9c\x01\n\x13QueryIssuesResponse\x12R\n\x0fresource_issues\x18\x01 \x03(\x0b\x32\x39.google.cloud.databasecenter.v1beta.DatabaseResourceIssue\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\x12\x18\n\x0bunreachable\x18\x03 \x03(\tB\x03\xe0\x41\x06\"\x9b\x01\n\x15\x44\x61tabaseResourceIssue\x12:\n\x06signal\x18\x01 \x01(\x0b\x32*.google.cloud.databasecenter.v1beta.Signal\x12\x46\n\x08resource\x18\x02 \x01(\x0b\x32\x34.google.cloud.databasecenter.v1beta.DatabaseResource\"D\n\x03Tag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\x12\x0e\n\x06source\x18\x03 \x01(\t\x12\x11\n\tinherited\x18\x04 \x01(\x08\"\x90\x01\n\x0fResourceDetails\x12\x1a\n\x12\x66ull_resource_name\x18\x01 \x01(\t\x12\x11\n\tcontainer\x18\x02 \x01(\t\x12<\n\x07product\x18\x03 \x01(\x0b\x32+.google.cloud.databasecenter.v1beta.Product\x12\x10\n\x08location\x18\x04 \x01(\t\"\xb2\x01\n\x0c\x44\x65ltaDetails\x12P\n\x13increased_resources\x18\x01 \x03(\x0b\x32\x33.google.cloud.databasecenter.v1beta.ResourceDetails\x12P\n\x13\x64\x65\x63reased_resources\x18\x02 \x03(\x0b\x32\x33.google.cloud.databasecenter.v1beta.ResourceDetails*m\n\x07\x45\x64ition\x12\x17\n\x13\x45\x44ITION_UNSPECIFIED\x10\x00\x12\x16\n\x12\x45\x44ITION_ENTERPRISE\x10\x01\x12\x1b\n\x17\x45\x44ITION_ENTERPRISE_PLUS\x10\x02\x12\x14\n\x10\x45\x44ITION_STANDARD\x10\x03*\xc0\x02\n\x0fSubResourceType\x12!\n\x1dSUB_RESOURCE_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19SUB_RESOURCE_TYPE_PRIMARY\x10\x01\x12\x1f\n\x1bSUB_RESOURCE_TYPE_SECONDARY\x10\x02\x12\"\n\x1eSUB_RESOURCE_TYPE_READ_REPLICA\x10\x03\x12&\n\"SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY\x10\x05\x12\x1f\n\x1bSUB_RESOURCE_TYPE_READ_POOL\x10\x06\x12!\n\x1dSUB_RESOURCE_TYPE_RESERVATION\x10\x07\x12\x1d\n\x19SUB_RESOURCE_TYPE_DATASET\x10\x08\x12\x1b\n\x17SUB_RESOURCE_TYPE_OTHER\x10\x04*t\n\x0eManagementType\x12\x1f\n\x1bMANAGEMENT_TYPE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bMANAGEMENT_TYPE_GCP_MANAGED\x10\x01\x12 \n\x1cMANAGEMENT_TYPE_SELF_MANAGED\x10\x02*|\n\x10ResourceCategory\x12!\n\x1dRESOURCE_CATEGORY_UNSPECIFIED\x10\x00\x12\x0c\n\x08INSTANCE\x10\x01\x12\x0b\n\x07\x43LUSTER\x10\x02\x12\x0c\n\x08\x44\x41TABASE\x10\x03\x12\x0b\n\x07\x44\x41TASET\x10\x04\x12\x0f\n\x0bRESERVATION\x10\x05\x32\xff\x07\n\x0e\x44\x61tabaseCenter\x12\xa3\x01\n\rQueryProducts\x12\x38.google.cloud.databasecenter.v1beta.QueryProductsRequest\x1a\x39.google.cloud.databasecenter.v1beta.QueryProductsResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/v1beta:queryProducts\x12\xa7\x01\n\x0e\x41ggregateFleet\x12\x39.google.cloud.databasecenter.v1beta.AggregateFleetRequest\x1a:.google.cloud.databasecenter.v1beta.AggregateFleetResponse\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/v1beta:aggregateFleet\x12\xde\x01\n\x1bQueryDatabaseResourceGroups\x12\x46.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest\x1aG.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse\".\x82\xd3\xe4\x93\x02(\"#/v1beta:queryDatabaseResourceGroups:\x01*\x12\xbe\x01\n\x13\x41ggregateIssueStats\x12>.google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest\x1a?.google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse\"&\x82\xd3\xe4\x93\x02 \"\x1b/v1beta:aggregateIssueStats:\x01*\x12\xa7\x01\n\x0bQueryIssues\x12\x36.google.cloud.databasecenter.v1beta.QueryIssuesRequest\x1a\x37.google.cloud.databasecenter.v1beta.QueryIssuesResponse\"\'\xda\x41\x06parent\x82\xd3\xe4\x93\x02\x18\"\x13/v1beta:queryIssues:\x01*\x1aQ\xca\x41\x1d\x64\x61tabasecenter.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xfa\x01\n&com.google.cloud.databasecenter.v1betaB\x0cServiceProtoP\x01ZNcloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb\xaa\x02\"Google.Cloud.DatabaseCenter.V1Beta\xca\x02\"Google\\Cloud\\DatabaseCenter\\V1beta\xea\x02%Google::Cloud::DatabaseCenter::V1betab\x06proto3" +descriptor_data = "\n0google/cloud/databasecenter/v1beta/service.proto\x12\"google.cloud.databasecenter.v1beta\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x34google/cloud/databasecenter/v1beta/affiliation.proto\x1a\x37google/cloud/databasecenter/v1beta/machine_config.proto\x1a\x34google/cloud/databasecenter/v1beta/maintenance.proto\x1a\x34google/cloud/databasecenter/v1beta/metric_data.proto\x1a\x30google/cloud/databasecenter/v1beta/product.proto\x1a\x30google/cloud/databasecenter/v1beta/signals.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x16google/type/date.proto\"\\\n\x14QueryProductsRequest\x12\x13\n\x06parent\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\x16\n\tpage_size\x18\x01 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\x89\x01\n\x15QueryProductsResponse\x12=\n\x08products\x18\x01 \x03(\x0b\x32+.google.cloud.databasecenter.v1beta.Product\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\x12\x18\n\x0bunreachable\x18\x03 \x03(\tB\x03\xe0\x41\x06\"\xbb\x02\n\"QueryDatabaseResourceGroupsRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x13\n\x06\x66ilter\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12T\n\x12signal_type_groups\x18\x03 \x03(\x0b\x32\x33.google.cloud.databasecenter.v1beta.SignalTypeGroupB\x03\xe0\x41\x01\x12M\n\x0esignal_filters\x18\x04 \x03(\x0b\x32\x30.google.cloud.databasecenter.v1beta.SignalFilterB\x03\xe0\x41\x01\x12\x15\n\x08order_by\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tpage_size\x18\x06 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x07 \x01(\tB\x03\xe0\x41\x01\"\xac\x01\n#QueryDatabaseResourceGroupsResponse\x12R\n\x0fresource_groups\x18\x01 \x03(\x0b\x32\x39.google.cloud.databasecenter.v1beta.DatabaseResourceGroup\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\x12\x18\n\x0bunreachable\x18\x03 \x03(\tB\x03\xe0\x41\x06\"\xac\x01\n\x15\x44\x61tabaseResourceGroup\x12L\n\x0eroot_resources\x18\x01 \x03(\x0b\x32\x34.google.cloud.databasecenter.v1beta.DatabaseResource\x12\x45\n\rsignal_groups\x18\x02 \x03(\x0b\x32..google.cloud.databasecenter.v1beta.IssueCount\"\xa2\x08\n\x10\x44\x61tabaseResource\x12M\n\x0f\x63hild_resources\x18\x01 \x03(\x0b\x32\x34.google.cloud.databasecenter.v1beta.DatabaseResource\x12\x1a\n\x12\x66ull_resource_name\x18\x03 \x01(\t\x12\x11\n\tcontainer\x18\x04 \x01(\t\x12<\n\x07product\x18\x05 \x01(\x0b\x32+.google.cloud.databasecenter.v1beta.Product\x12\x10\n\x08location\x18\x06 \x01(\t\x12\x39\n\x06labels\x18\x07 \x03(\x0b\x32).google.cloud.databasecenter.v1beta.Label\x12\x35\n\x04tags\x18\x10 \x03(\x0b\x32\'.google.cloud.databasecenter.v1beta.Tag\x12\x15\n\rresource_type\x18\x08 \x01(\t\x12N\n\x11sub_resource_type\x18\t \x01(\x0e\x32\x33.google.cloud.databasecenter.v1beta.SubResourceType\x12I\n\x0emachine_config\x18\x0c \x01(\x0b\x32\x31.google.cloud.databasecenter.v1beta.MachineConfig\x12\x46\n\rsignal_groups\x18\n \x03(\x0b\x32/.google.cloud.databasecenter.v1beta.SignalGroup\x12<\n\x07metrics\x18\r \x01(\x0b\x32+.google.cloud.databasecenter.v1beta.Metrics\x12O\n\x11resource_category\x18\x0e \x01(\x0e\x32\x34.google.cloud.databasecenter.v1beta.ResourceCategory\x12\x15\n\rresource_name\x18\x0f \x01(\t\x12P\n\x0f\x62\x61\x63kupdr_config\x18\x11 \x01(\x0b\x32\x32.google.cloud.databasecenter.v1beta.BackupDRConfigB\x03\xe0\x41\x01\x12<\n\x07\x65\x64ition\x18\x12 \x01(\x0e\x32+.google.cloud.databasecenter.v1beta.Edition\x12R\n\x10maintenance_info\x18\x13 \x01(\x0b\x32\x33.google.cloud.databasecenter.v1beta.MaintenanceInfoB\x03\xe0\x41\x01\x12J\n\x0c\x61\x66\x66iliations\x18\x14 \x03(\x0b\x32/.google.cloud.databasecenter.v1beta.AffiliationB\x03\xe0\x41\x01\"\xe2\x01\n\x1a\x41ggregateIssueStatsRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x13\n\x06\x66ilter\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12T\n\x12signal_type_groups\x18\x03 \x03(\x0b\x32\x33.google.cloud.databasecenter.v1beta.SignalTypeGroupB\x03\xe0\x41\x01\x12\x32\n\rbaseline_date\x18\x04 \x01(\x0b\x32\x11.google.type.DateB\x03\xe0\x41\x01H\x00\x88\x01\x01\x42\x10\n\x0e_baseline_date\"\x8e\x01\n\x1a\x41ggregateQueryStatsRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x15\n\x08order_by\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x13\n\x06\x66ilter\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tpage_size\x18\x04 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x05 \x01(\tB\x03\xe0\x41\x01\"\x99\x01\n\x1b\x41ggregateQueryStatsResponse\x12G\n\x0bquery_stats\x18\x01 \x03(\x0b\x32\x32.google.cloud.databasecenter.v1beta.QueryStatsInfo\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\x12\x18\n\x0bunreachable\x18\x03 \x03(\tB\x03\xe0\x41\x06\"\xcb\x01\n\x1b\x41ggregateIssueStatsResponse\x12N\n\x11issue_group_stats\x18\x01 \x03(\x0b\x32\x33.google.cloud.databasecenter.v1beta.IssueGroupStats\x12\x1d\n\x15total_resources_count\x18\x02 \x01(\x05\x12#\n\x1btotal_resource_groups_count\x18\x03 \x01(\x05\x12\x18\n\x0bunreachable\x18\x04 \x03(\tB\x03\xe0\x41\x06\"\xec\x01\n\x0fIssueGroupStats\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x1d\n\x15resource_groups_count\x18\x02 \x01(\x05\x12\x17\n\x0fresources_count\x18\x03 \x01(\x05\x12%\n\x1dhealthy_resource_groups_count\x18\x04 \x01(\x05\x12\x1f\n\x17healthy_resources_count\x18\x05 \x01(\x05\x12\x43\n\x0bissue_stats\x18\x06 \x03(\x0b\x32..google.cloud.databasecenter.v1beta.IssueStats\"\xb1\x02\n\nIssueStats\x12\x43\n\x0bsignal_type\x18\x01 \x01(\x0e\x32..google.cloud.databasecenter.v1beta.SignalType\x12\x16\n\x0eresource_count\x18\x02 \x01(\x05\x12Q\n\rdelta_details\x18\x03 \x01(\x0b\x32\x30.google.cloud.databasecenter.v1beta.DeltaDetailsB\x03\xe0\x41\x01H\x00\x88\x01\x01\x12N\n\x0eissue_severity\x18\x04 \x01(\x0e\x32\x31.google.cloud.databasecenter.v1beta.IssueSeverityH\x01\x88\x01\x01\x42\x10\n\x0e_delta_detailsB\x11\n\x0f_issue_severity\"3\n\x05Label\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\x12\x0e\n\x06source\x18\x03 \x01(\t\"\xe6\x01\n\x15\x41ggregateFleetRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x13\n\x06\x66ilter\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x15\n\x08group_by\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x15\n\x08order_by\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tpage_size\x18\x05 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x06 \x01(\tB\x03\xe0\x41\x01\x12\x32\n\rbaseline_date\x18\x07 \x01(\x0b\x32\x11.google.type.DateB\x03\xe0\x41\x01H\x00\x88\x01\x01\x42\x10\n\x0e_baseline_date\"\xa5\x01\n\x0eQueryStatsInfo\x12N\n\x16\x61ggregated_query_stats\x18\x01 \x01(\x0b\x32..google.cloud.databasecenter.v1beta.QueryStats\x12\x43\n\x0bquery_stats\x18\x02 \x03(\x0b\x32..google.cloud.databasecenter.v1beta.QueryStats\"}\n\nResourceId\x12\x1a\n\x12\x66ull_resource_name\x18\x01 \x01(\t\x12\x15\n\rresource_type\x18\x02 \x01(\t\x12<\n\x07product\x18\x03 \x01(\x0b\x32+.google.cloud.databasecenter.v1beta.Product\"\xc2\x02\n\nQueryStats\x12\x12\n\nquery_hash\x18\x01 \x01(\t\x12\x18\n\x10normalized_query\x18\x02 \x01(\t\x12\x1d\n\rresource_type\x18\x04 \x01(\tB\x06\xfa\x41\x03\n\x01*\x12\x44\n\x0cresource_ids\x18\x05 \x03(\x0b\x32..google.cloud.databasecenter.v1beta.ResourceId\x12G\n\rquery_metrics\x18\x06 \x01(\x0b\x32\x30.google.cloud.databasecenter.v1beta.QueryMetrics\x12X\n\x16inefficient_query_info\x18\x07 \x01(\x0b\x32\x38.google.cloud.databasecenter.v1beta.InefficientQueryInfo\"\xe5\x02\n\x0cQueryMetrics\x12\x17\n\x0f\x65xecution_count\x18\x01 \x01(\x03\x12/\n\x0c\x61vg_cpu_time\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0etotal_cpu_time\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x16\n\x0erows_processed\x18\x04 \x01(\x03\x12V\n\x0emetrics_window\x18\x05 \x01(\x0e\x32>.google.cloud.databasecenter.v1beta.QueryMetrics.MetricsWindow\"h\n\rMetricsWindow\x12\x1e\n\x1aMETRICS_WINDOW_UNSPECIFIED\x10\x00\x12\x10\n\x0cLAST_ONE_DAY\x10\x01\x12\x11\n\rLAST_ONE_WEEK\x10\x02\x12\x12\n\x0eLAST_TWO_WEEKS\x10\x03\"\xd3\x01\n\x16\x41ggregateFleetResponse\x12\x43\n\x04rows\x18\x01 \x03(\x0b\x32\x35.google.cloud.databasecenter.v1beta.AggregateFleetRow\x12#\n\x1bresource_groups_total_count\x18\x02 \x01(\x05\x12\x1c\n\x14resource_total_count\x18\x03 \x01(\x05\x12\x17\n\x0fnext_page_token\x18\x04 \x01(\t\x12\x18\n\x0bunreachable\x18\x05 \x03(\tB\x03\xe0\x41\x06\"\xf2\x01\n\x11\x41ggregateFleetRow\x12@\n\tdimension\x18\x01 \x03(\x0b\x32-.google.cloud.databasecenter.v1beta.Dimension\x12\x1d\n\x15resource_groups_count\x18\x02 \x01(\x05\x12\x17\n\x0fresources_count\x18\x03 \x01(\x05\x12Q\n\rdelta_details\x18\x04 \x01(\x0b\x32\x30.google.cloud.databasecenter.v1beta.DeltaDetailsB\x03\xe0\x41\x01H\x00\x88\x01\x01\x42\x10\n\x0e_delta_details\"\xa1\x06\n\tDimension\x12\x13\n\tcontainer\x18\x02 \x01(\tH\x00\x12G\n\x0cproduct_type\x18\x03 \x01(\x0e\x32/.google.cloud.databasecenter.v1beta.ProductTypeH\x00\x12\x44\n\x0eproduct_engine\x18\x04 \x01(\x0e\x32*.google.cloud.databasecenter.v1beta.EngineH\x00\x12\x19\n\x0fproduct_version\x18\x05 \x01(\tH\x00\x12\x12\n\x08location\x18\x06 \x01(\tH\x00\x12\x17\n\rresource_type\x18\x07 \x01(\tH\x00\x12P\n\x11sub_resource_type\x18\x08 \x01(\x0e\x32\x33.google.cloud.databasecenter.v1beta.SubResourceTypeH\x00\x12Q\n\x11resource_category\x18\t \x01(\x0e\x32\x34.google.cloud.databasecenter.v1beta.ResourceCategoryH\x00\x12M\n\x0fmanagement_type\x18\n \x01(\x0e\x32\x32.google.cloud.databasecenter.v1beta.ManagementTypeH\x00\x12>\n\x07\x65\x64ition\x18\x0b \x01(\x0e\x32+.google.cloud.databasecenter.v1beta.EditionH\x00\x12\x11\n\x07tag_key\x18\x0c \x01(\tH\x00\x12\x13\n\ttag_value\x18\r \x01(\tH\x00\x12\x14\n\ntag_source\x18\x0e \x01(\tH\x00\x12\x17\n\rtag_inherited\x18\x0f \x01(\x08H\x00\x12\x13\n\tlabel_key\x18\x10 \x01(\tH\x00\x12\x15\n\x0blabel_value\x18\x11 \x01(\tH\x00\x12\x16\n\x0clabel_source\x18\x12 \x01(\tH\x00\x12\"\n\x18has_maintenance_schedule\x18\x13 \x01(\x08H\x00\x12(\n\x1ehas_deny_maintenance_schedules\x18\x14 \x01(\x08H\x00\x42\x0b\n\tdimension\"D\n\x0e\x42\x61\x63kupDRConfig\x12\x1d\n\x10\x62\x61\x63kupdr_managed\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\x13\n\x11_backupdr_managed\"\xe7\x01\n\x12QueryIssuesRequest\x12\x13\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x13\n\x06\x66ilter\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12_\n\x17signal_products_filters\x18\x03 \x03(\x0b\x32\x39.google.cloud.databasecenter.v1beta.SignalProductsFiltersB\x03\xe0\x41\x01\x12\x15\n\x08order_by\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tpage_size\x18\x05 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x06 \x01(\tB\x03\xe0\x41\x01\"\xa5\x01\n\x15SignalProductsFilters\x12H\n\x0bsignal_type\x18\x01 \x01(\x0e\x32..google.cloud.databasecenter.v1beta.SignalTypeB\x03\xe0\x41\x01\x12\x42\n\x08products\x18\x02 \x03(\x0b\x32+.google.cloud.databasecenter.v1beta.ProductB\x03\xe0\x41\x01\"\x9c\x01\n\x13QueryIssuesResponse\x12R\n\x0fresource_issues\x18\x01 \x03(\x0b\x32\x39.google.cloud.databasecenter.v1beta.DatabaseResourceIssue\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\x12\x18\n\x0bunreachable\x18\x03 \x03(\tB\x03\xe0\x41\x06\"\x9b\x01\n\x15\x44\x61tabaseResourceIssue\x12:\n\x06signal\x18\x01 \x01(\x0b\x32*.google.cloud.databasecenter.v1beta.Signal\x12\x46\n\x08resource\x18\x02 \x01(\x0b\x32\x34.google.cloud.databasecenter.v1beta.DatabaseResource\"D\n\x03Tag\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\x12\x0e\n\x06source\x18\x03 \x01(\t\x12\x11\n\tinherited\x18\x04 \x01(\x08\"\x90\x01\n\x0fResourceDetails\x12\x1a\n\x12\x66ull_resource_name\x18\x01 \x01(\t\x12\x11\n\tcontainer\x18\x02 \x01(\t\x12<\n\x07product\x18\x03 \x01(\x0b\x32+.google.cloud.databasecenter.v1beta.Product\x12\x10\n\x08location\x18\x04 \x01(\t\"\xb2\x01\n\x0c\x44\x65ltaDetails\x12P\n\x13increased_resources\x18\x01 \x03(\x0b\x32\x33.google.cloud.databasecenter.v1beta.ResourceDetails\x12P\n\x13\x64\x65\x63reased_resources\x18\x02 \x03(\x0b\x32\x33.google.cloud.databasecenter.v1beta.ResourceDetails*m\n\x07\x45\x64ition\x12\x17\n\x13\x45\x44ITION_UNSPECIFIED\x10\x00\x12\x16\n\x12\x45\x44ITION_ENTERPRISE\x10\x01\x12\x1b\n\x17\x45\x44ITION_ENTERPRISE_PLUS\x10\x02\x12\x14\n\x10\x45\x44ITION_STANDARD\x10\x03*\xc0\x02\n\x0fSubResourceType\x12!\n\x1dSUB_RESOURCE_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19SUB_RESOURCE_TYPE_PRIMARY\x10\x01\x12\x1f\n\x1bSUB_RESOURCE_TYPE_SECONDARY\x10\x02\x12\"\n\x1eSUB_RESOURCE_TYPE_READ_REPLICA\x10\x03\x12&\n\"SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY\x10\x05\x12\x1f\n\x1bSUB_RESOURCE_TYPE_READ_POOL\x10\x06\x12!\n\x1dSUB_RESOURCE_TYPE_RESERVATION\x10\x07\x12\x1d\n\x19SUB_RESOURCE_TYPE_DATASET\x10\x08\x12\x1b\n\x17SUB_RESOURCE_TYPE_OTHER\x10\x04*t\n\x0eManagementType\x12\x1f\n\x1bMANAGEMENT_TYPE_UNSPECIFIED\x10\x00\x12\x1f\n\x1bMANAGEMENT_TYPE_GCP_MANAGED\x10\x01\x12 \n\x1cMANAGEMENT_TYPE_SELF_MANAGED\x10\x02*|\n\x10ResourceCategory\x12!\n\x1dRESOURCE_CATEGORY_UNSPECIFIED\x10\x00\x12\x0c\n\x08INSTANCE\x10\x01\x12\x0b\n\x07\x43LUSTER\x10\x02\x12\x0c\n\x08\x44\x41TABASE\x10\x03\x12\x0b\n\x07\x44\x41TASET\x10\x04\x12\x0f\n\x0bRESERVATION\x10\x05\x32\xc6\n\n\x0e\x44\x61tabaseCenter\x12\xa3\x01\n\rQueryProducts\x12\x38.google.cloud.databasecenter.v1beta.QueryProductsRequest\x1a\x39.google.cloud.databasecenter.v1beta.QueryProductsResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/v1beta:queryProducts\x12\xa7\x01\n\x0e\x41ggregateFleet\x12\x39.google.cloud.databasecenter.v1beta.AggregateFleetRequest\x1a:.google.cloud.databasecenter.v1beta.AggregateFleetResponse\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/v1beta:aggregateFleet\x12\xde\x01\n\x1bQueryDatabaseResourceGroups\x12\x46.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsRequest\x1aG.google.cloud.databasecenter.v1beta.QueryDatabaseResourceGroupsResponse\".\x82\xd3\xe4\x93\x02(\"#/v1beta:queryDatabaseResourceGroups:\x01*\x12\xbe\x01\n\x13\x41ggregateIssueStats\x12>.google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest\x1a?.google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse\"&\x82\xd3\xe4\x93\x02 \"\x1b/v1beta:aggregateIssueStats:\x01*\x12\xc4\x02\n\x13\x41ggregateQueryStats\x12>.google.cloud.databasecenter.v1beta.AggregateQueryStatsRequest\x1a?.google.cloud.databasecenter.v1beta.AggregateQueryStatsResponse\"\xab\x01\x82\xd3\xe4\x93\x02\xa4\x01\"4/v1beta/{parent=organizations/*}:aggregateQueryStats:\x01*Z3\"./v1beta/{parent=folders/*}:aggregateQueryStats:\x01*Z4\"//v1beta/{parent=projects/*}:aggregateQueryStats:\x01*\x12\xa7\x01\n\x0bQueryIssues\x12\x36.google.cloud.databasecenter.v1beta.QueryIssuesRequest\x1a\x37.google.cloud.databasecenter.v1beta.QueryIssuesResponse\"\'\xda\x41\x06parent\x82\xd3\xe4\x93\x02\x18\"\x13/v1beta:queryIssues:\x01*\x1aQ\xca\x41\x1d\x64\x61tabasecenter.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\xfa\x01\n&com.google.cloud.databasecenter.v1betaB\x0cServiceProtoP\x01ZNcloud.google.com/go/databasecenter/apiv1beta/databasecenterpb;databasecenterpb\xaa\x02\"Google.Cloud.DatabaseCenter.V1Beta\xca\x02\"Google\\Cloud\\DatabaseCenter\\V1beta\xea\x02%Google::Cloud::DatabaseCenter::V1betab\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) @@ -32,11 +34,18 @@ module V1beta DatabaseResourceGroup = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.DatabaseResourceGroup").msgclass DatabaseResource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.DatabaseResource").msgclass AggregateIssueStatsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.AggregateIssueStatsRequest").msgclass + AggregateQueryStatsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.AggregateQueryStatsRequest").msgclass + AggregateQueryStatsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.AggregateQueryStatsResponse").msgclass AggregateIssueStatsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.AggregateIssueStatsResponse").msgclass IssueGroupStats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.IssueGroupStats").msgclass IssueStats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.IssueStats").msgclass Label = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.Label").msgclass AggregateFleetRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.AggregateFleetRequest").msgclass + QueryStatsInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.QueryStatsInfo").msgclass + ResourceId = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.ResourceId").msgclass + QueryStats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.QueryStats").msgclass + QueryMetrics = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.QueryMetrics").msgclass + QueryMetrics::MetricsWindow = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.QueryMetrics.MetricsWindow").enummodule AggregateFleetResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.AggregateFleetResponse").msgclass AggregateFleetRow = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.AggregateFleetRow").msgclass Dimension = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.databasecenter.v1beta.Dimension").msgclass diff --git a/google-cloud-database_center-v1beta/lib/google/cloud/databasecenter/v1beta/service_services_pb.rb b/google-cloud-database_center-v1beta/lib/google/cloud/databasecenter/v1beta/service_services_pb.rb index 343299edb494..b72410a0dc6c 100644 --- a/google-cloud-database_center-v1beta/lib/google/cloud/databasecenter/v1beta/service_services_pb.rb +++ b/google-cloud-database_center-v1beta/lib/google/cloud/databasecenter/v1beta/service_services_pb.rb @@ -43,6 +43,8 @@ class Service rpc :QueryDatabaseResourceGroups, ::Google::Cloud::DatabaseCenter::V1beta::QueryDatabaseResourceGroupsRequest, ::Google::Cloud::DatabaseCenter::V1beta::QueryDatabaseResourceGroupsResponse # AggregateIssueStats provides database resource issues statistics. rpc :AggregateIssueStats, ::Google::Cloud::DatabaseCenter::V1beta::AggregateIssueStatsRequest, ::Google::Cloud::DatabaseCenter::V1beta::AggregateIssueStatsResponse + # AggregateQueryStats provides database resource query execution statistics. + rpc :AggregateQueryStats, ::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest, ::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsResponse # QueryIssues provides a list of issues and recommendations # that a user has access to and that are within the requested scope. rpc :QueryIssues, ::Google::Cloud::DatabaseCenter::V1beta::QueryIssuesRequest, ::Google::Cloud::DatabaseCenter::V1beta::QueryIssuesResponse diff --git a/google-cloud-database_center-v1beta/proto_docs/google/cloud/databasecenter/v1beta/service.rb b/google-cloud-database_center-v1beta/proto_docs/google/cloud/databasecenter/v1beta/service.rb index ddadc59dfe20..8de0b1f3cdf1 100644 --- a/google-cloud-database_center-v1beta/proto_docs/google/cloud/databasecenter/v1beta/service.rb +++ b/google-cloud-database_center-v1beta/proto_docs/google/cloud/databasecenter/v1beta/service.rb @@ -357,6 +357,85 @@ class AggregateIssueStatsRequest extend ::Google::Protobuf::MessageExts::ClassMethods end + # AggregateQueryStatsRequest represents the input to the AggregateQueryStats + # method. + # @!attribute [rw] parent + # @return [::String] + # Required. Parent can be a project, a folder, or an organization. The search + # is limited to the resources within the `parent`. + # + # The allowed values are: + # + # * projects/\\{PROJECT_ID} (e.g., "projects/foo-bar") + # * projects/\\{PROJECT_NUMBER} (e.g., "projects/12345678") + # * folders/\\{FOLDER_NUMBER} (e.g., "folders/1234567") + # * organizations/\\{ORGANIZATION_NUMBER} (e.g., "organizations/123456") + # @!attribute [rw] order_by + # @return [::String] + # Optional. The expression to order the results by. + # Example: `order_by="execution_count"` + # Example: `order_by="execution_count desc"` + # Supported order by fields are `execution_count`, `rows_processed`, + # `total_cpu_time`, `avg_cpu_time`. + # @!attribute [rw] filter + # @return [::String] + # Optional. The expression to filter resources. + # + # Supported fields are: `full_resource_name`, `resource_type`, `container`, + # `product.type`, `product.engine`, `product.version`, `location`, + # `labels`, `issues`, fields of availability_info, + # data_protection_info,'resource_name', etc. + # + # The expression is a list of zero or more restrictions combined via logical + # operators `AND` and `OR`. When `AND` and `OR` are both used in the + # expression, parentheses must be appropriately used to group the + # combinations. + # + # Example: `location="us-east1"` + # Example: `container="projects/123" OR container="projects/456"` + # Example: `(container="projects/123" OR + # container="projects/456") AND location="us-east1"` + # Additional specific fields for query stats are: `metric_window`, + # `query_hash`, `normalized_query`. + # Example: `metric_window="LAST_ONE_DAY"` + # (Possible values for `metric_window` are: `LAST_ONE_DAY`, + # `LAST_ONE_WEEK`, `LAST_TWO_WEEKS`) + # Example: `query_hash="12345678"` + # Example: `normalized_query="SELECT * FROM table"` + # @!attribute [rw] page_size + # @return [::Integer] + # Optional. If unspecified, at most 100 query stats will be returned. + # The maximum value is 1000; values above 1000 will be coerced to 1000. + # @!attribute [rw] page_token + # @return [::String] + # Optional. A page token, received from a previous + # `AggregateQueryStatsRequest` call. Provide this to retrieve the subsequent + # page. All parameters except page_token should match the parameters in the + # call that provided the page token. + class AggregateQueryStatsRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # The response message containing relevant query stats + # for database resources. + # @!attribute [rw] query_stats + # @return [::Array<::Google::Cloud::DatabaseCenter::V1beta::QueryStatsInfo>] + # List of query stats where each group contains stats for resources having a + # particular combination of relevant query stats. + # @!attribute [rw] next_page_token + # @return [::String] + # A token that can be sent as `page_token` to retrieve the next page. + # If this field is omitted, there are no subsequent pages. + # @!attribute [rw] unreachable + # @return [::Array<::String>] + # Unordered list. List of unreachable regions from where data could not be + # retrieved. + class AggregateQueryStatsResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The response message containing one of more group of relevant health issues # for database resources. # @!attribute [rw] issue_group_stats @@ -534,6 +613,105 @@ class AggregateFleetRequest extend ::Google::Protobuf::MessageExts::ClassMethods end + # QueryStatsInfo contains the aggregated and detailed query stats for a + # particular combination of relevant query stats for queries having same + # normalized query. + # @!attribute [rw] aggregated_query_stats + # @return [::Google::Cloud::DatabaseCenter::V1beta::QueryStats] + # Aggregated query stats for the resources for same normalized query. + # @!attribute [rw] query_stats + # @return [::Array<::Google::Cloud::DatabaseCenter::V1beta::QueryStats>] + # List of query stats for the resources in the group. + # This stats is stats at resource level for the resources having same + # normalized query. + class QueryStatsInfo + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # ResourceId contains the identifier for a database resource, + # including the full resource name, resource type, and product. + # @!attribute [rw] full_resource_name + # @return [::String] + # The full resource name of the resource. + # @!attribute [rw] resource_type + # @return [::String] + # The type of the resource. + # sqladmin.googleapis.com/Instance + # alloydb.googleapis.com/Cluster + # alloydb.googleapis.com/Instance + # @!attribute [rw] product + # @return [::Google::Cloud::DatabaseCenter::V1beta::Product] + # The product of the resource, including the type, engine, and version. + class ResourceId + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # QueryStats contains the stats for a particular combination of query_hash, + # query_string and resource_type. + # @!attribute [rw] query_hash + # @return [::String] + # The query hash of the query. + # @!attribute [rw] normalized_query + # @return [::String] + # The query string is normalized query without any PII data. + # @!attribute [rw] resource_type + # @return [::String] + # The type of the resource. + # sqladmin.googleapis.com/Instance + # alloydb.googleapis.com/Cluster + # alloydb.googleapis.com/Instance + # @!attribute [rw] resource_ids + # @return [::Array<::Google::Cloud::DatabaseCenter::V1beta::ResourceId>] + # The resource ids for which the query stats are collected. + # @!attribute [rw] query_metrics + # @return [::Google::Cloud::DatabaseCenter::V1beta::QueryMetrics] + # Metrics related to the query performance. + # @!attribute [rw] inefficient_query_info + # @return [::Google::Cloud::DatabaseCenter::V1beta::InefficientQueryInfo] + # Information about inefficient query. + class QueryStats + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # QueryMetrics contains the metrics related to the query execution. + # @!attribute [rw] execution_count + # @return [::Integer] + # The number of times the query was executed. + # @!attribute [rw] avg_cpu_time + # @return [::Google::Protobuf::Duration] + # The average execution period of the query across all runs. + # @!attribute [rw] total_cpu_time + # @return [::Google::Protobuf::Duration] + # The total CPU time consumed by the query across all runs. + # @!attribute [rw] rows_processed + # @return [::Integer] + # The average number of rows processed by the query across all runs. + # @!attribute [rw] metrics_window + # @return [::Google::Cloud::DatabaseCenter::V1beta::QueryMetrics::MetricsWindow] + # The window over which the metrics are aggregated. + class QueryMetrics + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Enum to represent the window over which the metrics are aggregated. + module MetricsWindow + # Unspecified. Default value. + METRICS_WINDOW_UNSPECIFIED = 0 + + # Metrics are aggregated over the last 1 day. + LAST_ONE_DAY = 1 + + # Metrics are aggregated over the last 7 days. + LAST_ONE_WEEK = 2 + + # Metrics are aggregated over the last 14 days. + LAST_TWO_WEEKS = 3 + end + end + # The response message to aggregate a fleet by some group by # fields. # @!attribute [rw] rows diff --git a/google-cloud-database_center-v1beta/snippets/database_center/aggregate_query_stats.rb b/google-cloud-database_center-v1beta/snippets/database_center/aggregate_query_stats.rb new file mode 100644 index 000000000000..b06c510e6166 --- /dev/null +++ b/google-cloud-database_center-v1beta/snippets/database_center/aggregate_query_stats.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +# Copyright 2026 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! + +# [START databasecenter_v1beta_generated_DatabaseCenter_AggregateQueryStats_sync] +require "google/cloud/database_center/v1beta" + +## +# Snippet for the aggregate_query_stats call in the DatabaseCenter service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Cloud::DatabaseCenter::V1beta::DatabaseCenter::Client#aggregate_query_stats. +# +def aggregate_query_stats + # Create a client object. The client can be reused for multiple calls. + client = Google::Cloud::DatabaseCenter::V1beta::DatabaseCenter::Client.new + + # Create a request. To set request fields, pass in keyword arguments. + request = Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest.new + + # Call the aggregate_query_stats method. + result = client.aggregate_query_stats request + + # The returned object is of type Gapic::PagedEnumerable. You can iterate + # over elements, and API calls will be issued to fetch pages as needed. + result.each do |item| + # Each element is of type ::Google::Cloud::DatabaseCenter::V1beta::QueryStatsInfo. + p item + end +end +# [END databasecenter_v1beta_generated_DatabaseCenter_AggregateQueryStats_sync] diff --git a/google-cloud-database_center-v1beta/snippets/snippet_metadata_google.cloud.databasecenter.v1beta.json b/google-cloud-database_center-v1beta/snippets/snippet_metadata_google.cloud.databasecenter.v1beta.json index 9411b6517b17..797c9d7193f1 100644 --- a/google-cloud-database_center-v1beta/snippets/snippet_metadata_google.cloud.databasecenter.v1beta.json +++ b/google-cloud-database_center-v1beta/snippets/snippet_metadata_google.cloud.databasecenter.v1beta.json @@ -171,6 +171,46 @@ } ] }, + { + "region_tag": "databasecenter_v1beta_generated_DatabaseCenter_AggregateQueryStats_sync", + "title": "Snippet for the aggregate_query_stats call in the DatabaseCenter service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Cloud::DatabaseCenter::V1beta::DatabaseCenter::Client#aggregate_query_stats.", + "file": "database_center/aggregate_query_stats.rb", + "language": "RUBY", + "client_method": { + "short_name": "aggregate_query_stats", + "full_name": "::Google::Cloud::DatabaseCenter::V1beta::DatabaseCenter::Client#aggregate_query_stats", + "async": false, + "parameters": [ + { + "type": "::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest", + "name": "request" + } + ], + "result_type": "::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsResponse", + "client": { + "short_name": "DatabaseCenter::Client", + "full_name": "::Google::Cloud::DatabaseCenter::V1beta::DatabaseCenter::Client" + }, + "method": { + "short_name": "AggregateQueryStats", + "full_name": "google.cloud.databasecenter.v1beta.DatabaseCenter.AggregateQueryStats", + "service": { + "short_name": "DatabaseCenter", + "full_name": "google.cloud.databasecenter.v1beta.DatabaseCenter" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 50, + "type": "FULL" + } + ] + }, { "region_tag": "databasecenter_v1beta_generated_DatabaseCenter_QueryIssues_sync", "title": "Snippet for the query_issues call in the DatabaseCenter service", diff --git a/google-cloud-database_center-v1beta/test/google/cloud/database_center/v1beta/database_center_rest_test.rb b/google-cloud-database_center-v1beta/test/google/cloud/database_center/v1beta/database_center_rest_test.rb index 2450ec74d065..77eb850a0782 100644 --- a/google-cloud-database_center-v1beta/test/google/cloud/database_center/v1beta/database_center_rest_test.rb +++ b/google-cloud-database_center-v1beta/test/google/cloud/database_center/v1beta/database_center_rest_test.rb @@ -311,6 +311,64 @@ def test_aggregate_issue_stats end end + def test_aggregate_query_stats + # Create test objects. + client_result = ::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsResponse.new + http_response = OpenStruct.new body: client_result.to_json + + call_options = {} + + # Create request parameters for a unary method. + parent = "hello world" + order_by = "hello world" + filter = "hello world" + page_size = 42 + page_token = "hello world" + + aggregate_query_stats_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, method_name:| + assert options.metadata.key? :"x-goog-api-client" + assert options.metadata[:"x-goog-api-client"].include? "rest" + refute options.metadata[:"x-goog-api-client"].include? "grpc" + end + + ::Google::Cloud::DatabaseCenter::V1beta::DatabaseCenter::Rest::ServiceStub.stub :transcode_aggregate_query_stats_request, ["", "", {}] do + Gapic::Rest::ClientStub.stub :new, aggregate_query_stats_client_stub do + # Create client + client = ::Google::Cloud::DatabaseCenter::V1beta::DatabaseCenter::Rest::Client.new do |config| + config.credentials = :dummy_value + end + + # Use hash object + client.aggregate_query_stats({ parent: parent, order_by: order_by, filter: filter, page_size: page_size, page_token: page_token }) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use named arguments + client.aggregate_query_stats parent: parent, order_by: order_by, filter: filter, page_size: page_size, page_token: page_token do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object + client.aggregate_query_stats ::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest.new(parent: parent, order_by: order_by, filter: filter, page_size: page_size, page_token: page_token) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use hash object with options + client.aggregate_query_stats({ parent: parent, order_by: order_by, filter: filter, page_size: page_size, page_token: page_token }, call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Use protobuf object with options + client.aggregate_query_stats(::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest.new(parent: parent, order_by: order_by, filter: filter, page_size: page_size, page_token: page_token), call_options) do |_result, response| + assert_equal http_response, response.underlying_op + end + + # Verify method calls + assert_equal 5, aggregate_query_stats_client_stub.call_count + end + end + end + def test_query_issues # Create test objects. client_result = ::Google::Cloud::DatabaseCenter::V1beta::QueryIssuesResponse.new diff --git a/google-cloud-database_center-v1beta/test/google/cloud/database_center/v1beta/database_center_test.rb b/google-cloud-database_center-v1beta/test/google/cloud/database_center/v1beta/database_center_test.rb index f2497f2947db..d67cbb97f5e6 100644 --- a/google-cloud-database_center-v1beta/test/google/cloud/database_center/v1beta/database_center_test.rb +++ b/google-cloud-database_center-v1beta/test/google/cloud/database_center/v1beta/database_center_test.rb @@ -346,6 +346,77 @@ def test_aggregate_issue_stats end end + def test_aggregate_query_stats + # Create GRPC objects. + grpc_response = ::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsResponse.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + parent = "hello world" + order_by = "hello world" + filter = "hello world" + page_size = 42 + page_token = "hello world" + + aggregate_query_stats_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :aggregate_query_stats, name + assert_kind_of ::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest, request + assert_equal "hello world", request["parent"] + assert_equal "hello world", request["order_by"] + assert_equal "hello world", request["filter"] + assert_equal 42, request["page_size"] + assert_equal "hello world", request["page_token"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, aggregate_query_stats_client_stub do + # Create client + client = ::Google::Cloud::DatabaseCenter::V1beta::DatabaseCenter::Client.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.aggregate_query_stats({ parent: parent, order_by: order_by, filter: filter, page_size: page_size, page_token: page_token }) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use named arguments + client.aggregate_query_stats parent: parent, order_by: order_by, filter: filter, page_size: page_size, page_token: page_token do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.aggregate_query_stats ::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest.new(parent: parent, order_by: order_by, filter: filter, page_size: page_size, page_token: page_token) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.aggregate_query_stats({ parent: parent, order_by: order_by, filter: filter, page_size: page_size, page_token: page_token }, grpc_options) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.aggregate_query_stats(::Google::Cloud::DatabaseCenter::V1beta::AggregateQueryStatsRequest.new(parent: parent, order_by: order_by, filter: filter, page_size: page_size, page_token: page_token), grpc_options) do |response, operation| + assert_kind_of Gapic::PagedEnumerable, response + assert_equal grpc_response, response.response + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, aggregate_query_stats_client_stub.call_rpc_count + end + end + def test_query_issues # Create GRPC objects. grpc_response = ::Google::Cloud::DatabaseCenter::V1beta::QueryIssuesResponse.new