#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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:
  name: submarines.submarine.apache.org
  labels:
    app.kubernetes.io/name: submarine-operator
    app.kubernetes.io/version: "0.8.0"
    app.kubernetes.io/component: submarine-operator
    app.kubernetes.io/managed-by: Helm
spec:
  group: submarine.apache.org
  names:
    kind: Submarine
    listKind: SubmarineList
    plural: submarines
    singular: submarine
    shortNames:
    - sm
    categories:
    - all
  scope: Namespaced
  versions:
    - name: v1
      schema:
        openAPIV3Schema:
          description: Submarine is the Schema for the submarines API
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: SubmarineSpec defines the desired state of Submarine
              properties:
                common:
                  description: Common is the spec that defines some submarine common
                    configurations
                  properties:
                    image:
                      description: Image is the basic image used in initcontainer in
                        some submarine resources
                      properties:
                        busybox:
                          description: BusyboxImage is the image used by the submarine
                            service resource (server...) to check whether the minio
                            is started in the initcontainer
                          type: string
                        mc:
                          description: McImage is the image used by the submarine service
                            resource (server...) to check whether the minio is started
                            in the initcontainer
                          type: string
                        pullSecrets:
                          description: PullSecrets is a specified array of imagePullSecrets.
                            This secrets must be manually created in the namespace.
                          items:
                            type: string
                          type: array
                      type: object
                  required:
                    - image
                  type: object
                database:
                  description: Database is the spec that defines the submarine database
                  properties:
                    image:
                      description: Image is the submarine database's docker image
                      type: string
                    mysqlRootPasswordSecret:
                      description: 'MysqlRootPasswordSecret is the mysql root password
                      secret, this secret need password key: MYSQL_ROOT_PASSWORD'
                      type: string
                    storageSize:
                      description: StorageSize is the storage size of the database
                      type: string
                  required:
                    - storageSize
                  type: object
                minio:
                  description: Minio is the spec that defines the submarine minio
                  properties:
                    accessKey:
                      description: AccessKey defines the access_key of minio
                      type: string
                    enabled:
                      description: Enabled defines whether to enable minio or not
                      type: boolean
                    image:
                      description: Image is the submarine minio's docker image
                      type: string
                    secretKey:
                      description: SecretKey defines the secret_key of minio
                      type: string
                    storageSize:
                      description: StorageSize defines the storage size of minio
                      type: string
                  required:
                    - enabled
                    - storageSize
                  type: object
                mlflow:
                  description: Mlflow is the spec that defines the submarine mlflow
                  properties:
                    enabled:
                      description: Enabled defines whether to enable mlflow or not
                      type: boolean
                    image:
                      description: Image is the submarine mlflow's docker image
                      type: string
                    storageSize:
                      description: StorageSize defines the storage size of mlflow
                      type: string
                  required:
                    - enabled
                    - storageSize
                  type: object
                server:
                  description: Server is the spec that defines the submarine server
                  properties:
                    env:
                      description: Envs is the extra environments that submarine server
                        requires
                      items:
                        description: EnvVar represents an environment variable present
                          in a Container.
                        properties:
                          name:
                            description: Name of the environment variable. Must be a
                              C_IDENTIFIER.
                            type: string
                          value:
                            description: 'Variable references $(VAR_NAME) are expanded
                            using the previously defined environment variables in
                            the container and any service environment variables. If
                            a variable cannot be resolved, the reference in the input
                            string will be unchanged. Double $$ are reduced to a single
                            $, which allows for escaping the $(VAR_NAME) syntax: i.e.
                            "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
                            Escaped references will never be expanded, regardless
                            of whether the variable exists or not. Defaults to "".'
                            type: string
                          valueFrom:
                            description: Source for the environment variable's value.
                              Cannot be used if value is not empty.
                            properties:
                              configMapKeyRef:
                                description: Selects a key of a ConfigMap.
                                properties:
                                  key:
                                    description: The key to select.
                                    type: string
                                  name:
                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                    type: string
                                  optional:
                                    description: Specify whether the ConfigMap or its
                                      key must be defined
                                    type: boolean
                                required:
                                  - key
                                type: object
                              fieldRef:
                                description: 'Selects a field of the pod: supports metadata.name,
                                metadata.namespace, `metadata.labels[''<KEY>'']`,
                                `metadata.annotations[''<KEY>'']`, spec.nodeName,
                                spec.serviceAccountName, status.hostIP, status.podIP,
                                status.podIPs.'
                                properties:
                                  apiVersion:
                                    description: Version of the schema the FieldPath
                                      is written in terms of, defaults to "v1".
                                    type: string
                                  fieldPath:
                                    description: Path of the field to select in the
                                      specified API version.
                                    type: string
                                required:
                                  - fieldPath
                                type: object
                              resourceFieldRef:
                                description: 'Selects a resource of the container: only
                                resources limits and requests (limits.cpu, limits.memory,
                                limits.ephemeral-storage, requests.cpu, requests.memory
                                and requests.ephemeral-storage) are currently supported.'
                                properties:
                                  containerName:
                                    description: 'Container name: required for volumes,
                                    optional for env vars'
                                    type: string
                                  divisor:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    description: Specifies the output format of the
                                      exposed resources, defaults to "1"
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  resource:
                                    description: 'Required: resource to select'
                                    type: string
                                required:
                                  - resource
                                type: object
                              secretKeyRef:
                                description: Selects a key of a secret in the pod's
                                  namespace
                                properties:
                                  key:
                                    description: The key of the secret to select from.  Must
                                      be a valid secret key.
                                    type: string
                                  name:
                                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                    type: string
                                  optional:
                                    description: Specify whether the Secret or its key
                                      must be defined
                                    type: boolean
                                required:
                                  - key
                                type: object
                            type: object
                        required:
                          - name
                        type: object
                      type: array
                    image:
                      description: Image is the submarine server's docker image
                      type: string
                    replicas:
                      description: Replicas is the number of submarine server's replica
                      format: int32
                      minimum: 1
                      type: integer
                  required:
                    - replicas
                  type: object
                tensorboard:
                  description: Tensorboard is the spec that defines the submarine tensorboard
                  properties:
                    enabled:
                      description: Enabled defines whether to enable tensorboard or
                        not
                      type: boolean
                    image:
                      description: Image is the submarine tensorboard's docker image
                      type: string
                    storageSize:
                      description: StorageSize defines the storage size of tensorboard
                      type: string
                  required:
                    - enabled
                    - storageSize
                  type: object
                version:
                  description: Version is the submarine docker image version
                  type: string
                virtualservice:
                  description: Virtualservice is the spec that defines the submarine
                    virtualservice
                  properties:
                    gateways:
                      description: Hosts is the submarine virtualservice's gateways
                      items:
                        type: string
                      type: array
                    hosts:
                      description: Hosts is the submarine virtualservice's destination
                        hosts
                      items:
                        type: string
                      type: array
                  type: object
              required:
                - database
                - minio
                - mlflow
                - server
                - tensorboard
                - version
              type: object
            status:
              description: SubmarineStatus defines the observed state of Submarine
              properties:
                availableDatabaseReplicas:
                  description: AvailableServerReplicas is the current available replicas
                    of submarine database
                  format: int32
                  type: integer
                availableServerReplicas:
                  description: AvailableServerReplicas is the current available replicas
                    of submarine server
                  format: int32
                  type: integer
                submarineState:
                  description: SubmarineState tells the overall submarine state.
                  properties:
                    errorMessage:
                      type: string
                    state:
                      description: SubmarineStateType represents the type of the current
                        state of a submarine.
                      type: string
                  required:
                    - state
                  type: object
              required:
                - availableDatabaseReplicas
                - availableServerReplicas
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
