---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: nodeupgrades.anywhere.eks.amazonaws.com
spec:
  group: anywhere.eks.amazonaws.com
  names:
    kind: NodeUpgrade
    listKind: NodeUpgradeList
    plural: nodeupgrades
    shortNames:
    - nu
    singular: nodeupgrade
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Machine
      jsonPath: .spec.machine.name
      name: Machine
      type: string
    - description: Denotes whether the upgrade has finished or not
      jsonPath: .status.completed
      name: Ready
      type: string
    - description: Time duration since creation of Control Plane Upgrade
      jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Requested Kubernetes version
      jsonPath: .spec.kubernetesVersion
      name: KubernetesVersion
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: NodeUpgrade is the Schema for the nodeupgrades 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: NodeUpgradeSpec defines the desired state of NodeUpgrade.
            properties:
              etcdVersion:
                description: |-
                  EtcdVersion refers to the version of ETCD to upgrade to.
                  This field is optional and only gets used for control plane nodes.
                type: string
              firstNodeToBeUpgraded:
                description: |-
                  FirstNodeToBeUpgraded signifies that the Node is the first node to be upgraded.
                  This flag is only valid for control plane nodes and ignored for worker nodes.
                type: boolean
              kubernetesVersion:
                description: KubernetesVersion refers to the Kubernetes version to
                  upgrade the node to.
                type: string
              machine:
                description: Machine is a reference to the CAPI Machine that needs
                  to be upgraded.
                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.
                    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
            required:
            - kubernetesVersion
            - machine
            type: object
          status:
            description: NodeUpgradeStatus defines the observed state of NodeUpgrade.
            properties:
              completed:
                description: |-
                  Completed denotes that the upgrader has completed running all the operations
                  and the node is successfully upgraded.
                type: boolean
              conditions:
                description: |-
                  Conditions defines current state of the NodeUpgrade,
                  including the state of init containers, that facilitate the upgrade.
                items:
                  description: Condition defines an observation of a Cluster API resource
                    operational state.
                  properties:
                    lastTransitionTime:
                      description: |-
                        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: |-
                        A human readable message indicating details about the transition.
                        This field may be empty.
                      type: string
                    reason:
                      description: |-
                        The reason for the condition's last transition in CamelCase.
                        The specific API may choose whether or not this field is considered a guaranteed API.
                        This field may not be empty.
                      type: string
                    severity:
                      description: |-
                        Severity provides an explicit classification of Reason code, so the users or machines can immediately
                        understand the current situation and act accordingly.
                        The Severity field MUST be set only when Status=False.
                      type: string
                    status:
                      description: Status of the condition, one of 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.
                      type: string
                  required:
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              observedGeneration:
                description: ObservedGeneration is the latest generation observed
                  by the controller.
                format: int64
                type: integer
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
