1# -*- Mode: Python -*- 2# vim: filetype=python 3# 4 5## 6# = Yank feature 7## 8 9## 10# @YankInstanceType: 11# 12# An enumeration of yank instance types. See @YankInstance for more 13# information. 14# 15# Since: 6.0 16## 17{ 'enum': 'YankInstanceType', 18 'data': [ 'block-node', 'chardev', 'migration' ] } 19 20## 21# @YankInstanceBlockNode: 22# 23# Specifies which block graph node to yank. See @YankInstance for more 24# information. 25# 26# @node-name: the name of the block graph node 27# 28# Since: 6.0 29## 30{ 'struct': 'YankInstanceBlockNode', 31 'data': { 'node-name': 'str' } } 32 33## 34# @YankInstanceChardev: 35# 36# Specifies which character device to yank. See @YankInstance for more 37# information. 38# 39# @id: the chardev's ID 40# 41# Since: 6.0 42## 43{ 'struct': 'YankInstanceChardev', 44 'data': { 'id': 'str' } } 45 46## 47# @YankInstance: 48# 49# A yank instance can be yanked with the @yank qmp command to recover from a 50# hanging QEMU. 51# 52# Currently implemented yank instances: 53# 54# - nbd block device: 55# Yanking it will shut down the connection to the nbd server without 56# attempting to reconnect. 57# - socket chardev: 58# Yanking it will shut down the connected socket. 59# - migration: 60# Yanking it will shut down all migration connections. Unlike 61# @migrate_cancel, it will not notify the migration process, so migration 62# will go into @failed state, instead of @cancelled state. @yank should be 63# used to recover from hangs. 64# 65# Since: 6.0 66## 67{ 'union': 'YankInstance', 68 'base': { 'type': 'YankInstanceType' }, 69 'discriminator': 'type', 70 'data': { 71 'block-node': 'YankInstanceBlockNode', 72 'chardev': 'YankInstanceChardev' } } 73 74## 75# @yank: 76# 77# Try to recover from hanging QEMU by yanking the specified instances. See 78# @YankInstance for more information. 79# 80# Takes a list of @YankInstance as argument. 81# 82# Returns: - Nothing on success 83# - @DeviceNotFound error, if any of the YankInstances doesn't exist 84# 85# Example: 86# 87# -> { "execute": "yank", 88# "arguments": { 89# "instances": [ 90# { "type": "block-node", 91# "node-name": "nbd0" } 92# ] } } 93# <- { "return": {} } 94# 95# Since: 6.0 96## 97{ 'command': 'yank', 98 'data': { 'instances': ['YankInstance'] }, 99 'allow-oob': true } 100 101## 102# @query-yank: 103# 104# Query yank instances. See @YankInstance for more information. 105# 106# Returns: list of @YankInstance 107# 108# Example: 109# 110# -> { "execute": "query-yank" } 111# <- { "return": [ 112# { "type": "block-node", 113# "node-name": "nbd0" } 114# ] } 115# 116# Since: 6.0 117## 118{ 'command': 'query-yank', 119 'returns': ['YankInstance'], 120 'allow-oob': true } 121