]> git.proxmox.com Git - qemu-server.git/blame - PVE/QemuServer/Monitor.pm
vma restore: bump timeout for reading header
[qemu-server.git] / PVE / QemuServer / Monitor.pm
CommitLineData
0a13e08e
SR
1package PVE::QemuServer::Monitor;
2
3use strict;
4use warnings;
5
6use PVE::SafeSyslog;
7use PVE::QemuServer::Helpers;
8use PVE::QMPClient;
9
10use base 'Exporter';
11our @EXPORT_OK = qw(
12mon_cmd
13);
14
15sub qmp_cmd {
16 my ($vmid, $cmd) = @_;
17
18 my $res;
19
20 my $timeout;
21 if ($cmd->{arguments}) {
22 $timeout = delete $cmd->{arguments}->{timeout};
23 }
24
25 eval {
26 die "VM $vmid not running\n" if !PVE::QemuServer::Helpers::vm_running_locally($vmid);
27 my $sname = PVE::QemuServer::Helpers::qmp_socket($vmid);
28 if (-e $sname) { # test if VM is reasonably new and supports qmp/qga
29 my $qmpclient = PVE::QMPClient->new();
30
31 $res = $qmpclient->cmd($vmid, $cmd, $timeout);
32 } else {
33 die "unable to open monitor socket\n";
34 }
35 };
36 if (my $err = $@) {
37 syslog("err", "VM $vmid qmp command failed - $err");
38 die $err;
39 }
40
41 return $res;
42}
43
44sub mon_cmd {
45 my ($vmid, $execute, %params) = @_;
46
47 my $cmd = { execute => $execute, arguments => \%params };
ae1f94e1
TL
48
49 return qmp_cmd($vmid, $cmd);
0a13e08e
SR
50}
51
52sub hmp_cmd {
4ee69c54 53 my ($vmid, $cmdline, $timeout) = @_;
0a13e08e
SR
54
55 my $cmd = {
56 execute => 'human-monitor-command',
4ee69c54 57 arguments => { 'command-line' => $cmdline, timeout => $timeout },
0a13e08e
SR
58 };
59
60 return qmp_cmd($vmid, $cmd);
61}
62
631;