{{- if .Values.crds.managed }}
 
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.14.0
  creationTimestamp: null
  name: nodeimages.apps.kruise.io
spec:
  group: apps.kruise.io
  names:
    kind: NodeImage
    listKind: NodeImageList
    plural: nodeimages
    singular: nodeimage
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - description: Number of all images on this node
      jsonPath: .status.desired
      name: DESIRED
      type: integer
    - description: Number of image pull task active
      jsonPath: .status.pulling
      name: PULLING
      type: integer
    - description: Number of image pull task succeeded
      jsonPath: .status.succeeded
      name: SUCCEED
      type: integer
    - description: Number of image pull tasks failed
      jsonPath: .status.failed
      name: FAILED
      type: integer
    - description: CreationTimestamp is a timestamp representing the server time when
        this object was created. It is not guaranteed to be set in happens-before
        order across separate operations. Clients may not set this value. It is represented
        in RFC3339 form and is in UTC.
      jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: NodeImage is the Schema for the nodeimages 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: NodeImageSpec defines the desired state of NodeImage
            properties:
              images:
                additionalProperties:
                  description: ImageSpec defines the pulling spec of an image
                  properties:
                    pullSecrets:
                      description: PullSecrets is an optional list of references to
                        secrets in the same namespace to use for pulling the image.
                        If specified, these secrets will be passed to individual puller
                        implementations for them to use.  For example, in the case
                        of docker, only DockerConfig type secrets are honored.
                      items:
                        description: ReferenceObject comprises a resource name, with
                          a mandatory namespace, rendered as "<namespace>/<name>".
                        properties:
                          name:
                            type: string
                          namespace:
                            type: string
                        type: object
                      type: array
                    sandboxConfig:
                      description: SandboxConfig support attach metadata in PullImage
                        CRI interface during ImagePulljobs
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                      type: object
                    tags:
                      description: Tags is a list of versions of this image
                      items:
                        description: ImageTagSpec defines the pulling spec of an image
                          tag
                        properties:
                          createdAt:
                            description: Specifies the create time of this tag
                            format: date-time
                            type: string
                          imagePullPolicy:
                            description: Image pull policy. One of Always, IfNotPresent.
                              Defaults to IfNotPresent.
                            type: string
                          ownerReferences:
                            description: List of objects depended by this object.
                              If this image is managed by a controller, then an entry
                              in this list will point to this controller.
                            items:
                              description: "ObjectReference contains enough information
                                to let you inspect or modify the referred object.
                                --- New uses of this type are discouraged because
                                of difficulty describing its usage when embedded in
                                APIs. 1. Ignored fields.  It includes many fields
                                which are not generally honored.  For instance, ResourceVersion
                                and FieldPath are both very rarely valid in actual
                                usage. 2. Invalid usage help.  It is impossible to
                                add specific help for individual usage.  In most embedded
                                usages, there are particular restrictions like, \"must
                                refer only to types A and B\" or \"UID not honored\"
                                or \"name must be restricted\". Those cannot be well
                                described when embedded. 3. Inconsistent validation.
                                \ Because the usages are different, the validation
                                rules are different by usage, which makes it hard
                                for users to predict what will happen. 4. The fields
                                are both imprecise and overly precise.  Kind is not
                                a precise mapping to a URL. This can produce ambiguity
                                during interpretation and require a REST mapping.
                                \ In most cases, the dependency is on the group,resource
                                tuple and the version of the actual struct is irrelevant.
                                5. We cannot easily change it.  Because this type
                                is embedded in many locations, updates to this type
                                will affect numerous schemas.  Don't make new APIs
                                embed an underspecified API type they do not control.
                                \n Instead of using this type, create a locally provided
                                and used type that is well-focused on your reference.
                                For example, ServiceReferences for admission registration:
                                https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
                                ."
                              properties:
                                apiVersion:
                                  description: API version of the referent.
                                  type: string
                                fieldPath:
                                  description: 'If referring to a piece of an object
                                    instead of an entire object, this string should
                                    contain a valid JSON/Go field access statement,
                                    such as desiredState.manifest.containers[2]. For
                                    example, if the object reference is to a container
                                    within a pod, this would take on a value like:
                                    "spec.containers{name}" (where "name" refers to
                                    the name of the container that triggered the event)
                                    or if no container name is specified "spec.containers[2]"
                                    (container with index 2 in this pod). This syntax
                                    is chosen only to have some well-defined way of
                                    referencing a part of an object. TODO: this design
                                    is not final and this field is subject to change
                                    in the future.'
                                  type: string
                                kind:
                                  description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                  type: string
                                namespace:
                                  description: 'Namespace of the referent. More info:
                                    https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                  type: string
                                resourceVersion:
                                  description: 'Specific resourceVersion to which
                                    this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                  type: string
                                uid:
                                  description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                  type: string
                              type: object
                              x-kubernetes-map-type: atomic
                            type: array
                          pullPolicy:
                            description: PullPolicy is an optional field to set parameters
                              of the pulling task. If not specified, the system will
                              use the default values.
                            properties:
                              activeDeadlineSeconds:
                                description: ActiveDeadlineSeconds specifies the duration
                                  in seconds relative to the startTime that the task
                                  may be active before the system tries to terminate
                                  it; value must be positive integer. if not specified,
                                  the system will never terminate it.
                                format: int64
                                type: integer
                              backoffLimit:
                                description: Specifies the number of retries before
                                  marking the pulling task failed. Defaults to 3
                                format: int32
                                type: integer
                              timeoutSeconds:
                                description: Specifies the timeout of the pulling
                                  task. Defaults to 600
                                format: int32
                                type: integer
                              ttlSecondsAfterFinished:
                                description: TTLSecondsAfterFinished limits the lifetime
                                  of a pulling task that has finished execution (either
                                  Complete or Failed). If this field is set, ttlSecondsAfterFinished
                                  after the task finishes, it is eligible to be automatically
                                  deleted. If this field is unset, the task won't
                                  be automatically deleted. If this field is set to
                                  zero, the task becomes eligible to be deleted immediately
                                  after it finishes.
                                format: int32
                                type: integer
                            type: object
                          tag:
                            description: Specifies the image tag
                            type: string
                          version:
                            description: "An opaque value that represents the internal
                              version of this tag that can be used by clients to determine
                              when objects have changed. May be used for optimistic
                              concurrency, change detection, and the watch operation
                              on a resource or set of resources. Clients must treat
                              these values as opaque and passed unmodified back to
                              the server. \n Populated by the system. Read-only. Value
                              must be treated as opaque by clients and ."
                            format: int64
                            type: integer
                        required:
                        - tag
                        type: object
                      type: array
                  required:
                  - tags
                  type: object
                description: Specifies images to be pulled on this node It can not
                  be more than 256 for each NodeImage
                type: object
            type: object
          status:
            description: NodeImageStatus defines the observed state of NodeImage
            properties:
              desired:
                description: The desired number of pulling tasks, this is typically
                  equal to the number of images in spec.
                format: int32
                type: integer
              failed:
                description: The number of pulling tasks  which reached phase Failed.
                format: int32
                type: integer
              firstSyncStatus:
                description: The first of all job has finished on this node. When
                  a node is added to the cluster, we want to know the time when the
                  node's image pulling is completed, and use it to trigger the operation
                  of the upper system.
                properties:
                  message:
                    type: string
                  status:
                    description: SyncStatusPhase defines the node status
                    type: string
                  syncAt:
                    format: date-time
                    type: string
                type: object
              imageStatuses:
                additionalProperties:
                  description: ImageStatus defines the pulling status of an image
                  properties:
                    tags:
                      description: Represents statuses of pulling tasks on this node
                      items:
                        description: ImageTagStatus defines the pulling status of
                          an image tag
                        properties:
                          completionTime:
                            description: Represents time when the pulling task was
                              completed. It is not guaranteed to be set in happens-before
                              order across separate operations. It is represented
                              in RFC3339 form and is in UTC.
                            format: date-time
                            type: string
                          imageID:
                            description: Represents the ID of this image.
                            type: string
                          message:
                            description: Represents the summary information of this
                              node
                            type: string
                          phase:
                            description: Represents the image pulling task phase.
                            type: string
                          progress:
                            description: Represents the pulling progress of this tag,
                              which is between 0-100. There is no guarantee of monotonic
                              consistency, and it may be a rollback due to retry during
                              pulling.
                            format: int32
                            type: integer
                          startTime:
                            description: Represents time when the pulling task was
                              acknowledged by the image puller. It is not guaranteed
                              to be set in happens-before order across separate operations.
                              It is represented in RFC3339 form and is in UTC.
                            format: date-time
                            type: string
                          tag:
                            description: Represents the image tag.
                            type: string
                          version:
                            description: Represents the internal version of this tag
                              that the daemon handled.
                            format: int64
                            type: integer
                        required:
                        - phase
                        - tag
                        type: object
                      type: array
                  required:
                  - tags
                  type: object
                description: all statuses of active image pulling tasks
                type: object
              pulling:
                description: The number of pulling tasks which are not finished.
                format: int32
                type: integer
              succeeded:
                description: The number of pulling tasks which reached phase Succeeded.
                format: int32
                type: integer
            required:
            - desired
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
{{- end }}
