150186051SLukas Straub# -*- Mode: Python -*- 250186051SLukas Straub# vim: filetype=python 350186051SLukas Straub# 450186051SLukas Straub 550186051SLukas Straub## 650186051SLukas Straub# = Yank feature 750186051SLukas Straub## 850186051SLukas Straub 950186051SLukas Straub## 1050186051SLukas Straub# @YankInstanceType: 1150186051SLukas Straub# 1250186051SLukas Straub# An enumeration of yank instance types. See @YankInstance for more 1350186051SLukas Straub# information. 1450186051SLukas Straub# 1550186051SLukas Straub# Since: 6.0 1650186051SLukas Straub## 1750186051SLukas Straub{ 'enum': 'YankInstanceType', 1850186051SLukas Straub 'data': [ 'block-node', 'chardev', 'migration' ] } 1950186051SLukas Straub 2050186051SLukas Straub## 2150186051SLukas Straub# @YankInstanceBlockNode: 2250186051SLukas Straub# 2350186051SLukas Straub# Specifies which block graph node to yank. See @YankInstance for more 2450186051SLukas Straub# information. 2550186051SLukas Straub# 2650186051SLukas Straub# @node-name: the name of the block graph node 2750186051SLukas Straub# 2850186051SLukas Straub# Since: 6.0 2950186051SLukas Straub## 3050186051SLukas Straub{ 'struct': 'YankInstanceBlockNode', 3150186051SLukas Straub 'data': { 'node-name': 'str' } } 3250186051SLukas Straub 3350186051SLukas Straub## 3450186051SLukas Straub# @YankInstanceChardev: 3550186051SLukas Straub# 3650186051SLukas Straub# Specifies which character device to yank. See @YankInstance for more 3750186051SLukas Straub# information. 3850186051SLukas Straub# 3950186051SLukas Straub# @id: the chardev's ID 4050186051SLukas Straub# 4150186051SLukas Straub# Since: 6.0 4250186051SLukas Straub## 4350186051SLukas Straub{ 'struct': 'YankInstanceChardev', 4450186051SLukas Straub 'data': { 'id': 'str' } } 4550186051SLukas Straub 4650186051SLukas Straub## 4750186051SLukas Straub# @YankInstance: 4850186051SLukas Straub# 4950186051SLukas Straub# A yank instance can be yanked with the @yank qmp command to recover from a 5050186051SLukas Straub# hanging QEMU. 5150186051SLukas Straub# 5250186051SLukas Straub# Currently implemented yank instances: 53c1101028SMarkus Armbruster# 5450186051SLukas Straub# - nbd block device: 5550186051SLukas Straub# Yanking it will shut down the connection to the nbd server without 5650186051SLukas Straub# attempting to reconnect. 5750186051SLukas Straub# - socket chardev: 5850186051SLukas Straub# Yanking it will shut down the connected socket. 5950186051SLukas Straub# - migration: 6050186051SLukas Straub# Yanking it will shut down all migration connections. Unlike 6150186051SLukas Straub# @migrate_cancel, it will not notify the migration process, so migration 6250186051SLukas Straub# will go into @failed state, instead of @cancelled state. @yank should be 6350186051SLukas Straub# used to recover from hangs. 6450186051SLukas Straub# 6550186051SLukas Straub# Since: 6.0 6650186051SLukas Straub## 6750186051SLukas Straub{ 'union': 'YankInstance', 6850186051SLukas Straub 'base': { 'type': 'YankInstanceType' }, 6950186051SLukas Straub 'discriminator': 'type', 7050186051SLukas Straub 'data': { 7150186051SLukas Straub 'block-node': 'YankInstanceBlockNode', 7250186051SLukas Straub 'chardev': 'YankInstanceChardev' } } 7350186051SLukas Straub 7450186051SLukas Straub## 7550186051SLukas Straub# @yank: 7650186051SLukas Straub# 7750186051SLukas Straub# Try to recover from hanging QEMU by yanking the specified instances. See 7850186051SLukas Straub# @YankInstance for more information. 7950186051SLukas Straub# 8050186051SLukas Straub# Takes a list of @YankInstance as argument. 8150186051SLukas Straub# 8250186051SLukas Straub# Returns: - Nothing on success 8350186051SLukas Straub# - @DeviceNotFound error, if any of the YankInstances doesn't exist 8450186051SLukas Straub# 8550186051SLukas Straub# Example: 8650186051SLukas Straub# 8750186051SLukas Straub# -> { "execute": "yank", 8850186051SLukas Straub# "arguments": { 8950186051SLukas Straub# "instances": [ 9050186051SLukas Straub# { "type": "block-node", 9150186051SLukas Straub# "node-name": "nbd0" } 9250186051SLukas Straub# ] } } 9350186051SLukas Straub# <- { "return": {} } 9450186051SLukas Straub# 9550186051SLukas Straub# Since: 6.0 9650186051SLukas Straub## 9750186051SLukas Straub{ 'command': 'yank', 9850186051SLukas Straub 'data': { 'instances': ['YankInstance'] }, 9950186051SLukas Straub 'allow-oob': true } 10050186051SLukas Straub 10150186051SLukas Straub## 10250186051SLukas Straub# @query-yank: 10350186051SLukas Straub# 10450186051SLukas Straub# Query yank instances. See @YankInstance for more information. 10550186051SLukas Straub# 10650186051SLukas Straub# Returns: list of @YankInstance 10750186051SLukas Straub# 10850186051SLukas Straub# Example: 10950186051SLukas Straub# 11050186051SLukas Straub# -> { "execute": "query-yank" } 11150186051SLukas Straub# <- { "return": [ 11250186051SLukas Straub# { "type": "block-node", 11350186051SLukas Straub# "node-name": "nbd0" } 11450186051SLukas Straub# ] } 11550186051SLukas Straub# 11650186051SLukas Straub# Since: 6.0 11750186051SLukas Straub## 11850186051SLukas Straub{ 'command': 'query-yank', 11950186051SLukas Straub 'returns': ['YankInstance'], 12050186051SLukas Straub 'allow-oob': true } 121