apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: cassandraclusters.db.orange.com
spec:
  group: db.orange.com
  names:
    kind: CassandraCluster
    listKind: CassandraClusterList
    plural: cassandraclusters
    singular: cassandracluster
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          description: CassandraCluster is the Schema for the cassandraclusters API
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              properties:
                autoPilot:
                  description: AutoPilot defines if the Operator can fly alone or if we need human action to trigger Actions on specific Cassandra nodes If autoPilot=true, the operator will set labels pod-operation-status=To-Do on Pods which allows him to automatically triggers Action If autoPilot=false, the operator will set labels pod-operation-status=Manual on Pods which won't automatically triggers Action
                  type: boolean
                autoUpdateSeedList:
                  description: AutoUpdateSeedList defines if the Operator automatically update the SeedList according to new cluster CRD topology by default a boolean is false
                  type: boolean
                backRestSidecar:
                  description: BackRestSidecar defines details about cassandra-sidecar to load along with each C* pod
                  properties:
                    image:
                      description: Image of backup/restore sidecar
                      type: string
                    imagePullPolicy:
                      description: ImagePullPolicy define the pull policy for backrest sidecar docker image
                      type: string
                    resources:
                      description: 'Kubernetes object : https://godoc.org/k8s.io/api/core/v1#ResourceRequirements'
                      properties:
                        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-compute-resources-container/'
                          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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                          type: object
                      type: object
                  type: object
                bootstrapImage:
                  description: Image used for bootstrapping cluster (use the form base:version)
                  type: string
                cassandraImage:
                  description: Image + version to use for Cassandra
                  type: string
                configMapName:
                  description: Name of the ConfigMap for Cassandra configuration (cassandra.yaml) If this is empty, operator will uses default cassandra.yaml from the baseImage If this is not empty, operator will uses the cassandra.yaml from the Configmap instead
                  type: string
                dataCapacity:
                  description: Define the Capacity for Persistent Volume Claims in the local storage
                  pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                  type: string
                dataStorageClass:
                  description: Define StorageClass for Persistent Volume Claims in the local storage.
                  type: string
                debug:
                  description: Debug is used to surcharge Cassandra pod command to not directly start cassandra but starts an infinite wait to allow user to connect a bash into the pod to make some diagnoses.
                  type: boolean
                deletePVC:
                  description: DeletePVC defines if the PVC must be deleted when the cluster is deleted it is false by default
                  type: boolean
                fsGroup:
                  default: 1
                  description: FSGroup defines the GID owning volumes in the Cassandra image
                  format: int64
                  minimum: 1
                  type: integer
                gcStdout:
                  description: 'GCStdout set the parameter CASSANDRA_GC_STDOUT which configure the JVM -Xloggc: true by default'
                  type: boolean
                hardAntiAffinity:
                  description: HardAntiAffinity defines if the PodAntiAffinity of the statefulset has to be hard (it's soft by default)
                  type: boolean
                imageJolokiaSecret:
                  description: JMX Secret if Set is used to set JMX_USER and JMX_PASSWORD
                  properties:
                    name:
                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                      type: string
                  type: object
                imagePullSecret:
                  description: Name of the secret to uses to authenticate on Docker registries If this is empty, operator do nothing If this is not empty, propagate the imagePullSecrets to the statefulsets
                  properties:
                    name:
                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                      type: string
                  type: object
                imagepullpolicy:
                  description: ImagePullPolicy define the pull policy for C* docker image
                  type: string
                initContainerCmd:
                  description: Command to execute in the initContainer in the targeted image
                  type: string
                initContainerImage:
                  description: Image used in the initContainer (use the form base:version)
                  type: string
                livenessFailureThreshold:
                  description: 'LivenessFailureThreshold defines failure threshold for the liveness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  format: int32
                  type: integer
                livenessHealthCheckPeriod:
                  description: 'LivenessHealthCheckPeriod defines health check period for the liveness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  format: int32
                  type: integer
                livenessHealthCheckTimeout:
                  description: 'LivenessHealthCheckTimeout defines health check timeout for the liveness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  format: int32
                  type: integer
                livenessInitialDelaySeconds:
                  description: 'LivenessInitialDelaySeconds defines initial delay for the liveness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  format: int32
                  type: integer
                livenessSuccessThreshold:
                  description: 'LivenessSuccessThreshold defines success threshold for the liveness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  format: int32
                  type: integer
                maxPodUnavailable:
                  format: int32
                  type: integer
                noCheckStsAreEqual:
                  type: boolean
                nodesPerRacks:
                  description: 'Number of nodes to deploy for a Cassandra deployment in each Racks. Default: 1. If NodesPerRacks = 2 and there is 3 racks, the cluster will have 6 Cassandra Nodes'
                  format: int32
                  type: integer
                pod:
                  description: PodPolicy defines the policy for pods owned by CassKop operator.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Annotations specifies the annotations to attach to headless service the CassKop operator creates
                      type: object
                    tolerations:
                      description: Tolerations specifies the tolerations to attach to the pods the CassKop operator creates
                      items:
                        description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
                        properties:
                          effect:
                            description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                            type: string
                          key:
                            description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                            type: string
                          operator:
                            description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
                            type: string
                          tolerationSeconds:
                            description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
                            format: int64
                            type: integer
                          value:
                            description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
                            type: string
                        type: object
                      type: array
                  type: object
                readOnlyRootFilesystem:
                  description: Make the pod as Readonly
                  type: boolean
                readinessFailureThreshold:
                  description: 'ReadinessFailureThreshold defines failure threshold for the readiness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  format: int32
                  type: integer
                readinessHealthCheckPeriod:
                  description: 'ReadinessHealthCheckPeriod defines health check period for the readiness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  format: int32
                  type: integer
                readinessHealthCheckTimeout:
                  description: 'ReadinessHealthCheckTimeout defines health check timeout for the readiness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  format: int32
                  type: integer
                readinessInitialDelaySeconds:
                  description: 'ReadinessInitialDelaySeconds defines initial delay for the readiness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  format: int32
                  type: integer
                readinessSuccessThreshold:
                  description: 'ReadinessSuccessThreshold defines success threshold for the readiness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  format: int32
                  type: integer
                resources:
                  description: ResourceRequirements describes the compute resource requirements.
                  properties:
                    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-compute-resources-container/'
                      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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                      type: object
                  type: object
                restartCountBeforePodDeletion:
                  description: RestartCountBeforePodDeletion defines the number of restart allowed for a cassandra container allowed before deleting the pod  to force its restart from scratch. if set to 0 or omit, no action will be performed based on restart count.
                  format: int32
                  type: integer
                runAsUser:
                  default: 999
                  description: RunAsUser define the id of the user to run in the Cassandra image
                  format: int64
                  minimum: 1
                  type: integer
                service:
                  description: ServicePolicy defines the policy for headless service owned by CassKop operator.
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Annotations specifies the annotations to attach to headless service the CassKop operator creates
                      type: object
                  type: object
                serviceAccountName:
                  type: string
                shareProcessNamespace:
                  description: 'When process namespace sharing is enabled, processes in a container are visible to all other containers in that pod. https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/ Optional: Default to false.'
                  type: boolean
                sidecarConfigs:
                  description: SidecarsConfig defines additional sidecar configurations
                  items:
                    description: A single application container that you want to run within a pod.
                    properties:
                      args:
                        description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
                        items:
                          type: string
                        type: array
                      command:
                        description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
                        items:
                          type: string
                        type: array
                      env:
                        description: List of environment variables to set in the container. Cannot be updated.
                        items:
                          description: EnvVar represents an environment variable present in a Container.
                          properties:
                            name:
                              description: Name of the environment variable. Must be a C_IDENTIFIER.
                              type: string
                            value:
                              description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".'
                              type: string
                            valueFrom:
                              description: Source for the environment variable's value. Cannot be used if value is not empty.
                              properties:
                                configMapKeyRef:
                                  description: Selects a key of a ConfigMap.
                                  properties:
                                    key:
                                      description: The key to select.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the ConfigMap or its key must be defined
                                      type: boolean
                                  required:
                                    - key
                                  type: object
                                fieldRef:
                                  description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'
                                  properties:
                                    apiVersion:
                                      description: Version of the schema the FieldPath is written in terms of, defaults to "v1".
                                      type: string
                                    fieldPath:
                                      description: Path of the field to select in the specified API version.
                                      type: string
                                  required:
                                    - fieldPath
                                  type: object
                                resourceFieldRef:
                                  description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'
                                  properties:
                                    containerName:
                                      description: 'Container name: required for volumes, optional for env vars'
                                      type: string
                                    divisor:
                                      anyOf:
                                        - type: integer
                                        - type: string
                                      description: Specifies the output format of the exposed resources, defaults to "1"
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    resource:
                                      description: 'Required: resource to select'
                                      type: string
                                  required:
                                    - resource
                                  type: object
                                secretKeyRef:
                                  description: Selects a key of a secret in the pod's namespace
                                  properties:
                                    key:
                                      description: The key of the secret to select from.  Must be a valid secret key.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the Secret or its key must be defined
                                      type: boolean
                                  required:
                                    - key
                                  type: object
                              type: object
                          required:
                            - name
                          type: object
                        type: array
                      envFrom:
                        description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.
                        items:
                          description: EnvFromSource represents the source of a set of ConfigMaps
                          properties:
                            configMapRef:
                              description: The ConfigMap to select from
                              properties:
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap must be defined
                                  type: boolean
                              type: object
                            prefix:
                              description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
                              type: string
                            secretRef:
                              description: The Secret to select from
                              properties:
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                                  type: string
                                optional:
                                  description: Specify whether the Secret must be defined
                                  type: boolean
                              type: object
                          type: object
                        type: array
                      image:
                        description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.'
                        type: string
                      imagePullPolicy:
                        description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
                        type: string
                      lifecycle:
                        description: Actions that the management system should take in response to container lifecycle events. Cannot be updated.
                        properties:
                          postStart:
                            description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
                            properties:
                              exec:
                                description: One and only one of the following should be specified. Exec specifies the action to take.
                                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
                                type: object
                              httpGet:
                                description: HTTPGet specifies the http 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
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                      required:
                                        - name
                                        - value
                                      type: object
                                    type: array
                                  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
                              tcpSocket:
                                description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                                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
                            type: object
                          preStop:
                            description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
                            properties:
                              exec:
                                description: One and only one of the following should be specified. Exec specifies the action to take.
                                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
                                type: object
                              httpGet:
                                description: HTTPGet specifies the http 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
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                      required:
                                        - name
                                        - value
                                      type: object
                                    type: array
                                  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
                              tcpSocket:
                                description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                                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
                            type: object
                        type: object
                      livenessProbe:
                        description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                        properties:
                          exec:
                            description: One and only one of the following should be specified. Exec specifies the action to take.
                            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
                            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
                          httpGet:
                            description: HTTPGet specifies the http 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
                                      type: string
                                    value:
                                      description: The header field value
                                      type: string
                                  required:
                                    - name
                                    - value
                                  type: object
                                type: array
                              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 an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                            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
                          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
                      name:
                        description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.
                        type: string
                      ports:
                        description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.
                        items:
                          description: ContainerPort represents a network port in a single container.
                          properties:
                            containerPort:
                              description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.
                              format: int32
                              type: integer
                            hostIP:
                              description: What host IP to bind the external port to.
                              type: string
                            hostPort:
                              description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.
                              format: int32
                              type: integer
                            name:
                              description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.
                              type: string
                            protocol:
                              description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP".
                              type: string
                          required:
                            - containerPort
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                          - containerPort
                        x-kubernetes-list-type: map
                      readinessProbe:
                        description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                        properties:
                          exec:
                            description: One and only one of the following should be specified. Exec specifies the action to take.
                            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
                            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
                          httpGet:
                            description: HTTPGet specifies the http 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
                                      type: string
                                    value:
                                      description: The header field value
                                      type: string
                                  required:
                                    - name
                                    - value
                                  type: object
                                type: array
                              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 an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                            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
                          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
                      resources:
                        description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                        properties:
                          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-compute-resources-container/'
                            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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                        type: object
                      securityContext:
                        description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'
                        properties:
                          allowPrivilegeEscalation:
                            description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN'
                            type: boolean
                          capabilities:
                            description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime.
                            properties:
                              add:
                                description: Added capabilities
                                items:
                                  description: Capability represent POSIX capabilities type
                                  type: string
                                type: array
                              drop:
                                description: Removed capabilities
                                items:
                                  description: Capability represent POSIX capabilities type
                                  type: string
                                type: array
                            type: object
                          privileged:
                            description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.
                            type: boolean
                          procMount:
                            description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.
                            type: string
                          readOnlyRootFilesystem:
                            description: Whether this container has a read-only root filesystem. Default is false.
                            type: boolean
                          runAsGroup:
                            description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                            format: int64
                            type: integer
                          runAsNonRoot:
                            description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                            type: boolean
                          runAsUser:
                            description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                            format: int64
                            type: integer
                          seLinuxOptions:
                            description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                            properties:
                              level:
                                description: Level is SELinux level label that applies to the container.
                                type: string
                              role:
                                description: Role is a SELinux role label that applies to the container.
                                type: string
                              type:
                                description: Type is a SELinux type label that applies to the container.
                                type: string
                              user:
                                description: User is a SELinux user label that applies to the container.
                                type: string
                            type: object
                          windowsOptions:
                            description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                            properties:
                              gmsaCredentialSpec:
                                description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.
                                type: string
                              gmsaCredentialSpecName:
                                description: GMSACredentialSpecName is the name of the GMSA credential spec to use.
                                type: string
                              runAsUserName:
                                description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                                type: string
                            type: object
                        type: object
                      startupProbe:
                        description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                        properties:
                          exec:
                            description: One and only one of the following should be specified. Exec specifies the action to take.
                            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
                            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
                          httpGet:
                            description: HTTPGet specifies the http 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
                                      type: string
                                    value:
                                      description: The header field value
                                      type: string
                                  required:
                                    - name
                                    - value
                                  type: object
                                type: array
                              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 an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                            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
                          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
                      stdin:
                        description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.
                        type: boolean
                      stdinOnce:
                        description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false
                        type: boolean
                      terminationMessagePath:
                        description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.'
                        type: string
                      terminationMessagePolicy:
                        description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.
                        type: string
                      tty:
                        description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.
                        type: boolean
                      volumeDevices:
                        description: volumeDevices is the list of block devices to be used by the container.
                        items:
                          description: volumeDevice describes a mapping of a raw block device within a container.
                          properties:
                            devicePath:
                              description: devicePath is the path inside of the container that the device will be mapped to.
                              type: string
                            name:
                              description: name must match the name of a persistentVolumeClaim in the pod
                              type: string
                          required:
                            - devicePath
                            - name
                          type: object
                        type: array
                      volumeMounts:
                        description: Pod volumes to mount into the container's filesystem. Cannot be updated.
                        items:
                          description: VolumeMount describes a mounting of a Volume within a container.
                          properties:
                            mountPath:
                              description: Path within the container at which the volume should be mounted.  Must not contain ':'.
                              type: string
                            mountPropagation:
                              description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.
                              type: string
                            name:
                              description: This must match the Name of a Volume.
                              type: string
                            readOnly:
                              description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.
                              type: boolean
                            subPath:
                              description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root).
                              type: string
                            subPathExpr:
                              description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive.
                              type: string
                          required:
                            - mountPath
                            - name
                          type: object
                        type: array
                      workingDir:
                        description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.
                        type: string
                    required:
                      - name
                    type: object
                  type: array
                storageConfigs:
                  description: StorageConfig defines additional storage configurations
                  items:
                    description: StorageConfig defines additional storage configurations
                    properties:
                      mountPath:
                        description: Mount path into cassandra container
                        type: string
                      name:
                        description: Name of the pvc
                        pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'
                        type: string
                      pvcSpec:
                        description: Persistent volume claim spec
                        properties:
                          accessModes:
                            description: 'AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                            items:
                              type: string
                            type: array
                          dataSource:
                            description: 'This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot - Beta) * An existing PVC (PersistentVolumeClaim) * An existing custom resource/object that implements data population (Alpha) In order to use VolumeSnapshot object types, the appropriate feature gate must be enabled (VolumeSnapshotDataSource or AnyVolumeDataSource) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the specified data source is not supported, the volume will not be created and the failure will be reported as an event. In the future, we plan to support more data source types and the behavior of the provisioner may change.'
                            properties:
                              apiGroup:
                                description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
                                type: string
                              kind:
                                description: Kind is the type of resource being referenced
                                type: string
                              name:
                                description: Name is the name of resource being referenced
                                type: string
                            required:
                              - kind
                              - name
                            type: object
                          resources:
                            description: 'Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                            properties:
                              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-compute-resources-container/'
                                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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                                type: object
                            type: object
                          selector:
                            description: A label query over volumes to consider for binding.
                            properties:
                              matchExpressions:
                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
                                items:
                                  description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
                                  properties:
                                    key:
                                      description: key is the label key that the selector applies to.
                                      type: string
                                    operator:
                                      description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
                                      type: string
                                    values:
                                      description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
                                      items:
                                        type: string
                                      type: array
                                  required:
                                    - key
                                    - operator
                                  type: object
                                type: array
                              matchLabels:
                                additionalProperties:
                                  type: string
                                description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
                                type: object
                            type: object
                          storageClassName:
                            description: 'Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                            type: string
                          volumeMode:
                            description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
                            type: string
                          volumeName:
                            description: VolumeName is the binding reference to the PersistentVolume backing this claim.
                            type: string
                        type: object
                    required:
                      - mountPath
                      - name
                      - pvcSpec
                    type: object
                  type: array
                topology:
                  description: Topology to create Cassandra DC and Racks and to target appropriate Kubernetes Nodes
                  properties:
                    dc:
                      description: List of DC defined in the CassandraCluster
                      items:
                        description: DC allow to configure Cassandra RC according to kubernetes nodeselector labels
                        properties:
                          dataCapacity:
                            description: Define the Capacity for Persistent Volume Claims in the local storage
                            pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                            type: string
                          dataStorageClass:
                            description: Define StorageClass for Persistent Volume Claims in the local storage.
                            type: string
                          labels:
                            additionalProperties:
                              type: string
                            description: Labels used to target Kubernetes nodes
                            type: object
                          name:
                            description: Name of the DC
                            pattern: ^[^-]+$
                            type: string
                          nodesPerRacks:
                            description: 'Number of nodes to deploy for a Cassandra deployment in each Racks. Default: 1. Optional, if not filled, used value define in CassandraClusterSpec'
                            format: int32
                            type: integer
                          numTokens:
                            description: 'NumTokens : configure the CASSANDRA_NUM_TOKENS parameter which can be different for each DD'
                            format: int32
                            type: integer
                          rack:
                            description: List of Racks defined in the Cassandra DC
                            items:
                              description: Rack allow to configure Cassandra Rack according to kubernetes nodeselector labels
                              properties:
                                labels:
                                  additionalProperties:
                                    type: string
                                  description: Labels used to target Kubernetes nodes
                                  type: object
                                name:
                                  description: Name of the Rack
                                  pattern: ^[^-]+$
                                  type: string
                                rollingPartition:
                                  description: The Partition to control the Statefulset Upgrade
                                  format: int32
                                  type: integer
                                rollingRestart:
                                  description: Flag to tell the operator to trigger a rolling restart of the Rack
                                  type: boolean
                              type: object
                            type: array
                          resources:
                            description: ResourceRequirements describes the compute resource requirements.
                            properties:
                              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-compute-resources-container/'
                                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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                                type: object
                            type: object
                        type: object
                      type: array
                  type: object
                unlockNextOperation:
                  description: Very special Flag to hack CassKop reconcile loop - use with really good Care
                  type: boolean
              type: object
            status:
              description: CassandraClusterStatus defines Global state of CassandraCluster
              properties:
                cassandraNodeStatus:
                  additionalProperties:
                    properties:
                      hostId:
                        type: string
                      nodeIp:
                        type: string
                    type: object
                  type: object
                cassandraRackStatus:
                  additionalProperties:
                    description: CassandraRackStatus defines states of Cassandra for 1 rack (1 statefulset)
                    properties:
                      cassandraLastAction:
                        description: 'CassandraLastAction is the set of Cassandra State & Actions: Active, Standby..'
                        properties:
                          endTime:
                            format: date-time
                            type: string
                          name:
                            description: 'Type of action to perform : UpdateVersion, UpdateBaseImage, UpdateConfigMap..'
                            type: string
                          startTime:
                            format: date-time
                            type: string
                          status:
                            description: Action is the specific actions that can be done on a Cassandra Cluster such as cleanup, upgradesstables..
                            type: string
                          updatedNodes:
                            description: PodNames of updated Cassandra nodes. Updated means the Cassandra container image version matches the spec's version.
                            items:
                              type: string
                            type: array
                        type: object
                      phase:
                        description: 'Phase indicates the state this Cassandra cluster jumps in. Phase goes as one way as below:   Initial -> Running <-> updating'
                        type: string
                      podLastOperation:
                        description: PodLastOperation manage status for Pod Operation (nodetool cleanup, upgradesstables..)
                        properties:
                          endTime:
                            format: date-time
                            type: string
                          name:
                            type: string
                          operatorName:
                            description: Name of operator
                            type: string
                          pods:
                            description: List of pods running an operation
                            items:
                              type: string
                            type: array
                          podsKO:
                            description: List of pods that fail to run an operation
                            items:
                              type: string
                            type: array
                          podsOK:
                            description: List of pods that run an operation successfully
                            items:
                              type: string
                            type: array
                          startTime:
                            format: date-time
                            type: string
                          status:
                            type: string
                        type: object
                    type: object
                  description: CassandraRackStatusList list status for each Rack
                  type: object
                lastClusterAction:
                  description: Store last action at cluster level
                  type: string
                lastClusterActionStatus:
                  type: string
                phase:
                  description: 'Phase indicates the state this Cassandra cluster jumps in. Phase goes as one way as below:   Initial -> Running <-> updating'
                  type: string
                seedlist:
                  description: seedList to be used in Cassandra's Pods (computed by the Operator)
                  items:
                    type: string
                  type: array
              type: object
          type: object
      served: true
      storage: false
    - name: v2
      schema:
        openAPIV3Schema:
          description: CassandraCluster is the Schema for the cassandraclusters API
          type: object
          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:
              type: object
              properties:
                autoPilot:
                  description: AutoPilot defines if the Operator can fly alone or if we need human action to trigger Actions on specific Cassandra nodes If autoPilot=true, the operator will set labels pod-operation-status=To-Do on Pods which allows him to automatically triggers Action If autoPilot=false, the operator will set labels pod-operation-status=Manual on Pods which won't automatically triggers Action
                  type: boolean
                autoUpdateSeedList:
                  description: AutoUpdateSeedList defines if the Operator automatically update the SeedList according to new cluster CRD topology by default a boolean is false
                  type: boolean
                backRestSidecar:
                  description: BackRestSidecar defines details about cassandra-sidecar to load along with each C* pod
                  type: object
                  properties:
                    image:
                      description: Image of backup/restore sidecar
                      type: string
                    imagePullPolicy:
                      description: ImagePullPolicy define the pull policy for backrest sidecar docker image
                      type: string
                    resources:
                      description: 'Kubernetes object : https://godoc.org/k8s.io/api/core/v1#ResourceRequirements'
                      type: object
                      properties:
                        limits:
                          description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                          type: object
                          additionalProperties:
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            anyOf:
                              - type: integer
                              - type: string
                            x-kubernetes-int-or-string: true
                        requests:
                          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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                          type: object
                          additionalProperties:
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            anyOf:
                              - type: integer
                              - type: string
                            x-kubernetes-int-or-string: true
                    volumeMount:
                      type: array
                      items:
                        description: VolumeMount describes a mounting of a Volume within a container.
                        type: object
                        required:
                          - mountPath
                          - name
                        properties:
                          mountPath:
                            description: Path within the container at which the volume should be mounted.  Must not contain ':'.
                            type: string
                          mountPropagation:
                            description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.
                            type: string
                          name:
                            description: This must match the Name of a Volume.
                            type: string
                          readOnly:
                            description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.
                            type: boolean
                          subPath:
                            description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root).
                            type: string
                          subPathExpr:
                            description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive.
                            type: string
                bootstrapImage:
                  description: Image used for bootstrapping cluster (use format base:version)
                  type: string
                cassandraImage:
                  description: Image + version to use for Cassandra
                  type: string
                config:
                  description: Config for the Cassandra nodes
                  type: object
                  format: byte
                  x-kubernetes-preserve-unknown-fields: true
                configBuilderImage:
                  description: Image used for configBuilder (use format base:version)
                  type: string
                configMapName:
                  description: Name of the ConfigMap for Cassandra configuration (cassandra.yaml) If this is empty, operator will uses default cassandra.yaml from the baseImage If this is not empty, operator will uses the cassandra.yaml from the Configmap instead
                  type: string
                dataCapacity:
                  description: Define the Capacity for Persistent Volume Claims in the local storage
                  type: string
                  pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                dataStorageClass:
                  description: Define StorageClass for Persistent Volume Claims in the local storage.
                  type: string
                debug:
                  description: Debug is used to surcharge Cassandra pod command to not directly start cassandra but starts an infinite wait to allow user to connect a bash into the pod to make some diagnoses.
                  type: boolean
                deletePVC:
                  description: DeletePVC defines if the PVC must be deleted when the cluster is deleted it is false by default
                  type: boolean
                fsGroup:
                  description: FSGroup defines the GID owning volumes in the Cassandra image
                  type: integer
                  format: int64
                  default: 1
                  minimum: 1
                hardAntiAffinity:
                  description: HardAntiAffinity defines if the PodAntiAffinity of the statefulset has to be hard (it's soft by default)
                  type: boolean
                imageJolokiaSecret:
                  description: JMX Secret if Set is used to set JMX_USER and JMX_PASSWORD
                  type: object
                  properties:
                    name:
                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                      type: string
                imagePullSecret:
                  description: Name of the secret to uses to authenticate on Docker registries If this is empty, operator do nothing If this is not empty, propagate the imagePullSecrets to the statefulsets
                  type: object
                  properties:
                    name:
                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                      type: string
                imagepullpolicy:
                  description: ImagePullPolicy define the pull policy for C* docker image
                  type: string
                livenessFailureThreshold:
                  description: 'LivenessFailureThreshold defines failure threshold for the liveness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  type: integer
                  format: int32
                livenessHealthCheckPeriod:
                  description: 'LivenessHealthCheckPeriod defines health check period for the liveness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  type: integer
                  format: int32
                livenessHealthCheckTimeout:
                  description: 'LivenessHealthCheckTimeout defines health check timeout for the liveness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  type: integer
                  format: int32
                livenessInitialDelaySeconds:
                  description: 'LivenessInitialDelaySeconds defines initial delay for the liveness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  type: integer
                  format: int32
                livenessSuccessThreshold:
                  description: 'LivenessSuccessThreshold defines success threshold for the liveness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  type: integer
                  format: int32
                maxPodUnavailable:
                  type: integer
                  format: int32
                noCheckStsAreEqual:
                  type: boolean
                nodesPerRacks:
                  description: 'Number of nodes to deploy for a Cassandra deployment in each Racks. Default: 1. If NodesPerRacks = 2 and there is 3 racks, the cluster will have 6 Cassandra Nodes'
                  type: integer
                  format: int32
                pod:
                  description: PodPolicy defines the policy for pods owned by CassKop operator.
                  type: object
                  properties:
                    annotations:
                      description: Annotations specifies the annotations to attach to headless service the CassKop operator creates
                      type: object
                      additionalProperties:
                        type: string
                    tolerations:
                      description: Tolerations specifies the tolerations to attach to the pods the CassKop operator creates
                      type: array
                      items:
                        description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
                        type: object
                        properties:
                          effect:
                            description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                            type: string
                          key:
                            description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                            type: string
                          operator:
                            description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
                            type: string
                          tolerationSeconds:
                            description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
                            type: integer
                            format: int64
                          value:
                            description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
                            type: string
                readOnlyRootFilesystem:
                  description: Make the pod as Readonly
                  type: boolean
                readinessFailureThreshold:
                  description: 'ReadinessFailureThreshold defines failure threshold for the readiness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  type: integer
                  format: int32
                readinessHealthCheckPeriod:
                  description: 'ReadinessHealthCheckPeriod defines health check period for the readiness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  type: integer
                  format: int32
                readinessHealthCheckTimeout:
                  description: 'ReadinessHealthCheckTimeout defines health check timeout for the readiness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  type: integer
                  format: int32
                readinessInitialDelaySeconds:
                  description: 'ReadinessInitialDelaySeconds defines initial delay for the readiness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  type: integer
                  format: int32
                readinessSuccessThreshold:
                  description: 'ReadinessSuccessThreshold defines success threshold for the readiness probe of the main cassandra container : https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes'
                  type: integer
                  format: int32
                resources:
                  description: ResourceRequirements describes the compute resource requirements.
                  type: object
                  properties:
                    limits:
                      description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                      type: object
                      additionalProperties:
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        anyOf:
                          - type: integer
                          - type: string
                        x-kubernetes-int-or-string: true
                    requests:
                      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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                      type: object
                      additionalProperties:
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        anyOf:
                          - type: integer
                          - type: string
                        x-kubernetes-int-or-string: true
                restartCountBeforePodDeletion:
                  description: RestartCountBeforePodDeletion defines the number of restart allowed for a cassandra container allowed before deleting the pod  to force its restart from scratch. if set to 0 or omit, no action will be performed based on restart count.
                  type: integer
                  format: int32
                runAsUser:
                  description: RunAsUser define the id of the user to run in the Cassandra image
                  type: integer
                  format: int64
                  default: 999
                  minimum: 1
                serverType:
                  description: 'Server type: "cassandra" or "dse" for config builder, default to cassandra'
                  type: string
                  default: cassandra
                  enum:
                    - cassandra
                    - dse
                serverVersion:
                  description: Version string for config builder https://github.com/datastax/cass-config-definitions, used to generate Cassandra server configuration
                  type: string
                service:
                  description: ServicePolicy defines the policy for headless service owned by CassKop operator.
                  type: object
                  properties:
                    annotations:
                      description: Annotations specifies the annotations to attach to headless service the CassKop operator creates
                      type: object
                      additionalProperties:
                        type: string
                serviceAccountName:
                  type: string
                shareProcessNamespace:
                  description: 'When process namespace sharing is enabled, processes in a container are visible to all other containers in that pod. https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/ Optional: Default to false.'
                  type: boolean
                sidecarConfigs:
                  description: SidecarsConfig defines additional sidecar configurations
                  type: array
                  items:
                    description: A single application container that you want to run within a pod.
                    type: object
                    required:
                      - name
                    properties:
                      args:
                        description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
                        type: array
                        items:
                          type: string
                      command:
                        description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
                        type: array
                        items:
                          type: string
                      env:
                        description: List of environment variables to set in the container. Cannot be updated.
                        type: array
                        items:
                          description: EnvVar represents an environment variable present in a Container.
                          type: object
                          required:
                            - name
                          properties:
                            name:
                              description: Name of the environment variable. Must be a C_IDENTIFIER.
                              type: string
                            value:
                              description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".'
                              type: string
                            valueFrom:
                              description: Source for the environment variable's value. Cannot be used if value is not empty.
                              type: object
                              properties:
                                configMapKeyRef:
                                  description: Selects a key of a ConfigMap.
                                  type: object
                                  required:
                                    - key
                                  properties:
                                    key:
                                      description: The key to select.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the ConfigMap or its key must be defined
                                      type: boolean
                                fieldRef:
                                  description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'
                                  type: object
                                  required:
                                    - fieldPath
                                  properties:
                                    apiVersion:
                                      description: Version of the schema the FieldPath is written in terms of, defaults to "v1".
                                      type: string
                                    fieldPath:
                                      description: Path of the field to select in the specified API version.
                                      type: string
                                resourceFieldRef:
                                  description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'
                                  type: object
                                  required:
                                    - resource
                                  properties:
                                    containerName:
                                      description: 'Container name: required for volumes, optional for env vars'
                                      type: string
                                    divisor:
                                      description: Specifies the output format of the exposed resources, defaults to "1"
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      anyOf:
                                        - type: integer
                                        - type: string
                                      x-kubernetes-int-or-string: true
                                    resource:
                                      description: 'Required: resource to select'
                                      type: string
                                secretKeyRef:
                                  description: Selects a key of a secret in the pod's namespace
                                  type: object
                                  required:
                                    - key
                                  properties:
                                    key:
                                      description: The key of the secret to select from.  Must be a valid secret key.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the Secret or its key must be defined
                                      type: boolean
                      envFrom:
                        description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.
                        type: array
                        items:
                          description: EnvFromSource represents the source of a set of ConfigMaps
                          type: object
                          properties:
                            configMapRef:
                              description: The ConfigMap to select from
                              type: object
                              properties:
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap must be defined
                                  type: boolean
                            prefix:
                              description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
                              type: string
                            secretRef:
                              description: The Secret to select from
                              type: object
                              properties:
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
                                  type: string
                                optional:
                                  description: Specify whether the Secret must be defined
                                  type: boolean
                      image:
                        description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.'
                        type: string
                      imagePullPolicy:
                        description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
                        type: string
                      lifecycle:
                        description: Actions that the management system should take in response to container lifecycle events. Cannot be updated.
                        type: object
                        properties:
                          postStart:
                            description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
                            type: object
                            properties:
                              exec:
                                description: One and only one of the following should be specified. Exec specifies the action to take.
                                type: object
                                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.
                                    type: array
                                    items:
                                      type: string
                              httpGet:
                                description: HTTPGet specifies the http request to perform.
                                type: object
                                required:
                                  - port
                                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.
                                    type: array
                                    items:
                                      description: HTTPHeader describes a custom header to be used in HTTP probes
                                      type: object
                                      required:
                                        - name
                                        - value
                                      properties:
                                        name:
                                          description: The header field name
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    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.
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: Scheme to use for connecting to the host. Defaults to HTTP.
                                    type: string
                              tcpSocket:
                                description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                                type: object
                                required:
                                  - port
                                properties:
                                  host:
                                    description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                    type: string
                                  port:
                                    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.
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    x-kubernetes-int-or-string: true
                          preStop:
                            description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
                            type: object
                            properties:
                              exec:
                                description: One and only one of the following should be specified. Exec specifies the action to take.
                                type: object
                                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.
                                    type: array
                                    items:
                                      type: string
                              httpGet:
                                description: HTTPGet specifies the http request to perform.
                                type: object
                                required:
                                  - port
                                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.
                                    type: array
                                    items:
                                      description: HTTPHeader describes a custom header to be used in HTTP probes
                                      type: object
                                      required:
                                        - name
                                        - value
                                      properties:
                                        name:
                                          description: The header field name
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    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.
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: Scheme to use for connecting to the host. Defaults to HTTP.
                                    type: string
                              tcpSocket:
                                description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                                type: object
                                required:
                                  - port
                                properties:
                                  host:
                                    description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                    type: string
                                  port:
                                    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.
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    x-kubernetes-int-or-string: true
                      livenessProbe:
                        description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                        type: object
                        properties:
                          exec:
                            description: One and only one of the following should be specified. Exec specifies the action to take.
                            type: object
                            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.
                                type: array
                                items:
                                  type: string
                          failureThreshold:
                            description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                            type: integer
                            format: int32
                          httpGet:
                            description: HTTPGet specifies the http request to perform.
                            type: object
                            required:
                              - port
                            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.
                                type: array
                                items:
                                  description: HTTPHeader describes a custom header to be used in HTTP probes
                                  type: object
                                  required:
                                    - name
                                    - value
                                  properties:
                                    name:
                                      description: The header field name
                                      type: string
                                    value:
                                      description: The header field value
                                      type: string
                              path:
                                description: Path to access on the HTTP server.
                                type: string
                              port:
                                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.
                                anyOf:
                                  - type: integer
                                  - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                description: Scheme to use for connecting to the host. Defaults to HTTP.
                                type: string
                          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'
                            type: integer
                            format: int32
                          periodSeconds:
                            description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
                            type: integer
                            format: int32
                          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.
                            type: integer
                            format: int32
                          tcpSocket:
                            description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                            type: object
                            required:
                              - port
                            properties:
                              host:
                                description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                type: string
                              port:
                                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.
                                anyOf:
                                  - type: integer
                                  - type: string
                                x-kubernetes-int-or-string: true
                          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'
                            type: integer
                            format: int32
                      name:
                        description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.
                        type: string
                      ports:
                        description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.
                        type: array
                        items:
                          description: ContainerPort represents a network port in a single container.
                          type: object
                          required:
                            - containerPort
                          properties:
                            containerPort:
                              description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.
                              type: integer
                              format: int32
                            hostIP:
                              description: What host IP to bind the external port to.
                              type: string
                            hostPort:
                              description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.
                              type: integer
                              format: int32
                            name:
                              description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.
                              type: string
                            protocol:
                              description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP".
                              type: string
                              default: TCP
                        x-kubernetes-list-map-keys:
                          - containerPort
                        x-kubernetes-list-type: map
                      readinessProbe:
                        description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                        type: object
                        properties:
                          exec:
                            description: One and only one of the following should be specified. Exec specifies the action to take.
                            type: object
                            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.
                                type: array
                                items:
                                  type: string
                          failureThreshold:
                            description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                            type: integer
                            format: int32
                          httpGet:
                            description: HTTPGet specifies the http request to perform.
                            type: object
                            required:
                              - port
                            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.
                                type: array
                                items:
                                  description: HTTPHeader describes a custom header to be used in HTTP probes
                                  type: object
                                  required:
                                    - name
                                    - value
                                  properties:
                                    name:
                                      description: The header field name
                                      type: string
                                    value:
                                      description: The header field value
                                      type: string
                              path:
                                description: Path to access on the HTTP server.
                                type: string
                              port:
                                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.
                                anyOf:
                                  - type: integer
                                  - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                description: Scheme to use for connecting to the host. Defaults to HTTP.
                                type: string
                          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'
                            type: integer
                            format: int32
                          periodSeconds:
                            description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
                            type: integer
                            format: int32
                          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.
                            type: integer
                            format: int32
                          tcpSocket:
                            description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                            type: object
                            required:
                              - port
                            properties:
                              host:
                                description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                type: string
                              port:
                                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.
                                anyOf:
                                  - type: integer
                                  - type: string
                                x-kubernetes-int-or-string: true
                          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'
                            type: integer
                            format: int32
                      resources:
                        description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                        type: object
                        properties:
                          limits:
                            description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                            additionalProperties:
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              anyOf:
                                - type: integer
                                - type: string
                              x-kubernetes-int-or-string: true
                          requests:
                            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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                            additionalProperties:
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              anyOf:
                                - type: integer
                                - type: string
                              x-kubernetes-int-or-string: true
                      securityContext:
                        description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'
                        type: object
                        properties:
                          allowPrivilegeEscalation:
                            description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN'
                            type: boolean
                          capabilities:
                            description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime.
                            type: object
                            properties:
                              add:
                                description: Added capabilities
                                type: array
                                items:
                                  description: Capability represent POSIX capabilities type
                                  type: string
                              drop:
                                description: Removed capabilities
                                type: array
                                items:
                                  description: Capability represent POSIX capabilities type
                                  type: string
                          privileged:
                            description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.
                            type: boolean
                          procMount:
                            description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.
                            type: string
                          readOnlyRootFilesystem:
                            description: Whether this container has a read-only root filesystem. Default is false.
                            type: boolean
                          runAsGroup:
                            description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                            type: integer
                            format: int64
                          runAsNonRoot:
                            description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                            type: boolean
                          runAsUser:
                            description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                            type: integer
                            format: int64
                          seLinuxOptions:
                            description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                            type: object
                            properties:
                              level:
                                description: Level is SELinux level label that applies to the container.
                                type: string
                              role:
                                description: Role is a SELinux role label that applies to the container.
                                type: string
                              type:
                                description: Type is a SELinux type label that applies to the container.
                                type: string
                              user:
                                description: User is a SELinux user label that applies to the container.
                                type: string
                          seccompProfile:
                            description: The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options.
                            type: object
                            required:
                              - type
                            properties:
                              localhostProfile:
                                description: localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost".
                                type: string
                              type:
                                description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied."
                                type: string
                          windowsOptions:
                            description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                            type: object
                            properties:
                              gmsaCredentialSpec:
                                description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.
                                type: string
                              gmsaCredentialSpecName:
                                description: GMSACredentialSpecName is the name of the GMSA credential spec to use.
                                type: string
                              runAsUserName:
                                description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                                type: string
                      startupProbe:
                        description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                        type: object
                        properties:
                          exec:
                            description: One and only one of the following should be specified. Exec specifies the action to take.
                            type: object
                            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.
                                type: array
                                items:
                                  type: string
                          failureThreshold:
                            description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                            type: integer
                            format: int32
                          httpGet:
                            description: HTTPGet specifies the http request to perform.
                            type: object
                            required:
                              - port
                            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.
                                type: array
                                items:
                                  description: HTTPHeader describes a custom header to be used in HTTP probes
                                  type: object
                                  required:
                                    - name
                                    - value
                                  properties:
                                    name:
                                      description: The header field name
                                      type: string
                                    value:
                                      description: The header field value
                                      type: string
                              path:
                                description: Path to access on the HTTP server.
                                type: string
                              port:
                                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.
                                anyOf:
                                  - type: integer
                                  - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                description: Scheme to use for connecting to the host. Defaults to HTTP.
                                type: string
                          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'
                            type: integer
                            format: int32
                          periodSeconds:
                            description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
                            type: integer
                            format: int32
                          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.
                            type: integer
                            format: int32
                          tcpSocket:
                            description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                            type: object
                            required:
                              - port
                            properties:
                              host:
                                description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                type: string
                              port:
                                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.
                                anyOf:
                                  - type: integer
                                  - type: string
                                x-kubernetes-int-or-string: true
                          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'
                            type: integer
                            format: int32
                      stdin:
                        description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.
                        type: boolean
                      stdinOnce:
                        description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false
                        type: boolean
                      terminationMessagePath:
                        description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.'
                        type: string
                      terminationMessagePolicy:
                        description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.
                        type: string
                      tty:
                        description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.
                        type: boolean
                      volumeDevices:
                        description: volumeDevices is the list of block devices to be used by the container.
                        type: array
                        items:
                          description: volumeDevice describes a mapping of a raw block device within a container.
                          type: object
                          required:
                            - devicePath
                            - name
                          properties:
                            devicePath:
                              description: devicePath is the path inside of the container that the device will be mapped to.
                              type: string
                            name:
                              description: name must match the name of a persistentVolumeClaim in the pod
                              type: string
                      volumeMounts:
                        description: Pod volumes to mount into the container's filesystem. Cannot be updated.
                        type: array
                        items:
                          description: VolumeMount describes a mounting of a Volume within a container.
                          type: object
                          required:
                            - mountPath
                            - name
                          properties:
                            mountPath:
                              description: Path within the container at which the volume should be mounted.  Must not contain ':'.
                              type: string
                            mountPropagation:
                              description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.
                              type: string
                            name:
                              description: This must match the Name of a Volume.
                              type: string
                            readOnly:
                              description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.
                              type: boolean
                            subPath:
                              description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root).
                              type: string
                            subPathExpr:
                              description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive.
                              type: string
                      workingDir:
                        description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.
                        type: string
                storageConfigs:
                  description: StorageConfig defines additional storage configurations
                  type: array
                  items:
                    description: StorageConfig defines additional storage configurations
                    type: object
                    required:
                      - mountPath
                      - name
                      - pvcSpec
                    properties:
                      mountPath:
                        description: Mount path into cassandra container
                        type: string
                      name:
                        description: Name of the pvc
                        type: string
                        pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'
                      pvcSpec:
                        description: Persistent volume claim spec
                        type: object
                        properties:
                          accessModes:
                            description: 'AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                            type: array
                            items:
                              type: string
                          dataSource:
                            description: 'This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot - Beta) * An existing PVC (PersistentVolumeClaim) * An existing custom resource/object that implements data population (Alpha) In order to use VolumeSnapshot object types, the appropriate feature gate must be enabled (VolumeSnapshotDataSource or AnyVolumeDataSource) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the specified data source is not supported, the volume will not be created and the failure will be reported as an event. In the future, we plan to support more data source types and the behavior of the provisioner may change.'
                            type: object
                            required:
                              - kind
                              - name
                            properties:
                              apiGroup:
                                description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
                                type: string
                              kind:
                                description: Kind is the type of resource being referenced
                                type: string
                              name:
                                description: Name is the name of resource being referenced
                                type: string
                          resources:
                            description: 'Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                            type: object
                            properties:
                              limits:
                                description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                                type: object
                                additionalProperties:
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  x-kubernetes-int-or-string: true
                              requests:
                                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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                                type: object
                                additionalProperties:
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  x-kubernetes-int-or-string: true
                          selector:
                            description: A label query over volumes to consider for binding.
                            type: object
                            properties:
                              matchExpressions:
                                description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
                                type: array
                                items:
                                  description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
                                  type: object
                                  required:
                                    - key
                                    - operator
                                  properties:
                                    key:
                                      description: key is the label key that the selector applies to.
                                      type: string
                                    operator:
                                      description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
                                      type: string
                                    values:
                                      description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
                                      type: array
                                      items:
                                        type: string
                              matchLabels:
                                description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
                                type: object
                                additionalProperties:
                                  type: string
                          storageClassName:
                            description: 'Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                            type: string
                          volumeMode:
                            description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
                            type: string
                          volumeName:
                            description: VolumeName is the binding reference to the PersistentVolume backing this claim.
                            type: string
                topology:
                  description: Topology to create Cassandra DC and Racks and to target appropriate Kubernetes Nodes
                  type: object
                  properties:
                    dc:
                      description: List of DC defined in the CassandraCluster
                      type: array
                      items:
                        description: DC allow to configure Cassandra RC according to kubernetes nodeselector labels
                        type: object
                        properties:
                          config:
                            description: Config for the Cassandra nodes
                            type: object
                            format: byte
                            x-kubernetes-preserve-unknown-fields: true
                          dataCapacity:
                            description: Define the Capacity for Persistent Volume Claims in the local storage
                            type: string
                            pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                          dataStorageClass:
                            description: Define StorageClass for Persistent Volume Claims in the local storage.
                            type: string
                          labels:
                            description: Labels used to target Kubernetes nodes
                            type: object
                            additionalProperties:
                              type: string
                          name:
                            description: Name of the DC
                            type: string
                            pattern: ^[^-]+$
                          nodesPerRacks:
                            description: 'Number of nodes to deploy for a Cassandra deployment in each Racks. Default: 1. Optional, if not filled, used value define in CassandraClusterSpec'
                            type: integer
                            format: int32
                          rack:
                            description: List of Racks defined in the Cassandra DC
                            type: array
                            items:
                              description: Rack allow to configure Cassandra Rack according to kubernetes nodeselector labels
                              type: object
                              properties:
                                config:
                                  description: Config for the Cassandra nodes
                                  type: object
                                  format: byte
                                  x-kubernetes-preserve-unknown-fields: true
                                labels:
                                  description: Labels used to target Kubernetes nodes
                                  type: object
                                  additionalProperties:
                                    type: string
                                name:
                                  description: Name of the Rack
                                  type: string
                                  pattern: ^[^-]+$
                                rollingPartition:
                                  description: The Partition to control the Statefulset Upgrade
                                  type: integer
                                  format: int32
                                rollingRestart:
                                  description: Flag to tell the operator to trigger a rolling restart of the Rack
                                  type: boolean
                          resources:
                            description: ResourceRequirements describes the compute resource requirements.
                            type: object
                            properties:
                              limits:
                                description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                                type: object
                                additionalProperties:
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  x-kubernetes-int-or-string: true
                              requests:
                                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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                                type: object
                                additionalProperties:
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  x-kubernetes-int-or-string: true
                unlockNextOperation:
                  description: Very special Flag to hack CassKop reconcile loop - use with really good care
                  type: boolean
              x-kubernetes-preserve-unknown-fields: true
            status:
              description: CassandraClusterStatus defines Global state of CassandraCluster
              type: object
              properties:
                cassandraNodeStatus:
                  type: object
                  additionalProperties:
                    type: object
                    properties:
                      hostId:
                        type: string
                      nodeIp:
                        type: string
                cassandraRackStatus:
                  description: CassandraRackStatusList list status for each Rack
                  type: object
                  additionalProperties:
                    description: CassandraRackStatus defines states of Cassandra for 1 rack (1 statefulset)
                    type: object
                    properties:
                      cassandraLastAction:
                        description: 'CassandraLastAction is the set of Cassandra State & Actions: Active, Standby..'
                        type: object
                        properties:
                          endTime:
                            type: string
                            format: date-time
                          name:
                            description: 'Type of action to perform : UpdateVersion, UpdateBaseImage, UpdateConfigMap..'
                            type: string
                          startTime:
                            type: string
                            format: date-time
                          status:
                            description: Action is the specific actions that can be done on a Cassandra Cluster such as cleanup, upgradesstables..
                            type: string
                          updatedNodes:
                            description: PodNames of updated Cassandra nodes. Updated means the Cassandra container image version matches the spec's version.
                            type: array
                            items:
                              type: string
                      phase:
                        description: 'Phase indicates the state this Cassandra cluster jumps in. Phase goes as one way as below:   Initial -> Running <-> updating'
                        type: string
                      podLastOperation:
                        description: PodLastOperation manage status for Pod Operation (nodetool cleanup, upgradesstables..)
                        type: object
                        properties:
                          endTime:
                            type: string
                            format: date-time
                          name:
                            type: string
                          operatorName:
                            description: Name of operator
                            type: string
                          pods:
                            description: List of pods running an operation
                            type: array
                            items:
                              type: string
                          podsKO:
                            description: List of pods that fail to run an operation
                            type: array
                            items:
                              type: string
                          podsOK:
                            description: List of pods that run an operation successfully
                            type: array
                            items:
                              type: string
                          startTime:
                            type: string
                            format: date-time
                          status:
                            type: string
                lastClusterAction:
                  description: Store last action at cluster level
                  type: string
                lastClusterActionStatus:
                  type: string
                phase:
                  description: 'Phase indicates the state this Cassandra cluster jumps in. Phase goes as one way as below:   Initial -> Running <-> updating'
                  type: string
                seedlist:
                  description: seedList to be used in Cassandra's Pods (computed by the Operator)
                  type: array
                  items:
                    type: string
      served: true
      storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
