apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephfilesystems.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephFilesystem
    listKind: CephFilesystemList
    plural: cephfilesystems
    shortNames:
      - cephfs
    singular: cephfilesystem
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - description: Number of desired active MDS daemons
          jsonPath: .spec.metadataServer.activeCount
          name: ActiveMDS
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        - jsonPath: .status.phase
          name: Phase
          type: string
      name: v1
      schema:
        openAPIV3Schema:
          description: CephFilesystem represents a Ceph Filesystem
          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: FilesystemSpec represents the spec of a file system
              properties:
                dataPools:
                  description: The data pool settings, with optional predefined pool name.
                  items:
                    description: NamedPoolSpec represents the named ceph pool spec
                    properties:
                      application:
                        description: The application name to set on the pool. Only expected to be set for rgw pools.
                        type: string
                      compressionMode:
                        description: |-
                          DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force"
                          The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)
                          Do NOT set a default value for kubebuilder as this will override the Parameters
                        enum:
                          - none
                          - passive
                          - aggressive
                          - force
                          - ""
                        nullable: true
                        type: string
                      crushRoot:
                        description: The root of the crush hierarchy utilized by the pool
                        nullable: true
                        type: string
                      deviceClass:
                        description: The device class the OSD should set to for use in the pool
                        nullable: true
                        type: string
                      enableCrushUpdates:
                        description: Allow rook operator to change the pool CRUSH tunables once the pool is created
                        nullable: true
                        type: boolean
                      enableRBDStats:
                        description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
                        type: boolean
                      erasureCoded:
                        description: The erasure code settings
                        properties:
                          algorithm:
                            description: |-
                              The algorithm for erasure coding.
                              If absent, defaults to the plugin specified in osd_pool_default_erasure_code_profile.
                            enum:
                              - isa
                              - jerasure
                            type: string
                          codingChunks:
                            description: |-
                              Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                              This is the number of OSDs that can be lost simultaneously before data cannot be recovered.
                            minimum: 0
                            type: integer
                          dataChunks:
                            description: |-
                              Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                              The number of chunks required to recover an object when any single OSD is lost is the same
                              as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.
                            minimum: 0
                            type: integer
                        required:
                          - codingChunks
                          - dataChunks
                        type: object
                      failureDomain:
                        description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
                        type: string
                      mirroring:
                        description: The mirroring settings
                        properties:
                          enabled:
                            description: Enabled whether this pool is mirrored or not
                            type: boolean
                          mode:
                            description: 'Mode is the mirroring mode: pool, image or init-only.'
                            enum:
                              - pool
                              - image
                              - init-only
                            type: string
                          peers:
                            description: Peers represents the peers spec
                            nullable: true
                            properties:
                              secretNames:
                                description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                                items:
                                  type: string
                                type: array
                            type: object
                          snapshotSchedules:
                            description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
                            items:
                              description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                              properties:
                                interval:
                                  description: Interval represent the periodicity of the snapshot.
                                  type: string
                                path:
                                  description: Path is the path to snapshot, only valid for CephFS
                                  type: string
                                startTime:
                                  description: StartTime indicates when to start the snapshot
                                  type: string
                              type: object
                            type: array
                        type: object
                      name:
                        description: Name of the pool
                        type: string
                      parameters:
                        additionalProperties:
                          type: string
                        description: Parameters is a list of properties to enable on a given pool
                        nullable: true
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      quotas:
                        description: The quota settings
                        nullable: true
                        properties:
                          maxBytes:
                            description: |-
                              MaxBytes represents the quota in bytes
                              Deprecated in favor of MaxSize
                            format: int64
                            type: integer
                          maxObjects:
                            description: MaxObjects represents the quota in objects
                            format: int64
                            type: integer
                          maxSize:
                            description: MaxSize represents the quota in bytes as a string
                            pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
                            type: string
                        type: object
                      replicated:
                        description: The replication settings
                        properties:
                          hybridStorage:
                            description: HybridStorage represents hybrid storage tier settings
                            nullable: true
                            properties:
                              primaryDeviceClass:
                                description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD
                                minLength: 1
                                type: string
                              secondaryDeviceClass:
                                description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs
                                minLength: 1
                                type: string
                            required:
                              - primaryDeviceClass
                              - secondaryDeviceClass
                            type: object
                          replicasPerFailureDomain:
                            description: ReplicasPerFailureDomain the number of replica in the specified failure domain
                            minimum: 1
                            type: integer
                          requireSafeReplicaSize:
                            description: RequireSafeReplicaSize if false allows you to set replica 1
                            type: boolean
                          size:
                            description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
                            minimum: 0
                            type: integer
                          subFailureDomain:
                            description: SubFailureDomain the name of the sub-failure domain
                            type: string
                          targetSizeRatio:
                            description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
                            minimum: 0
                            type: number
                        required:
                          - size
                        type: object
                      statusCheck:
                        description: The mirroring statusCheck
                        properties:
                          mirror:
                            description: HealthCheckSpec represents the health check of an object store bucket
                            nullable: true
                            properties:
                              disabled:
                                type: boolean
                              interval:
                                description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                                type: string
                              timeout:
                                type: string
                            type: object
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                    type: object
                  nullable: true
                  type: array
                metadataPool:
                  description: The metadata pool settings
                  nullable: true
                  properties:
                    application:
                      description: The application name to set on the pool. Only expected to be set for rgw pools.
                      type: string
                    compressionMode:
                      description: |-
                        DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force"
                        The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)
                        Do NOT set a default value for kubebuilder as this will override the Parameters
                      enum:
                        - none
                        - passive
                        - aggressive
                        - force
                        - ""
                      nullable: true
                      type: string
                    crushRoot:
                      description: The root of the crush hierarchy utilized by the pool
                      nullable: true
                      type: string
                    deviceClass:
                      description: The device class the OSD should set to for use in the pool
                      nullable: true
                      type: string
                    enableCrushUpdates:
                      description: Allow rook operator to change the pool CRUSH tunables once the pool is created
                      nullable: true
                      type: boolean
                    enableRBDStats:
                      description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
                      type: boolean
                    erasureCoded:
                      description: The erasure code settings
                      properties:
                        algorithm:
                          description: |-
                            The algorithm for erasure coding.
                            If absent, defaults to the plugin specified in osd_pool_default_erasure_code_profile.
                          enum:
                            - isa
                            - jerasure
                          type: string
                        codingChunks:
                          description: |-
                            Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            This is the number of OSDs that can be lost simultaneously before data cannot be recovered.
                          minimum: 0
                          type: integer
                        dataChunks:
                          description: |-
                            Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            The number of chunks required to recover an object when any single OSD is lost is the same
                            as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.
                          minimum: 0
                          type: integer
                      required:
                        - codingChunks
                        - dataChunks
                      type: object
                    failureDomain:
                      description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
                      type: string
                    mirroring:
                      description: The mirroring settings
                      properties:
                        enabled:
                          description: Enabled whether this pool is mirrored or not
                          type: boolean
                        mode:
                          description: 'Mode is the mirroring mode: pool, image or init-only.'
                          enum:
                            - pool
                            - image
                            - init-only
                          type: string
                        peers:
                          description: Peers represents the peers spec
                          nullable: true
                          properties:
                            secretNames:
                              description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                              items:
                                type: string
                              type: array
                          type: object
                        snapshotSchedules:
                          description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
                          items:
                            description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                            properties:
                              interval:
                                description: Interval represent the periodicity of the snapshot.
                                type: string
                              path:
                                description: Path is the path to snapshot, only valid for CephFS
                                type: string
                              startTime:
                                description: StartTime indicates when to start the snapshot
                                type: string
                            type: object
                          type: array
                      type: object
                    name:
                      description: Name of the pool
                      type: string
                    parameters:
                      additionalProperties:
                        type: string
                      description: Parameters is a list of properties to enable on a given pool
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    quotas:
                      description: The quota settings
                      nullable: true
                      properties:
                        maxBytes:
                          description: |-
                            MaxBytes represents the quota in bytes
                            Deprecated in favor of MaxSize
                          format: int64
                          type: integer
                        maxObjects:
                          description: MaxObjects represents the quota in objects
                          format: int64
                          type: integer
                        maxSize:
                          description: MaxSize represents the quota in bytes as a string
                          pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
                          type: string
                      type: object
                    replicated:
                      description: The replication settings
                      properties:
                        hybridStorage:
                          description: HybridStorage represents hybrid storage tier settings
                          nullable: true
                          properties:
                            primaryDeviceClass:
                              description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD
                              minLength: 1
                              type: string
                            secondaryDeviceClass:
                              description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs
                              minLength: 1
                              type: string
                          required:
                            - primaryDeviceClass
                            - secondaryDeviceClass
                          type: object
                        replicasPerFailureDomain:
                          description: ReplicasPerFailureDomain the number of replica in the specified failure domain
                          minimum: 1
                          type: integer
                        requireSafeReplicaSize:
                          description: RequireSafeReplicaSize if false allows you to set replica 1
                          type: boolean
                        size:
                          description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
                          minimum: 0
                          type: integer
                        subFailureDomain:
                          description: SubFailureDomain the name of the sub-failure domain
                          type: string
                        targetSizeRatio:
                          description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
                          minimum: 0
                          type: number
                      required:
                        - size
                      type: object
                    statusCheck:
                      description: The mirroring statusCheck
                      properties:
                        mirror:
                          description: HealthCheckSpec represents the health check of an object store bucket
                          nullable: true
                          properties:
                            disabled:
                              type: boolean
                            interval:
                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                              type: string
                            timeout:
                              type: string
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                  type: object
                metadataServer:
                  description: The mds pod info
                  properties:
                    activeCount:
                      description: The number of metadata servers that are active. The remaining servers in the cluster will be in standby mode.
                      format: int32
                      maximum: 50
                      minimum: 1
                      type: integer
                    activeStandby:
                      description: |-
                        Whether each active MDS instance will have an active standby with a warm metadata cache for faster failover.
                        If false, standbys will still be available, but will not have a warm metadata cache.
                      type: boolean
                    annotations:
                      additionalProperties:
                        type: string
                      description: The annotations-related configuration to add/set on each Pod related object.
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    cacheMemoryLimitFactor:
                      description: |-
                        CacheMemoryLimitFactor is the factor applied to the memory limit to determine the MDS cache memory limit.
                        MDS cache memory limit should be set to 50-60% of RAM reserved for the MDS container.
                        MDS uses approximately 125% of the value of mds_cache_memory_limit in RAM.
                        This factor is applied when resources.limits.memory is set.
                      maximum: 1
                      minimum: 0
                      type: number
                    cacheMemoryRequestFactor:
                      description: |-
                        CacheMemoryRequestFactor is the factor applied to the memory request to determine the MDS cache memory limit.
                        This factor is applied when resources.requests.memory is set and resources.limits.memory is not set.
                      maximum: 1
                      minimum: 0
                      type: number
                    labels:
                      additionalProperties:
                        type: string
                      description: The labels-related configuration to add/set on each Pod related object.
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    livenessProbe:
                      description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon
                      properties:
                        disabled:
                          description: Disabled determines whether probe is disable or not
                          type: boolean
                        probe:
                          description: |-
                            Probe describes a health check to be performed against a container to determine whether it is
                            alive or ready to receive traffic.
                          properties:
                            exec:
                              description: Exec specifies a command to execute in the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                                - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request. HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                                - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                                - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                      type: object
                    placement:
                      nullable: true
                      properties:
                        nodeAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  preference:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - preference
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              properties:
                                nodeSelectorTerms:
                                  items:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  type: array
                                  x-kubernetes-list-type: atomic
                              required:
                                - nodeSelectorTerms
                              type: object
                              x-kubernetes-map-type: atomic
                          type: object
                        podAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        type: string
                                    required:
                                      - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - podAffinityTerm
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        podAntiAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        type: string
                                    required:
                                      - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - podAffinityTerm
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        tolerations:
                          items:
                            properties:
                              effect:
                                type: string
                              key:
                                type: string
                              operator:
                                type: string
                              tolerationSeconds:
                                format: int64
                                type: integer
                              value:
                                type: string
                            type: object
                          type: array
                        topologySpreadConstraints:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              maxSkew:
                                format: int32
                                type: integer
                              minDomains:
                                format: int32
                                type: integer
                              nodeAffinityPolicy:
                                type: string
                              nodeTaintsPolicy:
                                type: string
                              topologyKey:
                                type: string
                              whenUnsatisfiable:
                                type: string
                            required:
                              - maxSkew
                              - topologyKey
                              - whenUnsatisfiable
                            type: object
                          type: array
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    priorityClassName:
                      description: PriorityClassName sets priority classes on components
                      type: string
                    resources:
                      description: The resource requirements for the mds pods
                      nullable: true
                      properties:
                        claims:
                          description: |-
                            Claims lists the names of resources, defined in spec.resourceClaims,
                            that are used by this container.

                            This field depends on the
                            DynamicResourceAllocation feature gate.

                            This field is immutable. It can only be set for containers.
                          items:
                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                            properties:
                              name:
                                description: |-
                                  Name must match the name of one entry in pod.spec.resourceClaims of
                                  the Pod where this field is used. It makes that resource available
                                  inside a container.
                                type: string
                              request:
                                description: |-
                                  Request is the name chosen for a request in the referenced claim.
                                  If empty, everything from the claim is made available, otherwise
                                  only the result of this request.
                                type: string
                            required:
                              - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                            - name
                          x-kubernetes-list-type: map
                        limits:
                          additionalProperties:
                            anyOf:
                              - type: integer
                              - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Limits describes the maximum amount of compute resources allowed.
                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                          type: object
                        requests:
                          additionalProperties:
                            anyOf:
                              - type: integer
                              - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Requests describes the minimum amount of compute resources required.
                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                            otherwise to an implementation-defined value. Requests cannot exceed Limits.
                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    startupProbe:
                      description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon
                      properties:
                        disabled:
                          description: Disabled determines whether probe is disable or not
                          type: boolean
                        probe:
                          description: |-
                            Probe describes a health check to be performed against a container to determine whether it is
                            alive or ready to receive traffic.
                          properties:
                            exec:
                              description: Exec specifies a command to execute in the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                                - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request. HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                                - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                                - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                      type: object
                  required:
                    - activeCount
                  type: object
                mirroring:
                  description: The mirroring settings
                  nullable: true
                  properties:
                    enabled:
                      description: Enabled whether this filesystem is mirrored or not
                      type: boolean
                    peers:
                      description: Peers represents the peers spec
                      nullable: true
                      properties:
                        secretNames:
                          description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                          items:
                            type: string
                          type: array
                      type: object
                    snapshotRetention:
                      description: |-
                        Retention is the retention policy for a snapshot schedule
                        One path has exactly one retention policy.
                        A policy can however contain multiple count-time period pairs in order to specify complex retention policies
                      items:
                        description: SnapshotScheduleRetentionSpec is a retention policy
                        properties:
                          duration:
                            description: Duration represents the retention duration for a snapshot
                            type: string
                          path:
                            description: Path is the path to snapshot
                            type: string
                        type: object
                      type: array
                    snapshotSchedules:
                      description: SnapshotSchedules is the scheduling of snapshot for mirrored filesystems
                      items:
                        description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                        properties:
                          interval:
                            description: Interval represent the periodicity of the snapshot.
                            type: string
                          path:
                            description: Path is the path to snapshot, only valid for CephFS
                            type: string
                          startTime:
                            description: StartTime indicates when to start the snapshot
                            type: string
                        type: object
                      type: array
                  type: object
                preserveFilesystemOnDelete:
                  description: Preserve the fs in the cluster on CephFilesystem CR deletion. Setting this to true automatically implies PreservePoolsOnDelete is true.
                  type: boolean
                preservePoolNames:
                  description: Preserve pool names as specified
                  type: boolean
                preservePoolsOnDelete:
                  description: Preserve pools on filesystem deletion
                  type: boolean
                statusCheck:
                  description: The mirroring statusCheck
                  properties:
                    mirror:
                      description: HealthCheckSpec represents the health check of an object store bucket
                      nullable: true
                      properties:
                        disabled:
                          type: boolean
                        interval:
                          description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                          type: string
                        timeout:
                          type: string
                      type: object
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
              required:
                - dataPools
                - metadataPool
                - metadataServer
              type: object
            status:
              description: CephFilesystemStatus represents the status of a Ceph Filesystem
              properties:
                cephx:
                  properties:
                    daemon:
                      description: Daemon shows the CephX key status for local Ceph daemons associated with this resources.
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                  type: object
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                info:
                  additionalProperties:
                    type: string
                  description: Use only info and put mirroringStatus in it?
                  nullable: true
                  type: object
                mirroringStatus:
                  description: MirroringStatus is the filesystem mirroring status
                  properties:
                    daemonsStatus:
                      description: PoolMirroringStatus is the mirroring status of a filesystem
                      items:
                        description: FilesystemMirrorInfoSpec is the filesystem mirror status of a given filesystem
                        properties:
                          daemon_id:
                            description: DaemonID is the cephfs-mirror name
                            type: integer
                          filesystems:
                            description: Filesystems is the list of filesystems managed by a given cephfs-mirror daemon
                            items:
                              description: FilesystemsSpec is spec for the mirrored filesystem
                              properties:
                                directory_count:
                                  description: DirectoryCount is the number of directories in the filesystem
                                  type: integer
                                filesystem_id:
                                  description: FilesystemID is the filesystem identifier
                                  type: integer
                                name:
                                  description: Name is name of the filesystem
                                  type: string
                                peers:
                                  description: Peers represents the mirroring peers
                                  items:
                                    description: FilesystemMirrorInfoPeerSpec is the specification of a filesystem peer mirror
                                    properties:
                                      remote:
                                        description: Remote are the remote cluster information
                                        properties:
                                          client_name:
                                            description: ClientName is cephx name
                                            type: string
                                          cluster_name:
                                            description: ClusterName is the name of the cluster
                                            type: string
                                          fs_name:
                                            description: FsName is the filesystem name
                                            type: string
                                        type: object
                                      stats:
                                        description: Stats are the stat a peer mirror
                                        properties:
                                          failure_count:
                                            description: FailureCount is the number of mirroring failure
                                            type: integer
                                          recovery_count:
                                            description: RecoveryCount is the number of recovery attempted after failures
                                            type: integer
                                        type: object
                                      uuid:
                                        description: UUID is the peer unique identifier
                                        type: string
                                    type: object
                                  type: array
                              type: object
                            type: array
                        type: object
                      nullable: true
                      type: array
                    details:
                      description: Details contains potential status errors
                      type: string
                    lastChanged:
                      description: LastChanged is the last time time the status last changed
                      type: string
                    lastChecked:
                      description: LastChecked is the last time time the status was checked
                      type: string
                  type: object
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  description: ConditionType represent a resource's status
                  type: string
                snapshotScheduleStatus:
                  description: FilesystemSnapshotScheduleStatusSpec is the status of the snapshot schedule
                  properties:
                    details:
                      description: Details contains potential status errors
                      type: string
                    lastChanged:
                      description: LastChanged is the last time time the status last changed
                      type: string
                    lastChecked:
                      description: LastChecked is the last time time the status was checked
                      type: string
                    snapshotSchedules:
                      description: SnapshotSchedules is the list of snapshots scheduled
                      items:
                        description: FilesystemSnapshotSchedulesSpec is the list of snapshot scheduled for images in a pool
                        properties:
                          fs:
                            description: Fs is the name of the Ceph Filesystem
                            type: string
                          path:
                            description: Path is the path on the filesystem
                            type: string
                          rel_path:
                            type: string
                          retention:
                            description: FilesystemSnapshotScheduleStatusRetention is the retention specification for a filesystem snapshot schedule
                            properties:
                              active:
                                description: Active is whether the scheduled is active or not
                                type: boolean
                              created:
                                description: Created is when the snapshot schedule was created
                                type: string
                              created_count:
                                description: CreatedCount is total amount of snapshots
                                type: integer
                              first:
                                description: First is when the first snapshot schedule was taken
                                type: string
                              last:
                                description: Last is when the last snapshot schedule was taken
                                type: string
                              last_pruned:
                                description: LastPruned is when the last snapshot schedule was pruned
                                type: string
                              pruned_count:
                                description: PrunedCount is total amount of pruned snapshots
                                type: integer
                              start:
                                description: Start is when the snapshot schedule starts
                                type: string
                            type: object
                          schedule:
                            type: string
                          subvol:
                            description: Subvol is the name of the sub volume
                            type: string
                        type: object
                      nullable: true
                      type: array
                  type: object
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
