]> git.proxmox.com Git - qemu-server.git/blob - PVE/QemuServer/Monitor.pm
migration: add missing use statements
[qemu-server.git] / PVE / QemuServer / Monitor.pm
1 package PVE::QemuServer::Monitor;
2
3 use strict;
4 use warnings;
5
6 use PVE::SafeSyslog;
7 use PVE::QemuServer::Helpers;
8 use PVE::QMPClient;
9
10 use base 'Exporter';
11 our @EXPORT_OK = qw(
12 mon_cmd
13 );
14
15 sub 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
44 sub mon_cmd {
45 my ($vmid, $execute, %params) = @_;
46
47 my $cmd = { execute => $execute, arguments => \%params };
48
49 return qmp_cmd($vmid, $cmd);
50 }
51
52 sub hmp_cmd {
53 my ($vmid, $cmdline) = @_;
54
55 my $cmd = {
56 execute => 'human-monitor-command',
57 arguments => { 'command-line' => $cmdline },
58 };
59
60 return qmp_cmd($vmid, $cmd);
61 }
62
63 1;