Updated on 2024-11-13 GMT+08:00

Adding a Backend Target

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 root directory of the file system.

URI

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

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID

share_id

Yes

String

File system ID

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

Account token

Content-Type

Yes

String

MIME type

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

file_system_path

Yes

String

Name of the linkage directory. SFS Turbo creates a subdirectory with this name in the root directory of the file system. The directory is used to bind the backend storage.

The value must be a directory name that does not exist in the root directory of the file system. The value contains a maximum of 63 characters. The subdirectory name cannot be a period (.) or two consecutive periods (..).

Multi-level directories are not supported, and slashes (/) are not allowed.

obs

Yes

ObsDataRepository object

OBS target

Table 4 ObsDataRepository

Parameter

Mandatory

Type

Description

bucket

Yes

String

OBS bucket name

endpoint

Yes

String

Name of the region where the bucket belongs

policy

No

ObsDataRepositoryPolicy object

Auto synchronization policy of the storage backend

attributes

No

ObsTargetAttributes object

Properties 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

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

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.

Table 7 ObsTargetAttributes

Parameter

Mandatory

Type

Description

file_mode

No

Integer

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

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

ID of the user who imports the object. The default value is 0. The value ranges from 0 to 4,294,967,294 (2^32 - 2).

gid

No

Integer

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

Response Parameters

Status code: 202

Table 8 Response header parameters

Parameter

Type

Description

X-request-id

String

Request ID

Table 9 Response body parameters

Parameter

Type

Description

target_id

String

Target ID

creation_time

String

Time when the target was created

failure_details

FailureDetailsMessage object

Error information

file_system_path

String

Name of the interworking directory

lifecycle

String

Binding status.

If the returned status is CREATING, you need to call the API for obtaining backend storage details to poll the binding completion status.

If the returned status is AVAILABLE, the backend storage is successfully bound.

If the status is MISCONFIGURED, the backend storage fails to be bound. The DELETING state is not supported currently.

obs

ObsDataRepository object

OBS target

Table 10 FailureDetailsMessage

Parameter

Type

Description

message

String

Error message

Table 11 ObsDataRepository

Parameter

Type

Description

bucket

String

OBS bucket name

endpoint

String

Name of the region where the bucket belongs

policy

ObsDataRepositoryPolicy object

Auto synchronization policy of the storage backend

attributes

ObsTargetAttributes object

Properties 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

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

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.

Table 14 ObsTargetAttributes

Parameter

Type

Description

file_mode

Integer

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

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

ID of the user who imports the object. The default value is 0. The value ranges from 0 to 4,294,967,294 (2^32 - 2).

gid

Integer

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

Status code: 400

Table 15 Response body parameters

Parameter

Type

Description

errCode

String

Error code

errMsg

String

Error description

Status code: 500

Table 16 Response body parameters

Parameter

Type

Description

errCode

String

Error code

errMsg

String

Error description

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 type of the auto export policy is 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 submitted

{
  "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 submitted

400

Error response

500

Error response

Error Codes

See Error Codes.