apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.6.1
  labels:
    app.kubernetes.io/part-of: keda-operator
  name: scaledobjects.keda.sh
spec:
  group: keda.sh
  names:
    kind: ScaledObject
    listKind: ScaledObjectList
    plural: scaledobjects
    shortNames:
    - so
    singular: scaledobject
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.scaleTargetKind
      name: ScaleTargetKind
      type: string
    - jsonPath: .spec.scaleTargetRef.name
      name: ScaleTargetName
      type: string
    - jsonPath: .spec.minReplicaCount
      name: Min
      type: integer
    - jsonPath: .spec.maxReplicaCount
      name: Max
      type: integer
    - jsonPath: .spec.triggers[*].type
      name: Triggers
      type: string
    - jsonPath: .spec.triggers[*].authenticationRef.name
      name: Authentication
      type: string
    - jsonPath: .status.conditions[?(@.type=="Ready")].status
      name: Ready
      type: string
    - jsonPath: .status.conditions[?(@.type=="Active")].status
      name: Active
      type: string
    - jsonPath: .status.conditions[?(@.type=="Fallback")].status
      name: Fallback
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ScaledObject is a specification for a ScaledObject resource
        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: ScaledObjectSpec is the spec for a ScaledObject resource
            properties:
              advanced:
                description: AdvancedConfig specifies advance scaling options
                properties:
                  horizontalPodAutoscalerConfig:
                    description: HorizontalPodAutoscalerConfig specifies horizontal scale config
                    properties:
                      behavior:
                        description: HorizontalPodAutoscalerBehavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively).
                        properties:
                          scaleDown:
                            description: scaleDown is scaling policy for scaling Down. If not set, the default value is to allow to scale down to minReplicas pods, with a 300 second stabilization window (i.e., the highest recommendation for the last 300sec is used).
                            properties:
                              policies:
                                description: policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid
                                items:
                                  description: HPAScalingPolicy is a single policy which must hold true for a specified past interval.
                                  properties:
                                    periodSeconds:
                                      description: PeriodSeconds specifies the window of time for which the policy should hold true. PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min).
                                      format: int32
                                      type: integer
                                    type:
                                      description: Type is used to specify the scaling policy.
                                      type: string
                                    value:
                                      description: Value contains the amount of change which is permitted by the policy. It must be greater than zero
                                      format: int32
                                      type: integer
                                  required:
                                  - periodSeconds
                                  - type
                                  - value
                                  type: object
                                type: array
                              selectPolicy:
                                description: selectPolicy is used to specify which policy should be used. If not set, the default value MaxPolicySelect is used.
                                type: string
                              stabilizationWindowSeconds:
                                description: 'StabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long).'
                                format: int32
                                type: integer
                            type: object
                          scaleUp:
                            description: 'scaleUp is scaling policy for scaling Up. If not set, the default value is the higher of:   * increase no more than 4 pods per 60 seconds   * double the number of pods per 60 seconds No stabilization is used.'
                            properties:
                              policies:
                                description: policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid
                                items:
                                  description: HPAScalingPolicy is a single policy which must hold true for a specified past interval.
                                  properties:
                                    periodSeconds:
                                      description: PeriodSeconds specifies the window of time for which the policy should hold true. PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min).
                                      format: int32
                                      type: integer
                                    type:
                                      description: Type is used to specify the scaling policy.
                                      type: string
                                    value:
                                      description: Value contains the amount of change which is permitted by the policy. It must be greater than zero
                                      format: int32
                                      type: integer
                                  required:
                                  - periodSeconds
                                  - type
                                  - value
                                  type: object
                                type: array
                              selectPolicy:
                                description: selectPolicy is used to specify which policy should be used. If not set, the default value MaxPolicySelect is used.
                                type: string
                              stabilizationWindowSeconds:
                                description: 'StabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long).'
                                format: int32
                                type: integer
                            type: object
                        type: object
                    type: object
                  restoreToOriginalReplicaCount:
                    type: boolean
                type: object
              cooldownPeriod:
                format: int32
                type: integer
              fallback:
                description: Fallback is the spec for fallback options
                properties:
                  failureThreshold:
                    format: int32
                    type: integer
                  replicas:
                    format: int32
                    type: integer
                required:
                - failureThreshold
                - replicas
                type: object
              idleReplicaCount:
                format: int32
                type: integer
              maxReplicaCount:
                format: int32
                type: integer
              minReplicaCount:
                format: int32
                type: integer
              pollingInterval:
                format: int32
                type: integer
              scaleTargetRef:
                description: ScaleTarget holds the a reference to the scale target Object
                properties:
                  apiVersion:
                    type: string
                  envSourceContainerName:
                    type: string
                  kind:
                    type: string
                  name:
                    type: string
                required:
                - name
                type: object
              triggers:
                items:
                  description: ScaleTriggers reference the scaler that will be used
                  properties:
                    authenticationRef:
                      description: ScaledObjectAuthRef points to the TriggerAuthentication or ClusterTriggerAuthentication object that is used to authenticate the scaler with the environment
                      properties:
                        kind:
                          description: Kind of the resource being referred to. Defaults to TriggerAuthentication.
                          type: string
                        name:
                          type: string
                      required:
                      - name
                      type: object
                    fallback:
                      format: int32
                      type: integer
                    metadata:
                      additionalProperties:
                        type: string
                      type: object
                    name:
                      type: string
                    type:
                      type: string
                  required:
                  - metadata
                  - type
                  type: object
                type: array
            required:
            - scaleTargetRef
            - triggers
            type: object
          status:
            description: ScaledObjectStatus is the status for a ScaledObject resource
            properties:
              conditions:
                description: Conditions an array representation to store multiple Conditions
                items:
                  description: Condition to store the condition state
                  properties:
                    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 condition
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              externalMetricNames:
                items:
                  type: string
                type: array
              health:
                additionalProperties:
                  description: HealthStatus is the status for a ScaledObject's health
                  properties:
                    numberOfFailures:
                      format: int32
                      type: integer
                    status:
                      description: HealthStatusType is an indication of whether the health status is happy or failing
                      type: string
                  type: object
                type: object
              lastActiveTime:
                format: date-time
                type: string
              originalReplicaCount:
                format: int32
                type: integer
              resourceMetricNames:
                items:
                  type: string
                type: array
              scaleTargetGVKR:
                description: GroupVersionKindResource provides unified structure for schema.GroupVersionKind and Resource
                properties:
                  group:
                    type: string
                  kind:
                    type: string
                  resource:
                    type: string
                  version:
                    type: string
                required:
                - group
                - kind
                - resource
                - version
                type: object
              scaleTargetKind:
                type: string
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
