---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: analytics.analysis.crane.io
spec:
  group: analysis.crane.io
  names:
    kind: Analytics
    listKind: AnalyticsList
    plural: analytics
    shortNames:
    - analytics
    singular: analytics
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.type
      name: Type
      type: string
    - jsonPath: .spec.completionStrategy.completionStrategyType
      name: Strategy
      type: string
    - jsonPath: .spec.completionStrategy.periodSeconds
      name: PeriodSeconds
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: Analytics represents the configuration of an analytics object.
        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: AnalyticsSpec describes the analytics type, what the analysis
              is for and how often the analysis routine runs.
            properties:
              completionStrategy:
                description: CompletionStrategy indicate how to complete an Analytics.
                properties:
                  completionStrategyType:
                    default: Once
                    description: |-
                      CompletionStrategy indicate the strategy to request an Analytics or Recommendation, value can be "Once" and "Periodical"
                      the default CompletionStrategy is Once.
                    enum:
                    - Once
                    - Periodical
                    type: string
                  periodSeconds:
                    description: PeriodSeconds is the duration in seconds for an Analytics
                      or Recommendation.
                    format: int64
                    type: integer
                type: object
              config:
                additionalProperties:
                  type: string
                description: Override Recommendation configs
                type: object
              resourceSelectors:
                description: ResourceSelector indicates how to select resources(e.g.
                  a set of Deployments) for an Analytics.
                items:
                  description: ResourceSelector describes how the resources will be
                    selected.
                  properties:
                    apiVersion:
                      description: API version of the resource, e.g. "apps/v1"
                      type: string
                    kind:
                      description: Kind of the resource, e.g. Deployment
                      type: string
                    labelSelector:
                      description: |-
                        A label selector is a label query over a set of resources. The result of matchLabels and
                        matchExpressions are ANDed. An empty label selector matches all objects. A null
                        label selector matches no objects.
                      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
                    name:
                      description: Name of the resource.
                      type: string
                  required:
                  - kind
                  type: object
                type: array
              type:
                description: Type is the analysis type, including HPA and resource.
                type: string
            required:
            - resourceSelectors
            - type
            type: object
          status:
            description: AnalyticsStatus represents the current state of an analytics
              item.
            properties:
              conditions:
                description: Conditions is an array of current analytics conditions.
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              lastUpdateTime:
                description: LastUpdateTime is the last time the status updated.
                format: date-time
                type: string
              recommendations:
                description: Recommendations is a list of RecommendationMission that
                  run parallel.
                items:
                  properties:
                    apiVersion:
                      description: API version of the referent.
                      type: string
                    fieldPath:
                      description: |-
                        If referring to a piece of an object instead of an entire object, this string
                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                        For example, if the object reference is to a container within a pod, this would take on a value like:
                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                        the event) or if no container name is specified "spec.containers[2]" (container with
                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                        referencing a part of an object.
                      type: string
                    kind:
                      description: |-
                        Kind of the referent.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                      type: string
                    lastStartTime:
                      description: LastStartTime is last time we start a recommendation
                        mission.
                      format: date-time
                      type: string
                    message:
                      description: Message presents the running message for this mission
                      type: string
                    name:
                      description: |-
                        Name of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      type: string
                    namespace:
                      description: |-
                        Namespace of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                      type: string
                    recommenderRef:
                      description: RecommenderRef presents recommender info for recommendation
                        mission.
                      properties:
                        config:
                          additionalProperties:
                            type: string
                          description: Override Recommendation configs
                          type: object
                        name:
                          description: Recommender's Name
                          type: string
                      required:
                      - name
                      type: object
                    resourceVersion:
                      description: |-
                        Specific resourceVersion to which this reference is made, if any.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                      type: string
                    targetRef:
                      description: ObjectReference contains enough information to
                        let you inspect or modify the referred object.
                      properties:
                        apiVersion:
                          description: API version of the referent.
                          type: string
                        fieldPath:
                          description: |-
                            If referring to a piece of an object instead of an entire object, this string
                            should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                            For example, if the object reference is to a container within a pod, this would take on a value like:
                            "spec.containers{name}" (where "name" refers to the name of the container that triggered
                            the event) or if no container name is specified "spec.containers[2]" (container with
                            index 2 in this pod). This syntax is chosen only to have some well-defined way of
                            referencing a part of an object.
                          type: string
                        kind:
                          description: |-
                            Kind of the referent.
                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                          type: string
                        name:
                          description: |-
                            Name of the referent.
                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                          type: string
                        namespace:
                          description: |-
                            Namespace of the referent.
                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                          type: string
                        resourceVersion:
                          description: |-
                            Specific resourceVersion to which this reference is made, if any.
                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                          type: string
                        uid:
                          description: |-
                            UID of the referent.
                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                    uid:
                      description: |-
                        UID of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                      type: string
                  type: object
                  x-kubernetes-map-type: atomic
                type: array
                x-kubernetes-list-type: atomic
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: configsets.analysis.crane.io
spec:
  group: analysis.crane.io
  names:
    kind: ConfigSet
    listKind: ConfigSetList
    plural: configsets
    shortNames:
    - cs
    singular: configset
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ConfigSet represents the configuration set for recommendation.
        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
          configs:
            items:
              properties:
                properties:
                  additionalProperties:
                    type: string
                  type: object
                targets:
                  items:
                    properties:
                      kind:
                        type: string
                      name:
                        type: string
                      namespace:
                        type: string
                    type: object
                  type: array
              type: object
            type: array
          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
        type: object
    served: true
    storage: true
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: recommendationrules.analysis.crane.io
spec:
  group: analysis.crane.io
  names:
    kind: RecommendationRule
    listKind: RecommendationRuleList
    plural: recommendationrules
    shortNames:
    - rr
    singular: recommendationrule
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.runInterval
      name: RunInterval
      type: string
    - description: CreationTimestamp is a timestamp representing the server time when
        this object was created.
      jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: RecommendationRule represents the configuration of an RecommendationRule
          object.
        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: RecommendationRuleSpec defines resources and runInterval
              to recommend
            properties:
              namespaceSelector:
                description: NamespaceSelector indicates resource namespaces to select
                  from
                properties:
                  any:
                    description: Select all namespace if true
                    type: boolean
                  matchNames:
                    description: List of namespace names to select from.
                    items:
                      type: string
                    type: array
                type: object
              recommenders:
                description: List of recommender type to run
                items:
                  description: Recommender referring to the Recommender in RecommendationConfiguration
                  properties:
                    config:
                      additionalProperties:
                        type: string
                      description: Override Recommendation configs
                      type: object
                    name:
                      description: Recommender's Name
                      type: string
                  required:
                  - name
                  type: object
                type: array
              resourceSelectors:
                description: ResourceSelector indicates how to select resources(e.g.
                  a set of Deployments) for a Recommendation.
                items:
                  description: ResourceSelector describes how the resources will be
                    selected.
                  properties:
                    apiVersion:
                      description: API version of the resource, e.g. "apps/v1"
                      type: string
                    kind:
                      description: Kind of the resource, e.g. Deployment
                      type: string
                    labelSelector:
                      description: |-
                        A label selector is a label query over a set of resources. The result of matchLabels and
                        matchExpressions are ANDed. An empty label selector matches all objects. A null
                        label selector matches no objects.
                      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
                    name:
                      description: Name of the resource.
                      type: string
                  required:
                  - kind
                  type: object
                type: array
              runInterval:
                description: RunInterval between two recommendation
                type: string
            required:
            - namespaceSelector
            - recommenders
            - resourceSelectors
            type: object
          status:
            description: RecommendationRuleStatus represents the current state of
              an RecommendationRule item.
            properties:
              lastUpdateTime:
                description: LastUpdateTime is the last time the status updated.
                format: date-time
                type: string
              recommendations:
                description: Recommendations is a list of RecommendationMission that
                  run parallel.
                items:
                  properties:
                    apiVersion:
                      description: API version of the referent.
                      type: string
                    fieldPath:
                      description: |-
                        If referring to a piece of an object instead of an entire object, this string
                        should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                        For example, if the object reference is to a container within a pod, this would take on a value like:
                        "spec.containers{name}" (where "name" refers to the name of the container that triggered
                        the event) or if no container name is specified "spec.containers[2]" (container with
                        index 2 in this pod). This syntax is chosen only to have some well-defined way of
                        referencing a part of an object.
                      type: string
                    kind:
                      description: |-
                        Kind of the referent.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                      type: string
                    lastStartTime:
                      description: LastStartTime is last time we start a recommendation
                        mission.
                      format: date-time
                      type: string
                    message:
                      description: Message presents the running message for this mission
                      type: string
                    name:
                      description: |-
                        Name of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      type: string
                    namespace:
                      description: |-
                        Namespace of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                      type: string
                    recommenderRef:
                      description: RecommenderRef presents recommender info for recommendation
                        mission.
                      properties:
                        config:
                          additionalProperties:
                            type: string
                          description: Override Recommendation configs
                          type: object
                        name:
                          description: Recommender's Name
                          type: string
                      required:
                      - name
                      type: object
                    resourceVersion:
                      description: |-
                        Specific resourceVersion to which this reference is made, if any.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                      type: string
                    targetRef:
                      description: ObjectReference contains enough information to
                        let you inspect or modify the referred object.
                      properties:
                        apiVersion:
                          description: API version of the referent.
                          type: string
                        fieldPath:
                          description: |-
                            If referring to a piece of an object instead of an entire object, this string
                            should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                            For example, if the object reference is to a container within a pod, this would take on a value like:
                            "spec.containers{name}" (where "name" refers to the name of the container that triggered
                            the event) or if no container name is specified "spec.containers[2]" (container with
                            index 2 in this pod). This syntax is chosen only to have some well-defined way of
                            referencing a part of an object.
                          type: string
                        kind:
                          description: |-
                            Kind of the referent.
                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                          type: string
                        name:
                          description: |-
                            Name of the referent.
                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                          type: string
                        namespace:
                          description: |-
                            Namespace of the referent.
                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                          type: string
                        resourceVersion:
                          description: |-
                            Specific resourceVersion to which this reference is made, if any.
                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                          type: string
                        uid:
                          description: |-
                            UID of the referent.
                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                          type: string
                      type: object
                      x-kubernetes-map-type: atomic
                    uid:
                      description: |-
                        UID of the referent.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                      type: string
                  type: object
                  x-kubernetes-map-type: atomic
                type: array
                x-kubernetes-list-type: atomic
              runNumber:
                description: RunNumber is the numbers of runs
                format: int32
                type: integer
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: recommendations.analysis.crane.io
spec:
  group: analysis.crane.io
  names:
    kind: Recommendation
    listKind: RecommendationList
    plural: recommendations
    shortNames:
    - recommend
    singular: recommendation
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.type
      name: Type
      type: string
    - jsonPath: .spec.targetRef.kind
      name: TargetKind
      type: string
    - jsonPath: .spec.targetRef.namespace
      name: TargetNamespace
      type: string
    - jsonPath: .spec.targetRef.name
      name: TargetName
      type: string
    - jsonPath: .spec.completionStrategy.completionStrategyType
      name: Strategy
      type: string
    - jsonPath: .spec.completionStrategy.periodSeconds
      name: PeriodSeconds
      type: string
    - jsonPath: .spec.adoptionType
      name: AdoptionType
      type: string
    - description: CreationTimestamp is a timestamp representing the server time when
        this object was created.
      jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: Recommendation represents the configuration of a single recommendation.
        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: RecommendationSpec describes the recommendation type and
              what the recommendation is for.
            properties:
              adoptionType:
                default: StatusAndAnnotation
                description: |-
                  AdoptionType indicate how to adopt recommendation value to target.
                  the default AdoptionType is StatusAndAnnotation.
                enum:
                - Status
                - StatusAndAnnotation
                - Auto
                type: string
              completionStrategy:
                description: |-
                  CompletionStrategy indicate how to complete a recommendation.
                  the default CompletionStrategy is Once.
                properties:
                  completionStrategyType:
                    default: Once
                    description: |-
                      CompletionStrategy indicate the strategy to request an Analytics or Recommendation, value can be "Once" and "Periodical"
                      the default CompletionStrategy is Once.
                    enum:
                    - Once
                    - Periodical
                    type: string
                  periodSeconds:
                    description: PeriodSeconds is the duration in seconds for an Analytics
                      or Recommendation.
                    format: int64
                    type: integer
                type: object
              targetRef:
                description: ObjectReference contains enough information to let you
                  inspect or modify the referred object.
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  fieldPath:
                    description: |-
                      If referring to a piece of an object instead of an entire object, this string
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                    type: string
                  resourceVersion:
                    description: |-
                      Specific resourceVersion to which this reference is made, if any.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                    type: string
                  uid:
                    description: |-
                      UID of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              type:
                type: string
            required:
            - targetRef
            - type
            type: object
          status:
            description: RecommendationStatus represents the current state of a recommendation.
            properties:
              action:
                type: string
              conditions:
                description: Conditions is an array of current recommendation conditions.
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              currentInfo:
                type: string
              description:
                type: string
              lastUpdateTime:
                description: LastUpdateTime is last time we got an update on this
                  status.
                format: date-time
                type: string
              recommendedInfo:
                type: string
              recommendedValue:
                type: string
              targetRef:
                description: ObjectReference contains enough information to let you
                  inspect or modify the referred object.
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  fieldPath:
                    description: |-
                      If referring to a piece of an object instead of an entire object, this string
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                    type: string
                  resourceVersion:
                    description: |-
                      Specific resourceVersion to which this reference is made, if any.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                    type: string
                  uid:
                    description: |-
                      UID of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: effectivehorizontalpodautoscalers.autoscaling.crane.io
spec:
  group: autoscaling.crane.io
  names:
    kind: EffectiveHorizontalPodAutoscaler
    listKind: EffectiveHorizontalPodAutoscalerList
    plural: effectivehorizontalpodautoscalers
    shortNames:
    - ehpa
    singular: effectivehorizontalpodautoscaler
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The scale strategy of ahpa.
      jsonPath: .spec.scaleStrategy
      name: STRATEGY
      type: string
    - description: The min replicas of target workload.
      jsonPath: .spec.minReplicas
      name: MINPODS
      type: integer
    - description: The max replicas of target workload.
      jsonPath: .spec.maxReplicas
      name: MAXPODS
      type: integer
    - description: The specific replicas of target workload.
      jsonPath: .spec.specificReplicas
      name: SPECIFICPODS
      type: integer
    - description: The desired replicas of target workload.
      jsonPath: .status.expectReplicas
      name: REPLICAS
      type: integer
    - description: CreationTimestamp is a timestamp representing the server time when
        this object was created.
      jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: EffectiveHorizontalPodAutoscaler is the Schema for the effectivehorizontalpodautoscaler
          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: EffectiveHorizontalPodAutoscalerSpec defines the desired
              spec of EffectiveHorizontalPodAutoscaler
            properties:
              behavior:
                description: |-
                  behavior configures the scaling behavior of the target
                  in both Up and Down directions (scaleUp and scaleDown fields respectively).
                  If not set, the default HPAScalingRules for scale up and scale down are used.
                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
                        x-kubernetes-list-type: atomic
                      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
                        x-kubernetes-list-type: atomic
                      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
              crons:
                description: Crons contains cron specs to use crontab to scale workloads
                items:
                  description: CronSpec defines the cron scale info
                  properties:
                    description:
                      description: Description is the description of the cron
                      type: string
                    end:
                      description: |-
                        End is a crontab format, see https://en.wikipedia.org/wiki/Cron
                        Define the cron schedule end, when it ended, EHPA will stop to trigger hpa to scale.
                        Between the start and end, EHPA will keep replicas of the targetRef to equal to TargetReplicas, a scaling is a process rather than a instant action, make it as a final consistent system.
                      type: string
                    name:
                      description: Name is the identifier of this cron scale. name
                        must be unique in the same ehpa
                      type: string
                    start:
                      description: |-
                        Start is a crontab format, see https://en.wikipedia.org/wiki/Cron
                        Define the cron schedule start, when the cron start is triggered, hpa will reconcile targetRef to scale to the TargetReplicas continuously.
                      type: string
                    targetReplicas:
                      description: TargetReplicas is the target replicas when it is
                        time to do scale between cron start and end
                      format: int32
                      type: integer
                    timezone:
                      description: TimeZone is the time zone of this cron schedule
                        running in, default is UTC time.
                      type: string
                  type: object
                type: array
              maxReplicas:
                description: |-
                  MaxReplicas is the upper limit replicas to the scale target which the autoscaler can scale up to.
                  It cannot be less that MinReplicas.
                format: int32
                type: integer
              metrics:
                description: |-
                  metrics contains the specifications for which to use to calculate the
                  desired replica count (the maximum replica count across all metrics will
                  be used).  The desired replica count is calculated multiplying the
                  ratio between the target value and the current value by the current
                  number of pods.  Ergo, metrics used must decrease as the pod count is
                  increased, and vice-versa.  See the individual metric source types for
                  more information about how each type of metric must respond.
                  If not set, the default metric will be set to 80% average CPU utilization.
                items:
                  description: |-
                    MetricSpec specifies how to scale based on a single metric
                    (only `type` and one other matching field should be set at once).
                  properties:
                    containerResource:
                      description: |-
                        container resource refers to a resource metric (such as those specified in
                        requests and limits) known to Kubernetes describing a single container in
                        each pod of the current scale target (e.g. CPU or memory). Such metrics are
                        built in to Kubernetes, and have special scaling options on top of those
                        available to normal per-pod metrics using the "pods" source.
                        This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.
                      properties:
                        container:
                          description: container is the name of the container in the
                            pods of the scaling target
                          type: string
                        name:
                          description: name is the name of the resource in question.
                          type: string
                        target:
                          description: target specifies the target value for the given
                            metric
                          properties:
                            averageUtilization:
                              description: |-
                                averageUtilization is the target value of the average of the
                                resource metric across all relevant pods, represented as a percentage of
                                the requested value of the resource for the pods.
                                Currently only valid for Resource metric source type
                              format: int32
                              type: integer
                            averageValue:
                              anyOf:
                              - type: integer
                              - type: string
                              description: |-
                                averageValue is the target value of the average of the
                                metric across all relevant pods (as a quantity)
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            type:
                              description: type represents whether the metric type
                                is Utilization, Value, or AverageValue
                              type: string
                            value:
                              anyOf:
                              - type: integer
                              - type: string
                              description: value is the target value of the metric
                                (as a quantity).
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                          required:
                          - type
                          type: object
                      required:
                      - container
                      - name
                      - target
                      type: object
                    external:
                      description: |-
                        external refers to a global metric that is not associated
                        with any Kubernetes object. It allows autoscaling based on information
                        coming from components running outside of cluster
                        (for example length of queue in cloud messaging service, or
                        QPS from loadbalancer running outside of cluster).
                      properties:
                        metric:
                          description: metric identifies the target metric by name
                            and selector
                          properties:
                            name:
                              description: name is the name of the given metric
                              type: string
                            selector:
                              description: |-
                                selector is the string-encoded form of a standard kubernetes label selector for the given metric
                                When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
                                When unset, just the metricName will be used to gather metrics.
                              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
                          required:
                          - name
                          type: object
                        target:
                          description: target specifies the target value for the given
                            metric
                          properties:
                            averageUtilization:
                              description: |-
                                averageUtilization is the target value of the average of the
                                resource metric across all relevant pods, represented as a percentage of
                                the requested value of the resource for the pods.
                                Currently only valid for Resource metric source type
                              format: int32
                              type: integer
                            averageValue:
                              anyOf:
                              - type: integer
                              - type: string
                              description: |-
                                averageValue is the target value of the average of the
                                metric across all relevant pods (as a quantity)
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            type:
                              description: type represents whether the metric type
                                is Utilization, Value, or AverageValue
                              type: string
                            value:
                              anyOf:
                              - type: integer
                              - type: string
                              description: value is the target value of the metric
                                (as a quantity).
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                          required:
                          - type
                          type: object
                      required:
                      - metric
                      - target
                      type: object
                    object:
                      description: |-
                        object refers to a metric describing a single kubernetes object
                        (for example, hits-per-second on an Ingress object).
                      properties:
                        describedObject:
                          description: CrossVersionObjectReference contains enough
                            information to let you identify the referred resource.
                          properties:
                            apiVersion:
                              description: apiVersion is the API version of the referent
                              type: string
                            kind:
                              description: 'kind is the kind of the referent; More
                                info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                              type: string
                            name:
                              description: 'name is the name of the referent; More
                                info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                              type: string
                          required:
                          - kind
                          - name
                          type: object
                        metric:
                          description: metric identifies the target metric by name
                            and selector
                          properties:
                            name:
                              description: name is the name of the given metric
                              type: string
                            selector:
                              description: |-
                                selector is the string-encoded form of a standard kubernetes label selector for the given metric
                                When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
                                When unset, just the metricName will be used to gather metrics.
                              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
                          required:
                          - name
                          type: object
                        target:
                          description: target specifies the target value for the given
                            metric
                          properties:
                            averageUtilization:
                              description: |-
                                averageUtilization is the target value of the average of the
                                resource metric across all relevant pods, represented as a percentage of
                                the requested value of the resource for the pods.
                                Currently only valid for Resource metric source type
                              format: int32
                              type: integer
                            averageValue:
                              anyOf:
                              - type: integer
                              - type: string
                              description: |-
                                averageValue is the target value of the average of the
                                metric across all relevant pods (as a quantity)
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            type:
                              description: type represents whether the metric type
                                is Utilization, Value, or AverageValue
                              type: string
                            value:
                              anyOf:
                              - type: integer
                              - type: string
                              description: value is the target value of the metric
                                (as a quantity).
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                          required:
                          - type
                          type: object
                      required:
                      - describedObject
                      - metric
                      - target
                      type: object
                    pods:
                      description: |-
                        pods refers to a metric describing each pod in the current scale target
                        (for example, transactions-processed-per-second).  The values will be
                        averaged together before being compared to the target value.
                      properties:
                        metric:
                          description: metric identifies the target metric by name
                            and selector
                          properties:
                            name:
                              description: name is the name of the given metric
                              type: string
                            selector:
                              description: |-
                                selector is the string-encoded form of a standard kubernetes label selector for the given metric
                                When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
                                When unset, just the metricName will be used to gather metrics.
                              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
                          required:
                          - name
                          type: object
                        target:
                          description: target specifies the target value for the given
                            metric
                          properties:
                            averageUtilization:
                              description: |-
                                averageUtilization is the target value of the average of the
                                resource metric across all relevant pods, represented as a percentage of
                                the requested value of the resource for the pods.
                                Currently only valid for Resource metric source type
                              format: int32
                              type: integer
                            averageValue:
                              anyOf:
                              - type: integer
                              - type: string
                              description: |-
                                averageValue is the target value of the average of the
                                metric across all relevant pods (as a quantity)
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            type:
                              description: type represents whether the metric type
                                is Utilization, Value, or AverageValue
                              type: string
                            value:
                              anyOf:
                              - type: integer
                              - type: string
                              description: value is the target value of the metric
                                (as a quantity).
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                          required:
                          - type
                          type: object
                      required:
                      - metric
                      - target
                      type: object
                    resource:
                      description: |-
                        resource refers to a resource metric (such as those specified in
                        requests and limits) known to Kubernetes describing each pod in the
                        current scale target (e.g. CPU or memory). Such metrics are built in to
                        Kubernetes, and have special scaling options on top of those available
                        to normal per-pod metrics using the "pods" source.
                      properties:
                        name:
                          description: name is the name of the resource in question.
                          type: string
                        target:
                          description: target specifies the target value for the given
                            metric
                          properties:
                            averageUtilization:
                              description: |-
                                averageUtilization is the target value of the average of the
                                resource metric across all relevant pods, represented as a percentage of
                                the requested value of the resource for the pods.
                                Currently only valid for Resource metric source type
                              format: int32
                              type: integer
                            averageValue:
                              anyOf:
                              - type: integer
                              - type: string
                              description: |-
                                averageValue is the target value of the average of the
                                metric across all relevant pods (as a quantity)
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            type:
                              description: type represents whether the metric type
                                is Utilization, Value, or AverageValue
                              type: string
                            value:
                              anyOf:
                              - type: integer
                              - type: string
                              description: value is the target value of the metric
                                (as a quantity).
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                          required:
                          - type
                          type: object
                      required:
                      - name
                      - target
                      type: object
                    type:
                      description: |-
                        type is the type of metric source.  It should be one of "ContainerResource", "External",
                        "Object", "Pods" or "Resource", each mapping to a matching field in the object.
                        Note: "ContainerResource" type is available on when the feature-gate
                        HPAContainerMetrics is enabled
                      type: string
                  required:
                  - type
                  type: object
                type: array
              minReplicas:
                default: 1
                description: |-
                  MinReplicas is the lower limit replicas to the scale target which the autoscaler can scale down to.
                  the default MinReplicas is 1.
                format: int32
                type: integer
              prediction:
                description: |-
                  Prediction defines configurations for predict resources.
                  If unspecified, defaults don't enable prediction.
                properties:
                  predictionAlgorithm:
                    description: PredictionAlgorithm contains all algorithm config
                      that provider by prediction api.
                    properties:
                      algorithmType:
                        description: AlgorithmType specifies algorithm to predict
                          resource
                        type: string
                      dsp:
                        properties:
                          estimators:
                            description: Estimator
                            properties:
                              fft:
                                items:
                                  properties:
                                    highFrequencyThreshold:
                                      type: string
                                    lowAmplitudeThreshold:
                                      type: string
                                    marginFraction:
                                      type: string
                                    maxNumOfSpectrumItems:
                                      format: int32
                                      type: integer
                                    minNumOfSpectrumItems:
                                      format: int32
                                      type: integer
                                  type: object
                                type: array
                              maxValue:
                                items:
                                  properties:
                                    marginFraction:
                                      type: string
                                  type: object
                                type: array
                            type: object
                          historyLength:
                            description: HistoryLength describes how long back should
                              be queried against provider to get historical metrics
                              for prediction.
                            type: string
                          sampleInterval:
                            description: SampleInterval is the sampling interval of
                              metrics.
                            type: string
                        type: object
                      percentile:
                        properties:
                          aggregated:
                            type: boolean
                          histogram:
                            properties:
                              bucketSize:
                                type: string
                              bucketSizeGrowthRatio:
                                type: string
                              epsilon:
                                type: string
                              firstBucketSize:
                                type: string
                              halfLife:
                                type: string
                              maxValue:
                                type: string
                            type: object
                          historyLength:
                            type: string
                          marginFraction:
                            type: string
                          minSampleWeight:
                            type: string
                          percentile:
                            type: string
                          sampleInterval:
                            type: string
                          targetUtilization:
                            type: string
                        type: object
                    type: object
                  predictionWindowSeconds:
                    default: 3600
                    description: PredictionWindowSeconds is the time window seconds
                      to predict metrics in the future.
                    format: int32
                    type: integer
                type: object
              scaleStrategy:
                default: Auto
                description: |-
                  ScaleStrategy indicate the strategy to scaling target, value can be "Auto" and "Preview"
                  the default ScaleStrategy is Auto.
                enum:
                - Auto
                - Preview
                type: string
              scaleTargetRef:
                description: ScaleTargetRef is the reference to the workload that
                  should be scaled.
                properties:
                  apiVersion:
                    description: apiVersion is the API version of the referent
                    type: string
                  kind:
                    description: 'kind is the kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                    type: string
                  name:
                    description: 'name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                required:
                - kind
                - name
                type: object
              specificReplicas:
                description: |-
                  SpecificReplicas specify the target replicas if ScaleStrategy is Preview
                  If not set, when ScaleStrategy is setting to Preview, it will just stop scaling
                format: int32
                type: integer
            required:
            - maxReplicas
            - scaleTargetRef
            type: object
          status:
            properties:
              conditions:
                description: Conditions is an array of current autoscaler conditions.
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              currentReplicas:
                description: CurrentReplicas is the current replicas to the scale
                  target.
                format: int32
                type: integer
              expectReplicas:
                description: ExpectReplicas is the expected replicas to scale to.
                format: int32
                type: integer
              lastScaleTime:
                description: LastScaleTime indicates the last time to execute scaling.
                format: date-time
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: effectiveverticalpodautoscalers.autoscaling.crane.io
spec:
  group: autoscaling.crane.io
  names:
    kind: EffectiveVerticalPodAutoscaler
    listKind: EffectiveVerticalPodAutoscalerList
    plural: effectiveverticalpodautoscalers
    shortNames:
    - evpa
    singular: effectiveverticalpodautoscaler
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: CreationTimestamp is a timestamp representing the server time when
        this object was created.
      jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: EffectiveVerticalPodAutoscaler is the Schema for the effectiveverticalpodautoscaler
          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:
            properties:
              resourceEstimators:
                description: ResourceEstimators Contains the specifications for estimators.
                items:
                  description: ResourceEstimator defines the spec for resource estimator
                  properties:
                    config:
                      additionalProperties:
                        type: string
                      description: |-
                        Config contains key value pairs for this estimator
                        for example, we can define configs like:
                        key1: value1
                        key2: value2
                        these configs will pass into estimators when execute scaling
                      type: object
                    priority:
                      description: Priority defines the priority for this estimator.
                      type: integer
                    type:
                      description: Type defines the type for this estimator.
                      type: string
                  type: object
                type: array
              resourcePolicy:
                description: |-
                  Controls how the autoscaler computes recommended resources.
                  The resource policy may be used to set constraints on the recommendations
                  for individual containers. If not specified, the autoscaler computes recommended
                  resources for all containers in the pod, without additional constraints.
                properties:
                  containerPolicies:
                    description: Per-container resource policies.
                    items:
                      description: |-
                        ContainerResourcePolicy controls how autoscaler computes the recommended
                        resources for a specific container.
                      properties:
                        containerName:
                          description: |-
                            Name of the container or DefaultContainerResourcePolicy, in which
                            case the policy is used by the containers that don't have their own
                            policy specified.
                          type: string
                        controlledResources:
                          description: |-
                            Specifies the type of recommendations that will be computed
                            (and possibly applied) by VPA.
                            If not specified, the default of [ResourceCPU, ResourceMemory] will be used.
                          items:
                            type: string
                          type: array
                        controlledValues:
                          description: |-
                            Specifies which resource values should be controlled.
                            The default is "RequestsAndLimits".
                          enum:
                          - RequestsAndLimits
                          - RequestsOnly
                          type: string
                        maxAllowed:
                          additionalProperties:
                            anyOf:
                            - type: integer
                            - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Specifies the maximum amount of resources that will be recommended
                            for the container. The default is no maximum.
                          type: object
                        minAllowed:
                          additionalProperties:
                            anyOf:
                            - type: integer
                            - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Specifies the minimal amount of resources that will be recommended
                            for the container. The default is no minimum.
                          type: object
                        scaleDownPolicy:
                          description: ScaleDownPolicy define the policy when scale
                            down containers resources.
                          properties:
                            metricThresholds:
                              additionalProperties:
                                properties:
                                  utilization:
                                    description: Utilization is the target value of
                                      resource recommended ratio.
                                    format: int32
                                    type: integer
                                type: object
                              description: |-
                                MetricThresholds defines resource usages thresholds for vertical scaling.
                                Only if actual usage is reached to threshold, autoscaling estimator will be triggered.
                              type: object
                            mode:
                              allOf:
                              - enum:
                                - Auto
                                - "Off"
                              - enum:
                                - Auto
                                - "Off"
                              default: Auto
                              description: |-
                                ScaleMode controls Whether autoscaler is enabled for the container.
                                The default is "Auto".
                              type: string
                            stabilizationWindowSeconds:
                              default: 3600
                              description: |-
                                StabilizationWindowSeconds is the number of seconds for which past vertical scaling
                                considered while scaling up or scaling down.
                              format: int32
                              type: integer
                          type: object
                        scaleUpPolicy:
                          description: ScaleUpPolicy define the policy when scale
                            up containers resources.
                          properties:
                            metricThresholds:
                              additionalProperties:
                                properties:
                                  utilization:
                                    description: Utilization is the target value of
                                      resource recommended ratio.
                                    format: int32
                                    type: integer
                                type: object
                              description: |-
                                MetricThresholds defines resource usages thresholds for vertical scaling.
                                Only if actual usage is reached to threshold, autoscaling estimator will be triggered.
                              type: object
                            mode:
                              allOf:
                              - enum:
                                - Auto
                                - "Off"
                              - enum:
                                - Auto
                                - "Off"
                              default: Auto
                              description: |-
                                ScaleMode controls Whether autoscaler is enabled for the container.
                                The default is "Auto".
                              type: string
                            stabilizationWindowSeconds:
                              default: 3600
                              description: |-
                                StabilizationWindowSeconds is the number of seconds for which past vertical scaling
                                considered while scaling up or scaling down.
                              format: int32
                              type: integer
                          type: object
                      type: object
                    type: array
                type: object
              targetRef:
                description: |-
                  TargetRef points to the controller managing the set of pods for the
                  autoscaler to control - e.g. Deployment, StatefulSet. VerticalPodAutoscaler
                  can be targeted at controller implementing scale subresource (the pod set is
                  retrieved from the controller's ScaleStatus) or some well known controllers
                  (e.g. for DaemonSet the pod set is read from the controller's spec).
                  If VerticalPodAutoscaler cannot use specified target it will report
                  ConfigUnsupported condition.
                  Note that VerticalPodAutoscaler does not require full implementation
                  of scale subresource - it will not use it to modify the replica count.
                  The only thing retrieved is a label selector matching pods grouped by
                  the target resource.
                properties:
                  apiVersion:
                    description: apiVersion is the API version of the referent
                    type: string
                  kind:
                    description: 'kind is the kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                    type: string
                  name:
                    description: 'name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                required:
                - kind
                - name
                type: object
              updatePolicy:
                description: |-
                  Describes the rules on how changes are applied to the pods.
                  If not specified, all fields in the `PodUpdatePolicy` are set to their
                  default values.
                properties:
                  minReplicas:
                    description: |-
                      Minimal number of replicas which need to be alive for Updater to attempt
                      pod eviction (pending other checks like PDB). Only positive values are
                      allowed. Overrides global '--min-replicas' flag.
                    format: int32
                    type: integer
                  updateMode:
                    description: |-
                      Controls when autoscaler applies changes to the pod resources.
                      The default is 'Auto'.
                    enum:
                    - "Off"
                    - Initial
                    - Recreate
                    - Auto
                    type: string
                type: object
            required:
            - targetRef
            type: object
          status:
            description: EffectiveVerticalPodAutoscalerStatus describes the runtime
              state of the autoscaler.
            properties:
              conditions:
                description: Conditions is an array of current autoscaler conditions.
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              currentEstimators:
                description: CurrentEstimators is the last state of the estimators
                  used by this autoscaler
                items:
                  description: ResourceEstimatorStatus contains state for resource
                    estimator
                  properties:
                    lastUpdateTime:
                      description: LastUpdateTime is the last time the status updated.
                      format: date-time
                      type: string
                    recommendation:
                      description: |-
                        The most recently computed amount of resources recommended by the
                        estimator for the controlled pods.
                      properties:
                        containerRecommendations:
                          description: Resources recommended by the autoscaler for
                            each container.
                          items:
                            description: |-
                              RecommendedContainerResources is the recommendation of resources computed by
                              autoscaler for a specific container. Respects the container resource policy
                              if present in the spec. In particular the recommendation is not produced for
                              containers with `ContainerScalingMode` set to 'Off'.
                            properties:
                              containerName:
                                description: Name of the container.
                                type: string
                              lowerBound:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Minimum recommended amount of resources. Observes ContainerResourcePolicy.
                                  This amount is not guaranteed to be sufficient for the application to operate in a stable way, however
                                  running with less resources is likely to have significant impact on performance/availability.
                                type: object
                              target:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: Recommended amount of resources. Observes
                                  ContainerResourcePolicy.
                                type: object
                              uncappedTarget:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  The most recent recommended resources target computed by the autoscaler
                                  for the controlled pods, based only on actual resource usage, not taking
                                  into account the ContainerResourcePolicy.
                                  May differ from the Recommendation if the actual resource usage causes
                                  the target to violate the ContainerResourcePolicy (lower than MinAllowed
                                  or higher that MaxAllowed).
                                  Used only as status indication, will not affect actual resource assignment.
                                type: object
                              upperBound:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Maximum recommended amount of resources. Observes ContainerResourcePolicy.
                                  Any resources allocated beyond this value are likely wasted. This value may be larger than the maximum
                                  amount of application is actually capable of consuming.
                                type: object
                            required:
                            - target
                            type: object
                          type: array
                      type: object
                    type:
                      description: Type defines the type for this estimator.
                      type: string
                  type: object
                type: array
              recommendation:
                description: |-
                  The most recently computed amount of resources recommended by the
                  autoscaler for the controlled pods.
                properties:
                  containerRecommendations:
                    description: Resources recommended by the autoscaler for each
                      container.
                    items:
                      description: |-
                        RecommendedContainerResources is the recommendation of resources computed by
                        autoscaler for a specific container. Respects the container resource policy
                        if present in the spec. In particular the recommendation is not produced for
                        containers with `ContainerScalingMode` set to 'Off'.
                      properties:
                        containerName:
                          description: Name of the container.
                          type: string
                        lowerBound:
                          additionalProperties:
                            anyOf:
                            - type: integer
                            - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Minimum recommended amount of resources. Observes ContainerResourcePolicy.
                            This amount is not guaranteed to be sufficient for the application to operate in a stable way, however
                            running with less resources is likely to have significant impact on performance/availability.
                          type: object
                        target:
                          additionalProperties:
                            anyOf:
                            - type: integer
                            - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: Recommended amount of resources. Observes ContainerResourcePolicy.
                          type: object
                        uncappedTarget:
                          additionalProperties:
                            anyOf:
                            - type: integer
                            - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            The most recent recommended resources target computed by the autoscaler
                            for the controlled pods, based only on actual resource usage, not taking
                            into account the ContainerResourcePolicy.
                            May differ from the Recommendation if the actual resource usage causes
                            the target to violate the ContainerResourcePolicy (lower than MinAllowed
                            or higher that MaxAllowed).
                            Used only as status indication, will not affect actual resource assignment.
                          type: object
                        upperBound:
                          additionalProperties:
                            anyOf:
                            - type: integer
                            - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Maximum recommended amount of resources. Observes ContainerResourcePolicy.
                            Any resources allocated beyond this value are likely wasted. This value may be larger than the maximum
                            amount of application is actually capable of consuming.
                          type: object
                      required:
                      - target
                      type: object
                    type: array
                type: object
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: substitutes.autoscaling.crane.io
spec:
  group: autoscaling.crane.io
  names:
    kind: Substitute
    listKind: SubstituteList
    plural: substitutes
    shortNames:
    - subs
    singular: substitute
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The replicas presents the dryRun result.
      jsonPath: .status.replicas
      name: REPLICAS
      type: integer
    - description: CreationTimestamp is a timestamp representing the server time when
        this object was created.
      jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: Substitute is the Schema for the Substitute 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: SubstituteSpec defines the desired spec of Substitute
            properties:
              replicas:
                description: Replicas is used by presents dryRun replicas for SubstituteTargetRef.
                format: int32
                type: integer
              substituteTargetRef:
                description: SubstituteTargetRef is the reference to the workload
                  that should be Substituted.
                properties:
                  apiVersion:
                    description: apiVersion is the API version of the referent
                    type: string
                  kind:
                    description: 'kind is the kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                    type: string
                  name:
                    description: 'name is the name of the referent; More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                required:
                - kind
                - name
                type: object
            required:
            - substituteTargetRef
            type: object
          status:
            description: SubstituteStatus defines the status of Substitute
            properties:
              labelSelector:
                description: LabelSelector is label selectors that is sync with SubstituteTargetRef's
                  labelSelector which used by HPA.
                type: string
              replicas:
                description: |-
                  Replicas is used by presents dryRun replicas for SubstituteTargetRef.
                  status.replicas should be equal to spec.replicas.
                format: int32
                type: integer
            type: object
        type: object
    served: true
    storage: true
    subresources:
      scale:
        labelSelectorPath: .status.labelSelector
        specReplicasPath: .spec.replicas
        statusReplicasPath: .status.replicas
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: cloudcarbonfootprints.co2e.crane.io
spec:
  group: co2e.crane.io
  names:
    kind: CloudCarbonFootprint
    listKind: CloudCarbonFootprintList
    plural: cloudcarbonfootprints
    shortNames:
    - ccf
    singular: cloudcarbonfootprint
  scope: Cluster
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: CloudCarbonFootprint defines carbon footprint configuration of
          a datacenter
        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:
              computeConfig:
                description: |-
                  compute power infos
                  when there are multiple node types in the cluster, define multiple compute configs
                items:
                  properties:
                    cpuEnergyConsumptionRatio:
                      description: |-
                        sometimes it's hard to measure memory, storage, and networking energy consumption
                        CPUEnergyConsumptionRatio can be defined to specify the percentage of cpu energy consumption vs all IT equipments consumption
                      type: string
                    maxWattsPerCPU:
                      description: power when cpu utilization is 100%
                      type: string
                    memoryWattsPerGB:
                      description: power of per BG memory
                      type: string
                    minWattsPerCPU:
                      description: power when cpu is idle
                      type: string
                    nodeSelector:
                      description: when there are various types of compute server,
                        node selector selects the targets
                      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
                  type: object
                type: array
              emissionFactor:
                description: emission factor of the data center, unit is tCO2/MWh,
                  the average emission factor of China is 0.5810
                type: string
              locality:
                description: locality holds more information of location, e.g. ap/china/shanghai/az01/floor3
                type: string
              networkingConfig:
                description: networking power info
                items:
                  properties:
                    storageClass:
                      description: networking class, e.g. golden, server, bronze,
                        which define different redundancies of networking links, and
                        has different energy consumption
                      type: string
                    wattsPerGB:
                      description: power per GB for the class
                      type: string
                  type: object
                type: array
              provider:
                description: |-
                  Provider is the provider of the ccf, when provider is manual, all the properties of ccf would be configured manually
                  when a cloud provider exposes query API, a cloud provider controller can query cloud api and fill the properties automatically
                type: string
              pue:
                description: power usage effectiveness = IT equipment energy usage
                  / total facility energy usage
                type: string
              region:
                description: region of the datacenter, e.g. shanghai
                type: string
              storageConfig:
                description: storage power info
                items:
                  properties:
                    storageClass:
                      description: storage class, e.g. cephfs
                      type: string
                    wattsPerTB:
                      description: power per TB for the class
                      type: string
                  type: object
                type: array
              zone:
                description: availability zone of the datacenter, e.g. shanghai-az01
                type: string
            type: object
          status:
            properties:
              condition:
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
---
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
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: nodeqoss.ensurance.crane.io
spec:
  group: ensurance.crane.io
  names:
    kind: NodeQOS
    listKind: NodeQOSList
    plural: nodeqoss
    shortNames:
    - nq
    singular: nodeqos
  scope: Cluster
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: NodeQOS is the Schema for the nodeqos 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: NodeQOSSpec defines the desired status of NodeQOS
            properties:
              elasticCpuLimit:
                description: ElasticCpuLimit is the cpu limit for workloads using
                  elastic cpu in the node
                properties:
                  elasticCoreCpuLimit:
                    description: Limit the amount of single core CPU that can be used
                      by workloads which use extended resource
                    items:
                      properties:
                        coreNum:
                          type: string
                        percent:
                          format: int64
                          type: integer
                      type: object
                    type: array
                  elasticCoreCpuLimitPeriod:
                    description: Limit the amount of single core CPU and its corresponding
                      time that can be used by workloads which use extended resource
                    items:
                      properties:
                        coreNum:
                          type: string
                        offlineCpuLimit:
                          type: string
                        percent:
                          format: int64
                          type: integer
                      type: object
                    type: array
                  elasticCpuAvoidance:
                    description: Workloads which use extended resource only run on
                      CPUs where high priority tasks are not running
                    properties:
                      enable:
                        type: boolean
                    type: object
                  elasticNodeCpuLimit:
                    description: |-
                      ElasticNodeCpuLimit is the total cpu usage limit for the workloads which use extended resource in node
                      Suppress the workloads which use extended resource when the CPU usage of the node exceedes ElasticNodeCpuLimit
                    properties:
                      percent:
                        format: int64
                        type: integer
                    type: object
                type: object
              memLimit:
                description: MemoryLimit is the mem limit in the node
                properties:
                  pageCacheLimitGlobal:
                    type: boolean
                  pageCacheLimitRetryTimes:
                    format: int64
                    type: integer
                type: object
              memoryCompression:
                properties:
                  enable:
                    type: boolean
                type: object
              netLimits:
                description: NetLimits is the net IO limit in the node
                properties:
                  rxBpsMax:
                    format: int64
                    type: integer
                  rxBpsMin:
                    format: int64
                    type: integer
                  txBpsMax:
                    format: int64
                    type: integer
                  txBpsMin:
                    format: int64
                    type: integer
                required:
                - rxBpsMax
                - rxBpsMin
                - txBpsMax
                - txBpsMin
                type: object
              nodeQualityProbe:
                description: NodeQualityProbe defines the way to probe a node
                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
                  nodeLocalGet:
                    description: NodeLocalGet specifies how to request node local
                    properties:
                      localCacheTTLSeconds:
                        default: 60
                        description: |-
                          LocalCacheTTLSeconds is the cache expired time.
                          Defaults to 60
                        format: int32
                        type: integer
                    type: object
                  timeoutSeconds:
                    description: |-
                      TimeoutSeconds is the timeout for request.
                      Defaults to 0, no timeout forever.
                    format: int32
                    type: integer
                type: object
              rules:
                description: Rules is an array of Rules and its corresponding action
                items:
                  properties:
                    actionName:
                      description: Avoidance action to be executed when the rule triggered
                      type: string
                    avoidanceThreshold:
                      default: 1
                      description: |-
                        How many times the rule is reach, to trigger avoidance action.
                        Defaults to 1. Minimum value is 1.
                      format: int32
                      type: integer
                    metricRule:
                      description: Metric rule define the metric identifier and target
                      properties:
                        name:
                          description: Name is the name of the given metric
                          type: string
                        selector:
                          description: |-
                            Selector is the selector for the given metric
                            it is the string-encoded form of a standard kubernetes label selector
                          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
                        value:
                          anyOf:
                          - type: integer
                          - type: string
                          description: Value is the target value of the metric (as
                            a quantity).
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                      required:
                      - name
                      type: object
                    name:
                      description: Name of the objective ensurance
                      type: string
                    restoreThreshold:
                      default: 1
                      description: |-
                        How many times the rule can restore.
                        Defaults to 1. Minimum value is 1.
                      format: int32
                      type: integer
                    strategy:
                      default: None
                      description: |-
                        Action only preview, not to do the real action.
                        Default AvoidanceActionStrategy is None.
                      enum:
                      - None
                      - Preview
                      type: string
                  required:
                  - actionName
                  type: object
                type: array
              selector:
                description: Selector is a label query over pods that should match
                  the policy
                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
            type: object
          status:
            description: NodeQOSStatus defines the observed status of NodeQOS
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
---
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
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: clusternodepredictions.prediction.crane.io
spec:
  group: prediction.crane.io
  names:
    kind: ClusterNodePrediction
    listKind: ClusterNodePredictionList
    plural: clusternodepredictions
    shortNames:
    - cnp
    singular: clusternodeprediction
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: |-
          ClusterNodePrediction must be created in crane root namespace
          as TimeSeriesPrediction is a namespaced object now
        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:
              nodeSelector:
                additionalProperties:
                  type: string
                type: object
              template:
                properties:
                  metadata:
                    type: object
                  spec:
                    description: TimeSeriesPredictionSpec is a description of a TimeSeriesPrediction.
                    properties:
                      predictionMetrics:
                        description: PredictionMetrics is an array of PredictionMetric
                        items:
                          description: PredictionMetric describe what metric of your
                            time series prediction, how to query, use which algorithm
                            to predict.
                          properties:
                            algorithm:
                              description: Algorithm is the algorithm used by this
                                prediction metric.
                              properties:
                                algorithmType:
                                  description: AlgorithmType is the algorithm type,
                                    currently supports dsp and percentile.
                                  type: string
                                dsp:
                                  description: DSP is an algorithm which use FFT to
                                    deal with time series, typically it is used to
                                    predict some periodic time series
                                  properties:
                                    estimators:
                                      description: Estimator
                                      properties:
                                        fft:
                                          items:
                                            properties:
                                              highFrequencyThreshold:
                                                type: string
                                              lowAmplitudeThreshold:
                                                type: string
                                              marginFraction:
                                                type: string
                                              maxNumOfSpectrumItems:
                                                format: int32
                                                type: integer
                                              minNumOfSpectrumItems:
                                                format: int32
                                                type: integer
                                            type: object
                                          type: array
                                        maxValue:
                                          items:
                                            properties:
                                              marginFraction:
                                                type: string
                                            type: object
                                          type: array
                                      type: object
                                    historyLength:
                                      description: HistoryLength describes how long
                                        back should be queried against provider to
                                        get historical metrics for prediction.
                                      type: string
                                    sampleInterval:
                                      description: SampleInterval is the sampling
                                        interval of metrics.
                                      type: string
                                  type: object
                                percentile:
                                  description: Percentile is an algorithm which use
                                    exponential time decay histogram, it can predict
                                    a reasonable value according your history time
                                    series
                                  properties:
                                    aggregated:
                                      type: boolean
                                    histogram:
                                      properties:
                                        bucketSize:
                                          type: string
                                        bucketSizeGrowthRatio:
                                          type: string
                                        epsilon:
                                          type: string
                                        firstBucketSize:
                                          type: string
                                        halfLife:
                                          type: string
                                        maxValue:
                                          type: string
                                      type: object
                                    historyLength:
                                      type: string
                                    marginFraction:
                                      type: string
                                    minSampleWeight:
                                      type: string
                                    percentile:
                                      type: string
                                    sampleInterval:
                                      type: string
                                    targetUtilization:
                                      type: string
                                  type: object
                              type: object
                            expressionQuery:
                              description: ExpressionQuery is a query with a DSL-style
                                expression, such as prometheus promQL
                              properties:
                                expression:
                                  description: Expression is the query expression.
                                    For prometheus, it is promQL.
                                  type: string
                              type: object
                            metricQuery:
                              description: |-
                                following QueryExpressions depend on your crane system data source configured when the system start.
                                if you use different sources with your system start params, it is not valid.
                                MetricQuery is a query against a metric with a set of conditions
                              properties:
                                labels:
                                  description: QueryConditions is a query condition
                                    list.
                                  items:
                                    description: |-
                                      QueryCondition is a key, operator, value triple.
                                      E.g. 'namespace = default', 'role in [Admin, Developer]'
                                    properties:
                                      key:
                                        description: Key is the key of the query condition
                                        type: string
                                      operator:
                                        description: Operator
                                        type: string
                                      value:
                                        description: Value is the query value list.
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                  type: array
                                metricName:
                                  description: MetricName is the name of the metric.
                                  type: string
                              required:
                              - metricName
                              type: object
                            resourceIdentifier:
                              description: ResourceIdentifier is a resource to identify
                                the metric, but now it is just an identifier now.
                                reference otlp https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/sdk.md
                              type: string
                            resourceQuery:
                              description: ResourceQuery is a kubernetes built in
                                metric, only support cpu, memory
                              type: string
                            type:
                              description: Type is the type of metric, now support
                                ResourceQuery、MetricQuery、ExpressionQuery
                              type: string
                          type: object
                        type: array
                      predictionWindowSeconds:
                        description: PredictionWindowSeconds is a time window in seconds,
                          indicating how long to predict in the future.
                        format: int32
                        type: integer
                      targetRef:
                        description: |-
                          Target is the target referent of time series prediction. each TimeSeriesPrediction associate with just only one target ref.
                          all metrics in PredictionMetricConfigurations is about the TargetRef
                        properties:
                          apiVersion:
                            description: API version of the referent.
                            type: string
                          fieldPath:
                            description: |-
                              If referring to a piece of an object instead of an entire object, this string
                              should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                              For example, if the object reference is to a container within a pod, this would take on a value like:
                              "spec.containers{name}" (where "name" refers to the name of the container that triggered
                              the event) or if no container name is specified "spec.containers[2]" (container with
                              index 2 in this pod). This syntax is chosen only to have some well-defined way of
                              referencing a part of an object.
                            type: string
                          kind:
                            description: |-
                              Kind of the referent.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                            type: string
                          name:
                            description: |-
                              Name of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          namespace:
                            description: |-
                              Namespace of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                            type: string
                          resourceVersion:
                            description: |-
                              Specific resourceVersion to which this reference is made, if any.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                            type: string
                          uid:
                            description: |-
                              UID of the referent.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                    type: object
                type: object
            type: object
          status:
            properties:
              conditions:
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              currentNumberCreated:
                type: integer
              desiredNumberCreated:
                type: integer
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: timeseriespredictions.prediction.crane.io
spec:
  group: prediction.crane.io
  names:
    kind: TimeSeriesPrediction
    listKind: TimeSeriesPredictionList
    plural: timeseriespredictions
    shortNames:
    - tsp
    singular: timeseriesprediction
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The target ref name of tsp.
      jsonPath: .spec.targetRef.name
      name: TargetRefName
      type: string
    - description: The target ref kind of tsp.
      jsonPath: .spec.targetRef.kind
      name: TargetRefKind
      type: string
    - description: The predictionWindowSeconds of tsp.
      jsonPath: .spec.predictionWindowSeconds
      name: PredictionWindowSeconds
      type: integer
    - description: CreationTimestamp is a timestamp representing the server time when
        this object was created.
      jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: TimeSeriesPrediction is a prediction for a time series.
        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: TimeSeriesPredictionSpec is a description of a TimeSeriesPrediction.
            properties:
              predictionMetrics:
                description: PredictionMetrics is an array of PredictionMetric
                items:
                  description: PredictionMetric describe what metric of your time
                    series prediction, how to query, use which algorithm to predict.
                  properties:
                    algorithm:
                      description: Algorithm is the algorithm used by this prediction
                        metric.
                      properties:
                        algorithmType:
                          description: AlgorithmType is the algorithm type, currently
                            supports dsp and percentile.
                          type: string
                        dsp:
                          description: DSP is an algorithm which use FFT to deal with
                            time series, typically it is used to predict some periodic
                            time series
                          properties:
                            estimators:
                              description: Estimator
                              properties:
                                fft:
                                  items:
                                    properties:
                                      highFrequencyThreshold:
                                        type: string
                                      lowAmplitudeThreshold:
                                        type: string
                                      marginFraction:
                                        type: string
                                      maxNumOfSpectrumItems:
                                        format: int32
                                        type: integer
                                      minNumOfSpectrumItems:
                                        format: int32
                                        type: integer
                                    type: object
                                  type: array
                                maxValue:
                                  items:
                                    properties:
                                      marginFraction:
                                        type: string
                                    type: object
                                  type: array
                              type: object
                            historyLength:
                              description: HistoryLength describes how long back should
                                be queried against provider to get historical metrics
                                for prediction.
                              type: string
                            sampleInterval:
                              description: SampleInterval is the sampling interval
                                of metrics.
                              type: string
                          type: object
                        percentile:
                          description: Percentile is an algorithm which use exponential
                            time decay histogram, it can predict a reasonable value
                            according your history time series
                          properties:
                            aggregated:
                              type: boolean
                            histogram:
                              properties:
                                bucketSize:
                                  type: string
                                bucketSizeGrowthRatio:
                                  type: string
                                epsilon:
                                  type: string
                                firstBucketSize:
                                  type: string
                                halfLife:
                                  type: string
                                maxValue:
                                  type: string
                              type: object
                            historyLength:
                              type: string
                            marginFraction:
                              type: string
                            minSampleWeight:
                              type: string
                            percentile:
                              type: string
                            sampleInterval:
                              type: string
                            targetUtilization:
                              type: string
                          type: object
                      type: object
                    expressionQuery:
                      description: ExpressionQuery is a query with a DSL-style expression,
                        such as prometheus promQL
                      properties:
                        expression:
                          description: Expression is the query expression. For prometheus,
                            it is promQL.
                          type: string
                      type: object
                    metricQuery:
                      description: |-
                        following QueryExpressions depend on your crane system data source configured when the system start.
                        if you use different sources with your system start params, it is not valid.
                        MetricQuery is a query against a metric with a set of conditions
                      properties:
                        labels:
                          description: QueryConditions is a query condition list.
                          items:
                            description: |-
                              QueryCondition is a key, operator, value triple.
                              E.g. 'namespace = default', 'role in [Admin, Developer]'
                            properties:
                              key:
                                description: Key is the key of the query condition
                                type: string
                              operator:
                                description: Operator
                                type: string
                              value:
                                description: Value is the query value list.
                                items:
                                  type: string
                                type: array
                            type: object
                          type: array
                        metricName:
                          description: MetricName is the name of the metric.
                          type: string
                      required:
                      - metricName
                      type: object
                    resourceIdentifier:
                      description: ResourceIdentifier is a resource to identify the
                        metric, but now it is just an identifier now. reference otlp
                        https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/sdk.md
                      type: string
                    resourceQuery:
                      description: ResourceQuery is a kubernetes built in metric,
                        only support cpu, memory
                      type: string
                    type:
                      description: Type is the type of metric, now support ResourceQuery、MetricQuery、ExpressionQuery
                      type: string
                  type: object
                type: array
              predictionWindowSeconds:
                description: PredictionWindowSeconds is a time window in seconds,
                  indicating how long to predict in the future.
                format: int32
                type: integer
              targetRef:
                description: |-
                  Target is the target referent of time series prediction. each TimeSeriesPrediction associate with just only one target ref.
                  all metrics in PredictionMetricConfigurations is about the TargetRef
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  fieldPath:
                    description: |-
                      If referring to a piece of an object instead of an entire object, this string
                      should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within a pod, this would take on a value like:
                      "spec.containers{name}" (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]" (container with
                      index 2 in this pod). This syntax is chosen only to have some well-defined way of
                      referencing a part of an object.
                    type: string
                  kind:
                    description: |-
                      Kind of the referent.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                    type: string
                  name:
                    description: |-
                      Name of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                  namespace:
                    description: |-
                      Namespace of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                    type: string
                  resourceVersion:
                    description: |-
                      Specific resourceVersion to which this reference is made, if any.
                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                    type: string
                  uid:
                    description: |-
                      UID of the referent.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                    type: string
                type: object
                x-kubernetes-map-type: atomic
            type: object
          status:
            description: TimeSeriesPredictionStatus is the status of a TimeSeriesPrediction.
            properties:
              conditions:
                description: Conditions is the condition of TimeSeriesPrediction
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              predictionMetrics:
                description: PredictionMetrics is an array of PredictionMetricStatus
                  of all PredictionMetrics, PredictionMetricStatus include predicted
                  time series data
                items:
                  description: MetricPredictedData is predicted data of an metric,
                    which denote a metric by ResourceIdentifier in the PredictionMetric
                  properties:
                    prediction:
                      description: Prediction is the predicted time series data of
                        the metric
                      items:
                        description: MetricTimeSeries is a stream of samples that
                          belong to a metric with a set of labels
                        properties:
                          labels:
                            description: |-
                              A collection of Labels that are attached by monitoring system as metadata
                              for the metrics, which are known as dimensions.
                            items:
                              description: |-
                                A Label is a Name and Value pair that provides additional information about the metric.
                                It is metadata for the metric. For example, Kubernetes pod metrics always have
                                'namespace' label that represents which namespace it belongs to.
                              properties:
                                name:
                                  type: string
                                value:
                                  type: string
                              type: object
                            type: array
                          samples:
                            description: A collection of Samples in chronological
                              order.
                            items:
                              description: Sample pairs a Value with a Timestamp.
                              properties:
                                timestamp:
                                  format: int64
                                  type: integer
                                value:
                                  type: string
                              type: object
                            type: array
                        type: object
                      type: array
                    ready:
                      description: Specifies whether the prediction is Ready.
                      type: boolean
                    resourceIdentifier:
                      description: |-
                        ResourceIdentifier is a resource to identify the metric, but now it is just an identifier now.
                        such as cpu, memory
                      type: string
                  required:
                  - ready
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: noderesourcetopologies.topology.crane.io
spec:
  group: topology.crane.io
  names:
    kind: NodeResourceTopology
    listKind: NodeResourceTopologyList
    plural: noderesourcetopologies
    shortNames:
    - nrt
    singular: noderesourcetopology
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - description: CPUManagerPolicy represents policy of the crane agent cpu manager.
      jsonPath: .craneManagerPolicy.cpuManagerPolicy
      name: CRANE CPU MANAGER POLICY
      type: string
    - description: TopologyManagerPolicy represents policy of the crane agent resource
        management component. Defaults to SingleNUMANodePodLevel.
      jsonPath: .craneManagerPolicy.topologyManagerPolicy
      name: CRANE TOPOLOGY MANAGER POLICY
      type: string
    - description: CreationTimestamp is a timestamp representing the server time when
        this object was created.
      jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: NodeResourceTopology describes node resources and their topology.
        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
          attributes:
            additionalProperties:
              type: string
            description: Attributes represents node attributes if any.
            type: object
          craneManagerPolicy:
            description: CraneManagerPolicy describes the associated manager policy
              of crane agent.
            properties:
              cpuManagerPolicy:
                description: CPUManagerPolicy represents policy of the crane agent
                  cpu manager.
                enum:
                - None
                - Static
                type: string
              topologyManagerPolicy:
                default: SingleNUMANodePodLevel
                description: |-
                  TopologyManagerPolicy represents policy of the crane agent resource management component.
                  Defaults to SingleNUMANodePodLevel.
                enum:
                - None
                - SingleNUMANodePodLevel
                type: string
            required:
            - cpuManagerPolicy
            - topologyManagerPolicy
            type: object
          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
          reserved:
            additionalProperties:
              anyOf:
              - type: integer
              - type: string
              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
              x-kubernetes-int-or-string: true
            description: Reserved describes resources reserved for system and kubernetes
              components.
            type: object
          zones:
            description: Zones represents all resource topology zones of a node.
            items:
              description: Zone represents a resource topology zone, e.g. socket,
                node, die or core.
              properties:
                attributes:
                  additionalProperties:
                    type: string
                  description: Attributes represents zone attributes if any.
                  type: object
                costs:
                  description: Costs represents the cost between different zones.
                  items:
                    description: CostInfo describes the cost (or distance) between
                      two Zones.
                    properties:
                      name:
                        description: Name represents the zone name.
                        type: string
                      value:
                        description: Value represents the cost value.
                        format: int64
                        type: integer
                    required:
                    - name
                    - value
                    type: object
                  type: array
                name:
                  description: Name represents the zone name.
                  type: string
                parent:
                  description: Parent represents the name of parent zone.
                  type: string
                resources:
                  description: Resources represents the resource info of the zone.
                  properties:
                    allocatable:
                      additionalProperties:
                        anyOf:
                        - type: integer
                        - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: |-
                        Allocatable quantity of the resource, corresponding to allocatable in
                        node status, i.e. total amount of this resource available to be used by
                        pods.
                      type: object
                    capacity:
                      additionalProperties:
                        anyOf:
                        - type: integer
                        - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: |-
                        Capacity of the resource, corresponding to capacity in node status, i.e.
                        total amount of this resource that the node has.
                      type: object
                    reservedCPUNums:
                      description: ReservedCPUNums specifies the cpu numbers reserved
                        for the host level system threads and kubernetes related threads.
                      format: int32
                      type: integer
                  type: object
                type:
                  description: Type represents the zone type.
                  enum:
                  - Node
                  - Socket
                  - Core
                  type: string
              required:
              - name
              - type
              type: object
            type: array
        required:
        - craneManagerPolicy
        type: object
    served: true
    storage: true
    subresources: {}
