class ResourceDescriptor extends Message

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"

Generated from protobuf message google.api.ResourceDescriptor

Methods

__construct(array $data = NULL)

Constructor.

string
getType()

The resource type. It must be in the format of {service_name}/{resource_type_kind}. The resource_type_kind must be singular and must not include version numbers.

$this
setType(string $var)

The resource type. It must be in the format of {service_name}/{resource_type_kind}. The resource_type_kind must be singular and must not include version numbers.

RepeatedField
getPattern()

Optional. The relative resource name pattern associated with this resource type. The DNS prefix of the full resource name shouldn't be specified here.

$this
setPattern(string[]|RepeatedField $var)

Optional. The relative resource name pattern associated with this resource type. The DNS prefix of the full resource name shouldn't be specified here.

string
getNameField()

Optional. The field on the resource that designates the resource name field. If omitted, this is assumed to be "name".

$this
setNameField(string $var)

Optional. The field on the resource that designates the resource name field. If omitted, this is assumed to be "name".

int
getHistory()

Optional. The historical or future-looking state of the resource pattern.

$this
setHistory(int $var)

Optional. The historical or future-looking state of the resource pattern.

string
getPlural()

The plural name used in the resource name, such as 'projects' for the name of 'projects/{project}'. It is the same concept of the plural field in k8s CRD spec https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/

$this
setPlural(string $var)

The plural name used in the resource name, such as 'projects' for the name of 'projects/{project}'. It is the same concept of the plural field in k8s CRD spec https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/

string
getSingular()

The same concept of the singular field in k8s CRD spec https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ Such as "project" for the resourcemanager.googleapis.com/Project type.

$this
setSingular(string $var)

The same concept of the singular field in k8s CRD spec https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ Such as "project" for the resourcemanager.googleapis.com/Project type.

Details

at line 243
__construct(array $data = NULL)

Constructor.

Parameters

array $data { Optional. Data for populating the Message object.

@type string $type
      The resource type. It must be in the format of
      {service_name}/{resource_type_kind}. The `resource_type_kind` must be
      singular and must not include version numbers.
      Example: `storage.googleapis.com/Bucket`
      The value of the resource_type_kind must follow the regular expression
      /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and
      should use PascalCase (UpperCamelCase). The maximum number of
      characters allowed for the `resource_type_kind` is 100.
@type string[]|\Google\Protobuf\Internal\RepeatedField $pattern
      Optional. The relative resource name pattern associated with this resource
      type. The DNS prefix of the full resource name shouldn't be specified here.
      The path pattern must follow the syntax, which aligns with HTTP binding
      syntax:
          Template = Segment { "/" Segment } ;
          Segment = LITERAL | Variable ;
          Variable = "{" LITERAL "}" ;
      Examples:
          - "projects/{project}/topics/{topic}"
          - "projects/{project}/knowledgeBases/{knowledge_base}"
      The components in braces correspond to the IDs for each resource in the
      hierarchy. It is expected that, if multiple patterns are provided,
      the same component name (e.g. "project") refers to IDs of the same
      type of resource.
@type string $name_field
      Optional. The field on the resource that designates the resource name
      field. If omitted, this is assumed to be "name".
@type int $history
      Optional. The historical or future-looking state of the resource pattern.
      Example:
          // The InspectTemplate message originally only supported resource
          // names with organization, and project was added later.
          message InspectTemplate {
            option (google.api.resource) = {
              type: "dlp.googleapis.com/InspectTemplate"
              pattern:
              "organizations/{organization}/inspectTemplates/{inspect_template}"
              pattern: "projects/{project}/inspectTemplates/{inspect_template}"
              history: ORIGINALLY_SINGLE_PATTERN
            };
          }
@type string $plural
      The plural name used in the resource name, such as 'projects' for
      the name of 'projects/{project}'. It is the same concept of the `plural`
      field in k8s CRD spec
      https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
@type string $singular
      The same concept of the `singular` field in k8s CRD spec
      https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
      Such as "project" for the `resourcemanager.googleapis.com/Project` type.

}

at line 261
string getType()

The resource type. It must be in the format of {service_name}/{resource_type_kind}. The resource_type_kind must be singular and must not include version numbers.

Example: storage.googleapis.com/Bucket The value of the resource_type_kind must follow the regular expression /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and should use PascalCase (UpperCamelCase). The maximum number of characters allowed for the resource_type_kind is 100.

Generated from protobuf field string type = 1;

Return Value

string

at line 280
$this setType(string $var)

The resource type. It must be in the format of {service_name}/{resource_type_kind}. The resource_type_kind must be singular and must not include version numbers.

Example: storage.googleapis.com/Bucket The value of the resource_type_kind must follow the regular expression /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and should use PascalCase (UpperCamelCase). The maximum number of characters allowed for the resource_type_kind is 100.

Generated from protobuf field string type = 1;

Parameters

string $var

Return Value

$this

at line 307
RepeatedField getPattern()

Optional. The relative resource name pattern associated with this resource type. The DNS prefix of the full resource name shouldn't be specified here.

The path pattern must follow the syntax, which aligns with HTTP binding syntax: Template = Segment { "/" Segment } ; Segment = LITERAL | Variable ; Variable = "{" LITERAL "}" ; Examples: - "projects/{project}/topics/{topic}" - "projects/{project}/knowledgeBases/{knowledge_base}" The components in braces correspond to the IDs for each resource in the hierarchy. It is expected that, if multiple patterns are provided, the same component name (e.g. "project") refers to IDs of the same type of resource.

Generated from protobuf field repeated string pattern = 2;

Return Value

RepeatedField

at line 332
$this setPattern(string[]|RepeatedField $var)

Optional. The relative resource name pattern associated with this resource type. The DNS prefix of the full resource name shouldn't be specified here.

The path pattern must follow the syntax, which aligns with HTTP binding syntax: Template = Segment { "/" Segment } ; Segment = LITERAL | Variable ; Variable = "{" LITERAL "}" ; Examples: - "projects/{project}/topics/{topic}" - "projects/{project}/knowledgeBases/{knowledge_base}" The components in braces correspond to the IDs for each resource in the hierarchy. It is expected that, if multiple patterns are provided, the same component name (e.g. "project") refers to IDs of the same type of resource.

Generated from protobuf field repeated string pattern = 2;

Parameters

string[]|RepeatedField $var

Return Value

$this

at line 347
string getNameField()

Optional. The field on the resource that designates the resource name field. If omitted, this is assumed to be "name".

Generated from protobuf field string name_field = 3;

Return Value

string

at line 360
$this setNameField(string $var)

Optional. The field on the resource that designates the resource name field. If omitted, this is assumed to be "name".

Generated from protobuf field string name_field = 3;

Parameters

string $var

Return Value

$this

at line 386
int getHistory()

Optional. The historical or future-looking state of the resource pattern.

Example: // The InspectTemplate message originally only supported resource // names with organization, and project was added later. message InspectTemplate { option (google.api.resource) = { type: "dlp.googleapis.com/InspectTemplate" pattern: "organizations/{organization}/inspectTemplates/{inspect_template}" pattern: "projects/{project}/inspectTemplates/{inspect_template}" history: ORIGINALLY_SINGLE_PATTERN }; }

Generated from protobuf field .google.api.ResourceDescriptor.History history = 4;

Return Value

int

at line 410
$this setHistory(int $var)

Optional. The historical or future-looking state of the resource pattern.

Example: // The InspectTemplate message originally only supported resource // names with organization, and project was added later. message InspectTemplate { option (google.api.resource) = { type: "dlp.googleapis.com/InspectTemplate" pattern: "organizations/{organization}/inspectTemplates/{inspect_template}" pattern: "projects/{project}/inspectTemplates/{inspect_template}" history: ORIGINALLY_SINGLE_PATTERN }; }

Generated from protobuf field .google.api.ResourceDescriptor.History history = 4;

Parameters

int $var

Return Value

$this

at line 427
string getPlural()

The plural name used in the resource name, such as 'projects' for the name of 'projects/{project}'. It is the same concept of the plural field in k8s CRD spec https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/

Generated from protobuf field string plural = 5;

Return Value

string

at line 442
$this setPlural(string $var)

The plural name used in the resource name, such as 'projects' for the name of 'projects/{project}'. It is the same concept of the plural field in k8s CRD spec https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/

Generated from protobuf field string plural = 5;

Parameters

string $var

Return Value

$this

at line 458
string getSingular()

The same concept of the singular field in k8s CRD spec https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ Such as "project" for the resourcemanager.googleapis.com/Project type.

Generated from protobuf field string singular = 6;

Return Value

string

at line 472
$this setSingular(string $var)

The same concept of the singular field in k8s CRD spec https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ Such as "project" for the resourcemanager.googleapis.com/Project type.

Generated from protobuf field string singular = 6;

Parameters

string $var

Return Value

$this