
// Module included in the following assemblies:
//
// * backup_and_restore/application_backup_and_restore/installing/installing-oadp-aws.adoc

:_mod-docs-content-type: PROCEDURE
[id="oadp-configuring-repository-maintenance_{context}"]
= Configuring repository maintenance

[role="_abstract"]
{oadp-short} repository maintenance is a background job, you can configure it independently of the node agent pods. This means that you can schedule the repository maintenance pod on a node where the node agent is or is not running.

You can use the repository maintenance job affinity configurations in the `DataProtectionApplication` (DPA) custom resource (CR) only if you use Kopia as the backup repository.

You have the option to configure the load affinity at the global level affecting all repositories. Or you can configure the load affinity for each repository. You can also use a combination of global and per-repository configuration.


.Prerequisites

* You must be logged in as a user with `cluster-admin` privileges.
* You have installed the {oadp-short} Operator.
* You have configured the DPA CR.

.Procedure

* Configure the `loadAffinity` object in the DPA spec by using either one or both of the following methods:
** Global configuration: Configure load affinity for all repositories as shown in the following example:
+
[source,yaml]
----
...
spec:
  configuration:
    repositoryMaintenance:
      global:
        podResources:
          cpuRequest: "100m"
          cpuLimit: "200m"
          memoryRequest: "100Mi"
          memoryLimit: "200Mi"
        loadAffinity:
          - nodeSelector:
              matchLabels:
                label.io/gpu: 'no'
              matchExpressions:
                - key: label.io/location
                  operator: In
                  values:
                    - US
                    - EU
----
+
where:
+
`repositoryMaintenance`:: Specifies the `repositoryMaintenance` object as shown in the example.
`global`:: Specifies the `global` object to configure load affinity for all repositories.

** Per-repository configuration: Configure load affinity per repository as shown in the following example:
+
[source,yaml]
----
...
spec:
  configuration:
    repositoryMaintenance:
      myrepositoryname:
        loadAffinity:
          - nodeSelector:
              matchLabels:
                label.io/cpu: 'yes'
----
+
where:
+
`myrepositoryname`:: Specifies the `repositoryMaintenance` object for each repository.

// end of module. Need to add this comment because the level offset attribute does not get unset at the end of this module due to the continuation plus symbol. Causing the level offset from this module to stack on to the next module. This causes build failures or deeply nested modules.
