// Copyright 2018 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.monitoring.v3; option csharp_namespace = "Google.Cloud.Monitoring.V3"; option go_package = "google.golang.org/genproto/googleapis/monitoring/v3;monitoring"; option java_multiple_files = true; option java_outer_classname = "GroupProto"; option java_package = "com.google.monitoring.v3"; option php_namespace = "Google\\Cloud\\Monitoring\\V3"; // The description of a dynamic collection of monitored resources. Each group // has a filter that is matched against monitored resources and their associated // metadata. If a group's filter matches an available monitored resource, then // that resource is a member of that group. Groups can contain any number of // monitored resources, and each monitored resource can be a member of any // number of groups. // // Groups can be nested in parent-child hierarchies. The `parentName` field // identifies an optional parent for each group. If a group has a parent, then // the only monitored resources available to be matched by the group's filter // are the resources contained in the parent group. In other words, a group // contains the monitored resources that match its filter and the filters of all // the group's ancestors. A group without a parent can contain any monitored // resource. // // For example, consider an infrastructure running a set of instances with two // user-defined tags: `"environment"` and `"role"`. A parent group has a filter, // `environment="production"`. A child of that parent group has a filter, // `role="transcoder"`. The parent group contains all instances in the // production environment, regardless of their roles. The child group contains // instances that have the transcoder role *and* are in the production // environment. // // The monitored resources contained in a group can change at any moment, // depending on what resources exist and what filters are associated with the // group and its ancestors. message Group { // Output only. The name of this group. The format is // `"projects/{project_id_or_number}/groups/{group_id}"`. // When creating a group, this field is ignored and a new name is created // consisting of the project specified in the call to `CreateGroup` // and a unique `{group_id}` that is generated automatically. string name = 1; // A user-assigned name for this group, used only for display purposes. string display_name = 2; // The name of the group's parent, if it has one. // The format is `"projects/{project_id_or_number}/groups/{group_id}"`. // For groups with no parent, `parentName` is the empty string, `""`. string parent_name = 3; // The filter used to determine which monitored resources belong to this // group. string filter = 5; // If true, the members of this group are considered to be a cluster. // The system can perform additional analysis on groups that are clusters. bool is_cluster = 6; }