# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.4
  name: compoundaideployments.nvidia.com
spec:
  group: nvidia.com
  names:
    kind: CompoundAIDeployment
    listKind: CompoundAIDeploymentList
    plural: compoundaideployments
    singular: compoundaideployment
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        properties:
          apiVersion:
            type: string
          kind:
            type: string
          metadata:
            type: object
          spec:
            properties:
              compoundAINim:
                type: string
              services:
                additionalProperties:
                  properties:
                    apiVersion:
                      type: string
                    kind:
                      type: string
                    metadata:
                      type: object
                    spec:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        autoscaling:
                          properties:
                            behavior:
                              properties:
                                scaleDown:
                                  properties:
                                    policies:
                                      items:
                                        properties:
                                          periodSeconds:
                                            format: int32
                                            type: integer
                                          type:
                                            type: string
                                          value:
                                            format: int32
                                            type: integer
                                        required:
                                        - periodSeconds
                                        - type
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    selectPolicy:
                                      type: string
                                    stabilizationWindowSeconds:
                                      format: int32
                                      type: integer
                                  type: object
                                scaleUp:
                                  properties:
                                    policies:
                                      items:
                                        properties:
                                          periodSeconds:
                                            format: int32
                                            type: integer
                                          type:
                                            type: string
                                          value:
                                            format: int32
                                            type: integer
                                        required:
                                        - periodSeconds
                                        - type
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    selectPolicy:
                                      type: string
                                    stabilizationWindowSeconds:
                                      format: int32
                                      type: integer
                                  type: object
                              type: object
                            enabled:
                              type: boolean
                            maxReplicas:
                              type: integer
                            metrics:
                              items:
                                properties:
                                  containerResource:
                                    properties:
                                      container:
                                        type: string
                                      name:
                                        type: string
                                      target:
                                        properties:
                                          averageUtilization:
                                            format: int32
                                            type: integer
                                          averageValue:
                                            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
                                          type:
                                            type: string
                                          value:
                                            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
                                        required:
                                        - type
                                        type: object
                                    required:
                                    - container
                                    - name
                                    - target
                                    type: object
                                  external:
                                    properties:
                                      metric:
                                        properties:
                                          name:
                                            type: string
                                          selector:
                                            properties:
                                              matchExpressions:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - name
                                        type: object
                                      target:
                                        properties:
                                          averageUtilization:
                                            format: int32
                                            type: integer
                                          averageValue:
                                            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
                                          type:
                                            type: string
                                          value:
                                            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
                                        required:
                                        - type
                                        type: object
                                    required:
                                    - metric
                                    - target
                                    type: object
                                  object:
                                    properties:
                                      describedObject:
                                        properties:
                                          apiVersion:
                                            type: string
                                          kind:
                                            type: string
                                          name:
                                            type: string
                                        required:
                                        - kind
                                        - name
                                        type: object
                                      metric:
                                        properties:
                                          name:
                                            type: string
                                          selector:
                                            properties:
                                              matchExpressions:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - name
                                        type: object
                                      target:
                                        properties:
                                          averageUtilization:
                                            format: int32
                                            type: integer
                                          averageValue:
                                            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
                                          type:
                                            type: string
                                          value:
                                            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
                                        required:
                                        - type
                                        type: object
                                    required:
                                    - describedObject
                                    - metric
                                    - target
                                    type: object
                                  pods:
                                    properties:
                                      metric:
                                        properties:
                                          name:
                                            type: string
                                          selector:
                                            properties:
                                              matchExpressions:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - name
                                        type: object
                                      target:
                                        properties:
                                          averageUtilization:
                                            format: int32
                                            type: integer
                                          averageValue:
                                            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
                                          type:
                                            type: string
                                          value:
                                            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
                                        required:
                                        - type
                                        type: object
                                    required:
                                    - metric
                                    - target
                                    type: object
                                  resource:
                                    properties:
                                      name:
                                        type: string
                                      target:
                                        properties:
                                          averageUtilization:
                                            format: int32
                                            type: integer
                                          averageValue:
                                            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
                                          type:
                                            type: string
                                          value:
                                            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
                                        required:
                                        - type
                                        type: object
                                    required:
                                    - name
                                    - target
                                    type: object
                                  type:
                                    type: string
                                required:
                                - type
                                type: object
                              type: array
                            minReplicas:
                              type: integer
                          type: object
                        compoundAINim:
                          type: string
                        envFromSecret:
                          type: string
                        envs:
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                              valueFrom:
                                properties:
                                  configMapKeyRef:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  fieldRef:
                                    properties:
                                      apiVersion:
                                        type: string
                                      fieldPath:
                                        type: string
                                    required:
                                    - fieldPath
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  resourceFieldRef:
                                    properties:
                                      containerName:
                                        type: string
                                      divisor:
                                        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
                                      resource:
                                        type: string
                                    required:
                                    - resource
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  secretKeyRef:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                        externalServices:
                          additionalProperties:
                            properties:
                              deploymentSelectorKey:
                                type: string
                              deploymentSelectorValue:
                                type: string
                            type: object
                          type: object
                        extraPodMetadata:
                          properties:
                            annotations:
                              additionalProperties:
                                type: string
                              type: object
                            labels:
                              additionalProperties:
                                type: string
                              type: object
                          type: object
                        extraPodSpec:
                          properties:
                            affinity:
                              properties:
                                nodeAffinity:
                                  properties:
                                    preferredDuringSchedulingIgnoredDuringExecution:
                                      items:
                                        properties:
                                          preference:
                                            properties:
                                              matchExpressions:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchFields:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          weight:
                                            format: int32
                                            type: integer
                                        required:
                                        - preference
                                        - weight
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    requiredDuringSchedulingIgnoredDuringExecution:
                                      properties:
                                        nodeSelectorTerms:
                                          items:
                                            properties:
                                              matchExpressions:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchFields:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                      - nodeSelectorTerms
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                podAffinity:
                                  properties:
                                    preferredDuringSchedulingIgnoredDuringExecution:
                                      items:
                                        properties:
                                          podAffinityTerm:
                                            properties:
                                              labelSelector:
                                                properties:
                                                  matchExpressions:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        operator:
                                                          type: string
                                                        values:
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                      - key
                                                      - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              matchLabelKeys:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              mismatchLabelKeys:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              namespaceSelector:
                                                properties:
                                                  matchExpressions:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        operator:
                                                          type: string
                                                        values:
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                      - key
                                                      - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              namespaces:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              topologyKey:
                                                type: string
                                            required:
                                            - topologyKey
                                            type: object
                                          weight:
                                            format: int32
                                            type: integer
                                        required:
                                        - podAffinityTerm
                                        - weight
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    requiredDuringSchedulingIgnoredDuringExecution:
                                      items:
                                        properties:
                                          labelSelector:
                                            properties:
                                              matchExpressions:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          matchLabelKeys:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          mismatchLabelKeys:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          namespaceSelector:
                                            properties:
                                              matchExpressions:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          namespaces:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          topologyKey:
                                            type: string
                                        required:
                                        - topologyKey
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                podAntiAffinity:
                                  properties:
                                    preferredDuringSchedulingIgnoredDuringExecution:
                                      items:
                                        properties:
                                          podAffinityTerm:
                                            properties:
                                              labelSelector:
                                                properties:
                                                  matchExpressions:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        operator:
                                                          type: string
                                                        values:
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                      - key
                                                      - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              matchLabelKeys:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              mismatchLabelKeys:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              namespaceSelector:
                                                properties:
                                                  matchExpressions:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        operator:
                                                          type: string
                                                        values:
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                      - key
                                                      - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              namespaces:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              topologyKey:
                                                type: string
                                            required:
                                            - topologyKey
                                            type: object
                                          weight:
                                            format: int32
                                            type: integer
                                        required:
                                        - podAffinityTerm
                                        - weight
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    requiredDuringSchedulingIgnoredDuringExecution:
                                      items:
                                        properties:
                                          labelSelector:
                                            properties:
                                              matchExpressions:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          matchLabelKeys:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          mismatchLabelKeys:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          namespaceSelector:
                                            properties:
                                              matchExpressions:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    operator:
                                                      type: string
                                                    values:
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          namespaces:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          topologyKey:
                                            type: string
                                        required:
                                        - topologyKey
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                              type: object
                            containers:
                              items:
                                properties:
                                  args:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  command:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  env:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                        valueFrom:
                                          properties:
                                            configMapKeyRef:
                                              properties:
                                                key:
                                                  type: string
                                                name:
                                                  default: ""
                                                  type: string
                                                optional:
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            fieldRef:
                                              properties:
                                                apiVersion:
                                                  type: string
                                                fieldPath:
                                                  type: string
                                              required:
                                              - fieldPath
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            resourceFieldRef:
                                              properties:
                                                containerName:
                                                  type: string
                                                divisor:
                                                  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
                                                resource:
                                                  type: string
                                              required:
                                              - resource
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            secretKeyRef:
                                              properties:
                                                key:
                                                  type: string
                                                name:
                                                  default: ""
                                                  type: string
                                                optional:
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          type: object
                                      required:
                                      - name
                                      type: object
                                    type: array
                                    x-kubernetes-list-map-keys:
                                    - name
                                    x-kubernetes-list-type: map
                                  envFrom:
                                    items:
                                      properties:
                                        configMapRef:
                                          properties:
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        prefix:
                                          type: string
                                        secretRef:
                                          properties:
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  image:
                                    type: string
                                  imagePullPolicy:
                                    type: string
                                  lifecycle:
                                    properties:
                                      postStart:
                                        properties:
                                          exec:
                                            properties:
                                              command:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            type: object
                                          httpGet:
                                            properties:
                                              host:
                                                type: string
                                              httpHeaders:
                                                items:
                                                  properties:
                                                    name:
                                                      type: string
                                                    value:
                                                      type: string
                                                  required:
                                                  - name
                                                  - value
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              path:
                                                type: string
                                              port:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                x-kubernetes-int-or-string: true
                                              scheme:
                                                type: string
                                            required:
                                            - port
                                            type: object
                                          sleep:
                                            properties:
                                              seconds:
                                                format: int64
                                                type: integer
                                            required:
                                            - seconds
                                            type: object
                                          tcpSocket:
                                            properties:
                                              host:
                                                type: string
                                              port:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                x-kubernetes-int-or-string: true
                                            required:
                                            - port
                                            type: object
                                        type: object
                                      preStop:
                                        properties:
                                          exec:
                                            properties:
                                              command:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            type: object
                                          httpGet:
                                            properties:
                                              host:
                                                type: string
                                              httpHeaders:
                                                items:
                                                  properties:
                                                    name:
                                                      type: string
                                                    value:
                                                      type: string
                                                  required:
                                                  - name
                                                  - value
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              path:
                                                type: string
                                              port:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                x-kubernetes-int-or-string: true
                                              scheme:
                                                type: string
                                            required:
                                            - port
                                            type: object
                                          sleep:
                                            properties:
                                              seconds:
                                                format: int64
                                                type: integer
                                            required:
                                            - seconds
                                            type: object
                                          tcpSocket:
                                            properties:
                                              host:
                                                type: string
                                              port:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                x-kubernetes-int-or-string: true
                                            required:
                                            - port
                                            type: object
                                        type: object
                                    type: object
                                  livenessProbe:
                                    properties:
                                      exec:
                                        properties:
                                          command:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                      failureThreshold:
                                        format: int32
                                        type: integer
                                      grpc:
                                        properties:
                                          port:
                                            format: int32
                                            type: integer
                                          service:
                                            default: ""
                                            type: string
                                        required:
                                        - port
                                        type: object
                                      httpGet:
                                        properties:
                                          host:
                                            type: string
                                          httpHeaders:
                                            items:
                                              properties:
                                                name:
                                                  type: string
                                                value:
                                                  type: string
                                              required:
                                              - name
                                              - value
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          path:
                                            type: string
                                          port:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            x-kubernetes-int-or-string: true
                                          scheme:
                                            type: string
                                        required:
                                        - port
                                        type: object
                                      initialDelaySeconds:
                                        format: int32
                                        type: integer
                                      periodSeconds:
                                        format: int32
                                        type: integer
                                      successThreshold:
                                        format: int32
                                        type: integer
                                      tcpSocket:
                                        properties:
                                          host:
                                            type: string
                                          port:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            x-kubernetes-int-or-string: true
                                        required:
                                        - port
                                        type: object
                                      terminationGracePeriodSeconds:
                                        format: int64
                                        type: integer
                                      timeoutSeconds:
                                        format: int32
                                        type: integer
                                    type: object
                                  name:
                                    type: string
                                  ports:
                                    items:
                                      properties:
                                        containerPort:
                                          format: int32
                                          type: integer
                                        hostIP:
                                          type: string
                                        hostPort:
                                          format: int32
                                          type: integer
                                        name:
                                          type: string
                                        protocol:
                                          default: TCP
                                          type: string
                                      required:
                                      - containerPort
                                      type: object
                                    type: array
                                    x-kubernetes-list-map-keys:
                                    - containerPort
                                    - protocol
                                    x-kubernetes-list-type: map
                                  readinessProbe:
                                    properties:
                                      exec:
                                        properties:
                                          command:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                      failureThreshold:
                                        format: int32
                                        type: integer
                                      grpc:
                                        properties:
                                          port:
                                            format: int32
                                            type: integer
                                          service:
                                            default: ""
                                            type: string
                                        required:
                                        - port
                                        type: object
                                      httpGet:
                                        properties:
                                          host:
                                            type: string
                                          httpHeaders:
                                            items:
                                              properties:
                                                name:
                                                  type: string
                                                value:
                                                  type: string
                                              required:
                                              - name
                                              - value
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          path:
                                            type: string
                                          port:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            x-kubernetes-int-or-string: true
                                          scheme:
                                            type: string
                                        required:
                                        - port
                                        type: object
                                      initialDelaySeconds:
                                        format: int32
                                        type: integer
                                      periodSeconds:
                                        format: int32
                                        type: integer
                                      successThreshold:
                                        format: int32
                                        type: integer
                                      tcpSocket:
                                        properties:
                                          host:
                                            type: string
                                          port:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            x-kubernetes-int-or-string: true
                                        required:
                                        - port
                                        type: object
                                      terminationGracePeriodSeconds:
                                        format: int64
                                        type: integer
                                      timeoutSeconds:
                                        format: int32
                                        type: integer
                                    type: object
                                  resizePolicy:
                                    items:
                                      properties:
                                        resourceName:
                                          type: string
                                        restartPolicy:
                                          type: string
                                      required:
                                      - resourceName
                                      - restartPolicy
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  resources:
                                    properties:
                                      claims:
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            request:
                                              type: string
                                          required:
                                          - name
                                          type: object
                                        type: array
                                        x-kubernetes-list-map-keys:
                                        - name
                                        x-kubernetes-list-type: map
                                      limits:
                                        additionalProperties:
                                          anyOf:
                                          - type: integer
                                          - type: string
                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                          x-kubernetes-int-or-string: true
                                        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
                                        type: object
                                    type: object
                                  restartPolicy:
                                    type: string
                                  securityContext:
                                    properties:
                                      allowPrivilegeEscalation:
                                        type: boolean
                                      appArmorProfile:
                                        properties:
                                          localhostProfile:
                                            type: string
                                          type:
                                            type: string
                                        required:
                                        - type
                                        type: object
                                      capabilities:
                                        properties:
                                          add:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          drop:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                      privileged:
                                        type: boolean
                                      procMount:
                                        type: string
                                      readOnlyRootFilesystem:
                                        type: boolean
                                      runAsGroup:
                                        format: int64
                                        type: integer
                                      runAsNonRoot:
                                        type: boolean
                                      runAsUser:
                                        format: int64
                                        type: integer
                                      seLinuxOptions:
                                        properties:
                                          level:
                                            type: string
                                          role:
                                            type: string
                                          type:
                                            type: string
                                          user:
                                            type: string
                                        type: object
                                      seccompProfile:
                                        properties:
                                          localhostProfile:
                                            type: string
                                          type:
                                            type: string
                                        required:
                                        - type
                                        type: object
                                      windowsOptions:
                                        properties:
                                          gmsaCredentialSpec:
                                            type: string
                                          gmsaCredentialSpecName:
                                            type: string
                                          hostProcess:
                                            type: boolean
                                          runAsUserName:
                                            type: string
                                        type: object
                                    type: object
                                  startupProbe:
                                    properties:
                                      exec:
                                        properties:
                                          command:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                      failureThreshold:
                                        format: int32
                                        type: integer
                                      grpc:
                                        properties:
                                          port:
                                            format: int32
                                            type: integer
                                          service:
                                            default: ""
                                            type: string
                                        required:
                                        - port
                                        type: object
                                      httpGet:
                                        properties:
                                          host:
                                            type: string
                                          httpHeaders:
                                            items:
                                              properties:
                                                name:
                                                  type: string
                                                value:
                                                  type: string
                                              required:
                                              - name
                                              - value
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          path:
                                            type: string
                                          port:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            x-kubernetes-int-or-string: true
                                          scheme:
                                            type: string
                                        required:
                                        - port
                                        type: object
                                      initialDelaySeconds:
                                        format: int32
                                        type: integer
                                      periodSeconds:
                                        format: int32
                                        type: integer
                                      successThreshold:
                                        format: int32
                                        type: integer
                                      tcpSocket:
                                        properties:
                                          host:
                                            type: string
                                          port:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            x-kubernetes-int-or-string: true
                                        required:
                                        - port
                                        type: object
                                      terminationGracePeriodSeconds:
                                        format: int64
                                        type: integer
                                      timeoutSeconds:
                                        format: int32
                                        type: integer
                                    type: object
                                  stdin:
                                    type: boolean
                                  stdinOnce:
                                    type: boolean
                                  terminationMessagePath:
                                    type: string
                                  terminationMessagePolicy:
                                    type: string
                                  tty:
                                    type: boolean
                                  volumeDevices:
                                    items:
                                      properties:
                                        devicePath:
                                          type: string
                                        name:
                                          type: string
                                      required:
                                      - devicePath
                                      - name
                                      type: object
                                    type: array
                                    x-kubernetes-list-map-keys:
                                    - devicePath
                                    x-kubernetes-list-type: map
                                  volumeMounts:
                                    items:
                                      properties:
                                        mountPath:
                                          type: string
                                        mountPropagation:
                                          type: string
                                        name:
                                          type: string
                                        readOnly:
                                          type: boolean
                                        recursiveReadOnly:
                                          type: string
                                        subPath:
                                          type: string
                                        subPathExpr:
                                          type: string
                                      required:
                                      - mountPath
                                      - name
                                      type: object
                                    type: array
                                    x-kubernetes-list-map-keys:
                                    - mountPath
                                    x-kubernetes-list-type: map
                                  workingDir:
                                    type: string
                                required:
                                - name
                                type: object
                              type: array
                            nodeSelector:
                              additionalProperties:
                                type: string
                              type: object
                            priorityClassName:
                              type: string
                            schedulerName:
                              type: string
                            serviceAccountName:
                              type: string
                            tolerations:
                              items:
                                properties:
                                  effect:
                                    type: string
                                  key:
                                    type: string
                                  operator:
                                    type: string
                                  tolerationSeconds:
                                    format: int64
                                    type: integer
                                  value:
                                    type: string
                                type: object
                              type: array
                            topologySpreadConstraints:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  maxSkew:
                                    format: int32
                                    type: integer
                                  minDomains:
                                    format: int32
                                    type: integer
                                  nodeAffinityPolicy:
                                    type: string
                                  nodeTaintsPolicy:
                                    type: string
                                  topologyKey:
                                    type: string
                                  whenUnsatisfiable:
                                    type: string
                                required:
                                - maxSkew
                                - topologyKey
                                - whenUnsatisfiable
                                type: object
                              type: array
                          type: object
                        ingress:
                          properties:
                            annotations:
                              additionalProperties:
                                type: string
                              type: object
                            enabled:
                              type: boolean
                            hostPrefix:
                              type: string
                            labels:
                              additionalProperties:
                                type: string
                              type: object
                            tls:
                              properties:
                                secretName:
                                  type: string
                              type: object
                            useVirtualService:
                              type: boolean
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                        livenessProbe:
                          properties:
                            exec:
                              properties:
                                command:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              format: int32
                              type: integer
                            grpc:
                              properties:
                                port:
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              properties:
                                host:
                                  type: string
                                httpHeaders:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              format: int32
                              type: integer
                            periodSeconds:
                              format: int32
                              type: integer
                            successThreshold:
                              format: int32
                              type: integer
                            tcpSocket:
                              properties:
                                host:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              format: int32
                              type: integer
                          type: object
                        monitorExporter:
                          properties:
                            enabled:
                              type: boolean
                            mounts:
                              items:
                                properties:
                                  awsElasticBlockStore:
                                    properties:
                                      fsType:
                                        type: string
                                      partition:
                                        format: int32
                                        type: integer
                                      readOnly:
                                        type: boolean
                                      volumeID:
                                        type: string
                                    required:
                                    - volumeID
                                    type: object
                                  azureDisk:
                                    properties:
                                      cachingMode:
                                        type: string
                                      diskName:
                                        type: string
                                      diskURI:
                                        type: string
                                      fsType:
                                        default: ext4
                                        type: string
                                      kind:
                                        type: string
                                      readOnly:
                                        default: false
                                        type: boolean
                                    required:
                                    - diskName
                                    - diskURI
                                    type: object
                                  azureFile:
                                    properties:
                                      readOnly:
                                        type: boolean
                                      secretName:
                                        type: string
                                      shareName:
                                        type: string
                                    required:
                                    - secretName
                                    - shareName
                                    type: object
                                  cephfs:
                                    properties:
                                      monitors:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      path:
                                        type: string
                                      readOnly:
                                        type: boolean
                                      secretFile:
                                        type: string
                                      secretRef:
                                        properties:
                                          name:
                                            default: ""
                                            type: string
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      user:
                                        type: string
                                    required:
                                    - monitors
                                    type: object
                                  cinder:
                                    properties:
                                      fsType:
                                        type: string
                                      readOnly:
                                        type: boolean
                                      secretRef:
                                        properties:
                                          name:
                                            default: ""
                                            type: string
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      volumeID:
                                        type: string
                                    required:
                                    - volumeID
                                    type: object
                                  configMap:
                                    properties:
                                      defaultMode:
                                        format: int32
                                        type: integer
                                      items:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            mode:
                                              format: int32
                                              type: integer
                                            path:
                                              type: string
                                          required:
                                          - key
                                          - path
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  csi:
                                    properties:
                                      driver:
                                        type: string
                                      fsType:
                                        type: string
                                      nodePublishSecretRef:
                                        properties:
                                          name:
                                            default: ""
                                            type: string
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      readOnly:
                                        type: boolean
                                      volumeAttributes:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    required:
                                    - driver
                                    type: object
                                  downwardAPI:
                                    properties:
                                      defaultMode:
                                        format: int32
                                        type: integer
                                      items:
                                        items:
                                          properties:
                                            fieldRef:
                                              properties:
                                                apiVersion:
                                                  type: string
                                                fieldPath:
                                                  type: string
                                              required:
                                              - fieldPath
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            mode:
                                              format: int32
                                              type: integer
                                            path:
                                              type: string
                                            resourceFieldRef:
                                              properties:
                                                containerName:
                                                  type: string
                                                divisor:
                                                  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
                                                resource:
                                                  type: string
                                              required:
                                              - resource
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          required:
                                          - path
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  emptyDir:
                                    properties:
                                      medium:
                                        type: string
                                      sizeLimit:
                                        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
                                    type: object
                                  ephemeral:
                                    properties:
                                      volumeClaimTemplate:
                                        properties:
                                          metadata:
                                            type: object
                                          spec:
                                            properties:
                                              accessModes:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              dataSource:
                                                properties:
                                                  apiGroup:
                                                    type: string
                                                  kind:
                                                    type: string
                                                  name:
                                                    type: string
                                                required:
                                                - kind
                                                - name
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              dataSourceRef:
                                                properties:
                                                  apiGroup:
                                                    type: string
                                                  kind:
                                                    type: string
                                                  name:
                                                    type: string
                                                  namespace:
                                                    type: string
                                                required:
                                                - kind
                                                - name
                                                type: object
                                              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
                                                    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
                                                    type: object
                                                type: object
                                              selector:
                                                properties:
                                                  matchExpressions:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        operator:
                                                          type: string
                                                        values:
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                      - key
                                                      - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              storageClassName:
                                                type: string
                                              volumeAttributesClassName:
                                                type: string
                                              volumeMode:
                                                type: string
                                              volumeName:
                                                type: string
                                            type: object
                                        required:
                                        - spec
                                        type: object
                                    type: object
                                  fc:
                                    properties:
                                      fsType:
                                        type: string
                                      lun:
                                        format: int32
                                        type: integer
                                      readOnly:
                                        type: boolean
                                      targetWWNs:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      wwids:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  flexVolume:
                                    properties:
                                      driver:
                                        type: string
                                      fsType:
                                        type: string
                                      options:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      readOnly:
                                        type: boolean
                                      secretRef:
                                        properties:
                                          name:
                                            default: ""
                                            type: string
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    required:
                                    - driver
                                    type: object
                                  flocker:
                                    properties:
                                      datasetName:
                                        type: string
                                      datasetUUID:
                                        type: string
                                    type: object
                                  gcePersistentDisk:
                                    properties:
                                      fsType:
                                        type: string
                                      partition:
                                        format: int32
                                        type: integer
                                      pdName:
                                        type: string
                                      readOnly:
                                        type: boolean
                                    required:
                                    - pdName
                                    type: object
                                  gitRepo:
                                    properties:
                                      directory:
                                        type: string
                                      repository:
                                        type: string
                                      revision:
                                        type: string
                                    required:
                                    - repository
                                    type: object
                                  glusterfs:
                                    properties:
                                      endpoints:
                                        type: string
                                      path:
                                        type: string
                                      readOnly:
                                        type: boolean
                                    required:
                                    - endpoints
                                    - path
                                    type: object
                                  hostPath:
                                    properties:
                                      path:
                                        type: string
                                      type:
                                        type: string
                                    required:
                                    - path
                                    type: object
                                  image:
                                    properties:
                                      pullPolicy:
                                        type: string
                                      reference:
                                        type: string
                                    type: object
                                  iscsi:
                                    properties:
                                      chapAuthDiscovery:
                                        type: boolean
                                      chapAuthSession:
                                        type: boolean
                                      fsType:
                                        type: string
                                      initiatorName:
                                        type: string
                                      iqn:
                                        type: string
                                      iscsiInterface:
                                        default: default
                                        type: string
                                      lun:
                                        format: int32
                                        type: integer
                                      portals:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      readOnly:
                                        type: boolean
                                      secretRef:
                                        properties:
                                          name:
                                            default: ""
                                            type: string
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      targetPortal:
                                        type: string
                                    required:
                                    - iqn
                                    - lun
                                    - targetPortal
                                    type: object
                                  nfs:
                                    properties:
                                      path:
                                        type: string
                                      readOnly:
                                        type: boolean
                                      server:
                                        type: string
                                    required:
                                    - path
                                    - server
                                    type: object
                                  path:
                                    type: string
                                  persistentVolumeClaim:
                                    properties:
                                      claimName:
                                        type: string
                                      readOnly:
                                        type: boolean
                                    required:
                                    - claimName
                                    type: object
                                  photonPersistentDisk:
                                    properties:
                                      fsType:
                                        type: string
                                      pdID:
                                        type: string
                                    required:
                                    - pdID
                                    type: object
                                  portworxVolume:
                                    properties:
                                      fsType:
                                        type: string
                                      readOnly:
                                        type: boolean
                                      volumeID:
                                        type: string
                                    required:
                                    - volumeID
                                    type: object
                                  projected:
                                    properties:
                                      defaultMode:
                                        format: int32
                                        type: integer
                                      sources:
                                        items:
                                          properties:
                                            clusterTrustBundle:
                                              properties:
                                                labelSelector:
                                                  properties:
                                                    matchExpressions:
                                                      items:
                                                        properties:
                                                          key:
                                                            type: string
                                                          operator:
                                                            type: string
                                                          values:
                                                            items:
                                                              type: string
                                                            type: array
                                                            x-kubernetes-list-type: atomic
                                                        required:
                                                        - key
                                                        - operator
                                                        type: object
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                    matchLabels:
                                                      additionalProperties:
                                                        type: string
                                                      type: object
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                name:
                                                  type: string
                                                optional:
                                                  type: boolean
                                                path:
                                                  type: string
                                                signerName:
                                                  type: string
                                              required:
                                              - path
                                              type: object
                                            configMap:
                                              properties:
                                                items:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      mode:
                                                        format: int32
                                                        type: integer
                                                      path:
                                                        type: string
                                                    required:
                                                    - key
                                                    - path
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                name:
                                                  default: ""
                                                  type: string
                                                optional:
                                                  type: boolean
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            downwardAPI:
                                              properties:
                                                items:
                                                  items:
                                                    properties:
                                                      fieldRef:
                                                        properties:
                                                          apiVersion:
                                                            type: string
                                                          fieldPath:
                                                            type: string
                                                        required:
                                                        - fieldPath
                                                        type: object
                                                        x-kubernetes-map-type: atomic
                                                      mode:
                                                        format: int32
                                                        type: integer
                                                      path:
                                                        type: string
                                                      resourceFieldRef:
                                                        properties:
                                                          containerName:
                                                            type: string
                                                          divisor:
                                                            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
                                                          resource:
                                                            type: string
                                                        required:
                                                        - resource
                                                        type: object
                                                        x-kubernetes-map-type: atomic
                                                    required:
                                                    - path
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              type: object
                                            secret:
                                              properties:
                                                items:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      mode:
                                                        format: int32
                                                        type: integer
                                                      path:
                                                        type: string
                                                    required:
                                                    - key
                                                    - path
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                name:
                                                  default: ""
                                                  type: string
                                                optional:
                                                  type: boolean
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            serviceAccountToken:
                                              properties:
                                                audience:
                                                  type: string
                                                expirationSeconds:
                                                  format: int64
                                                  type: integer
                                                path:
                                                  type: string
                                              required:
                                              - path
                                              type: object
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  quobyte:
                                    properties:
                                      group:
                                        type: string
                                      readOnly:
                                        type: boolean
                                      registry:
                                        type: string
                                      tenant:
                                        type: string
                                      user:
                                        type: string
                                      volume:
                                        type: string
                                    required:
                                    - registry
                                    - volume
                                    type: object
                                  rbd:
                                    properties:
                                      fsType:
                                        type: string
                                      image:
                                        type: string
                                      keyring:
                                        default: /etc/ceph/keyring
                                        type: string
                                      monitors:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      pool:
                                        default: rbd
                                        type: string
                                      readOnly:
                                        type: boolean
                                      secretRef:
                                        properties:
                                          name:
                                            default: ""
                                            type: string
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      user:
                                        default: admin
                                        type: string
                                    required:
                                    - image
                                    - monitors
                                    type: object
                                  readOnly:
                                    type: boolean
                                  scaleIO:
                                    properties:
                                      fsType:
                                        default: xfs
                                        type: string
                                      gateway:
                                        type: string
                                      protectionDomain:
                                        type: string
                                      readOnly:
                                        type: boolean
                                      secretRef:
                                        properties:
                                          name:
                                            default: ""
                                            type: string
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      sslEnabled:
                                        type: boolean
                                      storageMode:
                                        default: ThinProvisioned
                                        type: string
                                      storagePool:
                                        type: string
                                      system:
                                        type: string
                                      volumeName:
                                        type: string
                                    required:
                                    - gateway
                                    - secretRef
                                    - system
                                    type: object
                                  secret:
                                    properties:
                                      defaultMode:
                                        format: int32
                                        type: integer
                                      items:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            mode:
                                              format: int32
                                              type: integer
                                            path:
                                              type: string
                                          required:
                                          - key
                                          - path
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      optional:
                                        type: boolean
                                      secretName:
                                        type: string
                                    type: object
                                  storageos:
                                    properties:
                                      fsType:
                                        type: string
                                      readOnly:
                                        type: boolean
                                      secretRef:
                                        properties:
                                          name:
                                            default: ""
                                            type: string
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      volumeName:
                                        type: string
                                      volumeNamespace:
                                        type: string
                                    type: object
                                  vsphereVolume:
                                    properties:
                                      fsType:
                                        type: string
                                      storagePolicyID:
                                        type: string
                                      storagePolicyName:
                                        type: string
                                      volumePath:
                                        type: string
                                    required:
                                    - volumePath
                                    type: object
                                type: object
                              type: array
                            options:
                              additionalProperties:
                                type: string
                              type: object
                            output:
                              type: string
                            structureOptions:
                              items:
                                properties:
                                  name:
                                    type: string
                                  value:
                                    type: string
                                  valueFrom:
                                    properties:
                                      configMapKeyRef:
                                        properties:
                                          key:
                                            type: string
                                          name:
                                            default: ""
                                            type: string
                                          optional:
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      fieldRef:
                                        properties:
                                          apiVersion:
                                            type: string
                                          fieldPath:
                                            type: string
                                        required:
                                        - fieldPath
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      resourceFieldRef:
                                        properties:
                                          containerName:
                                            type: string
                                          divisor:
                                            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
                                          resource:
                                            type: string
                                        required:
                                        - resource
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      secretKeyRef:
                                        properties:
                                          key:
                                            type: string
                                          name:
                                            default: ""
                                            type: string
                                          optional:
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    type: object
                                required:
                                - name
                                type: object
                              type: array
                          type: object
                        pvc:
                          properties:
                            create:
                              type: boolean
                            mountPoint:
                              type: string
                            name:
                              type: string
                            size:
                              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
                            storageClass:
                              type: string
                            volumeAccessMode:
                              type: string
                          type: object
                        readinessProbe:
                          properties:
                            exec:
                              properties:
                                command:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              format: int32
                              type: integer
                            grpc:
                              properties:
                                port:
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              properties:
                                host:
                                  type: string
                                httpHeaders:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              format: int32
                              type: integer
                            periodSeconds:
                              format: int32
                              type: integer
                            successThreshold:
                              format: int32
                              type: integer
                            tcpSocket:
                              properties:
                                host:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              format: int32
                              type: integer
                          type: object
                        resources:
                          properties:
                            limits:
                              properties:
                                cpu:
                                  type: string
                                custom:
                                  additionalProperties:
                                    type: string
                                  type: object
                                gpu:
                                  type: string
                                memory:
                                  type: string
                              type: object
                            requests:
                              properties:
                                cpu:
                                  type: string
                                custom:
                                  additionalProperties:
                                    type: string
                                  type: object
                                gpu:
                                  type: string
                                memory:
                                  type: string
                              type: object
                          type: object
                        runMode:
                          properties:
                            standalone:
                              type: boolean
                          type: object
                        serviceName:
                          type: string
                      required:
                      - compoundAINim
                      type: object
                    status:
                      properties:
                        conditions:
                          items:
                            properties:
                              lastTransitionTime:
                                format: date-time
                                type: string
                              message:
                                maxLength: 32768
                                type: string
                              observedGeneration:
                                format: int64
                                minimum: 0
                                type: integer
                              reason:
                                maxLength: 1024
                                minLength: 1
                                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                                type: string
                              status:
                                enum:
                                - "True"
                                - "False"
                                - Unknown
                                type: string
                              type:
                                maxLength: 316
                                pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                                type: string
                            required:
                            - lastTransitionTime
                            - message
                            - reason
                            - status
                            - type
                            type: object
                          type: array
                        podSelector:
                          additionalProperties:
                            type: string
                          type: object
                      required:
                      - conditions
                      type: object
                  type: object
                type: object
            required:
            - compoundAINim
            type: object
          status:
            properties:
              conditions:
                items:
                  properties:
                    lastTransitionTime:
                      format: date-time
                      type: string
                    message:
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              state:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
