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