文档目录

vTPM相关接口

虚拟机添加TPM(AddTpm)

API请求

URLs
POST zstack/v1/tpms
Headers
Authorization: OAuth the-session-uuid
Body
{
  "params": {
    "keyProviderUuid": "ff03c7091617357eb4022d11c6860e00",
    "vmInstanceUuid": "ff01ec80fd11327cba7519b66119d900"
  },
  "systemTags": [],
  "userTags": []
}
Note: 上述示例中systemTags、userTags字段可以省略。列出是为了表示body中可以包含这两个字段。
Curl示例
curl -H "Content-Type: application/json;charset=UTF-8" \
-H "Authorization: OAuth b86c9016b4f24953a9edefb53ca0678c" \
-X POST -d '{"params":{"keyProviderUuid":"ff03c7091617357eb4022d11c6860e00","vmInstanceUuid":"ff01ec80fd11327cba7519b66119d900"}}' \
http://localhost:8080/zstack/v1/tpms
参数列表
名字 类型 位置 描述 可选值 起始版本
keyProviderUuid (可选) String body(包含在params结构中) 密钥提供程序 UUID 5.0.0
vmInstanceUuid String body(包含在params结构中) 虚拟机 UUID 5.0.0
resourceUuid (可选) String body(包含在params结构中) 资源 UUID 5.0.0
tagUuids (可选) List body(包含在params结构中) 标签 UUID 列表 5.0.0
systemTags (可选) List body 系统标签 5.0.0
userTags (可选) List body 用户标签 5.0.0

API返回

返回示例
{
  "inventory": {
    "uuid": "ff00de2d3ab43127b1abdac68f1e7f00",
    "name": "TPM-for-VM-ff01ec80fd11327cba7519b66119d900",
    "vmInstanceUuid": "ff01ec80fd11327cba7519b66119d900",
    "createDate": "Nov 14, 2017 2:20:57 PM",
    "lastOpDate": "Nov 14, 2017 2:20:57 PM"
  }
}
名字 类型 描述 起始版本
success boolean 添加是否成功 5.0.0
inventory TpmInventory 详情参考inventory 5.0.0
error ErrorCode 详情参考error 5.0.0
#inventory
名字 类型 描述 起始版本
uuid String TPM UUID 5.0.0
name String TPM 资源名称 5.0.0
vmInstanceUuid String 虚拟机 UUID 5.0.0
createDate Timestamp 创建时间 5.0.0
lastOpDate Timestamp 最后一次修改时间 5.0.0
hostRefs List 详情参考hostRefs 5.0.0
#hostRefs
名字 类型 描述 起始版本
uuid String 相关文件 UUID 5.0.0
vmInstanceUuid String 虚拟机 UUID 5.0.0
hostUuid String 主机 UUID 5.0.0
type String 文件类型, 按用途分类, 可能是 NvRam 或者 TpmState 5.0.0
path String 主机侧相关文件或目录的路径 5.0.0
createDate Timestamp 创建时间 5.0.0
lastOpDate Timestamp 最后一次修改时间 5.0.0
#error
名字 类型 描述 起始版本
code String 错误码号,错误的全局唯一标识,例如SYS.1000, HOST.1001 0.6
description String 错误的概要描述 0.6
details String 错误的详细信息 0.6
elaboration String 保留字段,默认为null 0.6
opaque LinkedHashMap 保留字段,默认为null 0.6
cause ErrorCode 根错误,引发当前错误的源错误,若无原错误,该字段为null 0.6

SDK示例

Java SDK
AddTpmAction action = new AddTpmAction();
action.keyProviderUuid = "ff03c7091617357eb4022d11c6860e00";
action.vmInstanceUuid = "ff01ec80fd11327cba7519b66119d900";
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c";
AddTpmAction.Result res = action.call();
Python SDK
action = AddTpmAction()
action.keyProviderUuid = "ff03c7091617357eb4022d11c6860e00"
action.vmInstanceUuid = "ff01ec80fd11327cba7519b66119d900"
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c"
res = action.call()

获取TPM详情数据(GetTpmCapability)

API请求

URLs
GET zstack/v1/tpms/capability
Headers
Authorization: OAuth the-session-uuid
Curl示例
curl -H "Content-Type: application/json;charset=UTF-8" \
-H "Authorization: OAuth b86c9016b4f24953a9edefb53ca0678c" \
-X GET http://localhost:8080/zstack/v1/tpms/capability?vmInstanceUuid=ff01ec80fd11327cba7519b66119d900
参数列表
名字 类型 位置 描述 可选值 起始版本
tpmUuid (可选) String query TPM UUID 5.0.0
vmInstanceUuid (可选) String query 虚拟机 UUID 5.0.0
systemTags (可选) List query 系统标签 5.0.0
userTags (可选) List query 用户标签 5.0.0

API返回

返回示例
{
  "inventory": {
    "uuid": "ff00de2d3ab43127b1abdac68f1e7f00",
    "name": "TPM-for-VM-ff01ec80fd11327cba7519b66119d900",
    "vmInstanceUuid": "ff01ec80fd11327cba7519b66119d900",
    "createDate": "Nov 14, 2017 2:20:57 PM",
    "lastOpDate": "Nov 14, 2017 2:20:57 PM",
    "fileRefs": [
      {
        "uuid": "ff0ee7dfcb8a3aa5b3534a1667c90400",
        "vmInstanceUuid": "ff01ec80fd11327cba7519b66119d900",
        "hostUuid": "ff0192fa70113da886101145c084bd00",
        "type": "TpmState",
        "path": "/var/lib/libvirt/swtpm/ff0192fa70113da886101145c084bd00/",
        "lastSyncReason": "on libvirt shutdown event",
        "createDate": "Nov 14, 2017 2:20:57 PM",
        "lastOpDate": "Nov 14, 2017 2:20:57 PM"
      }
    ],
    "edkVersion": "edk2-ovmf-20220126gitbb1bba3d77-3.el8.noarch",
    "swtpmVersion": "0.8.2",
    "resetTpmAfterVmCloneConfig": true
  }
}
名字 类型 描述 起始版本
success boolean 获取是否成功 5.0.0
inventory TpmCapabilityView 详情参考inventory 5.0.0
error ErrorCode 详情参考error 5.0.0
#inventory
名字 类型 描述 起始版本
uuid String TPM UUID 5.0.0
name String TPM 资源名称 5.0.0
vmInstanceUuid String 虚拟机 UUID 5.0.0
createDate Timestamp 创建时间 5.0.0
lastOpDate Timestamp 最后一次修改时间 5.0.0
edkVersion String EDK 套件版本 5.0.0
swtpmVersion String SWTPM 版本 5.0.0
resetTpmAfterVmCloneConfig boolean 是否在虚拟机克隆后重置 TPM 状态的配置 5.0.0
fileRefs List 详情参考fileRefs 5.0.0
#fileRefs
名字 类型 描述 起始版本
uuid String 相关文件 UUID 5.0.0
vmInstanceUuid String 虚拟机 UUID 5.0.0
hostUuid String 主机 UUID 5.0.0
type String 文件类型, 按用途分类, 可能是 NvRam 或者 TpmState 5.0.0
path String 主机侧相关文件或目录的路径 5.0.0
createDate Timestamp 创建时间 5.0.0
lastOpDate Timestamp 最后一次修改时间 5.0.0
#error
名字 类型 描述 起始版本
code String 错误码号,错误的全局唯一标识,例如SYS.1000, HOST.1001 0.6
description String 错误的概要描述 0.6
details String 错误的详细信息 0.6
elaboration String 保留字段,默认为null 0.6
opaque LinkedHashMap 保留字段,默认为null 0.6
cause ErrorCode 根错误,引发当前错误的源错误,若无原错误,该字段为null 0.6

SDK示例

Java SDK
GetTpmCapabilityAction action = new GetTpmCapabilityAction();
action.vmInstanceUuid = "ff01ec80fd11327cba7519b66119d900";
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c";
GetTpmCapabilityAction.Result res = action.call();
Python SDK
action = GetTpmCapabilityAction()
action.vmInstanceUuid = "ff01ec80fd11327cba7519b66119d900"
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c"
res = action.call()

查询TPM(QueryTpm)

API请求

URLs
GET zstack/v1/tpms
GET zstack/v1/tpms/{uuid}
Headers
Authorization: OAuth the-session-uuid
Curl示例
curl -H "Content-Type: application/json;charset=UTF-8" \
-H "Authorization: OAuth b86c9016b4f24953a9edefb53ca0678c" \
-X GET http://localhost:8080/zstack/v1/tpms?q=uuid=ff00de2d3ab43127b1abdac68f1e7f00
curl -H "Content-Type: application/json;charset=UTF-8" \
-H "Authorization: OAuth b86c9016b4f24953a9edefb53ca0678c" \
-X GET http://localhost:8080/zstack/v1/tpms/c7ff0c86fd7c38908f619a9dfb610e68

可查询字段

运行CLI命令行工具,输入QueryTpm并按Tab键查看所有可查询字段以及可跨表查询的资源名。

API返回

返回示例
{
  "inventories": [
    {
      "uuid": "ff00de2d3ab43127b1abdac68f1e7f00",
      "name": "TPM-for-VM-ff01ec80fd11327cba7519b66119d900",
      "vmInstanceUuid": "ff01ec80fd11327cba7519b66119d900",
      "createDate": "Nov 14, 2017 2:20:57 PM",
      "lastOpDate": "Nov 14, 2017 2:20:57 PM"
    }
  ]
}
名字 类型 描述 起始版本
success boolean 查询是否成功 5.0.0
inventories List 详情参考inventories 5.0.0
error ErrorCode 详情参考error 5.0.0
#inventories
名字 类型 描述 起始版本
uuid String TPM UUID 5.0.0
name String TPM 资源名称 5.0.0
vmInstanceUuid String 虚拟机 UUID 5.0.0
createDate Timestamp 创建时间 5.0.0
lastOpDate Timestamp 最后一次修改时间 5.0.0
hostRefs List 详情参考hostRefs 5.0.0
#fileRefs
名字 类型 描述 起始版本
uuid String 相关文件 UUID 5.0.0
vmInstanceUuid String 虚拟机 UUID 5.0.0
hostUuid String 主机 UUID 5.0.0
type String 文件类型, 按用途分类, 可能是 NvRam 或者 TpmState 5.0.0
path String 主机侧相关文件或目录的路径 5.0.0
createDate Timestamp 创建时间 5.0.0
lastOpDate Timestamp 最后一次修改时间 5.0.0
#error
名字 类型 描述 起始版本
code String 错误码号,错误的全局唯一标识,例如SYS.1000, HOST.1001 0.6
description String 错误的概要描述 0.6
details String 错误的详细信息 0.6
elaboration String 保留字段,默认为null 0.6
opaque LinkedHashMap 保留字段,默认为null 0.6
cause ErrorCode 根错误,引发当前错误的源错误,若无原错误,该字段为null 0.6

SDK示例

Java SDK
QueryTpmAction action = new QueryTpmAction();
action.conditions = asList("uuid=ff00de2d3ab43127b1abdac68f1e7f00");
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c";
QueryTpmAction.Result res = action.call();
Python SDK
action = QueryTpmAction()
action.conditions = ["uuid=ff00de2d3ab43127b1abdac68f1e7f00"]
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c"
res = action.call()

虚拟机删除TPM(RemoveTpm)

API请求

URLs
DELETE zstack/v1/tpms
Headers
Authorization: OAuth the-session-uuid
Curl示例
curl -H "Content-Type: application/json;charset=UTF-8" \
-H "Authorization: OAuth b86c9016b4f24953a9edefb53ca0678c" \
-X DELETE http://localhost:8080/zstack/v1/tpms?vmInstanceUuid=ff01ec80fd11327cba7519b66119d900&deleteMode=Permissive
参数列表
名字 类型 位置 描述 可选值 起始版本
tpmUuid (可选) String query TPM UUID 5.0.0
vmInstanceUuid (可选) String query 虚拟机 UUID 5.0.0
deleteMode (可选) String query 删除模式(Permissive / Enforcing,Permissive) 5.0.0
systemTags (可选) List query 系统标签 5.0.0
userTags (可选) List query 用户标签 5.0.0

API返回

该API成功时返回一个空的JSON结构{},出错时返回的JSON结构包含一个error字段,例如:
{
	"error": {
		"code": "SYS.1001",
		"description": "A message or a operation timeout",
		"details": "Create VM on KVM timeout after 300s"
	}
}

SDK示例

Java SDK
RemoveTpmAction action = new RemoveTpmAction();
action.vmInstanceUuid = "ff01ec80fd11327cba7519b66119d900";
action.deleteMode = "Permissive";
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c";
RemoveTpmAction.Result res = action.call();
Python SDK
action = RemoveTpmAction()
action.vmInstanceUuid = "ff01ec80fd11327cba7519b66119d900"
action.deleteMode = "Permissive"
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c"
res = action.call()

更新TPM(UpdateTpm)

API请求

URLs
PUT zstack/v1/tpms
Headers
Authorization: OAuth the-session-uuid
Body
{
  "updateTpm": {
    "vmInstanceUuid": "ff01ec80fd11327cba7519b66119d900",
    "keyProviderUuid": "ff03c7091617357eb4022d11c6860e00"
  },
  "systemTags": [],
  "userTags": []
}
Note: 上述示例中systemTags、userTags字段可以省略。列出是为了表示body中可以包含这两个字段。
Curl示例
curl -H "Content-Type: application/json;charset=UTF-8" \
-H "Authorization: OAuth b86c9016b4f24953a9edefb53ca0678c" \
-X PUT -d '{"updateTpm":{"vmInstanceUuid":"ff01ec80fd11327cba7519b66119d900","keyProviderUuid":"ff03c7091617357eb4022d11c6860e00"}}' \
http://localhost:8080/zstack/v1/tpms
参数列表
名字 类型 位置 描述 可选值 起始版本
vmInstanceUuid (可选) String body(包含在updateTpm结构中) 虚拟机 UUID 5.0.0
tpmUuid (可选) String body(包含在updateTpm结构中) TPM UUID 5.0.0
keyProviderUuid (可选) String body(包含在updateTpm结构中) 密钥提供程序 UUID 5.0.0
systemTags (可选) List body 系统标签 5.0.0
userTags (可选) List body 用户标签 5.0.0

API返回

返回示例
{
  "inventory": {
    "uuid": "ff00de2d3ab43127b1abdac68f1e7f00",
    "name": "TPM-for-VM-ff01ec80fd11327cba7519b66119d900",
    "vmInstanceUuid": "ff01ec80fd11327cba7519b66119d900",
    "createDate": "Nov 14, 2017 2:20:57 PM",
    "lastOpDate": "Nov 14, 2017 2:20:57 PM"
  }
}
名字 类型 描述 起始版本
success boolean 更新是否成功 5.0.0
inventory TpmInventory 详情参考inventory 5.0.0
error ErrorCode 详情参考error 5.0.0
#inventory
名字 类型 描述 起始版本
uuid String TPM UUID 5.0.0
name String TPM 资源名称 5.0.0
vmInstanceUuid String 虚拟机 UUID 5.0.0
createDate Timestamp 创建时间 5.0.0
lastOpDate Timestamp 最后一次修改时间 5.0.0
hostRefs List 详情参考hostRefs 5.0.0
#fileRefs
名字 类型 描述 起始版本
uuid String 相关文件 UUID 5.0.0
vmInstanceUuid String 虚拟机 UUID 5.0.0
hostUuid String 主机 UUID 5.0.0
type String 文件类型, 按用途分类, 可能是 NvRam 或者 TpmState 5.0.0
path String 主机侧相关文件或目录的路径 5.0.0
createDate Timestamp 创建时间 5.0.0
lastOpDate Timestamp 最后一次修改时间 5.0.0
#error
名字 类型 描述 起始版本
code String 错误码号,错误的全局唯一标识,例如SYS.1000, HOST.1001 0.6
description String 错误的概要描述 0.6
details String 错误的详细信息 0.6
elaboration String 保留字段,默认为null 0.6
opaque LinkedHashMap 保留字段,默认为null 0.6
cause ErrorCode 根错误,引发当前错误的源错误,若无原错误,该字段为null 0.6

SDK示例

Java SDK
UpdateTpmAction action = new UpdateTpmAction();
action.vmInstanceUuid = "ff01ec80fd11327cba7519b66119d900";
action.keyProviderUuid = "ff03c7091617357eb4022d11c6860e00";
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c";
UpdateTpmAction.Result res = action.call();
Python SDK
action = UpdateTpmAction()
action.vmInstanceUuid = "ff01ec80fd11327cba7519b66119d900"
action.keyProviderUuid = "ff03c7091617357eb4022d11c6860e00"
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c"
res = action.call()
开发手册 | ZStack ZSphere · ZVF | ZStack 资源中心