# Backup Targets

***

## **1. Backup Targets (BTs)**

#### **Definition**:

Backup Targets are storage backends where backups are stored. These can be any of the supported storage systems such as **NFS (Network File System)** or **S3 (Simple Storage Service)**. Backup Targets act as the foundational layer for storing backup data.

#### **Key Characteristics of Backup Targets**:

* They are storage systems connected to Trilio.
* Supported storage types include:
  * **NFS**: A shared file system accessible over a network.
  * **S3**: An object storage service typically offered by cloud providers.
* Multiple Backup Targets can be defined within a single environment to provide storage flexibility.

#### How to configure Backup Target(s):

Only a **default backup target** is required while uploading the Trilio license. Additional backup targets can be added any time after a successful deployment — through the Horizon dashboard, the `workloadmgr` CLI, or the WLM REST API. Backup targets do not need to be planned exhaustively before deployment.

{% hint style="info" %}
**How mounting works in 6.2 and later.** Starting in Trilio for OpenStack 6.2, backup targets are no longer mounted statically at service startup. The actual `mount`/`umount` is performed on demand by the [Dynamic Mount Service (DMS)](/openstack/about-trilio-for-openstack/triliovault-for-openstack-architecture.md#dynamic-mount-service-dms) — on the controller for metadata operations, and on a specific compute node for snapshot/restore data transfer. Targets are unmounted automatically when no job is using them.
{% endhint %}

***

#### **6.2 — Configuring an S3 Backup Target**

Starting in 6.2, S3 access credentials and connection options are no longer stored in the WorkloadManager configuration. They are stored as an **OpenStack Barbican secret** and the backup target carries a `secret_ref` field that points at that secret. DMS fetches the payload at mount time using the requesting job's Keystone token, so credentials are never persisted on disk on Trilio nodes.

**Pre-requisites (hard requirements)**

1. **One Barbican secret per S3 backup target.** Each S3 backup target must have its own Barbican secret containing a valid payload. The Barbican secret URL becomes the `secret_ref` value of the backup target.
2. **The cloud admin user must be able to read the secret payload.** DMS retrieves the payload using the requesting job's Keystone token, so the user/role triggering snapshots and restores must have `secret:get` permission on the secret. In default RHOSO deployments this is the `admin` user in the `admin` project; if you assign DMS use to a different user, mirror that user's ACL onto each Barbican secret.
3. **Required keys in the payload:** `VAULT_S3_ACCESS_KEY_ID`, `VAULT_S3_SECRET_ACCESS_KEY`, `VAULT_S3_BUCKET`, `VAULT_STORAGE_S3_EXPORT`. The DMS server applies built-in defaults for any optional keys not present.

**Generating the secret payload**

You can either hand-write the JSON payload or generate it with `trilio-dms-cli secret-payload create`. The four examples below cover the most common S3 deployment shapes.

**Example 1 — AWS S3** (no custom endpoint, publicly-trusted CA, SSL verification on):

```bash
trilio-dms-cli secret-payload create \
    --access-key <AWS_ACCESS_KEY_ID> \
    --secret-key <AWS_SECRET_ACCESS_KEY> \
    --bucket <bucket-name> \
    --filesystem-export <bucket-name> \
    --region us-east-1 \
    -o secret.json
```

The resulting `secret.json` contains:

```json
{
  "VAULT_S3_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
  "VAULT_S3_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
  "VAULT_S3_BUCKET": "<bucket-name>",
  "VAULT_STORAGE_S3_EXPORT": "<bucket-name>",
  "VAULT_S3_REGION_NAME": "us-east-1",
  "VAULT_S3_SSL": "True",
  "VAULT_S3_SSL_VERIFY": "True"
}
```

**Example 2 — S3-compatible store with a publicly-trusted CA** (e.g. a Ceph RGW or MinIO endpoint whose certificate chains to a CA already in the system trust store):

```bash
trilio-dms-cli secret-payload create \
    --access-key <S3_ACCESS_KEY_ID> \
    --secret-key <S3_SECRET_ACCESS_KEY> \
    --bucket <bucket-name> \
    --endpoint-url https://<s3-endpoint-host>/ \
    --filesystem-export <s3-endpoint-host>/<bucket-name> \
    -o secret.json
```

The payload includes `VAULT_S3_ENDPOINT_URL` and keeps `VAULT_S3_SSL` / `VAULT_S3_SSL_VERIFY` set to `True`.

**Example 3 — S3-compatible store with a self-signed certificate.** Pass the CA cert as a file; `--ssl-cert` auto-enables `--ssl` and `--ssl-verify` and embeds the PEM content in the payload as `VAULT_S3_SSL_CERT`:

```bash
trilio-dms-cli secret-payload create \
    --access-key <S3_ACCESS_KEY_ID> \
    --secret-key <S3_SECRET_ACCESS_KEY> \
    --bucket <bucket-name> \
    --endpoint-url https://<s3-endpoint-host>/ \
    --filesystem-export <s3-endpoint-host>/<bucket-name> \
    --ssl-cert /path/to/ca-cert.pem \
    -o secret.json
```

**Example 4 — S3 endpoint with SSL verification disabled** (lab / non-production only):

```bash
trilio-dms-cli secret-payload create \
    --access-key <S3_ACCESS_KEY_ID> \
    --secret-key <S3_SECRET_ACCESS_KEY> \
    --bucket <bucket-name> \
    --endpoint-url https://<s3-endpoint-host>/ \
    --filesystem-export <s3-endpoint-host>/<bucket-name> \
    --no-ssl-verify \
    -o secret.json
```

The payload sets `VAULT_S3_SSL_VERIFY` to `False`. Use this only in test environments — DMS will not validate the endpoint certificate.

**Storing the payload in Barbican**

```bash
source /root/openrc
openstack secret store --name <secret-name> --payload "$(cat secret.json)"
# Returns: Secret href: http://barbican:9311/v1/secrets/<uuid>
```

Use the returned `Secret href` as the `secret_ref` on the backup target — either via the [`workloadmgr backup-target-create`](#using-cli) CLI or the [API request body](/openstack/api-guide/backup-targets.md#create-backup-target).

***

#### **6.2 — Configuring an NFS Backup Target**

NFS backup targets do not require a Barbican secret. They are defined by the NFS export path and any mount options (e.g. `nolock,soft,timeo=600,intr,lookupcache=none,retrans=10`); these are passed through the `filesystem_export` and `nfs_mount_opts` fields when creating the target.

***

#### **Deprecated (6.1) — Static Backend Configuration**

{% hint style="warning" %}
The configuration shape described in this section applies to **Trilio for OpenStack 6.1 and earlier**. It is preserved here for reference for environments still running 6.1; it does **not** apply to 6.2+ deployments, which use Barbican-stored credentials and the Dynamic Mount Service.
{% endhint %}

In 6.1 and earlier, backup targets had to be planned and made available before deploying Trilio. The deployment scripts populated the following entries in the `workloadmgr` services configuration file:

* All enabled backup target names were defined as a comma-separated list under the `DEFAULT` section using the `enabled_backends` parameter:

```bash
[DEFAULT]
.
.
enabled_backends = NFS_BT1, S3_BT1, S3_BT2, S3_BT3
.
.
```

where `NFS_BT1`, `S3_BT1`, `S3_BT2`, and `S3_BT3` were unique backup target names with their own matching config sections.

* Each backup target section was populated according to the storage type:
  * For **NFS** storage:
    * `vault_storage_type = nfs`
    * `vault_storage_filesystem_export = <NFS_SHARE>`
    * `vault_storage_nfs_options = nolock,soft,timeo=600,intr,lookupcache=none,retrans=10`
  * For **S3** storage:
    * `vault_storage_type = s3`
    * `vault_s3_endpoint_url = <S3_ENDPOINT_URL>` (blank for AWS S3)
    * `vault_s3_access_key_id = <S3_ACCESS_KEY_ID>`
    * `vault_s3_secret_access_key = <S3_SECRET_ACCESS_KEY>`
    * `vault_s3_bucket = <S3_BUCKET_NAME>`
    * `vault_storage_filesystem_export = <S3_ENDPOINT_HOSTNAME>/<S3_BUCKET_NAME>` (bucket name only for AWS S3)
    * `immutable = 1` if Object-Lock is enabled on the S3 bucket, otherwise `0`
* `is_default = 1` was set on exactly one section to mark it as the default backup target.

Example 6.1 configuration:

```bash
# NFS Backup Target-1 as a default backup target
[NFS_BT1]
vault_storage_type = nfs
vault_storage_filesystem_export = 192.168.1.35:/mnt/trilio/share1
vault_storage_nfs_options = nolock,soft,timeo=600,intr,lookupcache=none,retrans=10
is_default = 1

# Ceph S3 Backup Target-2
[S3_BT2]
vault_storage_type = s3
vault_s3_endpoint_url = https://cephs3.triliodata.demo
vault_s3_bucket = trilio-test-bucket
vault_storage_filesystem_export = cephs3.triliodata.demo/trilio-test-bucket
immutable = 0
is_default = 0

# Ceph S3 Backup Target-3 with Object-lock enabled bucket
[S3_BT3]
vault_storage_type = s3
vault_s3_endpoint_url = https://cephs3.triliodata.demo
vault_s3_bucket = object-locked-cephs3-bucket
immutable = 1
vault_storage_filesystem_export = cephs3.triliodata.demo/object-locked-cephs3-bucket

# AWS S3 Backup Target-4 with Object-lock enabled bucket
[S3_BT4]
vault_storage_type = s3
vault_s3_endpoint_url =
vault_s3_bucket = object-locked-aws-s3-01
immutable = 1
vault_storage_filesystem_export = object-locked-aws-s3-01

```

### **List & Show Configured BTs**

#### Using Horizon Dashboard

1. Log in to the **OpenStack Horizon Dashboard** as an **Admin** user.
2. Navigate to the **Admin-> Backups-Admin -> Backup Targets**
3. On the page, click the **Backup Targets** tab to see the list of Backup Target Types.

<figure><img src="/files/1kdqqcwiUHoyu3RdU8kq" alt=""><figcaption></figcaption></figure>

#### Using CLI

**Create Backup Target:**

* Command:

```
workloadmgr backup-target-create
```

* Alias:

```
openstack workloadmgr backup target create
```

* Options:

```bash
# workloadmgr help backup-target-create
usage: workloadmgr backup-target-create [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN] [--noindent]
                                        [--prefix PREFIX] [--max-width <integer>] [--fit-width] [--print-empty]
                                        [--s3-endpoint-url <s3_endpoint_url>] [--s3-bucket <s3_bucket>]
                                        [--filesystem-export <filesystem_export>] [--type <type>]
                                        [--btt-name <btt_name>] [--default] [--immutable]
                                        [--metadata metadata [metadata ...]]

Create backup target

optional arguments:
  -h, --help            show this help message and exit
  --s3-endpoint-url <s3_endpoint_url>
                        S3 endpoint URL.
  --s3-bucket <s3_bucket>
                        S3 bucket. Required for s3 backup target type
  --filesystem-export <filesystem_export>
                        BT filesystem export path. Required for nfs backup target only. For s3 it's handled internally
  --type <type>
                        Required BT type. Eg. nfs, s3
  --btt-name <btt_name>
                        optional Backup Target Type name. If not provided, then we use filesystem export value to generate BTT name
  --default             denotes whether Backup Target is default
  --immutable           denotes whether Backup Target is immutable
  --metadata metadata [metadata ...]
                        Specify a key value pairs to include in the BT metadata Eg. --metadata key1=value1 key2=value2 keyN=valueN

```

* Example:

<figure><img src="/files/eJa5iwe7Dsiy13pW2HNv" alt=""><figcaption></figcaption></figure>

**Delete Backup Target:**

* Command:

```
workloadmgr backup-target-delete
```

* Alias:

```
openstack workloadmgr backup target delete
```

* Options:

```bash
# workloadmgr help backup-target-delete
usage: workloadmgr backup-target-delete [-h] <backup_target_id>
Delete existing backup target
positional arguments:
  <backup_target_id>
                        ID of the backup target to delete.

```

* Example:

<figure><img src="/files/4BKaz50ZVFQhf6w90BoS" alt=""><figcaption></figcaption></figure>

**List the available Backup Targets:**

* Command:

```
workloadmgr backup-target-list
```

* Alias:

```
openstack workloadmgr backup target list
```

* Options:

```bash
# workloadmgr help backup-target-list
usage: workloadmgr backup-target-list [-h]
                                      [-f {csv,json,table,value,yaml}]
                                      [-c COLUMN]
                                      [--quote {all,minimal,none,nonnumeric}]
                                      [--noindent]
                                      [--max-width <integer>]
                                      [--fit-width] [--print-empty]
                                      [--sort-column SORT_COLUMN]
                                      [--sort-ascending | --sort-descending]

List all the backup targets.

options:
  -h, --help            show this help message and exit

output formatters:
  output formatter options

  -f {csv,json,table,value,yaml}, --format {csv,json,table,value,yaml}
                        the output format, defaults to table
  -c COLUMN, --column COLUMN
                        specify the column(s) to include, can be repeated to
                        show multiple columns
  --sort-column SORT_COLUMN
                        specify the column(s) to sort the data (columns
                        specified first have a priority, non-existing columns
                        are ignored), can be repeated
  --sort-ascending      sort the column(s) in ascending order
  --sort-descending     sort the column(s) in descending order

CSV Formatter:
  --quote {all,minimal,none,nonnumeric}
                        when to include quotes, defaults to nonnumeric

json formatter:
  --noindent            whether to disable indenting the JSON

table formatter:
  --max-width <integer>
                        Maximum display width, <1 to disable. You can also use
                        the CLIFF_MAX_TERM_WIDTH environment variable, but the
                        parameter takes precedence.
  --fit-width           Fit the table to the display width. Implied if --max-
                        width greater than 0. Set the environment variable
                        CLIFF_FIT_WIDTH=1 to always enable
  --print-empty         Print empty table if there is no data to show.
  
```

* Example:

<figure><img src="/files/Kr4CluV2vpVsYRaQtrKo" alt=""><figcaption></figcaption></figure>

**Show Details of a Backup Target:**

* Command:

```
workloadmgr backup-target-show
```

* Alias:

```
openstack workloadmgr backup target show
```

* Options:

```bash
# workloadmgr help backup-target-show
usage: workloadmgr backup-target-show [-h]
                                      [-f {json,shell,table,value,yaml}]
                                      [-c COLUMN] [--noindent]
                                      [--prefix PREFIX]
                                      [--max-width <integer>]
                                      [--fit-width] [--print-empty]
                                      <backup_target_id>

Show details about backup targets

positional arguments:
  <backup_target_id>
                        ID of the backup target.

options:
  -h, --help            show this help message and exit

output formatters:
  output formatter options

  -f {json,shell,table,value,yaml}, --format {json,shell,table,value,yaml}
                        the output format, defaults to table
  -c COLUMN, --column COLUMN
                        specify the column(s) to include, can be repeated to
                        show multiple columns

json formatter:
  --noindent            whether to disable indenting the JSON

shell formatter:
  a format a UNIX shell can parse (variable="value")

  --prefix PREFIX
                        add a prefix to all variable names

table formatter:
  --max-width <integer>
                        Maximum display width, <1 to disable. You can also use
                        the CLIFF_MAX_TERM_WIDTH environment variable, but the
                        parameter takes precedence.
  --fit-width           Fit the table to the display width. Implied if --max-
                        width greater than 0. Set the environment variable
                        CLIFF_FIT_WIDTH=1 to always enable
  --print-empty         Print empty table if there is no data to show.
```

* Example:

<figure><img src="/files/UhWkucU3mqYBUK9wAb2A" alt=""><figcaption></figcaption></figure>

**Backup Target Set Default:**

* Command:

```
workloadmgr backup-target-set-default
```

* Alias:

```
openstack workloadmgr backup target set default
```

* Options:

```bash
# workloadmgr help backup-target-set-default
usage: workloadmgr backup-target-set-default [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN] [--noindent]
                                             [--prefix PREFIX] [--max-width <integer>] [--fit-width] [--print-empty]
                                             <backup_target_id>

Set existing backup target as default, it's respective one of BTT will be set as default, If BTT doesn't exists then it will be created and
set as default BTT

positional arguments:
  <backup_target_id>
                        ID of the backup target which needs to be set as default

```

* Example:

<figure><img src="/files/fQjjGTHjkHlN7r0GT7Rf" alt=""><figcaption></figcaption></figure>

***

## **2. Backup Target Types (BTTs)**

#### **Definition**:

Backup Target Types are an abstraction layer over Backup Targets. They provide additional administrative controls and can be categorized based on their scope and access permissions.

#### **Types of Backup Target Types**:

1. **Public**:
   * Accessible by all users and projects in the system.
   * Suitable for shared storage scenarios where multiple teams or tenants use the same backup infrastructure.
2. **Private**:
   * Restricted to specific projects.
   * Private Backup Target Types can be assigned to one or multiple projects, allowing project-specific control over backup storage.

#### **Relationship Between Backup Targets and Backup Target Types**:

* A **many-to-one relationship** exists between Backup Target Types and Backup Targets.
  * Multiple Backup Target Types can map to a single Backup Target.
  * This allows administrators to define different policies or access levels for a shared storage backend.

#### Pre-created Backup Target Types

* Trilio creates the BTTs of all the **Backup Targets** that are configured during deployment with the same name as the **Backup Targets**.
* It inherits the provided configuration options for each Backup Target and creates the Public Backup Target Types by default.

### List Available BTTs

#### Using Horizon Dashboard

1. Log in to the **OpenStack Horizon Dashboard** as an **Admin** user.
2. Navigate to the **Admin-> Backups-Admin -> Backup Targets**
3. On the page, click the **Backup Target Types** tab to see the list of Backup Target Types.

<figure><img src="/files/1kdqqcwiUHoyu3RdU8kq" alt=""><figcaption></figcaption></figure>

#### Using CLI

* Command:

```
workloadmgr backup-target-type-list
```

* Alias:

```
openstack workloadmgr backup target type list
```

* Options:

```bash
# workloadmgr help backup-target-type-list
usage: workloadmgr backup-target-type-list [-h]
                                           [-f {csv,json,table,value,yaml}]
                                           [-c COLUMN]
                                           [--quote {all,minimal,none,nonnumeric}]
                                           [--noindent]
                                           [--max-width <integer>]
                                           [--fit-width] [--print-empty]
                                           [--sort-column SORT_COLUMN]
                                           [--sort-ascending | --sort-descending]
                                           [--detail {True,False}]
                                           [--project-id <project_id>]

List all the backup target types.

options:
  -h, --help            show this help message and exit
  --detail {True,False}
                        List detail backup target types
  --project-id <project_id>
                        ID of the project.

output formatters:
  output formatter options

  -f {csv,json,table,value,yaml}, --format {csv,json,table,value,yaml}
                        the output format, defaults to table
  -c COLUMN, --column COLUMN
                        specify the column(s) to include, can be repeated to
                        show multiple columns
  --sort-column SORT_COLUMN
                        specify the column(s) to sort the data (columns
                        specified first have a priority, non-existing columns
                        are ignored), can be repeated
  --sort-ascending      sort the column(s) in ascending order
  --sort-descending     sort the column(s) in descending order

CSV Formatter:
  --quote {all,minimal,none,nonnumeric}
                        when to include quotes, defaults to nonnumeric

json formatter:
  --noindent            whether to disable indenting the JSON

table formatter:
  --max-width <integer>
                        Maximum display width, <1 to disable. You can also use
                        the CLIFF_MAX_TERM_WIDTH environment variable, but the
                        parameter takes precedence.
  --fit-width           Fit the table to the display width. Implied if --max-
                        width greater than 0. Set the environment variable
                        CLIFF_FIT_WIDTH=1 to always enable
  --print-empty         Print empty table if there is no data to show.

```

* Example:

<figure><img src="/files/NJip7EgYjtobyu66bGLC" alt=""><figcaption></figcaption></figure>

### Show Details of a BTT

#### Using Horizon Dashboard

* Most of the relevant information about the BTT can be seen while [Listing the BTTs](#list-available-btts).
* Trilio does not provide a separate GUI for showing the additional details of the BTTs.
* But, Trilio does provide a [CLI command](#using-cli-2) to get the additional details.

#### Using CLI

* Command:

```
workloadmgr backup-target-type-show
```

* Alias:

```
openstack workloadmgr backup target type show
```

* Options:

```bash
# workloadmgr help  backup-target-type-show
usage: workloadmgr backup-target-type-show [-h] [-f {json,shell,table,value,yaml}]
                                           [--print-empty]
                                           <backup_target_id>

Show details about backup target types

positional arguments:
  <backup_target_id>
                        ID of the backup target.

options:
  -h, --help            show this help message and exit

output formatters:
  output formatter options

  -f {json,shell,table,value,yaml}, --format {json,shell,table,value,yaml}
                        the output format, defaults to table
  -c COLUMN, --column COLUMN
                        specify the column(s) to include, can be repeated to show

json formatter:
  --noindent            whether to disable indenting the JSON

shell formatter:
  a format a UNIX shell can parse (variable="value")

  --prefix PREFIX
                        add a prefix to all variable names

table formatter:
  --max-width <integer>
                        Maximum display width, <1 to disable. You can also use the
  --fit-width           Fit the table to the display width. Implied if --max-width
  --print-empty         Print empty table if there is no data to show.

```

* Example:

<figure><img src="/files/Rra7fal2Mu1FYqILmSCY" alt=""><figcaption></figcaption></figure>

### Create a BTT

#### Using Horizon Dashboard

1. Log in to the **OpenStack Horizon Dashboard** as an **Admin** user.
2. Navigate to the **Admin-> Backups-Admin -> Backup Targets**
3. On the page, click the **Backup Target Types** tab to see the list of Backup Target Types.
4. Click on the <img src="/files/oBPF7bvoQ4Yxk4XHGYIv" alt="" data-size="line"> button to open the **Backup Target Type Create** wizard, and follow the instructions to create the BTT.

#### Using CLI

* Command:

```
workloadmgr backup-target-type-create
```

* Alias:

```
openstack workloadmgr backup target type create
```

* Options:

```bash
# workloadmgr help  backup-target-type-create
usage: workloadmgr backup-target-type-create [-h]
                                             [-f {json,shell,table,value,yaml}]
                                             [-c COLUMN] [--noindent]
                                             [--prefix PREFIX]
                                             [--max-width <integer>]
                                             [--fit-width] [--print-empty]
                                             [--default]
                                             [--description <description>]
                                             (--public | --project-ids <project-ids> [<project-ids> ...])
                                             [--metadata <key=key-name>]
                                             [--backup-targets-id <backup_targets_id>]
                                             <name>

Create backup target type

positional arguments:
  <name>        required BTT name.

options:
  -h, --help            show this help message and exit
  --default             denotes whether BTT is default
  --description <description>
                        Optional BTT description. (Default=None)
  --public              denotes whether BTT is of public type
  --project-ids <project-ids> [<project-ids> ...]
                        Required to assign BTT to projects
  --metadata <key=key-name>
                        Specify a key value pairs to include in the BTT metadata
                        Specify option multiple times to include multiple keys.
                        key=value
  --backup-targets-id <backup_targets_id>
                        ID of the backup target for which BTT would be created

output formatters:
  output formatter options

  -f {json,shell,table,value,yaml}, --format {json,shell,table,value,yaml}
                        the output format, defaults to table
  -c COLUMN, --column COLUMN
                        specify the column(s) to include, can be repeated to
                        show multiple columns

json formatter:
  --noindent            whether to disable indenting the JSON

shell formatter:
  a format a UNIX shell can parse (variable="value")

  --prefix PREFIX
                        add a prefix to all variable names

table formatter:
  --max-width <integer>
                        Maximum display width, <1 to disable. You can also use
                        the CLIFF_MAX_TERM_WIDTH environment variable, but the
                        parameter takes precedence.
  --fit-width           Fit the table to the display width. Implied if --max-
                        width greater than 0. Set the environment variable
                        CLIFF_FIT_WIDTH=1 to always enable
  --print-empty         Print empty table if there is no data to show.

```

* Example:

<figure><img src="/files/AHfCsPwnXpUTE6xylD2J" alt=""><figcaption></figcaption></figure>

### Modify a BTT

{% hint style="info" %}
Modification of the Default Backup Target Type is not allowed.
{% endhint %}

#### Using Horizon Dashboard

1. Log in to the **OpenStack Horizon Dashboard** as an **Admin** user.
2. Navigate to the **Admin-> Backups-Admin -> Backup Targets**
3. On the page, click the **Backup Target Types** tab to see the list of Backup Target Types.
4. Click on the <img src="/files/vYPrT8GkKgpRta4zFynu" alt="" data-size="line"> button under the **Actions** column of the BTT List table of the desired BTT to open the **Edit Backup Target Type** wizard.
5. Once the required changes are done, click on the **Edit** button on the wizard to save the changes.

#### Using CLI

* Command:

```
workloadmgr backup-target-type-modify
```

* Alias:

```
openstack workloadmgr backup target type modify
```

* Options:

```bash
# workloadmgr help  backup-target-type-modif
usage: workloadmgr backup-target-type-modify [-h] [-f {json,shell,table,value,yaml
                                             [--print-empty] [--name <name>] [--de
                                             (--public | --project-ids <project-id
                                             [--backup-target-type-id <backup_targ

Modify existing backup target type

options:
  -h, --help            show this help message and exit
  --name <name>
                        Optional BTT name. (Default=None)
  --default             denotes whether BTT is default
  --description <description>
                        Optional BTT description. (Default=None)
  --public              denotes whether BTT is of public type
  --project-ids <project-ids> [<project-ids> ...]
                        Required to assign BTT to projects
  --metadata <key=key-name>
                        Specify a key value pairs to include in the BTT metadata S
  --backup-target-type-id <backup_target_type_id>
                        ID of the backup target type for which given projects will

output formatters:
  output formatter options

  -f {json,shell,table,value,yaml}, --format {json,shell,table,value,yaml}
                        the output format, defaults to table
  -c COLUMN, --column COLUMN
                        specify the column(s) to include, can be repeated to show

json formatter:
  --noindent            whether to disable indenting the JSON

shell formatter:
  a format a UNIX shell can parse (variable="value")

  --prefix PREFIX
                        add a prefix to all variable names

table formatter:
  --max-width <integer>
                        Maximum display width, <1 to disable. You can also use the
  --fit-width           Fit the table to the display width. Implied if --max-width
  --print-empty         Print empty table if there is no data to show.

```

* Example:

<figure><img src="/files/Q2GhiQLMCX4aLaOKArYZ" alt=""><figcaption></figcaption></figure>

### Assign/Unassign Project(s) to/from a BTT

{% hint style="info" %}
Project assignment is allowed only to the **Private** Backup Target Types.
{% endhint %}

#### Using Horizon Dashboard

* Log in to the **OpenStack Horizon Dashboard** as an **Admin** user.
* Navigate to the **Admin-> Backups-Admin -> Backup Targets**
* On the page, click the **Backup Target Types** tab to see the list of Backup Target Types.
* Click the dropdown button under the **Actions** column of the BTT List table of the desired **Private** BTT and click on the <img src="/files/NhcZXsxD7YEDxXSCSkPe" alt="" data-size="line"> button to open the **Edit Backup Target Type Access** wizard.
* Select the Projects to be assigned, unselect the projects to be unassigned, and click on the **Save** button on the wizard to save the changes.

<figure><img src="/files/I0BGqgG7vboDz9BjaYZJ" alt=""><figcaption></figcaption></figure>

#### Using CLI

**Assigning Projects:**

* Command:

```
workloadmgr backup-target-type-add-projects
```

* Alias:

```
openstack workloadmgr backup target type add projects
```

Options:

{% code overflow="wrap" %}

```bash
# workloadmgr help  backup-target-type-add-projects
usage: workloadmgr backup-target-type-add-projects [-h]
                                                   [-f {json,shell,table,value,yaml}]
                                                   [-c COLUMN]
                                                   [--noindent]
                                                   [--prefix PREFIX]
                                                   [--max-width <integer>]
                                                   [--fit-width] [--print-empty]
                                                   [--backup-target-type-id <backup_target_type_id>]
                                                   [--project-ids <project-ids> [<project-ids> ...]]

Assign projects to existing backup target type

options:
  -h, --help            show this help message and exit
  --backup-target-type-id <backup_target_type_id>
                        ID of the backup target type for which given projects
                        will be assigned
  --project-ids <project-ids> [<project-ids> ...]
                        Required to assign BTT to projects

output formatters:
  output formatter options

  -f {json,shell,table,value,yaml}, --format {json,shell,table,value,yaml}
                        the output format, defaults to table
  -c COLUMN, --column COLUMN
                        specify the column(s) to include, can be repeated to
                        show multiple columns

json formatter:
  --noindent            whether to disable indenting the JSON

shell formatter:
  a format a UNIX shell can parse (variable="value")

  --prefix PREFIX
                        add a prefix to all variable names

table formatter:
  --max-width <integer>
                        Maximum display width, <1 to disable. You can also use
                        the CLIFF_MAX_TERM_WIDTH environment variable, but the
                        parameter takes precedence.
  --fit-width           Fit the table to the display width. Implied if --max-
                        width greater than 0. Set the environment variable
                        CLIFF_FIT_WIDTH=1 to always enable
  --print-empty         Print empty table if there is no data to show.

```

{% endcode %}

Example:

<figure><img src="/files/m3miBMmHF1zlJscut1C8" alt=""><figcaption></figcaption></figure>

**Unassigning Projects:**

* Command:

```
workloadmgr backup-target-type-remove-projects
```

* Alias:

```
openstack workloadmgr backup target type remove projects
```

Options:

```bash
# workloadmgr help  backup-target-type-remove-projects
usage: workloadmgr backup-target-type-remove-projects [-h]
                                                      [-f {json,shell,table,value,yaml}]
                                                      [-c COLUMN]
                                                      [--noindent]
                                                      [--prefix PREFIX]
                                                      [--max-width <integer>]
                                                      [--fit-width]
                                                      [--print-empty]
                                                      [--backup-target-type-id <backup_target_type_id>]
                                                      [--project-ids <project-ids> [<project-ids> ...]]

Remove already assigned projects from backup target types

options:
  -h, --help            show this help message and exit
  --backup-target-type-id <backup_target_type_id>
                        ID of the backup target type for which given projects
                        will be assigned
  --project-ids <project-ids> [<project-ids> ...]
                        Required to assign BTT to projects

output formatters:
  output formatter options

  -f {json,shell,table,value,yaml}, --format {json,shell,table,value,yaml}
                        the output format, defaults to table
  -c COLUMN, --column COLUMN
                        specify the column(s) to include, can be repeated to
                        show multiple columns

json formatter:
  --noindent            whether to disable indenting the JSON

shell formatter:
  a format a UNIX shell can parse (variable="value")

  --prefix PREFIX
                        add a prefix to all variable names

table formatter:
  --max-width <integer>
                        Maximum display width, <1 to disable. You can also use
                        the CLIFF_MAX_TERM_WIDTH environment variable, but the
                        parameter takes precedence.
  --fit-width           Fit the table to the display width. Implied if --max-
                        width greater than 0. Set the environment variable
                        CLIFF_FIT_WIDTH=1 to always enable  --print-empty         Print empty table if there is no data to show.

```

Example:

<figure><img src="/files/RAWMS7ZvnRs926qNbqeB" alt=""><figcaption></figcaption></figure>

### Add/Remove BTT Metadata

#### Using Horizon Dashboard

{% hint style="warning" %}
**Metadata updates are only possible through CLI**
{% endhint %}

#### Using CLI

**Adding Metadata:**

* Command:

```
workloadmgr backup-target-type-add-metadata
```

* Alias:

```
openstack workloadmgr backup target type add metadata
```

Options:

{% code overflow="wrap" %}

```bash
# workloadmgr help backup-target-type-add-metadata
usage: workloadmgr backup-target-type-add-metadata [-h]
                                                   [-f {json,shell,table,value,yaml}]
                                                   [-c COLUMN] [--noindent]
                                                   [--prefix PREFIX]
                                                   [--max-width <integer>]
                                                   [--fit-width]
                                                   [--print-empty]
                                                   [--backup-target-type-id <backup_target_type_id>]
                                                   [--metadata <key=key-name>]

Add metadata to existing backup target type

optional arguments:
  -h, --help            show this help message and exit
  --backup-target-type-id <backup_target_type_id>
                        ID of the backup target type for which given metadata
                        will be created
  --metadata <key=key-name>
                        Specify a key value pairs to include in the BTT
                        metadata Specify option multiple times to include
                        multiple keys. key=value

output formatters:
  output formatter options

  -f {json,shell,table,value,yaml}, --format {json,shell,table,value,yaml}
                        the output format, defaults to table
  -c COLUMN, --column COLUMN
                        specify the column(s) to include, can be repeated to
                        show multiple columns

json formatter:
  --noindent            whether to disable indenting the JSON

shell formatter:
  a format a UNIX shell can parse (variable="value")

  --prefix PREFIX       add a prefix to all variable names

table formatter:
  --max-width <integer>
                        Maximum display width, <1 to disable. You can also use
                        the CLIFF_MAX_TERM_WIDTH environment variable, but the
                        parameter takes precedence.
  --fit-width           Fit the table to the display width. Implied if --max-
                        width greater than 0. Set the environment variable
                        CLIFF_FIT_WIDTH=1 to always enable
  --print-empty         Print empty table if there is no data to show.

```

{% endcode %}

* Example:

<figure><img src="/files/Aa0weLtBIUTNH9ibV4KG" alt=""><figcaption></figcaption></figure>

**Removing Metadata:**

* Command:

```
workloadmgr backup-target-type-remove-metadata
```

* Alias:

```
openstack workloadmgr backup target type remove metadata
```

* Options:

{% code overflow="wrap" %}

```bash
# workloadmgr help backup-target-type-remove-metadata
usage: workloadmgr backup-target-type-remove-metadata [-h]
                                                      [-f {json,shell,table,value,yaml}]
                                                      [-c COLUMN] [--noindent]
                                                      [--prefix PREFIX]
                                                      [--max-width <integer>]
                                                      [--fit-width]
                                                      [--print-empty]
                                                      [--backup-target-type-id <backup_target_type_id>]
                                                      [--metadata-keys <metadata-keys> [<metadata-keys> ...]]

Remove metadata from existing backup target type

optional arguments:
  -h, --help            show this help message and exit
  --backup-target-type-id <backup_target_type_id>
                        ID of the backup target type for which given projects
                        will be assigned
  --metadata-keys <metadata-keys> [<metadata-keys> ...]
                        Required to remove metadata of BTT

output formatters:
  output formatter options

  -f {json,shell,table,value,yaml}, --format {json,shell,table,value,yaml}
                        the output format, defaults to table
  -c COLUMN, --column COLUMN
                        specify the column(s) to include, can be repeated to
                        show multiple columns

json formatter:
  --noindent            whether to disable indenting the JSON

shell formatter:
  a format a UNIX shell can parse (variable="value")

  --prefix PREFIX       add a prefix to all variable names

table formatter:
  --max-width <integer>
                        Maximum display width, <1 to disable. You can also use
                        the CLIFF_MAX_TERM_WIDTH environment variable, but the
                        parameter takes precedence.
  --fit-width           Fit the table to the display width. Implied if --max-
                        width greater than 0. Set the environment variable
                        CLIFF_FIT_WIDTH=1 to always enable
  --print-empty         Print empty table if there is no data to show.

```

{% endcode %}

Example:

<figure><img src="/files/mk4FWvSaHc6MEPutqJOd" alt=""><figcaption></figcaption></figure>

### Delete a BTT

{% hint style="danger" %}
Removing Backup Target Types from an active Workload can lead to inconsistent behavior and potential backup operation failures.
{% endhint %}

#### Using Horizon Dashboard

* Log in to the **OpenStack Horizon Dashboard** as an **Admin** user.
* Navigate to the **Admin-> Backups-Admin -> Backup Targets**
* On the page, click the **Backup Target Types** tab to see the list of Backup Target Types.
* Click the dropdown button under the **Actions** column of the BTT List table of the desired **Private** BTT, click on the <img src="/files/yBUXBwNmoxzagPa0cQu9" alt="" data-size="line"> button, and confirm the deletion once prompted.
* Deletion of multiple BTTs can be done by selecting the check boxes of the desired BTTs and then clicking the <img src="/files/RZ5mKv7gUsHQ4XU2X5si" alt="" data-size="line"> button at the top-right corner.

#### Using CLI

* Command:

```
workloadmgr backup-target-type-delete
```

* Alias:

```
openstack workloadmgr backup target type delete
```

* Options:

```bash
# workloadmgr help backup-target-type-delete
usage: workloadmgr backup-target-type-delete [-h] <backup_target_type_id>

Delete existing backup target type

positional arguments:
  <backup_target_type_id>
                        ID of the backup target type to delete.

optional arguments:
  -h, --help            show this help message and exit

```

* Example:

<figure><img src="/files/zeF7m1tNKt7Vg8TTIEIN" alt=""><figcaption></figcaption></figure>

***

## **3. User Interaction with Backup Target Types**

#### **How Users Choose Backup Storage**:

* Any user can select a **Public Backup Target Type** for storing backups, as these are universally accessible.
* For **Private Backup Target Types**, users can only select them if the Backup Target Type is explicitly assigned to their project.
* The user will have the option to select these **Backup Target Types** while creating a workload.
* Please note that once the workload is created with the chosen **Backup Target Type**, it can not be modified. The user has to recreate the workload if the **Backup Target Type** needs to be changed.

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.trilio.io/openstack/admin-guide/backup-targets.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
