接管数据存储

PUT/zstack/v1/primary-storage/{uuid}/takeover

接管数据存储。将其他平台的共享块数据存储接管到当前平台。 dryRun=true时仅执行一致性预检:若一致(无需接管)则返回错误,若不一致(可接管)则返回成功。 接管操作不可逆(agent侧会执行VG rename、PV UUID reset、sanlock lockspace reset)。 接管完成后自动触发reconnect,通过返回的inventory.status获取重连状态。

Headers

Authorization: OAuth the-session-uuid

Body

{
  "takeoverPrimaryStorage": {
    "dryRun": false
  },
  "systemTags": [],
  "userTags": []
}

上述示例中systemTagsuserTags字段可以省略。列出是为了表示body中可以包含这两个字段。

Curl示例

curl -H "Content-Type: application/json;charset=UTF-8" \
-H "Authorization: OAuth b86c9016b4f24953a9edefb53ca0678c" \
-X PUT -d '{"takeoverPrimaryStorage":{"dryRun":false}}' \
http://localhost:8080/zstack/v1/primary-storage/ff0359abb8443d2f8077cc368afa7c00/takeover

参数列表

名字类型位置描述可选值起始版本
uuidStringurl存储的UUID 5.0.0
dryRun (可选)booleanbody(包含在takeoverPrimaryStorage结构中)预检模式:成功表示可以执行接管,失败表示无需或无法接管 5.0.0
systemTags (可选)Listbody系统标签 5.0.0
userTags (可选)Listbody用户标签 5.0.0

API返回

返回示例

{
  "inventory": {
    "name": "PS1",
    "url": "/zstack_ps",
    "type": "SharedBlock",
    "attachedClusterUuids": [
      "978bb0dffae23d5da5a9c1b3e0dc4174"
    ]
  }
}
名字类型描述起始版本
successboolean操作是否成功5.0.0
inventoryPrimaryStorageInventory详情参考inventory5.0.0
errorErrorCode详情参考error5.0.0

inventory

名字类型描述起始版本
uuidString资源的UUID,唯一标示该资源0.6
zoneUuidString数据中心UUID0.6
nameString资源名称0.6
urlString 0.6
descriptionString资源的详细描述0.6
totalCapacityLong 0.6
availableCapacityLong 0.6
totalPhysicalCapacityLong 0.6
availablePhysicalCapacityLong 0.6
systemUsedCapacityLong 0.6
typeString 0.6
stateString 0.6
statusString 0.6
mountPathString 0.6
createDateTimestamp创建时间0.6
lastOpDateTimestamp最后一次修改时间0.6
attachedClusterUuidsList 0.6

error

名字类型描述起始版本
codeString错误码号,错误的全局唯一标识,例如SYS.1000, HOST.10010.6
descriptionString错误的概要描述0.6
detailsString错误的详细信息0.6
elaborationString保留字段,默认为null0.6
opaqueLinkedHashMap保留字段,默认为null0.6
causeErrorCode根错误,引发当前错误的源错误,若无原错误,该字段为null0.6

SDK示例

Java SDK

TakeoverPrimaryStorageAction action = new TakeoverPrimaryStorageAction();
action.uuid = "ff0359abb8443d2f8077cc368afa7c00";
action.dryRun = false;
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c";
TakeoverPrimaryStorageAction.Result res = action.call();

Python SDK

action = TakeoverPrimaryStorageAction()
action.uuid = "ff0359abb8443d2f8077cc368afa7c00"
action.dryRun = false
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c"
res = action.call()