---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: avoidanceactions.ensurance.crane.io
spec:
  group: ensurance.crane.io
  names:
    kind: AvoidanceAction
    listKind: AvoidanceActionList
    plural: avoidanceactions
    shortNames:
    - avoid
    singular: avoidanceaction
  scope: Cluster
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: AvoidanceAction defines Avoidance action
        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:
            properties:
              coolDownSeconds:
                default: 300
                description: |-
                  CoolDownSeconds is the seconds for cool down when do avoidance.
                  Defaults to 300. Minimum value is 1.
                format: int32
                type: integer
              description:
                description: |-
                  Description is an arbitrary string that usually provides guidelines on
                  when this action should be used.
                maxLength: 1024
                type: string
              eviction:
                description: Eviction describes the eviction action
                properties:
                  terminationGracePeriodSeconds:
                    description: |-
                      TerminationGracePeriodSeconds is the duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
                      If this value is nil, the pod's terminationGracePeriodSeconds will be used.
                      Otherwise, this value overrides the value provided by the pod spec.
                      Value must be non-negative integer. The value zero indicates delete immediately.
                    format: int32
                    type: integer
                type: object
              throttle:
                description: Throttle describes the throttling action
                properties:
                  cpuThrottle:
                    properties:
                      minCPURatio:
                        description: |-
                          MinCPURatio is the min of cpu ratio for low level pods,
                          for example: the pod limit is 4096, ratio is 10, the minimum is 409.
                          MinCPURatio range [0,100]
                        format: int32
                        maximum: 100
                        minimum: 0
                        type: integer
                      stepCPURatio:
                        description: |-
                          StepCPURatio is the step of cpu share and limit for once down-size.
                          StepCPURatio range [0,100]
                        format: int32
                        maximum: 100
                        minimum: 0
                        type: integer
                    type: object
                  memoryThrottle:
                    properties:
                      forceGC:
                        description: ForceGC means force gc page cache for pods with
                          low priority
                        type: boolean
                    type: object
                type: object
            type: object
          status:
            description: AvoidanceActionStatus defines the desired status of AvoidanceAction
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
