---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.9.2
  creationTimestamp: null
  name: nevisdatabases.operator.nevis-security.ch
spec:
  group: operator.nevis-security.ch
  names:
    kind: NevisDatabase
    listKind: NevisDatabaseList
    plural: nevisdatabases
    singular: nevisdatabase
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Whether there was an error during database migration
      jsonPath: .status.conditions[?(@.type=="MigrationError")].status
      name: MigrationError
      type: string
    - description: Whether a migration job is still active
      jsonPath: .status.conditions[?(@.type=="MigrationActive")].status
      name: MigrationActive
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        description: NevisDatabase is the Schema for the nevisdatabases 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: NevisDatabaseSpec defines the desired state of NevisDatabase
            properties:
              bootstrap:
                description: Whether to automatically bootstrap the database. True
                  if omitted.
                type: boolean
              database:
                description: The name of the database to instantiate.
                type: string
              databaseType:
                description: The type of database to bootstrap, such as MariaDB
                type: string
              migrate:
                description: Whether to automatically migrate database versions. True
                  if omitted.
                type: boolean
              oracle:
                description: Oracle related options
                properties:
                  applicationRoleName:
                    description: Name of the application Role
                    type: string
                  dataTablespaceName:
                    description: Name of the data tablespace
                    type: string
                  indexTablespaceName:
                    description: Name of the index tablespace
                    type: string
                  volumeClaimName:
                    description: Name of the oracle volume
                    type: string
                required:
                - volumeClaimName
                type: object
              podSecurity:
                description: Defines the PodSecurity to use
                properties:
                  automountServiceAccountToken:
                    description: whether to mount the service account token
                    type: boolean
                  fsGroup:
                    description: use a custom fsGroup
                    format: int64
                    type: integer
                  localhostProfile:
                    description: use a custom profile for seccomp
                    properties:
                      localhostProfile:
                        type: string
                    type: object
                  policy:
                    description: which pod security policy to use, e.g. Restricted
                    type: string
                  runAsUser:
                    description: use a custom runAsUser
                    format: int64
                    type: integer
                required:
                - policy
                type: object
              port:
                description: The connection port of the existing database server.
                format: int32
                type: integer
              postgresql:
                description: Oracle related options
                properties:
                  dataTablespaceName:
                    description: Name of the data tablespace
                    type: string
                  defaultDatabaseName:
                    description: Default potsgresql database
                    type: string
                  indexTablespaceName:
                    description: Name of the index tablespace
                    type: string
                type: object
              rootCredentials:
                description: Reference to the root credentials used to connect to
                  the database server.
                properties:
                  name:
                    description: Name of the element being referenced
                    type: string
                  namespace:
                    description: Namespace of the element being referenced
                    type: string
                required:
                - name
                type: object
              ssl:
                description: Whether to use ssl. False if omitted.
                type: boolean
              timeZone:
                description: Timezone of the deployed pods
                type: string
              type:
                description: The component type to bootstrap the database for. Such
                  as nevisIDM
                type: string
              url:
                description: The connection URL of the existing database server.
                type: string
              version:
                description: The version of the database schema to bootstrap.
                type: string
            required:
            - database
            - port
            - rootCredentials
            - type
            - url
            - version
            type: object
          status:
            description: NevisDatabaseStatus defines the observed state of NevisDatabase
            properties:
              conditions:
                description: Conditions reflecting th current state of the database
                items:
                  description: NevisCondition is a condition proper to the status
                    of a Nevis component.
                  properties:
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status
                        to another.
                      format: date-time
                      type: string
                    message:
                      description: Human-readable message indicating the reason for
                        the condition to be in this state
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition
                        to be in this state
                      type: string
                    source:
                      description: Source of the condition
                      properties:
                        container:
                          type: string
                        pod:
                          type: string
                      required:
                      - container
                      - pod
                      type: object
                    status:
                      description: Status is the status of the condition. Can be True,
                        False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
