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