fass-sdk-golang

module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 16, 2023 License: Apache-2.0

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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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(&parameter, 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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL