Class: Google::Api::ResourceDescriptor

Inherits:
Object
  • Object
show all
Extended by:
Protobuf::MessageExts::ClassMethods
Includes:
Protobuf::MessageExts
Defined in:
proto_docs/google/api/resource.rb

Overview

A simple descriptor of a resource type.

ResourceDescriptor annotates a resource message (either by means of a protobuf annotation or use in the service config), and associates the resource's schema, the resource type, and the pattern of the resource name.

Example:

message Topic {
  // Indicates this message defines a resource schema.
  // Declares the resource type in the format of {service}/{kind}.
  // For Kubernetes resources, the format is {api group}/{kind}.
  option (google.api.resource) = {
    type: "pubsub.googleapis.com/Topic"
    name_descriptor: {
      pattern: "projects/{project}/topics/{topic}"
      parent_type: "cloudresourcemanager.googleapis.com/Project"
      parent_name_extractor: "projects/{project}"
    }
  };
}

The ResourceDescriptor Yaml config will look like:

resources:

  • type: "pubsub.googleapis.com/Topic" name_descriptor:
    • pattern: "projects/{project}/topics/{topic}" parent_type: "cloudresourcemanager.googleapis.com/Project" parent_name_extractor: "projects/{project}"

Sometimes, resources have multiple patterns, typically because they can live under multiple parents.

Example:

message LogEntry {
  option (google.api.resource) = {
    type: "logging.googleapis.com/LogEntry"
    name_descriptor: {
      pattern: "projects/{project}/logs/{log}"
      parent_type: "cloudresourcemanager.googleapis.com/Project"
      parent_name_extractor: "projects/{project}"
    }
    name_descriptor: {
      pattern: "folders/{folder}/logs/{log}"
      parent_type: "cloudresourcemanager.googleapis.com/Folder"
      parent_name_extractor: "folders/{folder}"
    }
    name_descriptor: {
      pattern: "organizations/{organization}/logs/{log}"
      parent_type: "cloudresourcemanager.googleapis.com/Organization"
      parent_name_extractor: "organizations/{organization}"
    }
    name_descriptor: {
      pattern: "billingAccounts/{billing_account}/logs/{log}"
      parent_type: "billing.googleapis.com/BillingAccount"
      parent_name_extractor: "billingAccounts/{billing_account}"
    }
  };
}

The ResourceDescriptor Yaml config will look like:

resources:
- type: 'logging.googleapis.com/LogEntry'
  name_descriptor:
    - pattern: "projects/{project}/logs/{log}"
      parent_type: "cloudresourcemanager.googleapis.com/Project"
      parent_name_extractor: "projects/{project}"
    - pattern: "folders/{folder}/logs/{log}"
      parent_type: "cloudresourcemanager.googleapis.com/Folder"
      parent_name_extractor: "folders/{folder}"
    - pattern: "organizations/{organization}/logs/{log}"
      parent_type: "cloudresourcemanager.googleapis.com/Organization"
      parent_name_extractor: "organizations/{organization}"
    - pattern: "billingAccounts/{billing_account}/logs/{log}"
      parent_type: "billing.googleapis.com/BillingAccount"
      parent_name_extractor: "billingAccounts/{billing_account}"

For flexible resources, the resource name doesn't contain parent names, but the resource itself has parents for policy evaluation.

Example:

message Shelf {
  option (google.api.resource) = {
    type: "library.googleapis.com/Shelf"
    name_descriptor: {
      pattern: "shelves/{shelf}"
      parent_type: "cloudresourcemanager.googleapis.com/Project"
    }
    name_descriptor: {
      pattern: "shelves/{shelf}"
      parent_type: "cloudresourcemanager.googleapis.com/Folder"
    }
  };
}

The ResourceDescriptor Yaml config will look like:

resources:
- type: 'library.googleapis.com/Shelf'
  name_descriptor:
    - pattern: "shelves/{shelf}"
      parent_type: "cloudresourcemanager.googleapis.com/Project"
    - pattern: "shelves/{shelf}"
      parent_type: "cloudresourcemanager.googleapis.com/Folder"

Defined Under Namespace

Modules: History

Instance Attribute Summary collapse

Instance Attribute Details

#history::Google::Api::ResourceDescriptor::History



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'proto_docs/google/api/resource.rb', line 195

class ResourceDescriptor
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # A description of the historical or future-looking state of the
  # resource pattern.
  module History
    # The "unset" value.
    HISTORY_UNSPECIFIED = 0

    # The resource originally had one pattern and launched as such, and
    # additional patterns were added later.
    ORIGINALLY_SINGLE_PATTERN = 1

    # The resource has one pattern, but the API owner expects to add more
    # later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
    # that from being necessary once there are multiple patterns.)
    FUTURE_MULTI_PATTERN = 2
  end
end

#name_field::String



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'proto_docs/google/api/resource.rb', line 195

class ResourceDescriptor
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # A description of the historical or future-looking state of the
  # resource pattern.
  module History
    # The "unset" value.
    HISTORY_UNSPECIFIED = 0

    # The resource originally had one pattern and launched as such, and
    # additional patterns were added later.
    ORIGINALLY_SINGLE_PATTERN = 1

    # The resource has one pattern, but the API owner expects to add more
    # later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
    # that from being necessary once there are multiple patterns.)
    FUTURE_MULTI_PATTERN = 2
  end
end

#pattern::Array<::String>



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'proto_docs/google/api/resource.rb', line 195

class ResourceDescriptor
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # A description of the historical or future-looking state of the
  # resource pattern.
  module History
    # The "unset" value.
    HISTORY_UNSPECIFIED = 0

    # The resource originally had one pattern and launched as such, and
    # additional patterns were added later.
    ORIGINALLY_SINGLE_PATTERN = 1

    # The resource has one pattern, but the API owner expects to add more
    # later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
    # that from being necessary once there are multiple patterns.)
    FUTURE_MULTI_PATTERN = 2
  end
end

#plural::String



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'proto_docs/google/api/resource.rb', line 195

class ResourceDescriptor
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # A description of the historical or future-looking state of the
  # resource pattern.
  module History
    # The "unset" value.
    HISTORY_UNSPECIFIED = 0

    # The resource originally had one pattern and launched as such, and
    # additional patterns were added later.
    ORIGINALLY_SINGLE_PATTERN = 1

    # The resource has one pattern, but the API owner expects to add more
    # later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
    # that from being necessary once there are multiple patterns.)
    FUTURE_MULTI_PATTERN = 2
  end
end

#singular::String



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'proto_docs/google/api/resource.rb', line 195

class ResourceDescriptor
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # A description of the historical or future-looking state of the
  # resource pattern.
  module History
    # The "unset" value.
    HISTORY_UNSPECIFIED = 0

    # The resource originally had one pattern and launched as such, and
    # additional patterns were added later.
    ORIGINALLY_SINGLE_PATTERN = 1

    # The resource has one pattern, but the API owner expects to add more
    # later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
    # that from being necessary once there are multiple patterns.)
    FUTURE_MULTI_PATTERN = 2
  end
end

#type::String



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'proto_docs/google/api/resource.rb', line 195

class ResourceDescriptor
  include ::Google::Protobuf::MessageExts
  extend ::Google::Protobuf::MessageExts::ClassMethods

  # A description of the historical or future-looking state of the
  # resource pattern.
  module History
    # The "unset" value.
    HISTORY_UNSPECIFIED = 0

    # The resource originally had one pattern and launched as such, and
    # additional patterns were added later.
    ORIGINALLY_SINGLE_PATTERN = 1

    # The resource has one pattern, but the API owner expects to add more
    # later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
    # that from being necessary once there are multiple patterns.)
    FUTURE_MULTI_PATTERN = 2
  end
end