use PVE::QMPClient;
use PVE::QemuConfig;
+use PVE::QemuServer::Helpers;
use PVE::QemuServer::Cloudinit;
use PVE::QemuServer::Memory;
use PVE::QemuServer::PCI qw(print_pci_addr print_pcie_addr print_pcie_root_port);
my $nodename = PVE::INotify::nodename();
-mkdir "/etc/pve/nodes/$nodename";
-my $confdir = "/etc/pve/nodes/$nodename/qemu-server";
-mkdir $confdir;
-
-my $var_run_tmpdir = "/var/run/qemu-server";
-mkdir $var_run_tmpdir;
-
-my $lock_dir = "/var/lock/qemu-server";
-mkdir $lock_dir;
-
my $cpu_vendor_list = {
# Intel CPUs
486 => 'GenuineIntel',
die "unable to find configuration file for VM $vmid - no such machine\n"
if !$nocheck && ! -f $filename;
- my $pidfile = pidfile_name($vmid);
+ my $pidfile = PVE::QemuServer::Helpers::pidfile_name($vmid);
if (my $fd = IO::File->new("<$pidfile")) {
my $st = stat($fd);
my $vzlist = config_list();
- my $fd = IO::Dir->new($var_run_tmpdir) || return $vzlist;
+ my $fd = IO::Dir->new($PVE::QemuServer::Helpers::var_run_tmpdir) || return $vzlist;
while (defined(my $de = $fd->read)) {
next if $de !~ m/^(\d+)\.pid$/;
my $use_virtio = 0;
- my $qmpsocket = qmp_socket($vmid);
+ my $qmpsocket = PVE::QemuServer::Helpers::qmp_socket($vmid);
push @$cmd, '-chardev', "socket,id=qmp,path=$qmpsocket,server,nowait";
push @$cmd, '-mon', "chardev=qmp,mode=control";
push @$cmd, '-mon', "chardev=qmp-event,mode=control";
}
- push @$cmd, '-pidfile' , pidfile_name($vmid);
+ push @$cmd, '-pidfile' , PVE::QemuServer::Helpers::pidfile_name($vmid);
push @$cmd, '-daemonize';
if ($vga->{type} && $vga->{type} !~ m/^serial\d+$/ && $vga->{type} ne 'none'){
push @$devices, '-device', print_vga_device($conf, $vga, $arch, $kvmver, $machine_type, undef, $qxlnum, $bridges);
- my $socket = vnc_socket($vmid);
+ my $socket = PVE::QemuServer::Helpers::vnc_socket($vmid);
push @$cmd, '-vnc', "unix:$socket,password";
} else {
push @$cmd, '-vga', 'none' if $vga->{type} eq 'none';
my $guest_agent = parse_guest_agent($conf);
if ($guest_agent->{enabled}) {
- my $qgasocket = qmp_socket($vmid, 1);
+ my $qgasocket = PVE::QemuServer::Helpers::qmp_socket($vmid, 1);
push @$devices, '-chardev', "socket,path=$qgasocket,server,nowait,id=qga0";
if (!$guest_agent->{type} || $guest_agent->{type} eq 'virtio') {
return wantarray ? ($cmd, $vollist, $spice_port) : $cmd;
}
-sub vnc_socket {
- my ($vmid) = @_;
- return "${var_run_tmpdir}/$vmid.vnc";
-}
-
sub spice_port {
my ($vmid) = @_;
return $res->{'tls-port'} || $res->{'port'} || die "no spice port\n";
}
-sub qmp_socket {
- my ($vmid, $qga) = @_;
- my $sockettype = $qga ? 'qga' : 'qmp';
- return "${var_run_tmpdir}/$vmid.$sockettype";
-}
-
-sub pidfile_name {
- my ($vmid) = @_;
- return "${var_run_tmpdir}/$vmid.pid";
-}
-
sub vm_devices_list {
my ($vmid) = @_;
eval {
die "VM $vmid not running\n" if !check_running($vmid, $nocheck);
- my $sname = qmp_socket($vmid);
+ my $sname = PVE::QemuServer::Helpers::qmp_socket($vmid);
if (-e $sname) { # test if VM is reasonambe new and supports qmp/qga
my $qmpclient = PVE::QMPClient->new();