Packages

final case class ResourceDescriptor(type: String = "", pattern: Seq[String] = _root_.scala.Seq.empty, nameField: String = "", history: History = com.google.api.resource.ResourceDescriptor.History.HISTORY_UNSPECIFIED, plural: String = "", singular: String = "", unknownFields: UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty) extends GeneratedMessage with Updatable[ResourceDescriptor] with Product with Serializable

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"
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.

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.
nameField

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

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 }; }

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/

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.

Annotations
@SerialVersionUID()
Source
ResourceDescriptor.scala
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ResourceDescriptor
  2. Updatable
  3. GeneratedMessage
  4. Serializable
  5. Product
  6. Equals
  7. AnyRef
  8. Any
Implicitly
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new ResourceDescriptor(type: String = "", pattern: Seq[String] = _root_.scala.Seq.empty, nameField: String = "", history: History = com.google.api.resource.ResourceDescriptor.History.HISTORY_UNSPECIFIED, plural: String = "", singular: String = "", unknownFields: UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty)

    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.

    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.
    nameField

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

    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 }; }

    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/

    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.

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. def +(other: String): String
    Implicit
    This member is added by an implicit conversion from ResourceDescriptor toany2stringadd[ResourceDescriptor] performed by method any2stringadd in scala.Predef.
    Definition Classes
    any2stringadd
  4. def ->[B](y: B): (ResourceDescriptor, B)
    Implicit
    This member is added by an implicit conversion from ResourceDescriptor toArrowAssoc[ResourceDescriptor] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @inline()
  5. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  6. def addAllPattern(__vs: Iterable[String]): ResourceDescriptor
  7. def addPattern(__vs: String*): ResourceDescriptor
  8. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  9. def clearPattern: ResourceDescriptor
  10. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  11. def companion: ResourceDescriptor.type
    Definition Classes
    ResourceDescriptor → GeneratedMessage
  12. def discardUnknownFields: ResourceDescriptor
  13. def ensuring(cond: (ResourceDescriptor) => Boolean, msg: => Any): ResourceDescriptor
    Implicit
    This member is added by an implicit conversion from ResourceDescriptor toEnsuring[ResourceDescriptor] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  14. def ensuring(cond: (ResourceDescriptor) => Boolean): ResourceDescriptor
    Implicit
    This member is added by an implicit conversion from ResourceDescriptor toEnsuring[ResourceDescriptor] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  15. def ensuring(cond: Boolean, msg: => Any): ResourceDescriptor
    Implicit
    This member is added by an implicit conversion from ResourceDescriptor toEnsuring[ResourceDescriptor] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  16. def ensuring(cond: Boolean): ResourceDescriptor
    Implicit
    This member is added by an implicit conversion from ResourceDescriptor toEnsuring[ResourceDescriptor] performed by method Ensuring in scala.Predef.
    Definition Classes
    Ensuring
  17. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  18. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  19. def getField(__field: FieldDescriptor): PValue
    Definition Classes
    ResourceDescriptor → GeneratedMessage
  20. def getFieldByNumber(__fieldNumber: Int): Any
    Definition Classes
    ResourceDescriptor → GeneratedMessage
  21. val history: History
  22. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  23. val nameField: String
  24. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  25. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  26. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  27. val pattern: Seq[String]
  28. val plural: String
  29. def productElementNames: Iterator[String]
    Definition Classes
    Product
  30. def serializedSize: Int
    Definition Classes
    ResourceDescriptor → GeneratedMessage
  31. val singular: String
  32. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  33. final def toByteArray: Array[Byte]
    Definition Classes
    GeneratedMessage
  34. final def toByteString: ByteString
    Definition Classes
    GeneratedMessage
  35. final def toPMessage: PMessage
    Definition Classes
    GeneratedMessage
  36. def toProtoString: String
    Definition Classes
    ResourceDescriptor → GeneratedMessage
  37. val type: String
  38. val unknownFields: UnknownFieldSet
  39. def update(ms: (Lens[ResourceDescriptor, ResourceDescriptor]) => Mutation[ResourceDescriptor]*): ResourceDescriptor
    Definition Classes
    Updatable
  40. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  41. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  42. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  43. def withHistory(__v: History): ResourceDescriptor
  44. def withNameField(__v: String): ResourceDescriptor
  45. def withPattern(__v: Seq[String]): ResourceDescriptor
  46. def withPlural(__v: String): ResourceDescriptor
  47. def withSingular(__v: String): ResourceDescriptor
  48. def withType(__v: String): ResourceDescriptor
  49. def withUnknownFields(__v: UnknownFieldSet): ResourceDescriptor
  50. final def writeDelimitedTo(output: OutputStream): Unit
    Definition Classes
    GeneratedMessage
  51. def writeTo(_output__: CodedOutputStream): Unit
    Definition Classes
    ResourceDescriptor → GeneratedMessage
  52. final def writeTo(output: OutputStream): Unit
    Definition Classes
    GeneratedMessage

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

    (Since version 9)

  2. def formatted(fmtstr: String): String
    Implicit
    This member is added by an implicit conversion from ResourceDescriptor toStringFormat[ResourceDescriptor] performed by method StringFormat in scala.Predef.
    Definition Classes
    StringFormat
    Annotations
    @deprecated @inline()
    Deprecated

    (Since version 2.12.16) Use formatString.format(value) instead of value.formatted(formatString), or use the f"" string interpolator. In Java 15 and later, formatted resolves to the new method in String which has reversed parameters.

  3. def [B](y: B): (ResourceDescriptor, B)
    Implicit
    This member is added by an implicit conversion from ResourceDescriptor toArrowAssoc[ResourceDescriptor] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
    ArrowAssoc
    Annotations
    @deprecated
    Deprecated

    (Since version 2.13.0) Use -> instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.

Inherited from GeneratedMessage

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Inherited by implicit conversion any2stringadd fromResourceDescriptor to any2stringadd[ResourceDescriptor]

Inherited by implicit conversion StringFormat fromResourceDescriptor to StringFormat[ResourceDescriptor]

Inherited by implicit conversion Ensuring fromResourceDescriptor to Ensuring[ResourceDescriptor]

Inherited by implicit conversion ArrowAssoc fromResourceDescriptor to ArrowAssoc[ResourceDescriptor]

Ungrouped