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