---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: podqoss.ensurance.crane.io
spec:
  group: ensurance.crane.io
  names:
    kind: PodQOS
    listKind: PodQOSList
    plural: podqoss
    shortNames:
    - pq
    singular: podqos
  scope: Cluster
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        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:
              allowedActions:
                description: |-
                  AllowedActions limits the set of actions that the pods is allowed to perform by NodeQOS
                  Example: ["Throttle", "Evict"]
                items:
                  type: string
                type: array
              labelSelector:
                description: LabelSelector is a label query over pods that should
                  match the PodQOS
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: |-
                        A label selector requirement is a selector that contains values, a key, and an operator that
                        relates the key and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: |-
                            operator represents a key's relationship to a set of values.
                            Valid operators are In, NotIn, Exists and DoesNotExist.
                          type: string
                        values:
                          description: |-
                            values is an array of string values. If the operator is In or NotIn,
                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                            the values array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: |-
                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              podQualityProbe:
                description: QualityProbe defines the way to probe a pod
                properties:
                  httpGet:
                    description: HTTPGet specifies the http request to perform.
                    properties:
                      host:
                        description: |-
                          Host name to connect to, defaults to the pod IP. You probably want to set
                          "Host" in httpHeaders instead.
                        type: string
                      httpHeaders:
                        description: Custom headers to set in the request. HTTP allows
                          repeated headers.
                        items:
                          description: HTTPHeader describes a custom header to be
                            used in HTTP probes
                          properties:
                            name:
                              description: |-
                                The header field name.
                                This will be canonicalized upon output, so case-variant names will be understood as the same header.
                              type: string
                            value:
                              description: The header field value
                              type: string
                          required:
                          - name
                          - value
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      path:
                        description: Path to access on the HTTP server.
                        type: string
                      port:
                        anyOf:
                        - type: integer
                        - type: string
                        description: |-
                          Name or number of the port to access on the container.
                          Number must be in the range 1 to 65535.
                          Name must be an IANA_SVC_NAME.
                        x-kubernetes-int-or-string: true
                      scheme:
                        description: |-
                          Scheme to use for connecting to the host.
                          Defaults to HTTP.
                        type: string
                    required:
                    - port
                    type: object
                  timeoutSeconds:
                    description: |-
                      TimeoutSeconds is the timeout for request.
                      Defaults to 0, no timeout forever
                    format: int32
                    type: integer
                type: object
              resourceQOS:
                description: ResourceQOS describe the QOS limit for cpu,memory,netIO,diskIO
                  and so on.
                properties:
                  cpuQOS:
                    properties:
                      containerPriority:
                        additionalProperties:
                          format: int32
                          type: integer
                        type: object
                      containerRdt:
                        additionalProperties:
                          properties:
                            l3:
                              additionalProperties:
                                type: string
                              type: object
                            mb:
                              additionalProperties:
                                type: string
                              type: object
                          type: object
                        type: object
                      cpuBurst:
                        properties:
                          burstQuota:
                            description: BurstQuota define the burst quota for the
                              pods.
                            type: string
                        type: object
                      cpuPriority:
                        description: |-
                          CPUPriority define the cpu priority for the pods.
                          CPUPriority range [0,7], 0 is the highest level.
                          When the cpu resource is shortage, the low level pods would be throttled
                        format: int32
                        maximum: 7
                        minimum: 0
                        type: integer
                      cpuSet:
                        properties:
                          cpuSet:
                            description: |-
                              none/exclusive/share
                              Provide three polices for cpuset manager:
                              - none: containers of this pod shares a set of cpus which not allocated to exclusive containers
                              - exclusive:  containers of this pod monopolize the allocated CPUs , other containers not allowed to use.
                              - share: containers of this pod runs in theallocated  CPUs , but other containers can also use.
                            type: string
                        type: object
                      htIsolation:
                        properties:
                          enable:
                            type: boolean
                        type: object
                      rdt:
                        properties:
                          l3:
                            additionalProperties:
                              type: string
                            type: object
                          mb:
                            additionalProperties:
                              type: string
                            type: object
                        type: object
                    type: object
                  diskIOQOS:
                    properties:
                      diskIOLimit:
                        properties:
                          readBps:
                            format: int64
                            type: integer
                          readIOps:
                            format: int64
                            type: integer
                          writeBps:
                            format: int64
                            type: integer
                          writeIOps:
                            format: int64
                            type: integer
                        type: object
                      diskIOWeight:
                        properties:
                          weight:
                            format: int64
                            type: integer
                        type: object
                    type: object
                  memoryQOS:
                    properties:
                      memAsyncReclaim:
                        properties:
                          asyncDistanceFactor:
                            format: int64
                            type: integer
                          asyncRatio:
                            format: int64
                            type: integer
                        type: object
                      memPageCacheLimit:
                        properties:
                          pageCacheMaxRatio:
                            format: int64
                            type: integer
                          pageCacheReclaimRatio:
                            format: int64
                            type: integer
                        type: object
                      memPriority:
                        description: |-
                          MemoryPriority define the memory priority for the pods.
                          MemoryPriority range [0,7], 0 is the highest level.
                          When the memory resource is shortage, the low level pods would be OOM Killed earlier
                        format: int32
                        maximum: 7
                        minimum: 0
                        type: integer
                      memWatermark:
                        description: MemWatermark to set memory watermark priority
                        properties:
                          watermarkRatio:
                            type: integer
                        type: object
                      memoryCompression:
                        properties:
                          compressionLevel:
                            maximum: 4
                            minimum: 0
                            type: integer
                          enable:
                            type: boolean
                          oversold:
                            default: Allow
                            enum:
                            - Transparent
                            - None
                            - Allow
                            type: string
                          preference:
                            default: Tiny
                            description: CompressionPreference provides a quick way
                              to set the frequency, ratio and size of compression.
                            enum:
                            - Tiny
                            - Normal
                            - FileOnly
                            - AnonOnly
                            type: string
                        type: object
                    type: object
                  netIOQOS:
                    properties:
                      containersPriority:
                        additionalProperties:
                          format: int64
                          type: integer
                        type: object
                      devNetIOLimits:
                        additionalProperties:
                          properties:
                            rxBps:
                              format: int64
                              type: integer
                            txBps:
                              format: int64
                              type: integer
                          required:
                          - rxBps
                          - txBps
                          type: object
                        type: object
                      netIOLimits:
                        properties:
                          rxBps:
                            format: int64
                            type: integer
                          txBps:
                            format: int64
                            type: integer
                        required:
                        - rxBps
                        - txBps
                        type: object
                      netIOPriority:
                        format: int64
                        type: integer
                      whitelistPorts:
                        properties:
                          lports:
                            type: string
                          rports:
                            type: string
                        required:
                        - lports
                        - rports
                        type: object
                    type: object
                type: object
              scopeSelector:
                description: |-
                  A scope selector represents the AND of the selectors represented
                  by the scoped-resource selector requirements.
                properties:
                  matchExpressions:
                    description: A list of scope selector requirements by scope of
                      the resources.
                    items:
                      description: |-
                        A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator
                        that relates the scope name and values.
                      properties:
                        operator:
                          description: |-
                            Represents a scope's relationship to a set of values.
                            Valid operators are In, NotIn.
                          type: string
                        scopeName:
                          description: The name of the scope that the selector applies
                            to.
                          type: string
                        values:
                          description: |-
                            An array of string values. If the operator is In or NotIn,
                            the values array must be non-empty.
                            This array is replaced during a strategic merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - operator
                      - scopeName
                      type: object
                    type: array
                type: object
            type: object
          status:
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
