qmp: make block job command naming consistent

The block streaming and job commands used '_' instead of '-' for reasons
of compatibility with libvirt, which already included support for the
'_' naming.  However, the semantics of block_job_cancel have changed and
libvirt now needs to handle the new semantics.

Since the old semantics were never in a QEMU release we can still rename
the commands to use '-' instead of '_'.  Libvirt is also happy because
the new name can be used to distinguish QEMU binaries that support the
latest block-job-cancel semantics from those that include a downstream
block_job_cancel command.

Therefore, let's apply the QAPI/QMP naming rules to the block streaming
and job commands.  QEMU 1.1 will be the first release with these
commands so no upstream users can break.

Note that HMP commands are left with '_' because that is the convention
there.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2012-04-11 16:27:10 +01:00 committed by Luiz Capitulino
parent 3c30dd5a68
commit db58f9c060
3 changed files with 17 additions and 16 deletions

View File

@ -1548,7 +1548,8 @@
'data': { 'device': 'str', 'bps': 'int', 'bps_rd': 'int', 'bps_wr': 'int', 'data': { 'device': 'str', 'bps': 'int', 'bps_rd': 'int', 'bps_wr': 'int',
'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int' } } 'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int' } }
# @block_stream: ##
# @block-stream:
# #
# Copy data from a backing file into a block device. # Copy data from a backing file into a block device.
# #
@ -1556,7 +1557,7 @@
# backing file has been copied. This command returns immediately once streaming # backing file has been copied. This command returns immediately once streaming
# has started. The status of ongoing block streaming operations can be checked # has started. The status of ongoing block streaming operations can be checked
# with query-block-jobs. The operation can be stopped before it has completed # with query-block-jobs. The operation can be stopped before it has completed
# using the block_job_cancel command. # using the block-job-cancel command.
# #
# If a base file is specified then sectors are not copied from that base file and # If a base file is specified then sectors are not copied from that base file and
# its backing chain. When streaming completes the image file will have the base # its backing chain. When streaming completes the image file will have the base
@ -1578,10 +1579,10 @@
# #
# Since: 1.1 # Since: 1.1
## ##
{ 'command': 'block_stream', 'data': { 'device': 'str', '*base': 'str' } } { 'command': 'block-stream', 'data': { 'device': 'str', '*base': 'str' } }
## ##
# @block_job_set_speed: # @block-job-set-speed:
# #
# Set maximum speed for a background block operation. # Set maximum speed for a background block operation.
# #
@ -1599,11 +1600,11 @@
# #
# Since: 1.1 # Since: 1.1
## ##
{ 'command': 'block_job_set_speed', { 'command': 'block-job-set-speed',
'data': { 'device': 'str', 'value': 'int' } } 'data': { 'device': 'str', 'value': 'int' } }
## ##
# @block_job_cancel: # @block-job-cancel:
# #
# Stop an active block streaming operation. # Stop an active block streaming operation.
# #
@ -1629,7 +1630,7 @@
# #
# Since: 1.1 # Since: 1.1
## ##
{ 'command': 'block_job_cancel', 'data': { 'device': 'str' } } { 'command': 'block-job-cancel', 'data': { 'device': 'str' } }
## ##
# @ObjectTypeInfo: # @ObjectTypeInfo:

View File

@ -687,19 +687,19 @@ Example:
EQMP EQMP
{ {
.name = "block_stream", .name = "block-stream",
.args_type = "device:B,base:s?", .args_type = "device:B,base:s?",
.mhandler.cmd_new = qmp_marshal_input_block_stream, .mhandler.cmd_new = qmp_marshal_input_block_stream,
}, },
{ {
.name = "block_job_set_speed", .name = "block-job-set-speed",
.args_type = "device:B,value:o", .args_type = "device:B,value:o",
.mhandler.cmd_new = qmp_marshal_input_block_job_set_speed, .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed,
}, },
{ {
.name = "block_job_cancel", .name = "block-job-cancel",
.args_type = "device:B", .args_type = "device:B",
.mhandler.cmd_new = qmp_marshal_input_block_job_cancel, .mhandler.cmd_new = qmp_marshal_input_block_job_cancel,
}, },

View File

@ -49,7 +49,7 @@ class TestSingleDrive(ImageStreamingTestCase):
def test_stream(self): def test_stream(self):
self.assert_no_active_streams() self.assert_no_active_streams()
result = self.vm.qmp('block_stream', device='drive0') result = self.vm.qmp('block-stream', device='drive0')
self.assert_qmp(result, 'return', {}) self.assert_qmp(result, 'return', {})
completed = False completed = False
@ -68,7 +68,7 @@ class TestSingleDrive(ImageStreamingTestCase):
'image file not fully populated after streaming') 'image file not fully populated after streaming')
def test_device_not_found(self): def test_device_not_found(self):
result = self.vm.qmp('block_stream', device='nonexistent') result = self.vm.qmp('block-stream', device='nonexistent')
self.assert_qmp(result, 'error/class', 'DeviceNotFound') self.assert_qmp(result, 'error/class', 'DeviceNotFound')
class TestStreamStop(ImageStreamingTestCase): class TestStreamStop(ImageStreamingTestCase):
@ -90,14 +90,14 @@ class TestStreamStop(ImageStreamingTestCase):
self.assert_no_active_streams() self.assert_no_active_streams()
result = self.vm.qmp('block_stream', device='drive0') result = self.vm.qmp('block-stream', device='drive0')
self.assert_qmp(result, 'return', {}) self.assert_qmp(result, 'return', {})
time.sleep(1) time.sleep(1)
events = self.vm.get_qmp_events(wait=False) events = self.vm.get_qmp_events(wait=False)
self.assertEqual(events, [], 'unexpected QMP event: %s' % events) self.assertEqual(events, [], 'unexpected QMP event: %s' % events)
self.vm.qmp('block_job_cancel', device='drive0') self.vm.qmp('block-job-cancel', device='drive0')
self.assert_qmp(result, 'return', {}) self.assert_qmp(result, 'return', {})
cancelled = False cancelled = False
@ -129,10 +129,10 @@ class TestSetSpeed(ImageStreamingTestCase):
def perf_test_set_speed(self): def perf_test_set_speed(self):
self.assert_no_active_streams() self.assert_no_active_streams()
result = self.vm.qmp('block_stream', device='drive0') result = self.vm.qmp('block-stream', device='drive0')
self.assert_qmp(result, 'return', {}) self.assert_qmp(result, 'return', {})
result = self.vm.qmp('block_job_set_speed', device='drive0', value=8 * 1024 * 1024) result = self.vm.qmp('block-job-set-speed', device='drive0', value=8 * 1024 * 1024)
self.assert_qmp(result, 'return', {}) self.assert_qmp(result, 'return', {})
completed = False completed = False