跳到主要内容

localsnapshotclone restful api

localsnapshotclone restful api 需兼容原有s3快照api: snapshotcloneserver_interface, 使用两套API均可以调用本地快照和克隆功能, 此处, 列出本地快照和克隆新api

创建卷:

创建一个卷。

语法
MethodUrl
GET/SnapshotCloneService?Action=CreateFile&Version=1.5&User=curve&File=/test1&Size=100
请求参数
名称类型是否必须描述
ActionstringCreateFile
VersionstringAPI版本号
Userstring租户信息
Filestring卷路径
Sizeuint64卷大小,单位为GB
StripeUnituint64条带的宽度, 默认为0,无条带
StripeCountuint64条带数量, 默认为0, 无条带
PoolSetstringpoolset name, 默认使用默认存储池
响应
名称类型描述
Codestring错误码
Messagestring错误信息
RequestIdstring请求ID
示例

request

http://127.0.0.1:5555/SnapshotCloneService?Action=CreateFile&Version=1.5&User=curve&File=/test1&Size=100

response

HTTP/1.1 200 OK
Content-Length: xxx

{

​ "Code" : "0",

​ "Message" : "Exec success.",

​ "RequestId" : "xxx"

}

错误码

见最后一节错误码表。

删除卷:

删除一个卷。

语法
MethodUrl
GET/SnapshotCloneService?Action=DeleteFile&Version=1.5&User=curve&File=/test1
请求参数
名称类型是否必须描述
ActionstringDeleteFile
VersionstringAPI版本号
Userstring租户信息
Filestring卷路径
响应
名称类型描述
Codestring错误码
Messagestring错误信息
RequestIdstring请求ID
示例

request

http://127.0.0.1:5555/SnapshotCloneService?Action=DeleteFile&Version=1.5&User=curve&File=/test1

response

HTTP/1.1 200 OK
Content-Length: xxx

{

​ "Code" : "0",

​ "Message" : "Exec success.",

​ "RequestId" : "xxx"

}

错误码

见最后一节错误码表。

列出卷

列出指定目录下的所有卷信息

若指定卷名,则列出指定卷的信息

语法
MethodUrl
GET/SnapshotCloneService?Action=ListFile&Version=1.5&User=curve&Dir=/&Limit=10&Offset=0
GET/SnapshotCloneService?Action=ListFile&Version=1.5&User=curve&File=/test1
请求参数
名称类型是否必须描述
ActionstringListFile
VersionstringAPI版本号
Userstring租户信息
Dirstring目录路径
Filestring卷路径
Limituint64返回的卷数量
Offsetuint64偏移量
响应
名称类型描述
Codestring错误码
Messagestring错误信息
RequestIdstring请求ID
TotalCountint总个数
FileInfosarray卷信息

FileInfo类型说明

名称类型描述
Filestring卷名
Userstring租户信息
Typeenum类型, 0:卷, 1:目录, 2:未知类型
Timeuint64创建时间
FileLengthuint64卷大小(单位Byte)
StripeUnituint64条带的宽度, 默认为0,无条带
StripeCountuint64条带数量, 默认为0, 无条带
Statusenum卷的状态, 0:done, 1:flattening, 2:unflattened
Readonlybool是否只读
Progressuint32完成百分比, flattening状态时则表示百分比进度
示例

request

http://127.0.0.1:5555/SnapshotCloneService?Action=ListFile&Version=1.5&User=curve&Dir=/&Limit=10&Offset=0

response

HTTP/1.1 200 OK
Content-Length: xxx

{
"Code" : "0",
"FileInfos" :
[
{
"File" : "/RecycleBin",
"FileLength" : 0,
"Progress" : 100,
"Status" : 0,
"StripeCount" : 0,
"StripeUnit" : 0,
"Time" : 1696761354857556,
"Type" : 1,
"User" : "root"
},
{
"File" : "/clone",
"FileLength" : 0,
"Progress" : 100,
"Status" : 0,
"StripeCount" : 0,
"StripeUnit" : 0,
"Time" : 1696761362745606,
"Type" : 1,
"User" : "root"
},
{
"File" : "/test1",
"FileLength" : 107374182400,
"Progress" : 100,
"Status" : 0,
"StripeCount" : 0,
"StripeUnit" : 0,
"Time" : 1696761378914477,
"Type" : 0,
"User" : "curve"
}
],
"Message" : "Exec success.",
"RequestId" : "26ffe85b-55e8-46c4-8823-0104fcf9b362",
"TotalCount" : 3
}
错误码

见最后一节错误码表。

创建快照:

描述

创建一个快照。

语法
MethodUrl
GET/SnapshotCloneService?Action=CreateSnapshot&Version=1.5&User=curve&File=/test1&Name=snap1
请求参数
名称类型是否必须描述
ActionstringCreateSnapshot
VersionstringAPI版本号
Userstring租户名称
Filestring快照所属的卷路径
Namestring快照名称
响应
名称类型描述
Codestring错误码
Messagestring错误信息
RequestIdstring请求ID
UUIDstring快照唯一ID
示例

request

http://127.0.0.1:5555/SnapshotCloneService?Action=CreateSnapshot&Version=1.5&User=curve&File=/test1&Name=snap1

response

HTTP/1.1 200 OK
Content-Length: xxx

{

​ "Code" : "0",

​ "Message" : "Exec success.",

​ "RequestId" : "xxx"

​ "UUID" : "xxx"

}

错误码

见最后一节错误码表。

删除快照

描述

删除一个快照。

语法
MethodUrl
GET/SnapshotCloneService?Action=DeleteSnapshot&Version=1.5&User=curve&File=/test1&Name=snap1
请求参数
名称类型是否必须描述
ActionstringDeleteSnapshot
VersionstringAPI版本号
Userstring租户信息
Filestring快照所属卷路径
Namestring快照名
响应
名称类型描述
Codestring错误码
Messagestring错误信息
RequestIdstring请求ID
示例

request

http://127.0.0.1:5555/SnapshotCloneService?Action=DeleteSnapshot&Version=1.5&User=curve&File=/test1&Name=snap1

response

HTTP/1.1 200 OK

Content-Length: xxx

{

​ "Code" : "0",

​ "Message" : "Exec success.",

​ "RequestId" : "xxx"

}
错误码

见最后一节错误码表。

列出快照

描述

查询指定卷的所有快照信息,

若指定快照名,则查询指定快照信息。

语法
MethodUrl
GET/SnapshotCloneService?Action=GetFileSnapshotInfo&Version=1.5&User=curve&File=/test1&Limit=10&Offset=0
GET/SnapshotCloneService?Action=GetFileSnapshotInfo&Version=1.5&User=curve&File=/test1&Name=snap1
请求参数
名称类型是否必须描述
ActionstringGetFileSnapinfo
VersionstringAPI版本号
Userstring租户信息
Filestring卷路径
Limitint最大显示条数,默认为10
Offsetint偏移值,默认为0
Namestring快照名
响应
名称类型描述
Codestring错误码
Messagestring错误信息
RequestIdstring请求ID
TotalCountint快照总个数
SnapshotsSnapshot快照信息列表

Snapshot类型说明

名称类型描述
UUIDstring快照唯一ID
Userstring租户信息
Filestring快照所属卷路径
SeqNumuint32快照版本号
Namestring快照名称
Timeuint64创建时间
FileLengthuint64卷大小(单位Byte)
Statusenum快照处理的状态(0:done, 2:deleteing, 5:error)
Progressuint32快照完成百分比, 创建快照只有0和100两种情况, 删除快照时则表示删除百分比进度
示例

request

http://127.0.0.1:5555/SnapshotCloneService?Action=GetFileSnapshotInfo&Version=1.5&User=curve&File=/test1&Limit=10&Offset=0

response

HTTP/1.1 200 OK

Content-Length: xxx

{

​ "Code" : "0",

​ "Message" : "Exec success.",

​ "RequestId" : "xxx",

​ "TotalCount": 1,

​ "Snapshots":

[

​ {

​ "File" : "/test1",

​ "FileLength" : 10737418240,

​ "Name" : "snap1",

​ "Progress" : 30,

​ "SeqNum" : 1,

​ "Status" : 1,

​ "Time" : 1564391913582677,

​ "UUID" : "de06df66-b9e4-44df-ba3d-ac94ddee0b28",

​ "User" : "curve"

​ }

]

}
错误码

见最后一节错误码表。

克隆:

描述

从快照克隆一个子卷

语法
MethodUrl
GET/SnapshotCloneService?Action=Clone&Version=1.5&User=curve&File=/test1&Name=snap1&Destination=/clone1
请求参数
名称类型是否必须描述
ActionstringClone
VersionstringAPI版本号
Userstring租户信息
Filestring卷路径
Namestring快照名
Destinationstring克隆目标路径
Readonlybool是否克隆成只读卷
响应
名称类型描述
Codestring错误码
Messagestring错误信息
RequestIdstring请求ID
UUIDstring克隆任务唯一ID
示例

request

http://127.0.0.1:5555/SnapshotCloneService?Action=Clone&Version=1.5&User=curve&File=/test1&Name=snap1&Destination=/clone1

response

HTTP/1.1 200 OK
Content-Length: xxx

{

​ "Code" : "0",

​ "Message" : "Exec success.",

​ "RequestId" : "xxx",

}
错误码

见最后一节错误码表。

回滚:

暂不支持

Flatten

描述

补足子卷的数据,使其与父卷和快照解耦

语法
MethodUrl
GET/SnapshotCloneService?Action=Flatten&Version=1.5&User=curve&File=/clone1
请求参数
名称类型是否必须描述
ActionstringFlatten
VersionstringAPI版本号
Userstring租户信息
Filestring目标卷路径
响应
名称类型描述
Codestring错误码
Messagestring错误信息
RequestIdstring请求ID
示例

request

http://127.0.0.1:5555/SnapshotCloneService?Action=Flatten&Version=1.5&User=curve&File=/clone1

response

HTTP/1.1 200 OK
Content-Length: xxx
{

​ "Code" : "0",

​ "Message" : "Exec success.",

​ "RequestId" : "xxx"

}
错误码

见最后一节错误码表。

错误码表:

CodeMessageHTTP Status Code描述补充说明
0Exec success.200执行成功
-1Internal error.500未知内部错误未知错误,任何请求不应出现此错误,已知的错误都应有明确的错误码。如发现此错误,请联系开发人员定位。
-2Server init fail.500服务器初始化失败任何请求不应出现此错误,初始化阶段错误
-3Server start fail.500服务器启动失败任何请求不应出现此错误,初始化阶段错误
-4Service is stop500服务已停止snapshotcloneserver停止服务退出阶段,发送请求会收到此错误
-5BadRequest:"Invalid request."400非法的请求发送http请求格式非法:缺少字段,字段值非法等
-6Task already exist.500任务已存在目前不会出现
-7Invalid user.500非法的用户请求中User字段与操作的卷或快照的owner不匹配
-8File not exist.500文件或快照不存在打快照时目标卷不存在; 从快照回滚时,目标卷不存在; 从快照克隆/回滚时,快照不存在;
-9File status invalid.500文件状态异常打快照时,目标卷正在克隆/回滚中或删除中等状态而不是Normal状态,返回文件状态异常; 从快照克隆过程中,快照正在删除中等状态而不是Normal状态,返回文件状态异常
-10Chunk size not aligned.500chunk大小未按分片对齐一般是配置文件问题,配置的chunk分配大小与chunksize未对其,正常情况下不会出现
-11FileName not match.500文件名不匹配删除快照接口,快照所属卷与快照不匹配,即该卷没有这个快照
-12Cannot delete unfinished.500不能删除未完成的快照
-13Cannot create when has error.500不能对存在错误的卷打快照或克隆/回滚不能对存在错误快照的卷再次打快照
-14Cannot cancel finished.500待取消的快照已完成或不存在目前不会出现
-15Invalid snapshot.500不能对未完成或存在错误的快照进行克隆/回滚
-16Cannot delete when using.500不能删除正在克隆/回滚的快照
-17Cannot clean task unfinished.500不能清理未完成的克隆/回滚任务目前不会出现
-18Snapshot count reach the limit.500快照到达上限
-19File exist.500文件或快照已存在从快照克隆时,目标卷已存在
-20Task is full.500克隆/回滚任务已满目前不会出现
-21not support.500不支持的操作
-22File is under snapshot500删除的卷具有快照
-23File is occuiped500删除的卷正在使用(挂载状态或者Flatting中)
-24Invalid argument.500非法的请求参数