[pve-devel] [PATCH qemu-server 10/16] monitor: align interface of qmp_cmd() with other helpers
Fiona Ebner
f.ebner at proxmox.com
Tue Oct 14 16:39:21 CEST 2025
Since all callers of qmp_cmd() construct the $cmd argument the same
way, this can also be done directly in qmp_cmd(). This aligns the
interface of qmp_cmd() to other helpers like mon_cmd(), except for
having a peer rather than just a VM ID. It's much more straightforward
to switch calls from mon_cmd() to qmp_cmd() after this change.
Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
---
src/PVE/QemuServer/Monitor.pm | 33 +++++++++++++++------------------
src/test/snapshot-test.pm | 4 +++-
2 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/src/PVE/QemuServer/Monitor.pm b/src/PVE/QemuServer/Monitor.pm
index efdee8e7..0b15808b 100644
--- a/src/PVE/QemuServer/Monitor.pm
+++ b/src/PVE/QemuServer/Monitor.pm
@@ -14,9 +14,8 @@ our @EXPORT_OK = qw(
=head3 qmp_cmd
- my $cmd = { execute => $qmp_command_name, arguments => \%params };
my $peer = { vmid => $vmid, type => $type };
- my $result = qmp_cmd($peer, $cmd);
+ my $result = qmp_cmd($peer, $execute, %arguments);
Execute the C<$qmp_command_name> with arguments C<%params> for the peer C<$peer>. The type C<$type>
of the peer can be C<qmp> for the QEMU instance of the VM, C<qga> for the guest agent of the VM or
@@ -41,9 +40,10 @@ C<qga> for the VM's guest agent or C<qsd> for the QEMU storage daemon assoicated
=back
-=item C<$cmd>: Hash reference containing the QMP command name for the C<execute> key and additional
-arguments for the QMP command under the C<arguments> key. The following custom arguments are not
-part of the QMP schema and supported for all commands:
+=item C<$execute>: The QMP command name.
+
+=item C<%arguments>: Additional arguments for the QMP command. The following custom arguments are
+not part of the QMP schema and supported for all commands:
=over
@@ -60,7 +60,9 @@ handle the error that is returned as a structured result.
=cut
sub qmp_cmd {
- my ($peer, $cmd) = @_;
+ my ($peer, $execute, %arguments) = @_;
+
+ my $cmd = { execute => $execute, arguments => \%arguments };
my $vmid = $peer->{vmid};
my $res;
@@ -101,30 +103,25 @@ sub qmp_cmd {
sub qsd_cmd {
my ($vmid, $execute, %params) = @_;
- my $cmd = { execute => $execute, arguments => \%params };
-
- return qmp_cmd({ vmid => $vmid, type => 'qsd' }, $cmd);
+ return qmp_cmd({ vmid => $vmid, type => 'qsd' }, $execute, %params);
}
sub mon_cmd {
my ($vmid, $execute, %params) = @_;
- my $cmd = { execute => $execute, arguments => \%params };
-
my $type = ($execute =~ /^guest\-+/) ? 'qga' : 'qmp';
- return qmp_cmd({ vmid => $vmid, type => $type }, $cmd);
+ return qmp_cmd({ vmid => $vmid, type => $type }, $execute, %params);
}
sub hmp_cmd {
my ($vmid, $cmdline, $timeout) = @_;
- my $cmd = {
- execute => 'human-monitor-command',
- arguments => { 'command-line' => $cmdline, timeout => $timeout },
- };
-
- return qmp_cmd({ vmid => $vmid, type => 'qmp' }, $cmd);
+ return qmp_cmd(
+ { vmid => $vmid, type => 'qmp' }, 'human-monitor-command',
+ 'command-line' => $cmdline,
+ timeout => $timeout,
+ );
}
1;
diff --git a/src/test/snapshot-test.pm b/src/test/snapshot-test.pm
index 5808f032..e28107b9 100644
--- a/src/test/snapshot-test.pm
+++ b/src/test/snapshot-test.pm
@@ -356,7 +356,9 @@ sub vm_running_locally {
# BEGIN mocked PVE::QemuServer::Monitor methods
sub qmp_cmd {
- my ($peer, $cmd) = @_;
+ my ($peer, $execute, %arguments) = @_;
+
+ my $cmd = { execute => $execute, arguments => \%arguments };
my $exec = $cmd->{execute};
if ($exec eq "guest-ping") {
--
2.47.3
More information about the pve-devel
mailing list