Updated on 2025-07-22 GMT+08:00

Adding a Storage Backend

Function

This API is used to add a storage backend for an SFS Turbo file system.

Constraints

  • This API is only supported for SFS Turbo 1,000 MB/s/TiB, 500 MB/s/TiB, 250 MB/s/TiB, 125 MB/s/TiB, 40 MB/s/TiB, and 20 MB/s/TiB file systems.

  • Request body parameter file_system_path must be the name of a directory that cannot be found in the file system root directory.

  • When adding OBS resources as storage backends, you can only add OBS buckets. OBS parallel file systems cannot be added.

  • Adding OBS storage backends depends on the OBS service, so you need to obtain the OBS Administrator permissions.

  • This API is only supported for NFS file systems.

URI

POST /v1/{project_id}/sfs-turbo/shares/{share_id}/targets

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

The project ID.

share_id

Yes

String

The file system ID.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

The account token.

Content-Type

Yes

String

The MIME type.

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

file_system_path

Yes

String

The name of the interworking directory. SFS Turbo will create a subdirectory with this name in the file system root directory and associate this subdirectory with the storage backend. It must be a directory whose name cannot be found in the file system root directory. The restrictions are as follows:

  • Only letters, digits, underscores (_), hyphens (-), and periods (.) are allowed.

  • Its length cannot exceed 63 characters, and its name cannot be a period (.) or two periods (..).

  • It cannot contain slashes (/), and cannot be the name of a multi-level directory.

obs

Yes

ObsDataRepository object

The OBS storage backend.

Table 4 ObsDataRepository

Parameter

Mandatory

Type

Description

bucket

Yes

String

The OBS bucket name.

endpoint

Yes

String

The OBS bucket endpoint.

policy

No

ObsDataRepositoryPolicy object

The auto synchronization policy of the storage backend.

attributes

No

ObsTargetAttributes object

The attributes of the storage backend. This parameter is not supported for file systems that are created on or before June 30, 2024 and have not been upgraded. Submit a service ticket if you need it.

Table 5 ObsDataRepositoryPolicy

Parameter

Mandatory

Type

Description

auto_export_policy

No

AutoExportPolicy object

The auto export policy of the storage backend. If enabled, all updates made on the file system will be automatically exported to the OBS bucket.

Table 6 AutoExportPolicy

Parameter

Mandatory

Type

Description

events

No

Array of strings

The type of data automatically exported to the OBS bucket.

  • NEW: Files created and then modified in the SFS Turbo interworking directory. Any data or metadata modifications made will be automatically synchronized to the OBS bucket.

  • CHANGED: Files previously imported from the OBS bucket and then modified in the SFS Turbo interworking directory. Any data or metadata modifications made will be automatically synchronized to the OBS bucket.

  • DELETED: Files deleted from the SFS Turbo interworking directory. Deletions will be automatically synchronized to the OBS bucket, and only such files that were previously exported to the bucket will be deleted.

Enumeration values:

  • NEW

  • CHANGED

  • DELETED

prefix

No

String

The prefix to be matched in the storage backend.

suffix

No

String

The suffix to be matched in the storage backend.

Table 7 ObsTargetAttributes

Parameter

Mandatory

Type

Description

file_mode

No

Integer

The permissions on the imported file. Value range: 0 to 777

The first digit indicates the permissions of the file owner, and its value ranges from 0 to 7. The second digit indicates the permissions of the user group to which the file belongs, and its value ranges from 0 to 7. The third digit indicates the permissions of other users, and its value ranges from 0 to 7. The file owner is specified by UID, and the user group to which the file belongs is specified by GID. Users who are not the file owner and not in the user group to which the file belongs are other users.

Values 4, 2, and 1 indicate the read, write, and execute permissions respectively. The total value between 1 and 7 represents the access permissions. For example, the first digit 7 in 750 indicates that the file owner has the read, write, and execute permissions on the file, the second digit 5 indicates that the user group to which the file belongs has the read and execute permissions on the file, and the third digit 0 indicates that other users have no permission on the file.

dir_mode

No

Integer

The permissions on the imported directory. Value range: 0 to 777

The first digit indicates the permissions of the directory owner, and its value ranges from 0 to 7. The second digit indicates the permissions of the user group to which the directory belongs, and its value ranges from 0 to 7. The third digit indicates the permissions of other users, and its value ranges from 0 to 7. The directory owner is specified by UID, and the user group to which the directory belongs is specified by GID. Users who are not the directory owner and not in the user group to which the directory belongs are other users.

Values 4, 2, and 1 indicate the read, write, and execute permissions respectively. The total value between 1 and 7 represents the access permissions. For example, the first digit 7 in 750 indicates that the directory owner has the read, write, and execute permissions on the directory, the second digit 5 indicates that the user group to which the directory belongs has the read and execute permissions on the directory, and the third digit 0 indicates that other users have no permission on the directory.

uid

No

Integer

The ID of the user who owns the imported object. The default value is 0. The value ranges from 0 to 4294967294 (2^32-2).

gid

No

Integer

The ID of the user group to which the imported object belongs. The default value is 0. The value ranges from 0 to 4294967294 (2^32-2).

Response Parameters

Status code: 202

Table 8 Response header parameters

Parameter

Type

Description

X-request-id

String

The request ID.

Table 9 Response body parameters

Parameter

Type

Description

target_id

String

The storage backend ID.

creation_time

String

The time when the storage backend was added.

failure_details

FailureDetailsMessage object

The association error information.

file_system_path

String

The interworking directory name.

lifecycle

String

The association status.

CREATING means that the storage backend is being created. You can call the API for querying details of a storage backend to query the status in polling mode.

AVAILABLE means that the storage backend is added successfully.

MISCONFIGURED means that the storage backend fails to be added. DELETING is currently not supported.

Enumeration values:

  • CREATING

  • AVAILABLE

  • MISCONFIGURED

  • DELETING

obs

ObsDataRepository object

The OBS storage backend.

Table 10 FailureDetailsMessage

Parameter

Type

Description

message

String

The error message.

Table 11 ObsDataRepository

Parameter

Type

Description

bucket

String

The OBS bucket name.

endpoint

String

The OBS bucket endpoint.

policy

ObsDataRepositoryPolicy object

The auto synchronization policy of the storage backend.

attributes

ObsTargetAttributes object

The attributes of the storage backend. This parameter is not supported for file systems that are created on or before June 30, 2024 and have not been upgraded. Submit a service ticket if you need it.

Table 12 ObsDataRepositoryPolicy

Parameter

Type

Description

auto_export_policy

AutoExportPolicy object

The auto export policy of the storage backend. If enabled, all updates made on the file system will be automatically exported to the OBS bucket.

Table 13 AutoExportPolicy

Parameter

Type

Description

events

Array of strings

The type of data automatically exported to the OBS bucket.

  • NEW: Files created and then modified in the SFS Turbo interworking directory. Any data or metadata modifications made will be automatically synchronized to the OBS bucket.

  • CHANGED: Files previously imported from the OBS bucket and then modified in the SFS Turbo interworking directory. Any data or metadata modifications made will be automatically synchronized to the OBS bucket.

  • DELETED: Files deleted from the SFS Turbo interworking directory. Deletions will be automatically synchronized to the OBS bucket, and only such files that were previously exported to the bucket will be deleted.

Enumeration values:

  • NEW

  • CHANGED

  • DELETED

prefix

String

The prefix to be matched in the storage backend.

suffix

String

The suffix to be matched in the storage backend.

Table 14 ObsTargetAttributes

Parameter

Type

Description

file_mode

Integer

The permissions on the imported file. Value range: 0 to 777

The first digit indicates the permissions of the file owner, and its value ranges from 0 to 7. The second digit indicates the permissions of the user group to which the file belongs, and its value ranges from 0 to 7. The third digit indicates the permissions of other users, and its value ranges from 0 to 7. The file owner is specified by UID, and the user group to which the file belongs is specified by GID. Users who are not the file owner and not in the user group to which the file belongs are other users.

Values 4, 2, and 1 indicate the read, write, and execute permissions respectively. The total value between 1 and 7 represents the access permissions. For example, the first digit 7 in 750 indicates that the file owner has the read, write, and execute permissions on the file, the second digit 5 indicates that the user group to which the file belongs has the read and execute permissions on the file, and the third digit 0 indicates that other users have no permission on the file.

dir_mode

Integer

The permissions on the imported directory. Value range: 0 to 777

The first digit indicates the permissions of the directory owner, and its value ranges from 0 to 7. The second digit indicates the permissions of the user group to which the directory belongs, and its value ranges from 0 to 7. The third digit indicates the permissions of other users, and its value ranges from 0 to 7. The directory owner is specified by UID, and the user group to which the directory belongs is specified by GID. Users who are not the directory owner and not in the user group to which the directory belongs are other users.

Values 4, 2, and 1 indicate the read, write, and execute permissions respectively. The total value between 1 and 7 represents the access permissions. For example, the first digit 7 in 750 indicates that the directory owner has the read, write, and execute permissions on the directory, the second digit 5 indicates that the user group to which the directory belongs has the read and execute permissions on the directory, and the third digit 0 indicates that other users have no permission on the directory.

uid

Integer

The ID of the user who owns the imported object. The default value is 0. The value ranges from 0 to 4294967294 (2^32-2).

gid

Integer

The ID of the user group to which the imported object belongs. The default value is 0. The value ranges from 0 to 4294967294 (2^32-2).

Status code: 400

Table 15 Response body parameters

Parameter

Type

Description

errCode

String

The error code.

errMsg

String

The error message.

Status code: 500

Table 16 Response body parameters

Parameter

Type

Description

errCode

String

The error code.

errMsg

String

The error message.

Example Requests

  • This example adds a storage backend for the file system whose ID is 630509b1-ded4-476e-8d06-dbbc3dc23900. The OBS bucket name is myBucket, the OBS bucket endpoint is obs.region.example.com, and the name of the interworking directory is sfsturboDirName.

    POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares/630509b1-ded4-476e-8d06-dbbc3dc23900/targets
    
    {
      "file_system_path" : "sfsturboDirName",
      "obs" : {
        "bucket" : "myBucket",
        "endpoint" : "obs.region.example.com"
      }
    }
  • This example adds a storage backend for the file system whose ID is 630509b1-ded4-476e-8d06-dbbc3dc23900. The OBS bucket name is myBucket, the OBS bucket endpoint is obs.region.example.com, and the name of the interworking directory is sfsturboDirName. The permissions of imported files are set to 750, and the permissions of imported directories are set to 640.

    POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares/630509b1-ded4-476e-8d06-dbbc3dc23900/targets
    
    {
      "file_system_path" : "sfsturboDirName",
      "obs" : {
        "bucket" : "myBucket",
        "endpoint" : "obs.region.example.com",
        "attributes" : {
          "file_mode" : 750,
          "dir_mode" : 640
        }
      }
    }
  • This example adds a storage backend for the file system whose ID is 630509b1-ded4-476e-8d06-dbbc3dc23900. The OBS bucket name is myBucket, the OBS bucket endpoint is obs.region.example.com, and the name of the interworking directory is sfsturboDirName. The permissions of imported files are set to 750, the permissions of imported directories are set to 640, and both the UIDs and GIDs of the imported files and directories are set to 0.

    POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares/630509b1-ded4-476e-8d06-dbbc3dc23900/targets
    
    {
      "file_system_path" : "sfsturboDirName",
      "obs" : {
        "bucket" : "myBucket",
        "endpoint" : "obs.region.example.com",
        "attributes" : {
          "file_mode" : 750,
          "dir_mode" : 640,
          "uid" : 0,
          "gid" : 0
        }
      }
    }
  • This example adds a storage backend for the file system whose ID is 630509b1-ded4-476e-8d06-dbbc3dc23900. The OBS bucket name is myBucket, the OBS bucket endpoint is obs.region.example.com, and the name of the interworking directory is sfsturboDirName. The data types of the auto export policy are set to NEW, CHANGED, and DELETED.

    POST HTTPS://{endpoint}/v1/{project_id}/sfs-turbo/shares/630509b1-ded4-476e-8d06-dbbc3dc23900/targets
    
    {
      "file_system_path" : "sfsturboDirName",
      "obs" : {
        "bucket" : "myBucket",
        "endpoint" : "obs.region.example.com",
        "policy" : {
          "auto_export_policy" : {
            "events" : [ "NEW", "CHANGED", "DELETED" ]
          }
        }
      }
    }

Example Responses

Status code: 202

Task delivered

{
  "target_id" : "00000334-xxxx-402d-a5d4-bxxxxx87b939",
  "creation_time" : "2023-11-19T04:02:03",
  "file_system_path" : "sfsturboDirName",
  "lifecycle" : "CREATING",
  "obs" : {
    "bucket" : "myBucket",
    "endpoint" : "obs.region.example.com"
  }
}

Status code: 400

Error response

{
  "errCode" : "SFS.TURBO.0001",
  "errMsg" : "request path/body parameters invalid"
}

Status code: 500

Error response

{
  "errCode" : "SFS.TURBO.0005",
  "errMsg" : "internal server error"
}

Status Codes

Status Code

Description

202

Task delivered

400

Error response

500

Error response

Error Codes

See Error Codes.