apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.12.0
  name: imageupdateautomations.image.toolkit.fluxcd.io
spec:
  group: image.toolkit.fluxcd.io
  names:
    kind: ImageUpdateAutomation
    listKind: ImageUpdateAutomationList
    plural: imageupdateautomations
    singular: imageupdateautomation
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.lastAutomationRunTime
      name: Last run
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: ImageUpdateAutomation is the Schema for the imageupdateautomations
          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: ImageUpdateAutomationSpec defines the desired state of ImageUpdateAutomation
            properties:
              git:
                description: GitSpec contains all the git-specific definitions. This
                  is technically optional, but in practice mandatory until there are
                  other kinds of source allowed.
                properties:
                  checkout:
                    description: Checkout gives the parameters for cloning the git
                      repository, ready to make changes. If not present, the `spec.ref`
                      field from the referenced `GitRepository` or its default will
                      be used.
                    properties:
                      ref:
                        description: Reference gives a branch, tag or commit to clone
                          from the Git repository.
                        properties:
                          branch:
                            description: Branch to check out, defaults to 'master'
                              if no other field is defined.
                            type: string
                          commit:
                            description: "Commit SHA to check out, takes precedence
                              over all reference fields. \n This can be combined with
                              Branch to shallow clone the branch, in which the commit
                              is expected to exist."
                            type: string
                          name:
                            description: "Name of the reference to check out; takes
                              precedence over Branch, Tag and SemVer. \n It must be
                              a valid Git reference: https://git-scm.com/docs/git-check-ref-format#_description
                              Examples: \"refs/heads/main\", \"refs/tags/v0.1.0\",
                              \"refs/pull/420/head\", \"refs/merge-requests/1/head\""
                            type: string
                          semver:
                            description: SemVer tag expression to check out, takes
                              precedence over Tag.
                            type: string
                          tag:
                            description: Tag to check out, takes precedence over Branch.
                            type: string
                        type: object
                    required:
                    - ref
                    type: object
                  commit:
                    description: Commit specifies how to commit to the git repository.
                    properties:
                      author:
                        description: Author gives the email and optionally the name
                          to use as the author of commits.
                        properties:
                          email:
                            description: Email gives the email to provide when making
                              a commit.
                            type: string
                          name:
                            description: Name gives the name to provide when making
                              a commit.
                            type: string
                        required:
                        - email
                        type: object
                      messageTemplate:
                        description: MessageTemplate provides a template for the commit
                          message, into which will be interpolated the details of
                          the change made.
                        type: string
                      signingKey:
                        description: SigningKey provides the option to sign commits
                          with a GPG key
                        properties:
                          secretRef:
                            description: SecretRef holds the name to a secret that
                              contains a 'git.asc' key corresponding to the ASCII
                              Armored file containing the GPG signing keypair as the
                              value. It must be in the same namespace as the ImageUpdateAutomation.
                            properties:
                              name:
                                description: Name of the referent.
                                type: string
                            required:
                            - name
                            type: object
                        type: object
                    required:
                    - author
                    type: object
                  push:
                    description: Push specifies how and where to push commits made
                      by the automation. If missing, commits are pushed (back) to
                      `.spec.checkout.branch` or its default.
                    properties:
                      branch:
                        description: Branch specifies that commits should be pushed
                          to the branch named. The branch is created using `.spec.checkout.branch`
                          as the starting point, if it doesn't already exist.
                        type: string
                      options:
                        additionalProperties:
                          type: string
                        description: 'Options specifies the push options that are
                          sent to the Git server when performing a push operation.
                          For details, see: https://git-scm.com/docs/git-push#Documentation/git-push.txt---push-optionltoptiongt'
                        type: object
                      refspec:
                        description: 'Refspec specifies the Git Refspec to use for
                          a push operation. If both Branch and Refspec are provided,
                          then the commit is pushed to the branch and also using the
                          specified refspec. For more details about Git Refspecs,
                          see: https://git-scm.com/book/en/v2/Git-Internals-The-Refspec'
                        type: string
                    type: object
                required:
                - commit
                type: object
              interval:
                description: Interval gives an lower bound for how often the automation
                  run should be attempted.
                pattern: ^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$
                type: string
              sourceRef:
                description: SourceRef refers to the resource giving access details
                  to a git repository.
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  kind:
                    default: GitRepository
                    description: Kind of the referent.
                    enum:
                    - GitRepository
                    type: string
                  name:
                    description: Name of the referent.
                    type: string
                  namespace:
                    description: Namespace of the referent, defaults to the namespace
                      of the Kubernetes resource object that contains the reference.
                    type: string
                required:
                - kind
                - name
                type: object
              suspend:
                description: Suspend tells the controller to not run this automation,
                  until it is unset (or set to false). Defaults to false.
                type: boolean
              update:
                default:
                  strategy: Setters
                description: Update gives the specification for how to update the
                  files in the repository. This can be left empty, to use the default
                  value.
                properties:
                  path:
                    description: Path to the directory containing the manifests to
                      be updated. Defaults to 'None', which translates to the root
                      path of the GitRepositoryRef.
                    type: string
                  strategy:
                    default: Setters
                    description: Strategy names the strategy to be used.
                    enum:
                    - Setters
                    type: string
                required:
                - strategy
                type: object
            required:
            - interval
            - sourceRef
            type: object
          status:
            default:
              observedGeneration: -1
            description: ImageUpdateAutomationStatus defines the observed state of
              ImageUpdateAutomation
            properties:
              conditions:
                items:
                  description: "Condition contains details for one aspect of the current
                    state of this API Resource. --- This struct is intended for direct
                    use as an array at the field path .status.conditions.  For example,
                    \n type FooStatus struct{ // Represents the observations of a
                    foo's current state. // Known .status.conditions.type are: \"Available\",
                    \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
                    // +listType=map // +listMapKey=type Conditions []metav1.Condition
                    `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
                    protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
                  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.
                        --- Many .condition.type values are consistent across resources
                        like Available, but because arbitrary conditions can be useful
                        (see .node.status.conditions), the ability to deconflict is
                        important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
                      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
              lastAutomationRunTime:
                description: LastAutomationRunTime records the last time the controller
                  ran this automation through to completion (even if no updates were
                  made).
                format: date-time
                type: string
              lastHandledReconcileAt:
                description: LastHandledReconcileAt holds the value of the most recent
                  reconcile request value, so a change of the annotation value can
                  be detected.
                type: string
              lastPushCommit:
                description: LastPushCommit records the SHA1 of the last commit made
                  by the controller, for this automation object
                type: string
              lastPushTime:
                description: LastPushTime records the time of the last pushed change.
                format: date-time
                type: string
              observedGeneration:
                format: int64
                type: integer
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}