summaryrefslogtreecommitdiff
path: root/qapi/yank.json
blob: 167a775594ec626d27b264f9cbb966fe45c07325 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# -*- 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.
#
# 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.
#
# Takes a list of @YankInstance as argument.
#
# Returns: - Nothing on success
#          - @DeviceNotFound error, if any of the YankInstances doesn't exist
#
# 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
#
# Example:
#
# -> { "execute": "query-yank" }
# <- { "return": [
#          { "type": "block-node",
#            "node-name": "nbd0" }
#      ] }
#
# Since: 6.0
##
{ 'command': 'query-yank',
  'returns': ['YankInstance'],
  'allow-oob': true }