
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  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
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  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
              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
                              type: string
                            value:
                              description: The header field value
                              type: string
                          required:
                          - name
                          - value
                          type: object
                        type: array
                      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
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
