apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    api-approved.openshift.io: https://github.com/openshift/api/pull/1107
    include.release.openshift.io/ibm-cloud-managed: "true"
    include.release.openshift.io/self-managed-high-availability: "true"
    include.release.openshift.io/single-node-developer: "true"
  name: nodes.config.openshift.io
spec:
  group: config.openshift.io
  names:
    kind: Node
    listKind: NodeList
    plural: nodes
    singular: node
  scope: Cluster
  versions:
    - name: v1
      schema:
        openAPIV3Schema:
          description: "Node holds cluster-wide information about node specific features. \n Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer)."
          type: object
          required:
            - spec
          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: spec holds user settable values for configuration
              type: object
              properties:
                cgroupMode:
                  description: CgroupMode determines the cgroups version on the node
                  type: string
                  enum:
                    - v1
                    - v2
                    - ""
                workerLatencyProfile:
                  description: WorkerLatencyProfile determins the how fast the kubelet is updating the status and corresponding reaction of the cluster
                  type: string
                  enum:
                    - Default
                    - MediumUpdateAverageReaction
                    - LowUpdateSlowReaction
            status:
              description: status holds observed values.
              type: object
              properties:
                workerLatencyProfileStatus:
                  description: WorkerLatencyProfileStatus provides the current status of WorkerLatencyProfile
                  type: object
                  properties:
                    conditions:
                      description: conditions describes the state of the WorkerLatencyProfile and related components (Kubelet or Controller Manager or Kube API Server) whether progressing, degraded or complete
                      type: array
                      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, 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 }"
                        type: object
                        required:
                          - lastTransitionTime
                          - message
                          - reason
                          - status
                          - type
                        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.
                            type: string
                            format: date-time
                          message:
                            description: message is a human readable message indicating details about the transition. This may be an empty string.
                            type: string
                            maxLength: 32768
                          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.
                            type: integer
                            format: int64
                            minimum: 0
                          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.
                            type: string
                            maxLength: 1024
                            minLength: 1
                            pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                          status:
                            description: status of the condition, one of True, False, Unknown.
                            type: string
                            enum:
                              - "True"
                              - "False"
                              - Unknown
                          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)
                            type: string
                            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])$
      served: true
      storage: true
      subresources:
        status: {}
