# -*- Mode: Python -*-
# vim: filetype=python
#

##
# = Yank feature
##

##
# @YankInstanceType:
#
# An enumeration of yank instance types.  See @YankInstance for more
# information.
#
# Since: 6.0
##
{ 'enum': 'YankInstanceType',
  'data': [ 'block-node', 'chardev', 'migration' ] }

##
# @YankInstanceBlockNode:
#
# Specifies which block graph node to yank.  See @YankInstance for
# more information.
#
# @node-name: the name of the block graph node
#
# Since: 6.0
##
{ 'struct': 'YankInstanceBlockNode',
  'data': { 'node-name': 'str' } }

##
# @YankInstanceChardev:
#
# Specifies which character device to yank.  See @YankInstance for
# more information.
#
# @id: the chardev's ID
#
# Since: 6.0
##
{ 'struct': 'YankInstanceChardev',
  'data': { 'id': 'str' } }

##
# @YankInstance:
#
# A yank instance can be yanked with the @yank qmp command to recover
# from a hanging QEMU.
#
# @type: yank instance type
#
# Currently implemented yank instances:
#
# - nbd block device: Yanking it will shut down the connection to the
#   nbd server without attempting to reconnect.
# - socket chardev: Yanking it will shut down the connected socket.
# - migration: Yanking it will shut down all migration connections.
#   Unlike @migrate_cancel, it will not notify the migration process,
#   so migration will go into @failed state, instead of @cancelled
#   state.  @yank should be used to recover from hangs.
#
# Since: 6.0
##
{ 'union': 'YankInstance',
  'base': { 'type': 'YankInstanceType' },
  'discriminator': 'type',
  'data': {
      'block-node': 'YankInstanceBlockNode',
      'chardev': 'YankInstanceChardev' } }

##
# @yank:
#
# Try to recover from hanging QEMU by yanking the specified instances.
# See @YankInstance for more information.
#
# @instances: the instances to be yanked
#
# Errors:
#     - If any of the YankInstances doesn't exist, DeviceNotFound
#
# .. qmp-example::
#
#     -> { "execute": "yank",
#          "arguments": {
#              "instances": [
#                   { "type": "block-node",
#                     "node-name": "nbd0" }
#              ] } }
#     <- { "return": {} }
#
# Since: 6.0
##
{ 'command': 'yank',
  'data': { 'instances': ['YankInstance'] },
  'allow-oob': true }

##
# @query-yank:
#
# Query yank instances.  See @YankInstance for more information.
#
# Returns: list of @YankInstance
#
# .. qmp-example::
#
#     -> { "execute": "query-yank" }
#     <- { "return": [
#              { "type": "block-node",
#                "node-name": "nbd0" }
#          ] }
#
# Since: 6.0
##
{ 'command': 'query-yank',
  'returns': ['YankInstance'],
  'allow-oob': true }
