hide long commandline on vm_start/migrate failure

By default run_command prints the entire commandline executed when an
error occurs, but QEMU and our migrate command are not only
uninteresting to the user[*] but also annoyingly long. Hide them and only
print the exit code.

[*] Especially our migrate command, since it can't be manually executed
anyway. QEMU's commandline *might* contain something interesting, but is
so long that it's tricky to parse anyway, any a user can always call 'qm
showcmd --pretty'.

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
This commit is contained in:
Stefan Reiter 2019-12-09 16:14:08 +01:00 committed by Thomas Lamprecht
parent 68b108ee3a
commit 6e0216d862
2 changed files with 12 additions and 4 deletions

View File

@ -595,7 +595,7 @@ sub phase2 {
# Note: We try to keep $spice_ticket secret (do not pass via command line parameter) # Note: We try to keep $spice_ticket secret (do not pass via command line parameter)
# instead we pipe it through STDIN # instead we pipe it through STDIN
PVE::Tools::run_command($cmd, input => $spice_ticket, outfunc => sub { my $exitcode = PVE::Tools::run_command($cmd, input => $spice_ticket, outfunc => sub {
my $line = shift; my $line = shift;
if ($line =~ m/^migration listens on tcp:(localhost|[\d\.]+|\[[\d\.:a-fA-F]+\]):(\d+)$/) { if ($line =~ m/^migration listens on tcp:(localhost|[\d\.]+|\[[\d\.:a-fA-F]+\]):(\d+)$/) {
@ -629,7 +629,9 @@ sub phase2 {
}, errfunc => sub { }, errfunc => sub {
my $line = shift; my $line = shift;
$self->log('info', $line); $self->log('info', $line);
}); }, noerr => 1);
die "remote command failed with exit code $exitcode\n" if $exitcode;
die "unable to detect remote migration address\n" if !$raddr; die "unable to detect remote migration address\n" if !$raddr;

View File

@ -5405,7 +5405,11 @@ sub vm_start {
: $defaults->{cpuunits}; : $defaults->{cpuunits};
my $start_timeout = ($conf->{hugepages} || $is_suspended) ? 300 : 30; my $start_timeout = ($conf->{hugepages} || $is_suspended) ? 300 : 30;
my %run_params = (timeout => $statefile ? undef : $start_timeout, umask => 0077); my %run_params = (
timeout => $statefile ? undef : $start_timeout,
umask => 0077,
noerr => 1,
);
my %properties = ( my %properties = (
Slice => 'qemu.slice', Slice => 'qemu.slice',
@ -5421,7 +5425,9 @@ sub vm_start {
my $run_qemu = sub { my $run_qemu = sub {
PVE::Tools::run_fork sub { PVE::Tools::run_fork sub {
PVE::Systemd::enter_systemd_scope($vmid, "Proxmox VE VM $vmid", %properties); PVE::Systemd::enter_systemd_scope($vmid, "Proxmox VE VM $vmid", %properties);
run_command($cmd, %run_params);
my $exitcode = run_command($cmd, %run_params);
die "QEMU exited with code $exitcode\n" if $exitcode;
}; };
}; };