Class: Google::Api::ResourceDescriptor
- Inherits:
-
Object
- Object
- Google::Api::ResourceDescriptor
- 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:
Topic {
// Indicates this 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:
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:
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
-
#history ⇒ ::Google::Api::ResourceDescriptor::History
Optional.
-
#name_field ⇒ ::String
Optional.
-
#pattern ⇒ ::Array<::String>
Optional.
-
#plural ⇒ ::String
The plural name used in the resource name, such as 'projects' for the name of 'projects/{project}'.
-
#singular ⇒ ::String
The same concept of the
singularfield in k8s CRD spec https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ Such as "project" for theresourcemanager.googleapis.com/Projecttype. -
#type ⇒ ::String
The resource type.
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 |