Here is another proposal how to handle vm snapshots:
QMP vm-snapshot-save:
- { 'command': 'vm-snapshot-save',
'data': { 'name': 'str' },
'returns': 'SnapshotInfo' }
- vm-snapshot-save returns an error if there is an existing
snapshot with the same name
- you cannot provide an id for a new snapshot
- on success all information about created snapshot will be returned
QMP vm-snapshot-load
- { 'command': 'vm-snapshot-load',
'data': { '*name': 'str', '*id': 'int' },
'returns': 'SnapshotInfo' }
- one of the name or id must be provided
- if both are provided they will match only the snapshot with the
same name and id
- returns SnapshotInfo only if the snapshot exists.
QMP vm-snapshot-delete:
- { 'command': 'vm-snapshot-delete',
'data': { '*name': 'str', '*id': 'int' },
'returns': 'SnapshotInfo' }
- same rules as vm-snapshot-load
HMP savevm:
- args_type = "force:-f,name:s?",
- if the name is not provided the HMP command will generates new
one for QMP command
- if there is already a snapshot with provided or generated name
it will fails
- there will be an optional -f parameter to force saving requested
snapshot and it will internally use vm-snapshot-delete and then
vm-snapshot-save
- all information about created snapshot will be printed
HMP loadvm:
- args_type = "name:s?,id:i?",
- follow the same behavior as the QMP command
HMP delvm:
- args_type = "name:s?,id:i?"
- same rules as loadvm