# frozen_string_literal: true
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/api/monitored_resource.proto

require 'google/protobuf'

require 'google/api/label_pb'
require 'google/api/launch_stage_pb'
require 'google/protobuf/struct_pb'


descriptor_data = "\n#google/api/monitored_resource.proto\x12\ngoogle.api\x1a\x16google/api/label.proto\x1a\x1dgoogle/api/launch_stage.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xc0\x01\n\x1bMonitoredResourceDescriptor\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12+\n\x06labels\x18\x04 \x03(\x0b\x32\x1b.google.api.LabelDescriptor\x12-\n\x0claunch_stage\x18\x07 \x01(\x0e\x32\x17.google.api.LaunchStage\"\x8b\x01\n\x11MonitoredResource\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x39\n\x06labels\x18\x02 \x03(\x0b\x32).google.api.MonitoredResource.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xca\x01\n\x19MonitoredResourceMetadata\x12.\n\rsystem_labels\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12J\n\x0buser_labels\x18\x02 \x03(\x0b\x32\x35.google.api.MonitoredResourceMetadata.UserLabelsEntry\x1a\x31\n\x0fUserLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42y\n\x0e\x63om.google.apiB\x16MonitoredResourceProtoP\x01ZCgoogle.golang.org/genproto/googleapis/api/monitoredres;monitoredres\xf8\x01\x01\xa2\x02\x04GAPIb\x06proto3"

pool = Google::Protobuf::DescriptorPool.generated_pool

begin
  pool.add_serialized_file(descriptor_data)
rescue TypeError
  # Compatibility code: will be removed in the next major version.
  require 'google/protobuf/descriptor_pb'
  parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
  parsed.clear_dependency
  serialized = parsed.class.encode(parsed)
  file = pool.add_serialized_file(serialized)
  warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
  imports = [
    ["google.api.LabelDescriptor", "google/api/label.proto"],
    ["google.protobuf.Struct", "google/protobuf/struct.proto"],
  ]
  imports.each do |type_name, expected_filename|
    import_file = pool.lookup(type_name).file_descriptor
    if import_file.name != expected_filename
      warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
    end
  end
  warn "Each proto file must use a consistent fully-qualified name."
  warn "This will become an error in the next major version."
end

module Google
  module Api
    MonitoredResourceDescriptor = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.MonitoredResourceDescriptor").msgclass
    MonitoredResource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.MonitoredResource").msgclass
    MonitoredResourceMetadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.api.MonitoredResourceMetadata").msgclass
  end
end

#### Source proto file: google/api/monitored_resource.proto ####
#
# // Copyright 2024 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.
#
# syntax = "proto3";
#
# package google.api;
#
# import "google/api/label.proto";
# import "google/api/launch_stage.proto";
# import "google/protobuf/struct.proto";
#
# option cc_enable_arenas = true;
# option go_package = "google.golang.org/genproto/googleapis/api/monitoredres;monitoredres";
# option java_multiple_files = true;
# option java_outer_classname = "MonitoredResourceProto";
# option java_package = "com.google.api";
# option objc_class_prefix = "GAPI";
#
# // An object that describes the schema of a
# // [MonitoredResource][google.api.MonitoredResource] object using a type name
# // and a set of labels.  For example, the monitored resource descriptor for
# // Google Compute Engine VM instances has a type of
# // `"gce_instance"` and specifies the use of the labels `"instance_id"` and
# // `"zone"` to identify particular VM instances.
# //
# // Different APIs can support different monitored resource types. APIs generally
# // provide a `list` method that returns the monitored resource descriptors used
# // by the API.
# //
# message MonitoredResourceDescriptor {
#   // Optional. The resource name of the monitored resource descriptor:
#   // `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
#   // {type} is the value of the `type` field in this object and
#   // {project_id} is a project ID that provides API-specific context for
#   // accessing the type.  APIs that do not use project information can use the
#   // resource name format `"monitoredResourceDescriptors/{type}"`.
#   string name = 5;
#
#   // Required. The monitored resource type. For example, the type
#   // `"cloudsql_database"` represents databases in Google Cloud SQL.
#   //  For a list of types, see [Monitored resource
#   //  types](https://cloud.google.com/monitoring/api/resources)
#   // and [Logging resource
#   // types](https://cloud.google.com/logging/docs/api/v2/resource-list).
#   string type = 1;
#
#   // Optional. A concise name for the monitored resource type that might be
#   // displayed in user interfaces. It should be a Title Cased Noun Phrase,
#   // without any article or other determiners. For example,
#   // `"Google Cloud SQL Database"`.
#   string display_name = 2;
#
#   // Optional. A detailed description of the monitored resource type that might
#   // be used in documentation.
#   string description = 3;
#
#   // Required. A set of labels used to describe instances of this monitored
#   // resource type. For example, an individual Google Cloud SQL database is
#   // identified by values for the labels `"database_id"` and `"zone"`.
#   repeated LabelDescriptor labels = 4;
#
#   // Optional. The launch stage of the monitored resource definition.
#   LaunchStage launch_stage = 7;
# }
#
# // An object representing a resource that can be used for monitoring, logging,
# // billing, or other purposes. Examples include virtual machine instances,
# // databases, and storage devices such as disks. The `type` field identifies a
# // [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] object
# // that describes the resource's schema. Information in the `labels` field
# // identifies the actual resource and its attributes according to the schema.
# // For example, a particular Compute Engine VM instance could be represented by
# // the following object, because the
# // [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] for
# // `"gce_instance"` has labels
# // `"project_id"`, `"instance_id"` and `"zone"`:
# //
# //     { "type": "gce_instance",
# //       "labels": { "project_id": "my-project",
# //                   "instance_id": "12345678901234",
# //                   "zone": "us-central1-a" }}
# message MonitoredResource {
#   // Required. The monitored resource type. This field must match
#   // the `type` field of a
#   // [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor]
#   // object. For example, the type of a Compute Engine VM instance is
#   // `gce_instance`. Some descriptors include the service name in the type; for
#   // example, the type of a Datastream stream is
#   // `datastream.googleapis.com/Stream`.
#   string type = 1;
#
#   // Required. Values for all of the labels listed in the associated monitored
#   // resource descriptor. For example, Compute Engine VM instances use the
#   // labels `"project_id"`, `"instance_id"`, and `"zone"`.
#   map<string, string> labels = 2;
# }
#
# // Auxiliary metadata for a [MonitoredResource][google.api.MonitoredResource]
# // object. [MonitoredResource][google.api.MonitoredResource] objects contain the
# // minimum set of information to uniquely identify a monitored resource
# // instance. There is some other useful auxiliary metadata. Monitoring and
# // Logging use an ingestion pipeline to extract metadata for cloud resources of
# // all types, and store the metadata in this message.
# message MonitoredResourceMetadata {
#   // Output only. Values for predefined system metadata labels.
#   // System labels are a kind of metadata extracted by Google, including
#   // "machine_image", "vpc", "subnet_id",
#   // "security_group", "name", etc.
#   // System label values can be only strings, Boolean values, or a list of
#   // strings. For example:
#   //
#   //     { "name": "my-test-instance",
#   //       "security_group": ["a", "b", "c"],
#   //       "spot_instance": false }
#   google.protobuf.Struct system_labels = 1;
#
#   // Output only. A map of user-defined metadata labels.
#   map<string, string> user_labels = 2;
# }
