apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
  annotations:
    olm.skipRange: '>=4.3.0 <4.9.0-202212051626'
    operators.openshift.io/valid-subscription: >-
      ["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift
      Platform Plus"]
    olm.targetNamespaces: clusterresourceoverride-operator
    operatorframework.io/properties: >-
      {"properties":[{"type":"olm.package","value":{"packageName":"clusterresourceoverride","version":"4.9.0-202212051626"}},{"type":"olm.gvk","value":{"group":"operator.autoscaling.openshift.io","kind":"ClusterResourceOverride","version":"v1"}}]}
    repository: 'https://github.com/openshift/cluster-resource-override-operator'
    support: Red Hat
    alm-examples: |-
      [
        {
          "apiVersion": "operator.autoscaling.openshift.io/v1",
          "kind": "ClusterResourceOverride",
          "metadata": {
            "name": "cluster"
          },
          "spec": {
            "podResourceOverride": {
              "spec": {
                "memoryRequestToLimitPercent": 50,
                "cpuRequestToLimitPercent": 25,
                "limitCPUToMemoryPercent": 200
              }
            }
          }
        }
      ]
    capabilities: Seamless Upgrades
    healthIndex: B
    olm.operatorNamespace: clusterresourceoverride-operator
    containerImage: >-
      registry.redhat.io/openshift4/ose-clusterresourceoverride-rhel8-operator@sha256:dfcc1a5d7e18d28a02cd5b682b738aff7616195c89898c35367112cd7f79a934
    createdAt: 2019/11/15
    categories: OpenShift Optional
    description: >-
      An operator to manage the OpenShift ClusterResourceOverride Mutating
      Admission Webhook Server
    olm.operatorGroup: clusterresourceoverride-operator-xhg7r
    certifiedLevel: Primed
  resourceVersion: '102103'
  name: clusterresourceoverride-operator.4.9.0-202212051626
  uid: 8fda5b5e-53e7-40c2-a885-2afb9719ac14
  creationTimestamp: '2023-02-02T00:36:37Z'
  generation: 1
  managedFields:
    - apiVersion: operators.coreos.com/v1alpha1
      fieldsType: FieldsV1
      fieldsV1:
        'f:metadata':
          'f:annotations':
            'f:healthIndex': {}
            'f:createdAt': {}
            'f:alm-examples': {}
            'f:description': {}
            'f:capabilities': {}
            'f:olm.skipRange': {}
            .: {}
            'f:operators.openshift.io/valid-subscription': {}
            'f:containerImage': {}
            'f:categories': {}
            'f:certifiedLevel': {}
            'f:operatorframework.io/properties': {}
            'f:support': {}
            'f:repository': {}
        'f:spec':
          'f:version': {}
          'f:provider':
            .: {}
            'f:name': {}
          'f:install':
            .: {}
            'f:spec':
              .: {}
              'f:clusterPermissions': {}
              'f:deployments': {}
              'f:permissions': {}
            'f:strategy': {}
          'f:maintainers': {}
          'f:description': {}
          'f:installModes': {}
          'f:customresourcedefinitions':
            .: {}
            'f:owned': {}
          .: {}
          'f:relatedImages': {}
          'f:cleanup':
            .: {}
            'f:enabled': {}
          'f:apiservicedefinitions': {}
          'f:replaces': {}
          'f:labels':
            .: {}
            'f:olm-owner-enterprise-app': {}
            'f:olm-status-descriptors': {}
          'f:displayName': {}
          'f:keywords': {}
      manager: catalog
      operation: Update
      time: '2023-02-02T00:36:37Z'
    - apiVersion: operators.coreos.com/v1alpha1
      fieldsType: FieldsV1
      fieldsV1:
        'f:status':
          'f:lastUpdateTime': {}
          'f:requirementStatus': {}
          'f:phase': {}
          'f:lastTransitionTime': {}
          'f:conditions': {}
          .: {}
          'f:cleanup': {}
          'f:message': {}
          'f:reason': {}
      manager: olm
      operation: Update
      subresource: status
      time: '2023-02-02T00:36:37Z'
    - apiVersion: operators.coreos.com/v1alpha1
      fieldsType: FieldsV1
      fieldsV1:
        'f:metadata':
          'f:annotations':
            'f:olm.operatorGroup': {}
            'f:olm.operatorNamespace': {}
            'f:olm.targetNamespaces': {}
          'f:labels':
            .: {}
            'f:olm.api.a4a4fd9888c94a18': {}
            'f:operators.coreos.com/clusterresourceoverride.clusterresourceoverride-operator': {}
      manager: olm
      operation: Update
      time: '2023-02-02T00:36:39Z'
  namespace: clusterresourceoverride-operator
  labels:
    olm.api.a4a4fd9888c94a18: provided
    operators.coreos.com/clusterresourceoverride.clusterresourceoverride-operator: ''
spec:
  customresourcedefinitions:
    owned:
      - description: Represents an instance of ClusterResourceOverride Admission Webhook
        displayName: ClusterResourceOverride
        kind: ClusterResourceOverride
        name: clusterresourceoverrides.operator.autoscaling.openshift.io
        version: v1
  relatedImages:
    - image: >-
        registry.redhat.io/openshift4/ose-clusterresourceoverride-rhel8@sha256:beec68acfcf7d916747b179b10120f173f156b44ab7e54c9195528dae824c0df
      name: ose-clusterresourceoverride-rhel8
    - image: >-
        registry.redhat.io/openshift4/ose-clusterresourceoverride-rhel8-operator@sha256:dfcc1a5d7e18d28a02cd5b682b738aff7616195c89898c35367112cd7f79a934
      name: ose-clusterresourceoverride-rhel8-operator
  cleanup:
    enabled: false
  apiservicedefinitions: {}
  keywords:
    - deschedule
    - scale
    - binpack
    - efficiency
  displayName: ClusterResourceOverride Operator
  provider:
    name: Red Hat
  installModes:
    - supported: true
      type: OwnNamespace
    - supported: true
      type: SingleNamespace
    - supported: false
      type: MultiNamespace
    - supported: false
      type: AllNamespaces
  version: 4.9.0-202212051626
  install:
    spec:
      clusterPermissions:
        - rules:
            - apiGroups:
                - rbac.authorization.k8s.io
              resources:
                - rolebindings
              verbs:
                - create
                - update
                - patch
                - get
            - apiGroups:
                - flowcontrol.apiserver.k8s.io
              resources:
                - flowschemas
                - prioritylevelconfigurations
              verbs:
                - get
                - list
                - watch
            - apiGroups:
                - ''
              resources:
                - configmaps
              verbs:
                - get
                - list
                - watch
            - apiGroups:
                - rbac.authorization.k8s.io
              resources:
                - clusterroles
                - clusterrolebindings
              verbs:
                - create
                - update
                - patch
                - get
            - apiGroups:
                - operator.autoscaling.openshift.io
              resources:
                - clusterresourceoverrides
                - clusterresourceoverrides/status
                - clusterresourceoverrides/finalizers
              verbs:
                - update
                - get
                - list
                - watch
            - apiGroups:
                - admissionregistration.k8s.io
              resources:
                - mutatingwebhookconfigurations
              verbs:
                - create
                - update
                - patch
                - delete
                - list
                - watch
            - apiGroups:
                - apiregistration.k8s.io
              resources:
                - apiservices
              verbs:
                - create
                - update
                - patch
                - get
                - list
                - watch
            - apiGroups:
                - autoscaling.openshift.io
              resources:
                - clusterresourceoverride
              verbs:
                - create
            - apiGroups:
                - admissionregistration.k8s.io
              resources:
                - validatingwebhookconfigurations
                - mutatingwebhookconfigurations
              verbs:
                - get
                - list
                - watch
            - apiGroups:
                - ''
              resources:
                - namespaces
                - limitranges
              verbs:
                - get
                - list
                - watch
            - apiGroups:
                - authentication.k8s.io
              resources:
                - tokenreviews
              verbs:
                - create
            - apiGroups:
                - authorization.k8s.io
              resources:
                - subjectaccessreviews
              verbs:
                - create
            - apiGroups:
                - security.openshift.io
              resourceNames:
                - hostnetwork
              resources:
                - securitycontextconstraints
              verbs:
                - use
            - apiGroups:
                - admission.autoscaling.openshift.io
              resources:
                - clusterresourceoverrides
              verbs:
                - create
                - get
          serviceAccountName: clusterresourceoverride-operator
      deployments:
        - name: clusterresourceoverride-operator
          spec:
            replicas: 1
            selector:
              matchLabels:
                clusterresourceoverride.operator: 'true'
            strategy: {}
            template:
              metadata:
                creationTimestamp: null
                labels:
                  clusterresourceoverride.operator: 'true'
                name: clusterresourceoverride
              spec:
                containers:
                  - resources: {}
                    readinessProbe:
                      httpGet:
                        path: /healthz
                        port: 8080
                    name: clusterresourceoverride-operator
                    command:
                      - /usr/bin/cluster-resource-override-admission-operator
                    livenessProbe:
                      httpGet:
                        path: /healthz
                        port: 8080
                      initialDelaySeconds: 5
                    env:
                      - name: OPERATOR_POD_NAMESPACE
                        valueFrom:
                          fieldRef:
                            fieldPath: metadata.namespace
                      - name: OPERAND_NAMESPACE
                        valueFrom:
                          fieldRef:
                            fieldPath: metadata.namespace
                      - name: OPERAND_IMAGE
                        value: >-
                          registry.redhat.io/openshift4/ose-clusterresourceoverride-rhel8@sha256:beec68acfcf7d916747b179b10120f173f156b44ab7e54c9195528dae824c0df
                      - name: OPERAND_VERSION
                        value: 1.0.0
                    ports:
                      - containerPort: 8080
                        protocol: TCP
                    imagePullPolicy: Always
                    image: >-
                      registry.redhat.io/openshift4/ose-clusterresourceoverride-rhel8-operator@sha256:dfcc1a5d7e18d28a02cd5b682b738aff7616195c89898c35367112cd7f79a934
                    args:
                      - start
                      - '--namespace=$(OPERAND_NAMESPACE)'
                      - '--v=2'
                serviceAccountName: clusterresourceoverride-operator
      permissions:
        - rules:
            - apiGroups:
                - rbac.authorization.k8s.io
              resources:
                - roles
                - rolebindings
              verbs:
                - create
                - update
                - patch
                - get
            - apiGroups:
                - ''
              resources:
                - configmaps
                - secrets
                - services
                - serviceaccounts
                - pods
              verbs:
                - get
                - create
                - update
                - patch
                - list
                - watch
            - apiGroups:
                - apps
              resources:
                - daemonsets
                - deployments
              verbs:
                - create
                - get
                - update
                - patch
                - list
                - watch
          serviceAccountName: clusterresourceoverride-operator
    strategy: deployment
  maintainers:
    - email: support@redhat.com
      name: Red Hat
  description: >+
    ClusterResourceOverride

    ==============


    Containers can specify compute resource requests and limits. Requests are
    used for scheduling your container and provide a minimum service guarantee.
    Limits constrain the amount of compute resource that may be consumed on your
    node.


    The scheduler attempts to optimize the compute resource use across all nodes
    in your cluster. It places pods onto specific nodes, taking the pods'
    compute resource requests and nodes' available capacity into consideration.


    Requests and limits enable administrators to allow and manage the
    overcommitment of resources on a node, which may be desirable in development
    environments where a trade off of guaranteed performance for capacity is
    acceptable.


    ### Requests and Limits


    For each compute resource, a container may specify a resource request and
    limit. Scheduling decisions are made based on the request to ensure that a
    node has enough capacity available to meet the requested value. If a
    container specifies limits, but omits requests, the requests are defaulted
    to the limits. A container is not able to exceed the specified limit on the
    node.


    The enforcement of limits is dependent upon the compute resource type. If a
    container makes no request or limit, the container is scheduled to a node
    with no resource guarantees. In practice, the container is able to consume
    as much of the specified resource as is available with the lowest local
    priority. In low resource situations, containers that specify no resource
    requests are given the lowest quality of service.


    ### Compute Resources


    The node-enforced behavior for compute resources is specific to the resource
    type.


    #### CPU


    A container is guaranteed the amount of CPU it requests and is additionally
    able to consume excess CPU available on the node, up to any limit specified
    by the container. If multiple containers are attempting to use excess CPU,
    CPU time is distributed based on the amount of CPU requested by each
    container.


    For example, if one container requested 500m of CPU time and another
    container requested 250m of CPU time, then any extra CPU time available on
    the node is distributed among the containers in a 2:1 ratio. If a container
    specified a limit, it will be throttled not to use more CPU than the
    specified limit.


    CPU requests are enforced using the CFS shares support in the Linux kernel.
    By default, CPU limits are enforced using the CFS quota support in the Linux
    kernel over a 100ms measuring interval, though this can be disabled.


    #### Memory


    A container is guaranteed the amount of memory it requests. A container may
    use more memory than requested, but once it exceeds its requested amount, it
    could be killed in a low memory situation on the node.


    If a container uses less memory than requested, it will not be killed unless
    system tasks or daemons need more memory than was accounted for in the
    node’s resource reservation. If a container specifies a limit on memory, it
    is immediately killed if it exceeds the limit amount.


    ### Configuring the Cluster for Overcommitment


    Scheduling is based on resources requested, while quota and hard limits
    refer to resource limits, which can be set higher than requested resources.
    The difference between request and limit determines the level of overcommit;
    for instance, if a container is given a memory request of 1Gi and a memory
    limit of 2Gi, it is scheduled based on the 1Gi request being available on
    the node, but could use up to 2Gi; so it is 200% overcommitted. If OpenShift
    Container Platform administrators would like to control the level of
    overcommit and manage container density on nodes, ClusterResourceOverride
    Admission Webhook can be configured to override the ratio between request
    and limit set on developer containers. In conjunction with a per-project
    LimitRange specifying limits and defaults, this adjusts the container limit
    and request to achieve the desired level of overcommit.


    This requires creating a custom resource of `ClusterResourceOverride` type
    as in the following example:

        
        - apiVersion: operator.autoscaling.openshift.io/v1
        - kind: ClusterResourceOverride
        - metadata:
        -   name: cluster
        - spec:
        -   podResourceOverride:
        -     spec:
        -       memoryRequestToLimitPercent: 25
        -       cpuRequestToLimitPercent: 25
        -       limitCPUToMemoryPercent: 200
        
     **memoryRequestToLimitPercent**: (optional, 1-100) If a container memory limit has been specified or defaulted, the memory request is overridden to this percentage of the limit.

     **cpuRequestToLimitPercent**: (optional, 1-100) If a container CPU limit has been specified or defaulted, the CPU request is overridden to this percentage of the limit.

     **limitCPUToMemoryPercent**: (optional, positive integer) If a container memory limit has been specified or defaulted, the CPU limit is overridden to a percentage of the memory limit, with a 100 percentage scaling 1Gi of RAM to equal 1 CPU core. This is processed prior to overriding CPU request (if configured).

     Note that these overrides have no effect if no limits have been set on containers. [Create a LimitRange object] (https://docs.openshift.com/container-platform/3.3/admin_guide/limits.html#admin-guide-limits) with default limits (per individual project, or in the [project template](https://docs.openshift.com/container-platform/3.3/admin_guide/managing_projects.html#modifying-the-template-for-new-projects)) in order to ensure that the overrides apply.

    When configured, overrides can be enabled per-project by applying the
    following label.
        ```
        clusterresourceoverrides.admission.autoscaling.openshift.io/enabled: "true"
        ```

  replaces: clusterresourceoverride-operator.4.8.0-202212051626
  labels:
    olm-owner-enterprise-app: clusterresourceoverride-operator
    olm-status-descriptors: clusterresourceoverride-operator.4.9.0-202212051626
status:
  cleanup: {}
  conditions:
    - lastTransitionTime: '2023-02-02T00:36:37Z'
      lastUpdateTime: '2023-02-02T00:36:37Z'
      message: requirements not yet checked
      phase: Pending
      reason: RequirementsUnknown
    - lastTransitionTime: '2023-02-02T00:36:37Z'
      lastUpdateTime: '2023-02-02T00:36:37Z'
      message: one or more requirements couldn't be found
      phase: Pending
      reason: RequirementsNotMet
    - lastTransitionTime: '2023-02-02T00:36:37Z'
      lastUpdateTime: '2023-02-02T00:36:37Z'
      message: 'all requirements found, attempting install'
      phase: InstallReady
      reason: AllRequirementsMet
    - lastTransitionTime: '2023-02-02T00:36:38Z'
      lastUpdateTime: '2023-02-02T00:36:38Z'
      message: waiting for install components to report healthy
      phase: Installing
      reason: InstallSucceeded
    - lastTransitionTime: '2023-02-02T00:36:38Z'
      lastUpdateTime: '2023-02-02T00:36:38Z'
      message: >-
        installing: waiting for deployment clusterresourceoverride-operator to
        become ready: waiting for spec update of deployment
        "clusterresourceoverride-operator" to be observed...
      phase: Installing
      reason: InstallWaiting
    - lastTransitionTime: '2023-02-02T00:36:50Z'
      lastUpdateTime: '2023-02-02T00:36:50Z'
      message: install strategy completed with no errors
      phase: Succeeded
      reason: InstallSucceeded
  lastTransitionTime: '2023-02-02T00:36:50Z'
  lastUpdateTime: '2023-02-02T00:36:50Z'
  message: install strategy completed with no errors
  phase: Succeeded
  reason: InstallSucceeded
  requirementStatus:
    - group: apiextensions.k8s.io
      kind: CustomResourceDefinition
      message: CRD is present and Established condition is true
      name: clusterresourceoverrides.operator.autoscaling.openshift.io
      status: Present
      uuid: 1b5b0ae8-e450-434f-9b06-54d3de225c78
      version: v1
    - dependents:
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            namespaced
            rule:{"verbs":["create","update","patch","get"],"apiGroups":["rbac.authorization.k8s.io"],"resources":["roles","rolebindings"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            namespaced
            rule:{"verbs":["get","create","update","patch","list","watch"],"apiGroups":[""],"resources":["configmaps","secrets","services","serviceaccounts","pods"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            namespaced
            rule:{"verbs":["create","get","update","patch","list","watch"],"apiGroups":["apps"],"resources":["daemonsets","deployments"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["create","update","patch","get"],"apiGroups":["rbac.authorization.k8s.io"],"resources":["rolebindings"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["get","list","watch"],"apiGroups":["flowcontrol.apiserver.k8s.io"],"resources":["flowschemas","prioritylevelconfigurations"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["configmaps"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["create","update","patch","get"],"apiGroups":["rbac.authorization.k8s.io"],"resources":["clusterroles","clusterrolebindings"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["update","get","list","watch"],"apiGroups":["operator.autoscaling.openshift.io"],"resources":["clusterresourceoverrides","clusterresourceoverrides/status","clusterresourceoverrides/finalizers"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["create","update","patch","delete","list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["mutatingwebhookconfigurations"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["create","update","patch","get","list","watch"],"apiGroups":["apiregistration.k8s.io"],"resources":["apiservices"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["create"],"apiGroups":["autoscaling.openshift.io"],"resources":["clusterresourceoverride"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["get","list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations","mutatingwebhookconfigurations"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["namespaces","limitranges"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["hostnetwork"]}
          status: Satisfied
          version: v1
        - group: rbac.authorization.k8s.io
          kind: PolicyRule
          message: >-
            cluster
            rule:{"verbs":["create","get"],"apiGroups":["admission.autoscaling.openshift.io"],"resources":["clusterresourceoverrides"]}
          status: Satisfied
          version: v1
      group: ''
      kind: ServiceAccount
      message: ''
      name: clusterresourceoverride-operator
      status: Present
      version: v1
