| # -*- 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 } |