# -*- Mode: Python -*-
# vim: filetype=python

# Note that modules are shared with the QEMU main schema under the assumption
# that the storage daemon schema is a subset of the main schema. For the shared
# modules, no code is generated here, but we reuse the code files generated
# from the main schema.
#
# If you wish to extend the storage daemon schema to contain things that are
# not in the main schema, be aware that array types of types defined in shared
# modules are only generated if an array of the respective type is already used
# in the main schema. Therefore, if you use such arrays, you may need to define
# the array type in the main schema, even if it is unused outside of the
# storage daemon.

##
# ************
# Introduction
# ************
#
# This manual describes the commands and events supported by the QEMU
# storage daemon QMP.
#
# For locating a particular item, please see the `qapi-qsd-index`.
#
# The following notation is used in examples:
#
# .. qmp-example::
#
#   -> ... text sent by client (commands) ...
#   <- ... text sent by server (command responses and events) ...
#
# Example text is formatted for readability.  However, in real
# protocol usage, its commonly emitted as a single line.
#
# Please refer to the
# :doc:`QEMU Machine Protocol Specification </interop/qmp-spec>`
# for the general format of commands, responses, and events.
##


{ 'include': '../../qapi/pragma.json' }

# Documentation generated with qapi-gen.py is in source order, with
# included sub-schemas inserted at the first include directive
# (subsequent include directives have no effect).  To get a sane and
# stable order, it's best to include each sub-schema just once, or
# include it first right here.

{ 'include': '../../qapi/common.json' }
{ 'include': '../../qapi/sockets.json' }
{ 'include': '../../qapi/crypto.json' }
{ 'include': '../../qapi/job.json' }

##
# *************
# Block devices
# *************
##
{ 'include': '../../qapi/block-core.json' }
{ 'include': '../../qapi/block-export.json' }

{ 'include': '../../qapi/char.json' }
{ 'include': '../../qapi/authz.json' }
{ 'include': '../../qapi/transaction.json' }
{ 'include': '../../qapi/control.json' }
{ 'include': '../../qapi/introspect.json' }
{ 'include': '../../qapi/qom.json' }
