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 24# more 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 37# more 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 50# from a hanging QEMU. 51# 52# @type: yank instance type 53# 54# Currently implemented yank instances: 55# 56# - nbd block device: Yanking it will shut down the connection to the 57# nbd server without attempting to reconnect. 58# - socket chardev: Yanking it will shut down the connected socket. 59# - migration: Yanking it will shut down all migration connections. 60# Unlike @migrate_cancel, it will not notify the migration process, 61# so migration will go into @failed state, instead of @cancelled 62# state. @yank should be used to recover from hangs. 63# 64# Since: 6.0 65## 66{ 'union': 'YankInstance', 67 'base': { 'type': 'YankInstanceType' }, 68 'discriminator': 'type', 69 'data': { 70 'block-node': 'YankInstanceBlockNode', 71 'chardev': 'YankInstanceChardev' } } 72 73## 74# @yank: 75# 76# Try to recover from hanging QEMU by yanking the specified instances. 77# See @YankInstance for more information. 78# 79# @instances: the instances to be yanked 80# 81# Errors: 82# - If any of the YankInstances doesn't exist, DeviceNotFound 83# 84# .. qmp-example:: 85# 86# -> { "execute": "yank", 87# "arguments": { 88# "instances": [ 89# { "type": "block-node", 90# "node-name": "nbd0" } 91# ] } } 92# <- { "return": {} } 93# 94# Since: 6.0 95## 96{ 'command': 'yank', 97 'data': { 'instances': ['YankInstance'] }, 98 'allow-oob': true } 99 100## 101# @query-yank: 102# 103# Query yank instances. See @YankInstance for more information. 104# 105# Returns: list of @YankInstance 106# 107# .. qmp-example:: 108# 109# -> { "execute": "query-yank" } 110# <- { "return": [ 111# { "type": "block-node", 112# "node-name": "nbd0" } 113# ] } 114# 115# Since: 6.0 116## 117{ 'command': 'query-yank', 118 'returns': ['YankInstance'], 119 'allow-oob': true } 120