
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  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
                            required:
                            - key
                            - operator
                            type: object
                          type: array
                        matchLabels:
                          additionalProperties:
                            type: string
                          description: matchLabels is a map of {key,value} pairs.
                            A single {key,value} in the matchLabels map is equivalent
                            to an element of matchExpressions, whose key field is
                            "key", the operator is "In", and the values array contains
                            only "value". The requirements are ANDed.
                          type: object
                      type: object
                    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. TODO: this design is not final and this field is
                        subject to change in the future.'
                      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. --- New uses
                        of this type are discouraged because of difficulty describing
                        its usage when embedded in APIs.  1. Ignored fields.  It includes
                        many fields which are not generally honored.  For instance,
                        ResourceVersion and FieldPath are both very rarely valid in
                        actual usage.  2. Invalid usage help.  It is impossible to
                        add specific help for individual usage.  In most embedded
                        usages, there are particular     restrictions like, "must
                        refer only to types A and B" or "UID not honored" or "name
                        must be restricted".     Those cannot be well described when
                        embedded.  3. Inconsistent validation.  Because the usages
                        are different, the validation rules are different by usage,
                        which makes it hard for users to predict what will happen.  4.
                        The fields are both imprecise and overly precise.  Kind is
                        not a precise mapping to a URL. This can produce ambiguity     during
                        interpretation and require a REST mapping.  In most cases,
                        the dependency is on the group,resource tuple     and the
                        version of the actual struct is irrelevant.  5. We cannot
                        easily change it.  Because this type is embedded in many locations,
                        updates to this type     will affect numerous schemas.  Don''t
                        make new APIs embed an underspecified API type they do not
                        control. Instead of using this type, create a locally provided
                        and used type that is well-focused on your reference. For
                        example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
                        .'
                      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. TODO: this design
                            is not final and this field is subject to change in the
                            future.'
                          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
                    uid:
                      description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                      type: string
                  type: object
                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: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
