---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    api-approved.openshift.io: https://github.com/openshift/api/pull/752
    api.openshift.io/merged-by-featuregates: "true"
    include.release.openshift.io/ibm-cloud-managed: "true"
    include.release.openshift.io/self-managed-high-availability: "true"
    release.openshift.io/feature-set: Default
  creationTimestamp: "2025-10-27T11:18:15Z"
  generation: 1
  managedFields:
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:api-approved.openshift.io: {}
          f:api.openshift.io/merged-by-featuregates: {}
          f:include.release.openshift.io/ibm-cloud-managed: {}
          f:include.release.openshift.io/self-managed-high-availability: {}
          f:release.openshift.io/feature-set: {}
        f:ownerReferences:
          .: {}
          k:{"uid":"d36bdf59-d268-4238-afb0-5e0b21cca1a4"}: {}
      f:spec:
        f:conversion:
          .: {}
          f:strategy: {}
        f:group: {}
        f:names:
          f:categories: {}
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:singular: {}
        f:scope: {}
        f:versions: {}
    manager: cluster-version-operator
    operation: Update
    time: "2025-10-27T11:18:15Z"
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:status:
        f:acceptedNames:
          f:categories: {}
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:singular: {}
        f:conditions:
          k:{"type":"Established"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
          k:{"type":"NamesAccepted"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
    manager: kube-apiserver
    operation: Update
    subresource: status
    time: "2025-10-27T11:18:15Z"
  name: etcds.operator.openshift.io
  ownerReferences:
  - apiVersion: config.openshift.io/v1
    controller: true
    kind: ClusterVersion
    name: version
    uid: d36bdf59-d268-4238-afb0-5e0b21cca1a4
  resourceVersion: "768"
  uid: 4a255dde-06e2-4314-bc9e-b28e9bd2ddbb
spec:
  conversion:
    strategy: None
  group: operator.openshift.io
  names:
    categories:
    - coreoperators
    kind: Etcd
    listKind: EtcdList
    plural: etcds
    singular: etcd
  scope: Cluster
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: |-
          Etcd provides information to configure an operator to manage etcd.

          Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
        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:
            properties:
              controlPlaneHardwareSpeed:
                description: "HardwareSpeed allows user to change the etcd tuning
                  profile which configures\nthe latency parameters for heartbeat interval
                  and leader election timeouts\nallowing the cluster to tolerate longer
                  round-trip-times between etcd members.\nValid values are \"\", \"Standard\"
                  and \"Slower\".\n\t\"\" means no opinion and the platform is left
                  to choose a reasonable default\n\twhich is subject to change without
                  notice."
                enum:
                - ""
                - Standard
                - Slower
                type: string
              failedRevisionLimit:
                description: |-
                  failedRevisionLimit is the number of failed static pod installer revisions to keep on disk and in the api
                  -1 = unlimited, 0 or unset = 5 (default)
                format: int32
                type: integer
              forceRedeploymentReason:
                description: |-
                  forceRedeploymentReason can be used to force the redeployment of the operand by providing a unique string.
                  This provides a mechanism to kick a previously failed deployment and provide a reason why you think it will work
                  this time instead of failing again on the same config.
                type: string
              logLevel:
                default: Normal
                description: |-
                  logLevel is an intent based logging for an overall component.  It does not give fine grained control, but it is a
                  simple way to manage coarse grained logging choices that operators have to interpret for their operands.

                  Valid values are: "Normal", "Debug", "Trace", "TraceAll".
                  Defaults to "Normal".
                enum:
                - ""
                - Normal
                - Debug
                - Trace
                - TraceAll
                type: string
              managementState:
                description: managementState indicates whether and how the operator
                  should manage the component
                pattern: ^(Managed|Unmanaged|Force|Removed)$
                type: string
              observedConfig:
                description: |-
                  observedConfig holds a sparse config that controller has observed from the cluster state.  It exists in spec because
                  it is an input to the level for the operator
                nullable: true
                type: object
                x-kubernetes-preserve-unknown-fields: true
              operatorLogLevel:
                default: Normal
                description: |-
                  operatorLogLevel is an intent based logging for the operator itself.  It does not give fine grained control, but it is a
                  simple way to manage coarse grained logging choices that operators have to interpret for themselves.

                  Valid values are: "Normal", "Debug", "Trace", "TraceAll".
                  Defaults to "Normal".
                enum:
                - ""
                - Normal
                - Debug
                - Trace
                - TraceAll
                type: string
              succeededRevisionLimit:
                description: |-
                  succeededRevisionLimit is the number of successful static pod installer revisions to keep on disk and in the api
                  -1 = unlimited, 0 or unset = 5 (default)
                format: int32
                type: integer
              unsupportedConfigOverrides:
                description: |-
                  unsupportedConfigOverrides overrides the final configuration that was computed by the operator.
                  Red Hat does not support the use of this field.
                  Misuse of this field could lead to unexpected behavior or conflict with other configuration options.
                  Seek guidance from the Red Hat support before using this field.
                  Use of this property blocks cluster upgrades, it must be removed before upgrading your cluster.
                nullable: true
                type: object
                x-kubernetes-preserve-unknown-fields: true
            type: object
          status:
            properties:
              conditions:
                description: conditions is a list of conditions and their status
                items:
                  description: OperatorCondition is just the standard condition 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:
                      type: string
                    reason:
                      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.
                      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
                  - status
                  - type
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - type
                x-kubernetes-list-type: map
              controlPlaneHardwareSpeed:
                description: ControlPlaneHardwareSpeed declares valid hardware speed
                  tolerance levels
                enum:
                - ""
                - Standard
                - Slower
                type: string
              generations:
                description: generations are used to determine when an item needs
                  to be reconciled or has changed in a way that needs a reaction.
                items:
                  description: GenerationStatus keeps track of the generation for
                    a given resource so that decisions about forced updates can be
                    made.
                  properties:
                    group:
                      description: group is the group of the thing you're tracking
                      type: string
                    hash:
                      description: hash is an optional field set for resources without
                        generation that are content sensitive like secrets and configmaps
                      type: string
                    lastGeneration:
                      description: lastGeneration is the last generation of the workload
                        controller involved
                      format: int64
                      type: integer
                    name:
                      description: name is the name of the thing you're tracking
                      type: string
                    namespace:
                      description: namespace is where the thing you're tracking is
                      type: string
                    resource:
                      description: resource is the resource type of the thing you're
                        tracking
                      type: string
                  required:
                  - group
                  - name
                  - namespace
                  - resource
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - group
                - resource
                - namespace
                - name
                x-kubernetes-list-type: map
              latestAvailableRevision:
                description: latestAvailableRevision is the deploymentID of the most
                  recent deployment
                format: int32
                type: integer
                x-kubernetes-validations:
                - message: must only increase
                  rule: self >= oldSelf
              latestAvailableRevisionReason:
                description: latestAvailableRevisionReason describe the detailed reason
                  for the most recent deployment
                type: string
              nodeStatuses:
                description: nodeStatuses track the deployment values and errors across
                  individual nodes
                items:
                  description: NodeStatus provides information about the current state
                    of a particular node managed by this operator.
                  properties:
                    currentRevision:
                      description: |-
                        currentRevision is the generation of the most recently successful deployment.
                        Can not be set on creation of a nodeStatus. Updates must only increase the value.
                      format: int32
                      type: integer
                      x-kubernetes-validations:
                      - message: must only increase
                        rule: self >= oldSelf
                    lastFailedCount:
                      description: lastFailedCount is how often the installer pod
                        of the last failed revision failed.
                      type: integer
                    lastFailedReason:
                      description: lastFailedReason is a machine readable failure
                        reason string.
                      type: string
                    lastFailedRevision:
                      description: lastFailedRevision is the generation of the deployment
                        we tried and failed to deploy.
                      format: int32
                      type: integer
                    lastFailedRevisionErrors:
                      description: lastFailedRevisionErrors is a list of human readable
                        errors during the failed deployment referenced in lastFailedRevision.
                      items:
                        type: string
                      type: array
                      x-kubernetes-list-type: atomic
                    lastFailedTime:
                      description: lastFailedTime is the time the last failed revision
                        failed the last time.
                      format: date-time
                      type: string
                    lastFallbackCount:
                      description: lastFallbackCount is how often a fallback to a
                        previous revision happened.
                      type: integer
                    nodeName:
                      description: nodeName is the name of the node
                      type: string
                    targetRevision:
                      description: |-
                        targetRevision is the generation of the deployment we're trying to apply.
                        Can not be set on creation of a nodeStatus.
                      format: int32
                      type: integer
                  required:
                  - nodeName
                  type: object
                  x-kubernetes-validations:
                  - fieldPath: .currentRevision
                    message: cannot be unset once set
                    rule: has(self.currentRevision) || !has(oldSelf.currentRevision)
                  - fieldPath: .currentRevision
                    message: currentRevision can not be set on creation of a nodeStatus
                    optionalOldSelf: true
                    rule: oldSelf.hasValue() || !has(self.currentRevision)
                  - fieldPath: .targetRevision
                    message: targetRevision can not be set on creation of a nodeStatus
                    optionalOldSelf: true
                    rule: oldSelf.hasValue() || !has(self.targetRevision)
                type: array
                x-kubernetes-list-map-keys:
                - nodeName
                x-kubernetes-list-type: map
                x-kubernetes-validations:
                - message: no more than 1 node status may have a nonzero targetRevision
                  rule: size(self.filter(status, status.?targetRevision.orValue(0)
                    != 0)) <= 1
              observedGeneration:
                description: observedGeneration is the last generation change you've
                  dealt with
                format: int64
                type: integer
              readyReplicas:
                description: readyReplicas indicates how many replicas are ready and
                  at the desired state
                format: int32
                type: integer
              version:
                description: version is the level this availability applies to
                type: string
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    categories:
    - coreoperators
    kind: Etcd
    listKind: EtcdList
    plural: etcds
    singular: etcd
  conditions:
  - lastTransitionTime: "2025-10-27T11:18:15Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: "2025-10-27T11:18:15Z"
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v1
