# frozen_string_literal: true

# 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
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

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


module Google
  module Cloud
    module Monitoring
      module 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.
        # @!attribute [rw] name
        #   @return [::String]
        #     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.
        # @!attribute [rw] display_name
        #   @return [::String]
        #     A user-assigned name for this group, used only for display purposes.
        # @!attribute [rw] parent_name
        #   @return [::String]
        #     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, `parent_name` is the empty string, `""`.
        # @!attribute [rw] filter
        #   @return [::String]
        #     The filter used to determine which monitored resources belong to this
        #     group.
        # @!attribute [rw] is_cluster
        #   @return [::Boolean]
        #     If true, the members of this group are considered to be a cluster.
        #     The system can perform additional analysis on groups that are clusters.
        class Group
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end
      end
    end
  end
end
