RegisterVmInstanceFromMetadata
Register (restore) a virtual machine from a metadata file on primary storage or a supplied metadata string. Specify exactly one of metadata and metadataPath. The metadata parameter only registers control-plane records for the virtual machine and existing volumes, and is intended for storage that does not support metadata files. It does not create, convert, or inspect physical volumes, or read or write storage metadata files. The caller must ensure that the referenced volumes already exist and their paths are correct.
API Request
URLs
POST zstack/v1/vm-instances/metadata/register
Headers
Authorization: OAuth the-session-uuid
Body
Note: In the preceding example, the
{
"params": {
"metadataPath": "/mnt/ps/vm-metadata/ff01ec80fd11327cba7519b66119d900.vmmeta",
"primaryStorageUuid": "ff0359abb8443d2f8077cc368afa7c00",
"zoneUuid": "ff0c268342c535aabf273d41a2be1d00",
"clusterUuid": "ff0bcb94de7a3567b641d3fde2329d00",
"hostUuid": "ff0192fa70113da886101145c084bd00",
"name": "my-restored-vm",
"regenerateUuid": true
},
"systemTags": [],
"userTags": []
}
Note: In the preceding example, the systemTags and userTags fields can be omitted. They are shown to indicate that the body can contain these two fields.Curl Example
curl -H "Content-Type: application/json;charset=UTF-8" -H "Authorization: OAuth b86c9016b4f24953a9edefb53ca0678c" -X POST -d '{"params":{"metadataPath":"/mnt/ps/vm-metadata/ff01ec80fd11327cba7519b66119d900.vmmeta","primaryStorageUuid":"ff0359abb8443d2f8077cc368afa7c00","zoneUuid":"ff0c268342c535aabf273d41a2be1d00","clusterUuid":"ff0bcb94de7a3567b641d3fde2329d00","hostUuid":"ff0192fa70113da886101145c084bd00","name":"my-restored-vm","regenerateUuid":true}}' http://localhost:8080/zstack/v1/vm-instances/metadata/register
Parameter List
| Name | Type | Location | Description | Allowed Values | Starting Version |
|---|---|---|---|---|---|
| metadataPath (Optional) | String | body (included in the params structure) |
Path of the metadata file on primary storage. Specify exactly one of metadataPath and metadata. | 5.0.0 | |
| metadata (Optional) | String | body (included in the params structure) |
Complete virtual machine metadata as a JSON string. Specify exactly one of metadata and metadataPath. Volume paths must reference existing volumes. | 5.2.0 | |
| primaryStorageUuid | String | body (included in the params structure) |
Destination Data Storage UUID | 5.0.0 | |
| zoneUuid | String | body (included in the params structure) |
Data Center UUID | 5.0.0 | |
| clusterUuid | String | body (included in the params structure) |
Cluster UUID | 5.0.0 | |
| hostUuid (Optional) | String | body (included in the params structure) |
Host UUID | 5.0.0 | |
| name (Optional) | String | body (included in the params structure) |
Virtual Machine name | 5.0.0 | |
| regenerateUuid (Optional) | boolean | body (included in the params structure) |
Whether to repair UUIDs of resources associated with the virtual machine. If true, new conflict-free UUIDs are generated for the virtual machine, volumes, NICs, snapshots, snapshot trees, snapshot groups, and other associated resources. The default value is false, which retains the resource UUIDs in the metadata. | 5.1.0 | |
| tagUuids (Optional) | List | body (included in the params structure) |
Tag UUID list | 5.0.0 | |
| systemTags (Optional) | List | body | System tags | 5.0.0 | |
| userTags (Optional) | List | body | User tags | 5.0.0 |
API Response
Response Example
{
"inventory": {
"uuid": "21d608564fe438fd8b6c29fde66a4881",
"name": "recovered-vm"
}
}
| Name | Type | Description | Starting Version |
|---|---|---|---|
| success | boolean | Whether the operation succeeded | 5.0.0 |
| inventory | VmInstanceInventory | For details, see inventory | 5.0.0 |
| error | ErrorCode | For details, see error | 5.0.0 |
#inventory
| Name | Type | Description | Starting Version |
|---|---|---|---|
| uuid | String | Resource UUID, which uniquely identifies the resource | 0.6 |
| name | String | Resource name | 0.6 |
| description | String | Detailed resource description | 0.6 |
| zoneUuid | String | Data Center UUID | 0.6 |
| clusterUuid | String | Cluster UUID | 0.6 |
| imageUuid | String | Image UUID | 0.6 |
| hostUuid | String | Host UUID | 0.6 |
| lastHostUuid | String | Last Host UUID | 0.6 |
| instanceOfferingUuid | String | Instance Offering UUID | 0.6 |
| rootVolumeUuid | String | Root disk UUID | 0.6 |
| platform | String | Virtual Machine platform type, Windows / Linux / Other | 0.6 |
| architecture | String | Virtual Machine architecture, x86_64 / aarch64 / Other | 0.6 |
| defaultL3NetworkUuid | String | Default Distributed Port Group UUID | 0.6 |
| type | String | Virtual Machine type, User virtual machine or platform special purpose virtual machine | 0.6 |
| hypervisorType | String | Virtual Machine hypervisor type, typically KVM | 0.6 |
| memorySize | Long | Memory size | 0.6 |
| cpuNum | Integer | CPU number | 0.6 |
| cpuSpeed | Long | CPU speed | 0.6 |
| allocatorStrategy | String | Virtual Machine allocation strategy | 0.6 |
| createDate | Timestamp | Creation time | 0.6 |
| lastOpDate | Timestamp | Last modification time | 0.6 |
| state | String | Virtual Machine enabled state | 0.6 |
| guestOsType | String | Virtual Machine host operating system type | 3.11.2 |
| vmNics | List | For details, see vmNics | 0.6 |
| allVolumes | List | For details, see allVolumes | 0.6 |
| vmCdRoms | List | For details, see vmCdRoms | 0.6 |
#vmNics
| Name | Type | Description | Starting Version |
|---|---|---|---|
| uuid | String | Resource UUID, which uniquely identifies the resource | 3.17.13 |
| vmInstanceUuid | String | Virtual Machine UUID | 3.17.13 |
| l3NetworkUuid | String | Distributed Port Group UUID | 3.17.13 |
| ip | String | The IP address. | 3.17.13 |
| mac | String | The MAC address. | 3.17.13 |
| hypervisorType | String | The hypervisor type. | 3.17.13 |
| netmask | String | The netmask. | 3.17.13 |
| gateway | String | The gateway IP address. | 3.17.13 |
| metaData | String | The metadata. | 3.17.13 |
| ipVersion | Integer | The IP version. | 3.17.13 |
| driverType | String | The driver type. | 3.17.13 |
| internalName | String | The internal name. | 3.17.13 |
| deviceId | Integer | The device ID. | 3.17.13 |
| type | String | The resource type. | 3.17.13 |
| state | String | NIC Status | 3.17.13 |
| createDate | Timestamp | Creation time | 3.17.13 |
| lastOpDate | Timestamp | Last modification time | 3.17.13 |
| usedIps | List | For details, see usedIps | 3.17.13 |
#usedIps
| Name | Type | Description | Starting Version |
|---|---|---|---|
| uuid | String | Resource UUID, which uniquely identifies the resource | 4.10.0 |
| ipRangeUuid | String | IP Range UUID | 4.10.0 |
| l3NetworkUuid | String | Distributed Port Group UUID | 4.10.0 |
| ipVersion | Integer | IP protocol number | 4.10.0 |
| ip | String | IP address | 4.10.0 |
| netmask | String | Subnet mask | 4.10.0 |
| gateway | String | Gateway address | 4.10.0 |
| usedFor | String | Allocation reason | 4.10.0 |
| ipInLong | long | Long stored IP address, only valid for ipv4 | 4.10.0 |
| vmNicUuid | String | Virtual Machine NIC UUID | 4.10.0 |
| createDate | Timestamp | Creation time | 4.10.0 |
| lastOpDate | Timestamp | Last modification time | 4.10.0 |
#allVolumes
| Name | Type | Description | Starting Version |
|---|---|---|---|
| uuid | String | Resource UUID, which uniquely identifies the resource | 3.17.13 |
| name | String | Resource name | 3.17.13 |
| description | String | Detailed resource description | 3.17.13 |
| primaryStorageUuid | String | Data Storage UUID | 3.17.13 |
| vmInstanceUuid | String | Virtual Machine UUID | 3.17.13 |
| diskOfferingUuid | String | Disk Offering UUID | 3.17.13 |
| rootImageUuid | String | The root image UUID. | 3.17.13 |
| installPath | String | The installation path. | 3.17.13 |
| type | String | The resource type. | 3.17.13 |
| format | String | The format. | 3.17.13 |
| size | Long | The size. | 3.17.13 |
| actualSize | Long | The actual size. | 3.17.13 |
| deviceId | Integer | The device ID. | 3.17.13 |
| state | String | The resource state. | 3.17.13 |
| status | String | The resource status. | 3.17.13 |
| createDate | Timestamp | Creation time | 3.17.13 |
| lastOpDate | Timestamp | Last modification time | 3.17.13 |
| isShareable | Boolean | Whether the resource is shareable. | 3.17.13 |
| volumeQos | String | The volume QoS. | 3.17.13 |
| lastDetachDate | Timestamp | The last detach date. | 3.17.13 |
| lastVmInstanceUuid | String | The last VM instance UUID. | 3.17.13 |
| encrypted | Boolean | Whether the resource is encrypted. | 5.1.0 |
#vmCdRoms
| Name | Type | Description | Starting Version |
|---|---|---|---|
| uuid | String | Resource UUID, which uniquely identifies the resource | 3.17.13 |
| vmInstanceUuid | String | Virtual Machine UUID | 3.17.13 |
| deviceId | Integer | The device ID. | 3.17.13 |
| isoUuid | String | The ISO UUID. | 3.17.13 |
| isoInstallPath | String | The ISO install path. | 3.17.13 |
| name | String | Resource name | 3.17.13 |
| description | String | Detailed resource description | 3.17.13 |
| createDate | Timestamp | Creation time | 3.17.13 |
| lastOpDate | Timestamp | Last modification time | 3.17.13 |
#error
| Name | Type | Description | Starting Version |
|---|---|---|---|
| code | String | Error code, which globally and uniquely identifies the error, for example, SYS.1000 or HOST.1001 | 0.6 |
| description | String | Summary description of the error | 0.6 |
| details | String | Details of the error | 0.6 |
| elaboration | String | Reserved field. The default value is null | 0.6 |
| opaque | LinkedHashMap | Reserved field. The default value is null | 0.6 |
| cause | ErrorCode | Root error that caused the current error. This field is null if there is no source error | 0.6 |
SDK Examples
Java SDK
RegisterVmInstanceFromMetadataAction action = new RegisterVmInstanceFromMetadataAction();
action.metadataPath = "/mnt/ps/vm-metadata/ff01ec80fd11327cba7519b66119d900.vmmeta";
action.primaryStorageUuid = "ff0359abb8443d2f8077cc368afa7c00";
action.zoneUuid = "ff0c268342c535aabf273d41a2be1d00";
action.clusterUuid = "ff0bcb94de7a3567b641d3fde2329d00";
action.hostUuid = "ff0192fa70113da886101145c084bd00";
action.name = "my-restored-vm";
action.regenerateUuid = true;
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c";
RegisterVmInstanceFromMetadataAction.Result res = action.call();
Python SDK
action = RegisterVmInstanceFromMetadataAction()
action.metadataPath = "/mnt/ps/vm-metadata/ff01ec80fd11327cba7519b66119d900.vmmeta"
action.primaryStorageUuid = "ff0359abb8443d2f8077cc368afa7c00"
action.zoneUuid = "ff0c268342c535aabf273d41a2be1d00"
action.clusterUuid = "ff0bcb94de7a3567b641d3fde2329d00"
action.hostUuid = "ff0192fa70113da886101145c084bd00"
action.name = "my-restored-vm"
action.regenerateUuid = true
action.sessionId = "b86c9016b4f24953a9edefb53ca0678c"
res = action.call()
