{{- if .Values.crds.managed }}

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  name: resourcedistributions.apps.kruise.io
spec:
  group: apps.kruise.io
  names:
    kind: ResourceDistribution
    listKind: ResourceDistributionList
    plural: resourcedistributions
    shortNames:
      - distributor
    singular: resourcedistribution
  scope: Cluster
  versions:
    - additionalPrinterColumns:
        - description: The desired number of desired distribution and syncs.
          jsonPath: .status.desired
          name: TOTAL
          type: integer
        - description: The number of successful distribution and syncs.
          jsonPath: .status.succeeded
          name: SUCCEED
          type: integer
        - description: The number of failed distributions and syncs.
          jsonPath: .status.failed
          name: FAILED
          type: integer
      name: v1alpha1
      schema:
        openAPIV3Schema:
          description: ResourceDistribution is the Schema for the resourcedistributions API.
          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: ResourceDistributionSpec defines the desired state of ResourceDistribution.
              properties:
                resource:
                  description: Resource must be the complete yaml that users want to distribute.
                  type: object
                  x-kubernetes-embedded-resource: true
                  x-kubernetes-preserve-unknown-fields: true
                targets:
                  description: Targets defines the namespaces that users want to distribute to.
                  properties:
                    allNamespaces:
                      description: If AllNamespaces is true, Resource will be distributed to the all namespaces (except some forbidden namespaces, such as "kube-system" and "kube-public").
                      type: boolean
                    excludedNamespaces:
                      description: If ExcludedNamespaces is not empty, Resource will never be distributed to the listed namespaces. ExcludedNamespaces has the highest priority.
                      properties:
                        list:
                          items:
                            description: ResourceDistributionNamespace contains a namespace name
                            properties:
                              name:
                                description: Namespace name
                                type: string
                            type: object
                          type: array
                      type: object
                    includedNamespaces:
                      description: If IncludedNamespaces is not empty, Resource will be distributed to the listed namespaces.
                      properties:
                        list:
                          items:
                            description: ResourceDistributionNamespace contains a namespace name
                            properties:
                              name:
                                description: Namespace name
                                type: string
                            type: object
                          type: array
                      type: object
                    namespaceLabelSelector:
                      description: If NamespaceLabelSelector is not empty, Resource will be distributed to the matched 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
                            required:
                              - key
                              - operator
                            type: object
                          type: array
                        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
                  type: object
              required:
                - resource
                - targets
              type: object
            status:
              description: ResourceDistributionStatus defines the observed state of ResourceDistribution. ResourceDistributionStatus is recorded by kruise, users' modification is invalid and meaningless.
              properties:
                conditions:
                  description: Conditions describe the condition when Resource creating, updating and deleting.
                  items:
                    description: ResourceDistributionCondition allows a row to be marked with additional information.
                    properties:
                      failedNamespace:
                        description: FailedNamespaces describe all failed namespaces when Status is False
                        items:
                          type: string
                        type: array
                      lastTransitionTime:
                        description: LastTransitionTime is the last time the condition transitioned from one status to another.
                        format: date-time
                        type: string
                      reason:
                        description: Reason describe human readable message indicating details about last transition.
                        type: string
                      status:
                        description: Status of the condition, one of True, False, Unknown.
                        type: string
                      type:
                        description: Type of ResourceDistributionCondition.
                        type: string
                    required:
                      - status
                      - type
                    type: object
                  type: array
                desired:
                  description: Desired represents the number of total target namespaces.
                  format: int32
                  type: integer
                failed:
                  description: Failed represents the number of failed distributions.
                  format: int32
                  type: integer
                observedGeneration:
                  description: ObservedGeneration represents the .metadata.generation that the condition was set based upon.
                  format: int64
                  type: integer
                succeeded:
                  description: Succeeded represents the number of successful distributions.
                  format: int32
                  type: integer
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
{{- end }}