---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.21.0
  name: globalcustomquotas.capsule.clastix.io
spec:
  group: capsule.clastix.io
  names:
    kind: GlobalCustomQuota
    listKind: GlobalCustomQuotaList
    plural: globalcustomquotas
    shortNames:
    - gcq
    singular: globalcustomquota
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - description: The total limit available
      jsonPath: .spec.limit
      name: Limit
      type: string
    - description: The total used amount
      jsonPath: .status.usage.used
      name: Used
      type: string
    - description: The total amount available
      jsonPath: .status.usage.available
      name: Available
      type: string
    - description: Reconcile Status
      jsonPath: .status.conditions[?(@.type=="Ready")].status
      name: Ready
      type: string
    - description: Reconcile Message
      jsonPath: .status.conditions[?(@.type=="Ready")].message
      name: Status
      type: string
    - description: Age
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClusterCustomQuotaSpec.
            properties:
              limit:
                anyOf:
                - type: integer
                - type: string
                description: Resource Quantity as limit
                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                x-kubernetes-int-or-string: true
              namespaceSelectors:
                description: Select specifc namespaces where this Quota selects items.
                items:
                  description: Selector for resources and their labels or selecting
                    origin namespaces
                  properties:
                    matchExpressions:
                      description: matchExpressions is a list of label selector requirements.
                        The requirements are ANDed.
                      items:
                        description: |-
                          A label selector requirement is a selector that contains values, a key, and an operator that
                          relates the key and values.
                        properties:
                          key:
                            description: key is the label key that the selector applies
                              to.
                            type: string
                          operator:
                            description: |-
                              operator represents a key's relationship to a set of values.
                              Valid operators are In, NotIn, Exists and DoesNotExist.
                            type: string
                          values:
                            description: |-
                              values is an array of string values. If the operator is In or NotIn,
                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                              the values array must be empty. This array is replaced during a strategic
                              merge patch.
                            items:
                              type: string
                            type: array
                            x-kubernetes-list-type: atomic
                        required:
                        - key
                        - operator
                        type: object
                      type: array
                      x-kubernetes-list-type: atomic
                    matchLabels:
                      additionalProperties:
                        type: string
                      description: |-
                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                      type: object
                  type: object
                  x-kubernetes-map-type: atomic
                type: array
              options:
                default:
                  emitMetricPerClaimUsage: false
                description: Additional Options for the CustomQuotaSpecification
                properties:
                  emitMetricPerClaimUsage:
                    default: false
                    description: |-
                      Additionally expose usage metrics for each claim contributing to the quota.
                      This is disabled by default to avoid high cardinality in the metrics, but can be enabled for more granular monitoring and alerting.
                    type: boolean
                type: object
              scopeSelectors:
                description: Select items governed by this quota
                items:
                  description: |-
                    A label selector is a label query over a set of resources. The result of matchLabels and
                    matchExpressions are ANDed. An empty label selector matches all objects. A null
                    label selector matches no objects.
                  properties:
                    matchExpressions:
                      description: matchExpressions is a list of label selector requirements.
                        The requirements are ANDed.
                      items:
                        description: |-
                          A label selector requirement is a selector that contains values, a key, and an operator that
                          relates the key and values.
                        properties:
                          key:
                            description: key is the label key that the selector applies
                              to.
                            type: string
                          operator:
                            description: |-
                              operator represents a key's relationship to a set of values.
                              Valid operators are In, NotIn, Exists and DoesNotExist.
                            type: string
                          values:
                            description: |-
                              values is an array of string values. If the operator is In or NotIn,
                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                              the values array must be empty. This array is replaced during a strategic
                              merge patch.
                            items:
                              type: string
                            type: array
                            x-kubernetes-list-type: atomic
                        required:
                        - key
                        - operator
                        type: object
                      type: array
                      x-kubernetes-list-type: atomic
                    matchLabels:
                      additionalProperties:
                        type: string
                      description: |-
                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                      type: object
                  type: object
                  x-kubernetes-map-type: atomic
                type: array
              sources:
                description: Target resource
                items:
                  properties:
                    apiVersion:
                      description: |-
                        API version, API group, or API group/version selector of the referent.

                        Empty APIVersion means the core Kubernetes API version "v1".
                        Use "*" to explicitly match all API groups and versions.

                        Examples:
                        - "" means core "v1".
                        - "v1" means core "v1".
                        - "apps" means any version in the "apps" API group.
                        - "apps/v1" means the "apps/v1" API group/version.
                        - "apps/*" means any version in the "apps" API group.
                      type: string
                    cel:
                      description: |-
                        CEL expression evaluated against the source object.
                        The object is available as "object".
                        Must evaluate to kubernetes.Quantity or list<kubernetes.Quantity>.
                        Mutually exclusive with path and must be empty when op is "count".
                      maxLength: 4096
                      type: string
                    kind:
                      description: |-
                        Kind of the referent.

                        Use "*" to match all kinds.
                      minLength: 1
                      type: string
                    op:
                      default: add
                      description: Operation used to evaluate usage.
                      enum:
                      - add
                      - sub
                      - count
                      type: string
                    path:
                      description: |-
                        Path on GVK where usage is evaluated.
                        Must be empty when op is "count".
                        Required and non-empty for all other operations.
                      type: string
                    selectors:
                      description: |-
                        Provide more granular selectors for these sources
                        The ScopeSelector and NamespaceSelector are always applied
                        Allowing these selectors to make further selecting on the resulting subset.
                      items:
                        properties:
                          celExpressions:
                            description: |-
                              Additional CEL expressions evaluated against the selected object.
                              The object is available as "object".
                              All must evaluate to true for this selector to match.
                              CEL expressions and fieldSelectors may be used together.
                            items:
                              maxLength: 4096
                              minLength: 1
                              type: string
                            maxItems: 64
                            type: array
                          fieldSelectors:
                            description: |-
                              Additional boolean JSONPath expressions.
                              All must evaluate to true for this selector to match.
                            items:
                              type: string
                            type: array
                          matchExpressions:
                            description: matchExpressions is a list of label selector
                              requirements. The requirements are ANDed.
                            items:
                              description: |-
                                A label selector requirement is a selector that contains values, a key, and an operator that
                                relates the key and values.
                              properties:
                                key:
                                  description: key is the label key that the selector
                                    applies to.
                                  type: string
                                operator:
                                  description: |-
                                    operator represents a key's relationship to a set of values.
                                    Valid operators are In, NotIn, Exists and DoesNotExist.
                                  type: string
                                values:
                                  description: |-
                                    values is an array of string values. If the operator is In or NotIn,
                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                    the values array must be empty. This array is replaced during a strategic
                                    merge patch.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              required:
                              - key
                              - operator
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          matchLabels:
                            additionalProperties:
                              type: string
                            description: |-
                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                              map is equivalent to an element of matchExpressions, whose key field is "key", the
                              operator is "In", and the values array contains only "value". The requirements are ANDed.
                            type: object
                        type: object
                        x-kubernetes-map-type: atomic
                      type: array
                  required:
                  - kind
                  type: object
                  x-kubernetes-validations:
                  - message: path and cel must be empty when op is 'count'; otherwise
                      exactly one of path or cel must be set and non-empty
                    rule: 'self.op == ''count'' ? ((!has(self.path) || size(self.path)
                      == 0) && (!has(self.cel) || size(self.cel) == 0)) : ((has(self.path)
                      && size(self.path) > 0) != (has(self.cel) && size(self.cel)
                      > 0))'
                type: array
            required:
            - limit
            - options
            - sources
            type: object
          status:
            description: CustomQuotaStatus defines the observed state of GlobalResourceQuota.
            properties:
              claims:
                description: Objects regarding this policy
                items:
                  properties:
                    group:
                      type: string
                    kind:
                      type: string
                    name:
                      description: Name of the referent.
                      type: string
                    namespace:
                      description: Namespace of the referent, when not specified it
                        acts as LocalObjectReference.
                      maxLength: 253
                      pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
                      type: string
                    uid:
                      description: UID of the tracked Tenant to pin point tracking
                      type: string
                    usage:
                      anyOf:
                      - type: integer
                      - type: string
                      description: Resource Quantity for given item
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    version:
                      type: string
                  required:
                  - group
                  - kind
                  - name
                  - uid
                  - usage
                  - version
                  type: object
                type: array
              conditions:
                description: Conditions
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              namespaces:
                description: Observed Namespaces
                items:
                  type: string
                type: array
              observedGeneration:
                description: ObservedGeneration is the most recent generation the
                  controller has observed.
                format: int64
                type: integer
              targets:
                description: Targeting GVK
                items:
                  properties:
                    cel:
                      description: |-
                        CEL expression evaluated against the source object.
                        The object is available as "object".
                        Must evaluate to kubernetes.Quantity or list<kubernetes.Quantity>.
                        Mutually exclusive with path and must be empty when op is "count".
                      maxLength: 4096
                      type: string
                    group:
                      type: string
                    kind:
                      type: string
                    op:
                      default: add
                      description: Operation used to evaluate usage.
                      enum:
                      - add
                      - sub
                      - count
                      type: string
                    path:
                      description: |-
                        Path on GVK where usage is evaluated.
                        Must be empty when op is "count".
                        Required and non-empty for all other operations.
                      type: string
                    scope:
                      description: Scope of the GVK where usage is evaluated.
                      type: string
                    selectors:
                      description: |-
                        Provide more granular selectors for these sources
                        The ScopeSelector and NamespaceSelector are always applied
                        Allowing these selectors to make further selecting on the resulting subset.
                      items:
                        properties:
                          celExpressions:
                            description: |-
                              Additional CEL expressions evaluated against the selected object.
                              The object is available as "object".
                              All must evaluate to true for this selector to match.
                              CEL expressions and fieldSelectors may be used together.
                            items:
                              maxLength: 4096
                              minLength: 1
                              type: string
                            maxItems: 64
                            type: array
                          fieldSelectors:
                            description: |-
                              Additional boolean JSONPath expressions.
                              All must evaluate to true for this selector to match.
                            items:
                              type: string
                            type: array
                          matchExpressions:
                            description: matchExpressions is a list of label selector
                              requirements. The requirements are ANDed.
                            items:
                              description: |-
                                A label selector requirement is a selector that contains values, a key, and an operator that
                                relates the key and values.
                              properties:
                                key:
                                  description: key is the label key that the selector
                                    applies to.
                                  type: string
                                operator:
                                  description: |-
                                    operator represents a key's relationship to a set of values.
                                    Valid operators are In, NotIn, Exists and DoesNotExist.
                                  type: string
                                values:
                                  description: |-
                                    values is an array of string values. If the operator is In or NotIn,
                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                    the values array must be empty. This array is replaced during a strategic
                                    merge patch.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              required:
                              - key
                              - operator
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          matchLabels:
                            additionalProperties:
                              type: string
                            description: |-
                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                              map is equivalent to an element of matchExpressions, whose key field is "key", the
                              operator is "In", and the values array contains only "value". The requirements are ANDed.
                            type: object
                        type: object
                        x-kubernetes-map-type: atomic
                      type: array
                    version:
                      type: string
                  required:
                  - group
                  - kind
                  - version
                  type: object
                type: array
              usage:
                description: Usage measurements
                properties:
                  available:
                    anyOf:
                    - type: integer
                    - type: string
                    description: Used is the current observed total available of the
                      resource (limit - used).
                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                    x-kubernetes-int-or-string: true
                  used:
                    anyOf:
                    - type: integer
                    - type: string
                    description: Used is the current observed total usage of the resource.
                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                    x-kubernetes-int-or-string: true
                type: object
            required:
            - conditions
            - targets
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
