# Licensed to 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. Apache Software Foundation (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:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  name: oapservers.operator.skywalking.apache.org
spec:
  group: operator.skywalking.apache.org
  names:
    kind: OAPServer
    listKind: OAPServerList
    plural: oapservers
    singular: oapserver
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The version
      jsonPath: .spec.version
      name: Version
      priority: 1
      type: string
    - description: The number of expected instance
      jsonPath: .spec.instances
      name: Instances
      type: string
    - description: The number of running
      jsonPath: .status.availableReplicas
      name: Running
      type: string
    - description: The address of OAP server
      jsonPath: .status.address
      name: Address
      type: string
    - jsonPath: .spec.image
      name: Image
      priority: 1
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: OAPServer is the Schema for the oapservers 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: OAPServerSpec defines the desired state of OAPServer
            properties:
              config:
                description: Config holds the OAP server configuration.
                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 OAP Server Docker image to deploy.
                type: string
              instances:
                description: Count is the number of OAP servers
                format: int32
                type: integer
              service:
                description: Service relevant settings
                properties:
                  ingress:
                    description: Ingress defines the behavior of an ingress
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: Annotations is an unstructured key value map
                          stored with a resource that may be set by external tools
                          to store and retrieve arbitrary metadata. They are not queryable
                          and should be preserved when modifying objects.
                        type: object
                      host:
                        description: Host is the fully qualified domain name of a
                          network host, as defined by RFC 3986. Note the following
                          deviations from the "host" part of the URI as defined in
                          RFC 3986
                        type: string
                      ingressClassName:
                        description: IngressClassName is the name of the IngressClass
                          cluster resource. The associated IngressClass defines which
                          controller will implement the resource. This replaces the
                          deprecated `kubernetes.io/ingress.class` annotation. For
                          backwards compatibility, when that annotation is set, it
                          must be given precedence over this field. The controller
                          may emit a warning if the field and annotation have different
                          values. Implementations of this API should ignore Ingresses
                          without a class specified. An IngressClass resource may
                          be marked as default, which can be used to set a default
                          value for this field. For more information, refer to the
                          IngressClass documentation.
                        type: string
                      tls:
                        description: TLS configuration. Currently the Ingress only
                          supports a single TLS port, 443. If multiple members of
                          this list specify different hosts, they will be multiplexed
                          on the same port according to the hostname specified through
                          the SNI TLS extension, if the ingress controller fulfilling
                          the ingress supports SNI.
                        items:
                          description: IngressTLS describes the transport layer security
                            associated with an Ingress.
                          properties:
                            hosts:
                              description: Hosts are a list of hosts included in the
                                TLS certificate. The values in this list must match
                                the name/s used in the tlsSecret. Defaults to the
                                wildcard host setting for the loadbalancer controller
                                fulfilling this Ingress, if left unspecified.
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            secretName:
                              description: SecretName is the name of the secret used
                                to terminate TLS traffic on port 443. Field is left
                                optional to allow TLS routing based on SNI hostname
                                alone. If the SNI host in a listener conflicts with
                                the "Host" header field used by an IngressRule, the
                                SNI host is used for termination and value of the
                                Host header is used for routing.
                              type: string
                          type: object
                        type: array
                    type: object
                  template:
                    description: ServiceTemplate defines the behavior of a service.
                    properties:
                      clusterIP:
                        description: clusterIP is the IP address of the service and
                          is usually assigned randomly.
                        type: string
                      externalIPs:
                        description: externalIPs is a list of IP addresses for which
                          nodes in the cluster will also accept traffic for this service.
                        items:
                          type: string
                        type: array
                      loadBalancerIP:
                        description: 'Only applies to Service Type: LoadBalancer LoadBalancer
                          will get created with the IP specified in this field.'
                        type: string
                      loadBalancerSourceRanges:
                        description: If specified and supported by the platform, this
                          will restrict traffic through the cloud-provider load-balancer
                          will be restricted to the specified client IPs.
                        items:
                          type: string
                        type: array
                      type:
                        description: type determines how the Service is exposed.
                        type: string
                    type: object
                type: object
              storage:
                description: StorageConfig relevant settings
                properties:
                  injectstorage:
                    description: Storage relevant settings
                    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: StorageSpec defines the desired state of Storage
                        properties:
                          address:
                            description: Address of external storage address.
                            type: string
                          config:
                            description: Config holds the Storage configuration.
                            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
                          connectType:
                            description: ConnectType is the way to connect storage(e.g.
                              external,internal).
                            type: string
                          image:
                            description: Image is the storage Docker image to deploy.
                            type: string
                          instances:
                            description: Instance is the number of storage.
                            format: int32
                            type: integer
                          resource:
                            description: ResourceCnfig relevant settings
                            properties:
                              limit:
                                type: string
                              requests:
                                type: string
                            type: object
                          security:
                            description: Security relevant settings
                            properties:
                              tls:
                                description: SSLConfig of  storage .
                                type: boolean
                              user:
                                description: UserConfig of storage .
                                properties:
                                  secretName:
                                    description: SecretName of storage user .
                                    type: string
                                type: object
                            type: object
                          servicename:
                            description: ServiceName relevant settings
                            type: string
                          type:
                            description: Type of storage.
                            type: string
                          version:
                            description: Version of storage.
                            type: string
                        type: object
                      status:
                        description: StorageStatus defines the observed state of Storage
                        properties:
                          conditions:
                            description: Represents the latest available observations
                              of the underlying statefulset's current state.
                            items:
                              description: StatefulSetCondition describes the state
                                of a statefulset at a certain point.
                              properties:
                                lastTransitionTime:
                                  description: Last time the condition transitioned
                                    from one status to another.
                                  format: date-time
                                  type: string
                                message:
                                  description: A human readable message indicating
                                    details about the transition.
                                  type: string
                                reason:
                                  description: The reason for the condition's last
                                    transition.
                                  type: string
                                status:
                                  description: Status of the condition, one of True,
                                    False, Unknown.
                                  type: string
                                type:
                                  description: Type of statefulset condition.
                                  type: string
                              required:
                              - status
                              - type
                              type: object
                            type: array
                        type: object
                    type: object
                  name:
                    description: Name relevant settings
                    type: string
                type: object
              version:
                description: Version of OAP.
                type: string
            required:
            - instances
            - version
            type: object
          status:
            description: OAPServerStatus defines the observed state of OAPServer
            properties:
              address:
                description: Address indicates the entry of OAP server which ingresses
                  data
                type: string
              availableReplicas:
                description: Total number of available pods (ready for at least minReadySeconds)
                  targeted by this deployment.
                format: int32
                type: integer
              conditions:
                description: Represents the latest available observations of the underlying
                  deployment's current state.
                items:
                  description: DeploymentCondition describes the state of a deployment
                    at a certain point.
                  properties:
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status
                        to another.
                      format: date-time
                      type: string
                    lastUpdateTime:
                      description: The last time this condition was updated.
                      format: date-time
                      type: string
                    message:
                      description: A human readable message indicating details about
                        the transition.
                      type: string
                    reason:
                      description: The reason for the condition's last transition.
                      type: string
                    status:
                      description: Status of the condition, one of True, False, Unknown.
                      type: string
                    type:
                      description: Type of deployment condition.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
