README ¶
Development Kit for golang
Fass-sdk-golang is the Taocloud block storage service (FASS) Software Development Kit
for golang, which work with golang 1.18 or above.
Object description
The relationship between the request and parameter of the resource operation depends on the reference
Object | Operation | Request | Parameter | Result |
Account | Create | CreateAccountRequest | CreateAccountParameter | CreateAccountResponse, error |
Describe | RetrieveAccountRequest | RetrieveAccountParameter | RetrieveAccountResponse, error | |
List | ListAccountRequest | ListAccountParameter | ListAccountResponse, error | |
Delete | DeleteAccountRequest | DeleteAccountParameter | error | |
Group | AddQualifier | AddQualifierToGroupRequest | AddQualifierToGroupParameter | AddQualifierToGroupResponse, error |
RemoveQualifier | RemoveQualifierFromGroupRequest | RemoveQualifierFromGroupParameter | RemoveQualifierFromGroupResponse, error | |
Describe | RetrieveGroupRequest | RetrieveGroupParameter | RetrieveGroupResponse, error | |
List | ListGroupRequest | ListGroupParameter | ListGroupResponse, error | |
Delete | DeleteGroupRequest | DeleteGroupParameter | error | |
Pool | Create | CreatePoolRequest | CreatePoolParameter | CreatePoolResponse, error |
Describe | RetrievePoolRequest | RetrievePoolParameter | RetrievePoolResponse, error | |
List | ListPoolRequest | ListPoolParameter | ListPoolResponse, error | |
Delete | DeletePoolRequest | DeletePoolParameter | error | |
Subsys | Create | CreateSubsysRequest | CreateSubsysParameter | CreateSubsysResponse, error |
Describe | RetrieveSubsysRequest | RetrieveSubsysParameter | RetrieveSubsysResponse, error | |
List | ListSubsysRequest | ListSubsysParameter | ListSubsysResponse, error | |
Export | ExportSubsysRequest | ExportSubsysParameter | error | |
Unexport | UnexportSubsysRequest | UnexportSubsysParameter | error | |
SetAuth | SetSubsysAuthRequest | SetSubsysAuthParameter | error | |
AuthDescribe | RetrieveSubsysAuthRequest | RetrieveSubsysAuthParameter | RetrieveSubsysAuthResponse, error | |
RemoveAuth | RemoveSubsysAuthRequest | RemoveSubsysAuthParameter | error | |
SetChap | SetSubsysChapRequest | SetSubsysChapParameter | error | |
ChapDescribe | RetrieveSubsysChapRequest | RetrieveSubsysChapParameter | RetrieveSubsysChapResponse, error | |
RemoveChap | RemoveSubsysChapRequest | RemoveSubsysChapParameter | error | |
Delete | DeleteSubsysRequest | DeleteSubsysParameter | error | |
Volume | Describe | RetrieveVolumeRequest | RetrieveVolumeParameter | RetrieveVolumeResponse, error |
List | ListVolumeRequest | ListVolumeParameter | ListVolumeResponse, error | |
Flatten | FlattenVolumeRequest | FlattenVolumeParameter | FlattenVolumeResponse, error | |
FlattenProgress | FlattenVolumeProgressRequest | FlattenVolumeProgressParameter | FlattenVolumeProgressResponse, error | |
StopFlatten | StopFlattenVolumeRequest | StopFlattenVolumeParameter | StopFlattenVolumeResponse, error | |
SetQos | SetQosOfVolumeRequest | SetQosOfVolumeParameter | SetQosOfVolumeResponse, error | |
Expand | ExpandVolumeRequest | ExpandVolumeParameter | error | |
Delete | DeleteVolumeRequest | DeleteVolumeParameter | error | |
Snapshot | Create | CreateSnapshotRequest | CreateSnapshotParameter | CreateSnapshotResponse, error |
Describe | RetrieveSnapshotRequest | RetrieveSnapshotParameter | RetrieveSnapshotResponse, error | |
List | ListSnapshotRequest | ListSnapshotParameter | ListSnapshotResponse, error | |
Revert | RevertSnapshotRequest | RevertSnapshotParameter | error | |
Delete | DeleteSnapshotRequest | DeleteSnapshotParameter | error |
SDKError contains the key information
- RequestId : request id
- StatusCode: http request status code
- Code : fass API operation result status code
- Message : fass API operation failed description message
- Data : empty can be ignored
Example
RequestId: b225b6e3-50d2-493b-9219-8443d2e0389b
StatusCode: 0
Code: 400003
Message: Pool pool3 Not Exist
Data: {}
Example
All operations need to be initialized before the client, it is recommended to put it in the init method to handle
import "fass-go/client"
...
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
endpointList := ["xxx.xxx.xxx.xxx", "xxx.xxx.xxx.xxx", ...]
port := 8000
backoff := 5
retryCount := 3
readTimeout := 30
connectTimeout := 1
client.InitConfig(&endpointList, &port, &readTimeout, &connectTimeout, &backoff, &retryCount)
...
Pool
CreatePool
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.CreatePoolParameter{}
parameter.SetECRatio_4_2()
parameter.SetSectorSize4096()
parameter.SetPoolName(poolName)
result, err := requests.CreatePoolRequest(¶meter, requestId)
......
RetrievePool
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.RetrievePoolParameter{}
parameter.SetPoolName("fast_pool") // 设置要获取的存储池信息的池名
result, err := requests.RetrievePoolRequest(¶meter, requestId)
......
ListPool
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.ListPoolParameter{}
parameter.SetPageNum(1)// 设置第1页,可以不设置
parameter.SetPageSize(10)// 设置分页大小,可以不设置
result, err := requests.RetrievePoolRequest(¶meter, requestId)
......
DeletePool
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.DeletePoolParameter{}
parameter.SetPoolName("fast_pool") // 设置要删除的存储池池名为fast_pool
parameter.ForceDelete() // 强制删除
err := requests.DeletePoolRequest(¶meter, requestId)
......
Subsys
CreateSubsys
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.CreateSubsysParameter{}
parameter.SetName("subsys001") //设置要创建的subsys名为subsys001(名称长度小于53个字符长度)
parameter.SetPoolName("fast_pool") //设置目标存储池为fast_pool(存储池fast_pool必须存在)
parameter.SetVolumeName("volume001") // 设置新卷名称为volume001(名称长度小于64个字符长度),可以不设置该卷默认卷名是subsys_subsys001_0001
parameter.SetSectorSize4096()// 设置新卷的SectorSize为4096,可以不设置默认使用目标池的配置
parameter.SetCapacityGB(10) // 设置新卷的容量为10GB
parameter.EnableISCSI()//启用iSCSI协议(可以不选但是iSCSI和NVMeoF不能都不启用)
parameter.EnableNVMeoF()//启用NVMeoF协议(可以不选但是iSCSI和NVMeoF不能都不启用)
parameter.SetBpsMB(1000) //设置新卷流控的IOPS为1000,可以不设置。默认不限制流控
parameter.SetIops(2000)// 设置新卷流控的BPS为2000,可以不设置。默认不限制流控
parameter.SetFormatROW()// 设置新卷的格式为ROW,可以不设置。默认使用池的配置
result, err := requests.CreateSubsysRequest(¶meter, requestId) // 创建subsys
......
CreateVolumeFromSnapshot
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
createSubsysParameter := parameters.CreateSubsysParameter{}
createSubsysParameter.SetPoolName("fast_pool")// 设置目标存储池为fast_pool
createSubsysParameter.SetName("subsys002") // 设置要创建的subsys名为subsys002
createSubsysParameter.SetVolumeName("volume002") // 设置新卷名称为volume002
createSubsysParameter.SetSrcVolumeName("volume001") // 设置源卷的卷名为volume001(使用快照建卷时源卷必须存在)
createSubsysParameter.SetSrcSnapshotName("snapshot001") //设置源卷的快照名为snapshot001(使用快照建卷时源卷的快照必须存在)
createSubsysParameter.EnableISCSI()// 新subsys启用iSCSI协议
result, err := requests.CreateSubsysRequest(&createSubsysParameter, requestId)
......
RetrieveSubsys
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.RetrieveSubsysParameter{}
parameter.SetSubsysName("subsys001") // 设置subsys名称为subsys001
result, err := requests.RetrieveSubsysRequest(¶meter, requestId)
......
ListSubsys
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.ListPoolParameter{}
parameter.SetPageNum(1)// 设置第1页,可以不设置
parameter.SetPageSize(10)// 设置分页大小,可以不设置
result, err := requests.ListPoolRequest(¶meter, requestId)
......
ExportSubsys
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.ExportSubsysParameter{}
parameter.SetSubsysName("subsys001") // 设置subsys名称为subsys001
parameter.ExportISCSI() // 导出iSCSI协议
err := requests.ExportSubsysRequest(¶meter, requestId) //导出协议
......
UnexportSubsys
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.UnexportSubsysParameter{}
parameter.SetSubsysName("subsys001")// 设置subsys名称为subsys001
parameter.UnexportISCSI() // 关闭iSCSI协议的导出
err := requests.UnexportSubsysRequest(¶meter, requestId)
......
DeleteSubsys
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.DeleteSubsysParameter{}
parameter.SetSubsysName("subsys001")
parameter.ForceDelete() // 使用强制删除,可以不设置。默认不强制删除
parameter.DeleteVolume() // 一起删除关联的卷,可以不设置。默认不删除关联的卷
err := requests.DeletePoolRequest(¶meter, requestId)
......
Volume
RetrieveVolume
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.RetrieveVolumeParameter{}
parameter.SetVolumeName("volume001") //设置要获取的卷信息的卷名为volume001
result, err := requests.RetrieveVolumeRequest(¶meter, requestId)
......
ExpandVolume
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.ExpandVolumeParameter{}
parameter.SetVolumeName("volume001") //设置要扩容的卷的卷名为volume001(扩容操作的卷volume001必须存在)
parameter.SetCapacityGB(20) //设置卷要扩容的大小为20GB
err := requests.ExpandVolumeRequest(¶meter, requestId)
......
SetQosOfVolume
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.SetQosOfVolumeParameter{}
parameter.SetVolumeName("volume002") // 设置要设置流控的卷的卷名为volume002(设置流控的卷必须存在)
parameter.SetBpsMB(100) // 设置bps限制为100MB/s
parameter.SetIops(1000) // 设置iops限制为1000/s
err := requests.SetQosOfVolumeRequest(¶meter, requestId)
......
FlattenVolume 只有使用快照创建出来的卷才能做分离操
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.FlattenVolumeParameter{}
parameter.SetVolumeName("volume002") // 设置要分离的卷的卷名为volume002(分离卷volume002必须存在)
data, err := requests.FlattenVolumeRequest(¶meter, requestId)
......
FlattenVolumeProgress
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.GetFlattenVolumeProgress{}
parameter.SetTaskId("d269f2ba-d3cf-4aa5-870a-667268e4a414") // 设置分离任务的任务id为d269f2ba-d3cf-4aa5-870a-667268e4a414(从FlattenVolume的结果中获取)
result, err := requests.FlattenVolumeProgressRequest(¶meter, requestId)
......
StopFlattenVolume
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.StopFlattenVolumeRequest{}
parameter.SetTaskId("d269f2ba-d3cf-4aa5-870a-667268e4a414") //设置要停止flatten任务的任务id为d269f2ba-d3cf-4aa5-870a-667268e4a414(从FlattenVolume的结果中获取)
err := requests.StopFlattenVolumeRequest(¶meter, requestId)
......
DeleteVolume
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.DeleteVolumeParameter{}
parameter.SetVolumeName("volume002") // 设置要分离的卷的卷名为volume002
parameter.ForceDelete() // 强制删除,可以不强制删除
err := requests.DeleteVolumeRequest(¶meter, requestId)
......
Snapshot
CreateSnapshot 一个卷最多能够创建256个快照
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.CreateSnapshotParameter{}
parameter.SetVolumeName("volume001") // 设置要创建快照的卷的名称为volume001(卷volume001必须存在)
parameter.SetSnapshotName("snapshot001") // 设置快照名称为snapshot001
result, err := requests.CreateSnapshotRequest(¶meter, requestId)
......
RetrieveSnapshot
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.RevertSnapshotParameter{}
parameter.SetVolumeName("volume001")
parameter.SetSnapshotName("snapshot001")
err := requests.RevertSnapshotRequest(¶meter, requestId)
......
ListSnapshot 获取卷的快照列表
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.ListSnapshotParameter{}
parameter.SetVolumeName("volume001") // 设置要获取的快照列表所属的卷的卷名为volume001
result, err := requests.ListSnapshotRequest(¶meter, requestId)
......
RevertSnapshot
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.RevertSnapshotParameter{}
parameter.SetVolumeName("volume001")
parameter.SetSnapshotName("snapshot001")
err := requests.RevertSnapshotRequest(¶meter, requestId)
......
DeleteSnapshot
......
defer func() {
if err := recover(); err != nil {
// custom panic handle
}
}()
requestId := uuid.New().String()
parameter := parameters.DeleteSnapshotParameter{}
parameter.SetVolumeName("volume001")
parameter.SetSnapshotName("snapshot001")
err := requests.DeleteSnapshotRequest(¶meter, requestId)
......
Parameter description
- Pool
ParameterStruct | Method | Required | Description |
CreatePoolParameter | SetPoolName | yes | Set storage pool name |
SetReplicaNum[2|3|4|5] | yes | Set the redundancy type to [2|3|4|5] replicas | |
SetECRatio_[4|6|8]_2 | yse | Set the redundancy type to ec [4|6|8]+2 | |
SetSectorSize[512|4096] | yes | Set the sector size to [512|4096] | |
RetrievePoolParameter | SetPoolName | yes | Set storage pool name |
DeletePoolParameter | SetPoolName | yes | Set storage pool name |
ForceDelete | no | Force delete storage pool |
- ACL
ParameterStruct | Method | Required | Description |
CreateAccountParameter | SetAccountName | yes | Set account name |
SetPassword | yes | Set account password | |
RetrieveAccountParameter | SetAccountName | yes | Set account name |
DeleteAccountParameter | SetAccountName | yes | Set account name |
AddQualifierToGroupParameter | SetGroupName | yes | Set group name(Automatically created when group does not exist) |
SetHostName | yes | Set client host | |
SetQualifierList | yes | Set qualifiers to of client host | |
RemoveQualifierFromGroupParameter | SetGroupName | yes | Set group name |
SetHostName | yes | Set client host | |
SetQualifierList | yes | Set qualifiers removed from client host |
- Subsys
ParameterStruct | Method | Required | Description |
CreateSubsysParameter | SetPoolName | yes | Set storage pool name |
SetName | yes | Set the subsys name | |
SetPoolName | yes | Set destination pool name | |
SetBpsMB | no | Set volume bps(unit MB) | |
SetIops | no | Set volume iops | |
SetCapacityGB | no | Set volume capacity(unit GB, SetCapacityGB and SetCapacityTB are not allowed both are not set) | |
SetCapacityTB | no | Set volume capacity(unit TB, SetCapacityGB and SetCapacityTB are not allowed both are not set) | |
SetFormatROW | no | Set volume format ROW | |
SetFormatRAW | no | Set volume format RAW | |
InheritQos(Using the snapshot created) | no | Inherit source volume Qos config | |
EnableISCSI | no | subsys enable iSCSI protocol(EnableISCSI and EnableNVMeoF are not allowed both are not set) | |
EnableNVMeoF | no | subsys enable NVMeoF protocol(EnableISCSI and EnableNVMeoF are not allowed both are not set) | |
SetSectorSize[512|4096] | no | Set subsys sector size to [512|4096] | |
SetSharding | no | Set volume sharding size | |
SetVolumeName | no | Set volume name(There is no specified for subsys_{subsysName}_{index}) | |
SetSrcVolumeName | no | Set source volume name(Using the snapshot created) | |
SetSrcSnapshotName | no | Set source volume snapshot name(Using the snapshot created) | |
RetrieveSubsysParameter | SetSubsysName | yes | Set subsys name |
ExportSubsysParameter | SetSubsysName | yes | Set subsys name |
ExportISCSI | no | subsys export iSCSI(ExportISCSI and ExportNVMeoF are not allowed both are not set) | |
ExportNVMeoF | no | subsys export NVMeoF(ExportISCSI and ExportNVMeoF are not allowed both are not set) | |
UnexportSubsysParameter | SetSubsysName | yes | Set subsys name |
UnexportISCSI | no | Subsys unexport iSCSI(UnexportISCSI and UnexportNVMeoF are not allowed both are not set) | |
UnexportNVMeoF | no | Subsys unexport NVMeoF(UnexportISCSI and UnexportNVMeoF are not allowed both are not set) | |
DeleteSubsysParameter | SetSubsysName | yes | Set subsys name |
ForceDelete | no | Force delete subsys | |
DeleteVolume | no | Delete volume when deleting subsys | |
SetSubsysAuthParameter | SetSubsysName | yes | Set subsys name |
SetGroupName | yes | Set group name | |
RetrieveSubsysAuthParameter | SetSubsysName | yes | Set subsys name |
RemoveSubsysAuthParameter | SetSubsysName | yes | Set subsys name |
SetSubsysChapParameter | SetSubsysName | yes | Set subsys name |
SetAccountName | yes | Set account name | |
RemoveSubsysChapParameter | SetSubsysName | yes | Set subsys name |
- Volume
ParameterStruct | Method | Required | Description |
RetrieveVolumeParameter | SetVolumeName | yes | Set volume name |
ExpandVolumeParameter | SetVolumeName | yes | Set volume name |
SetCapacityGB | no | Expand volume capacity(unit GB, SetCapacityGB and SetCapacityTB are not allowed both are not set) | |
SetCapacityTB | no | Expand volume capacity(unit TB, SetCapacityGB and SetCapacityTB are not allowed both are not set) | |
FlattenVolumeParameter | SetVolumeName | yes | Set volume name |
GetFlattenVolumeProgress | SetTaskId | yes | Set volume flatten task id |
StopFlattenVolumeRequest | SetTaskId | yes | Set volume flatten task id |
SetQosOfVolumeParameter | SetVolumeName | yes | Set volume name |
SetIops | yes | Set volume iops | |
SetBpsMB | yes | Set volume bps(unit MB) | |
DeleteVolumeParameter | SetVolumeName | yes | Set volume name |
ForceDelete | no | Force delete volume |
Click to show internal directories.
Click to hide internal directories.