]>
Commit | Line | Data |
---|---|---|
50186051 LS |
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 more | |
24 | # 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 more | |
37 | # 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 from a | |
50 | # hanging QEMU. | |
51 | # | |
52 | # Currently implemented yank instances: | |
53 | # - nbd block device: | |
54 | # Yanking it will shut down the connection to the nbd server without | |
55 | # attempting to reconnect. | |
56 | # - socket chardev: | |
57 | # Yanking it will shut down the connected socket. | |
58 | # - migration: | |
59 | # Yanking it will shut down all migration connections. Unlike | |
60 | # @migrate_cancel, it will not notify the migration process, so migration | |
61 | # will go into @failed state, instead of @cancelled state. @yank should be | |
62 | # 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. See | |
77 | # @YankInstance for more information. | |
78 | # | |
79 | # Takes a list of @YankInstance as argument. | |
80 | # | |
81 | # Returns: - Nothing on success | |
82 | # - @DeviceNotFound error, if any of the YankInstances doesn't exist | |
83 | # | |
84 | # 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 | # 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 } |