all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [PATCH qemu-server v3 0/3] vm start: log qemu version when starting a VM
@ 2026-06-30 11:04 Maximiliano Sandoval
  2026-06-30 11:04 ` [PATCH qemu-server v3 1/3] test: mock query-version qmp command Maximiliano Sandoval
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Maximiliano Sandoval @ 2026-06-30 11:04 UTC (permalink / raw)
  To: pve-devel

Differences from v2:
- Move get_qemu_package_version and get_runnning_qemu_version to QMPHelpers.pm

Differences from v1:

- Fix a typo s/pgk/pkg/
- Rename helper to get_qemu_package_version
- Add dummy output in mockup method

Maximiliano Sandoval (3):
  test: mock query-version qmp command
  move get_running_qemu_version to QMPHelpers
  vm start: log qemu version when starting a VM

 src/PVE/QemuServer.pm            | 12 ++++--------
 src/PVE/QemuServer/QMPHelpers.pm | 11 +++++++++++
 src/test/MigrationTest/QmMock.pm | 10 ++++++++++
 3 files changed, 25 insertions(+), 8 deletions(-)

-- 
2.47.3





^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH qemu-server v3 1/3] test: mock query-version qmp command
  2026-06-30 11:04 [PATCH qemu-server v3 0/3] vm start: log qemu version when starting a VM Maximiliano Sandoval
@ 2026-06-30 11:04 ` Maximiliano Sandoval
  2026-06-30 11:04 ` [PATCH qemu-server v3 2/3] move get_running_qemu_version to QMPHelpers Maximiliano Sandoval
  2026-06-30 11:04 ` [PATCH qemu-server v3 3/3] vm start: log qemu version when starting a VM Maximiliano Sandoval
  2 siblings, 0 replies; 4+ messages in thread
From: Maximiliano Sandoval @ 2026-06-30 11:04 UTC (permalink / raw)
  To: pve-devel

In the next commit we add a call to query-version to log the package
version when starting a VM.

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 src/test/MigrationTest/QmMock.pm | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/test/MigrationTest/QmMock.pm b/src/test/MigrationTest/QmMock.pm
index 311dbb39..c6fc1f50 100644
--- a/src/test/MigrationTest/QmMock.pm
+++ b/src/test/MigrationTest/QmMock.pm
@@ -54,6 +54,11 @@ my sub mocked_mon_cmd {
         return [];
     } elsif ($command eq 'qom-set') {
         return;
+    } elsif ($command eq 'query-version') {
+        return {
+            qemu => { major => '11', minor => '0', micro => '0' },
+            package => 'pve-qemu-kvm_11.0.0-4',
+        };
     }
     die "mon_cmd (mocked) - implement me: $command";
 }
-- 
2.47.3





^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH qemu-server v3 2/3] move get_running_qemu_version to QMPHelpers
  2026-06-30 11:04 [PATCH qemu-server v3 0/3] vm start: log qemu version when starting a VM Maximiliano Sandoval
  2026-06-30 11:04 ` [PATCH qemu-server v3 1/3] test: mock query-version qmp command Maximiliano Sandoval
@ 2026-06-30 11:04 ` Maximiliano Sandoval
  2026-06-30 11:04 ` [PATCH qemu-server v3 3/3] vm start: log qemu version when starting a VM Maximiliano Sandoval
  2 siblings, 0 replies; 4+ messages in thread
From: Maximiliano Sandoval @ 2026-06-30 11:04 UTC (permalink / raw)
  To: pve-devel

We will add a new helper for retrieving the package version in the next
commit and it makes sense to keep them together.

Since the fn is in a different module now one also needs to add it to
the mock modules. This will be relevant in the next commit when
query-version is called as part of VM startup.

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 src/PVE/QemuServer.pm            | 9 ++-------
 src/PVE/QemuServer/QMPHelpers.pm | 6 ++++++
 src/test/MigrationTest/QmMock.pm | 5 +++++
 3 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/PVE/QemuServer.pm b/src/PVE/QemuServer.pm
index cdf66e89..12ac5d2d 100644
--- a/src/PVE/QemuServer.pm
+++ b/src/PVE/QemuServer.pm
@@ -89,7 +89,8 @@ use PVE::QemuServer::OVMF;
 use PVE::QemuServer::PCI qw(print_pci_addr print_pcie_addr print_pcie_root_port parse_hostpci);
 use PVE::QemuServer::PCI::Mdev;
 use PVE::QemuServer::QemuImage;
-use PVE::QemuServer::QMPHelpers qw(qemu_deviceadd qemu_devicedel qemu_objectadd qemu_objectdel);
+use PVE::QemuServer::QMPHelpers
+    qw(get_running_qemu_version qemu_deviceadd qemu_devicedel qemu_objectadd qemu_objectdel);
 use PVE::QemuServer::QSD;
 use PVE::QemuServer::RNG qw(parse_rng print_rng_device_commandline print_rng_object_commandline);
 use PVE::QemuServer::RunState;
@@ -8062,12 +8063,6 @@ no_data_clone:
     return $disk;
 }
 
-sub get_running_qemu_version {
-    my ($vmid) = @_;
-    my $res = mon_cmd($vmid, "query-version");
-    return "$res->{qemu}->{major}.$res->{qemu}->{minor}";
-}
-
 sub qemu_use_old_bios_files {
     my ($machine_type) = @_;
 
diff --git a/src/PVE/QemuServer/QMPHelpers.pm b/src/PVE/QemuServer/QMPHelpers.pm
index b4c6d1e7..4275ebb2 100644
--- a/src/PVE/QemuServer/QMPHelpers.pm
+++ b/src/PVE/QemuServer/QMPHelpers.pm
@@ -8,6 +8,7 @@ use PVE::QemuServer::Monitor qw(mon_cmd);
 use base 'Exporter';
 
 our @EXPORT_OK = qw(
+    get_running_qemu_version
     qemu_deviceadd
     qemu_devicedel
     qemu_objectadd
@@ -18,6 +19,11 @@ sub nbd_stop($vmid) {
     mon_cmd($vmid, 'nbd-server-stop', timeout => 25);
 }
 
+sub get_running_qemu_version($vmid) {
+    my $res = mon_cmd($vmid, 'query-version');
+    return "$res->{qemu}->{major}.$res->{qemu}->{minor}";
+}
+
 sub qemu_deviceadd($vmid, $devicefull) {
     $devicefull = "driver=" . $devicefull;
 
diff --git a/src/test/MigrationTest/QmMock.pm b/src/test/MigrationTest/QmMock.pm
index c6fc1f50..8f8899dc 100644
--- a/src/test/MigrationTest/QmMock.pm
+++ b/src/test/MigrationTest/QmMock.pm
@@ -82,6 +82,11 @@ $qemu_server_helpers_module->mock(
     },
 );
 
+my $qemu_server_qmp_helpers_module = Test::MockModule->new("PVE::QemuServer::QMPHelpers");
+$qemu_server_qmp_helpers_module->mock(
+    mon_cmd => \&mocked_mon_cmd,
+);
+
 my $qemu_server_runstate_module = Test::MockModule->new("PVE::QemuServer::RunState");
 $qemu_server_runstate_module->mock(
     get_cleanup_flag_path => sub {
-- 
2.47.3





^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH qemu-server v3 3/3] vm start: log qemu version when starting a VM
  2026-06-30 11:04 [PATCH qemu-server v3 0/3] vm start: log qemu version when starting a VM Maximiliano Sandoval
  2026-06-30 11:04 ` [PATCH qemu-server v3 1/3] test: mock query-version qmp command Maximiliano Sandoval
  2026-06-30 11:04 ` [PATCH qemu-server v3 2/3] move get_running_qemu_version to QMPHelpers Maximiliano Sandoval
@ 2026-06-30 11:04 ` Maximiliano Sandoval
  2 siblings, 0 replies; 4+ messages in thread
From: Maximiliano Sandoval @ 2026-06-30 11:04 UTC (permalink / raw)
  To: pve-devel

Previously, having the system journal and task logs from a boot was not
enough to determine which qemu version is installed nor the running QEMU
version of a VM. This is addressed by logging pve-qemu-kvm's package
version when starting the VM.

The package version is obtained with the 'query-version' qmp command.

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---

Notes:
    sample output in the journal:
    
    Jun 24 10:39:14 pve-148 qm[26137]: VM 100 started with PID 26166 using pve-qemu-kvm_11.0.0-4.

 src/PVE/QemuServer.pm            | 3 ++-
 src/PVE/QemuServer/QMPHelpers.pm | 5 +++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/PVE/QemuServer.pm b/src/PVE/QemuServer.pm
index 12ac5d2d..8d88e456 100644
--- a/src/PVE/QemuServer.pm
+++ b/src/PVE/QemuServer.pm
@@ -5854,7 +5854,8 @@ sub vm_start_nolock {
     eval { PVE::QemuServer::PCI::reserve_pci_usage($pci_reserve_list, $vmid, undef, $pid) };
     warn $@ if $@;
 
-    syslog("info", "VM $vmid started with PID $pid.");
+    my $pkg_version = PVE::QemuServer::QMPHelpers::get_qemu_package_version($vmid);
+    syslog("info", "VM $vmid started with PID $pid using $pkg_version.");
 
     PVE::QemuServer::RunState::create_cleanup_flag($vmid);
 
diff --git a/src/PVE/QemuServer/QMPHelpers.pm b/src/PVE/QemuServer/QMPHelpers.pm
index 4275ebb2..6f956080 100644
--- a/src/PVE/QemuServer/QMPHelpers.pm
+++ b/src/PVE/QemuServer/QMPHelpers.pm
@@ -19,6 +19,11 @@ sub nbd_stop($vmid) {
     mon_cmd($vmid, 'nbd-server-stop', timeout => 25);
 }
 
+sub get_qemu_package_version($vmid) {
+    my $res = mon_cmd($vmid, 'query-version');
+    return $res->{package};
+}
+
 sub get_running_qemu_version($vmid) {
     my $res = mon_cmd($vmid, 'query-version');
     return "$res->{qemu}->{major}.$res->{qemu}->{minor}";
-- 
2.47.3





^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-06-30 11:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-30 11:04 [PATCH qemu-server v3 0/3] vm start: log qemu version when starting a VM Maximiliano Sandoval
2026-06-30 11:04 ` [PATCH qemu-server v3 1/3] test: mock query-version qmp command Maximiliano Sandoval
2026-06-30 11:04 ` [PATCH qemu-server v3 2/3] move get_running_qemu_version to QMPHelpers Maximiliano Sandoval
2026-06-30 11:04 ` [PATCH qemu-server v3 3/3] vm start: log qemu version when starting a VM Maximiliano Sandoval

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal