mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-10-05 21:55:28 +00:00
add migratedfrom param to start vm with conf file an another node
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
This commit is contained in:
parent
c04b5b04de
commit
7e8dcf2cb0
@ -1194,6 +1194,8 @@ __PACKAGE__->register_method({
|
|||||||
vmid => get_standard_option('pve-vmid'),
|
vmid => get_standard_option('pve-vmid'),
|
||||||
skiplock => get_standard_option('skiplock'),
|
skiplock => get_standard_option('skiplock'),
|
||||||
stateuri => get_standard_option('pve-qm-stateuri'),
|
stateuri => get_standard_option('pve-qm-stateuri'),
|
||||||
|
migratedfrom => get_standard_option('pve-node',{ optional => 1 }),
|
||||||
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
returns => {
|
returns => {
|
||||||
@ -1218,6 +1220,10 @@ __PACKAGE__->register_method({
|
|||||||
raise_param_exc({ skiplock => "Only root may use this option." })
|
raise_param_exc({ skiplock => "Only root may use this option." })
|
||||||
if $skiplock && $authuser ne 'root@pam';
|
if $skiplock && $authuser ne 'root@pam';
|
||||||
|
|
||||||
|
my $migratedfrom = extract_param($param, 'migratedfrom');
|
||||||
|
raise_param_exc({ migratedfrom => "Only root may use this option." })
|
||||||
|
if $migratedfrom && $authuser ne 'root@pam';
|
||||||
|
|
||||||
my $storecfg = PVE::Storage::config();
|
my $storecfg = PVE::Storage::config();
|
||||||
|
|
||||||
if (&$vm_is_ha_managed($vmid) && !$stateuri &&
|
if (&$vm_is_ha_managed($vmid) && !$stateuri &&
|
||||||
@ -1246,7 +1252,7 @@ __PACKAGE__->register_method({
|
|||||||
|
|
||||||
syslog('info', "start VM $vmid: $upid\n");
|
syslog('info', "start VM $vmid: $upid\n");
|
||||||
|
|
||||||
PVE::QemuServer::vm_start($storecfg, $vmid, $stateuri, $skiplock);
|
PVE::QemuServer::vm_start($storecfg, $vmid, $stateuri, $skiplock, $migratedfrom);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
@ -298,9 +298,11 @@ sub phase2 {
|
|||||||
|
|
||||||
my $rport;
|
my $rport;
|
||||||
|
|
||||||
|
my $nodename = PVE::INotify::nodename();
|
||||||
|
|
||||||
## start on remote node
|
## start on remote node
|
||||||
my $cmd = [@{$self->{rem_ssh}}, 'qm', 'start',
|
my $cmd = [@{$self->{rem_ssh}}, 'qm', 'start',
|
||||||
$vmid, '--stateuri', 'tcp', '--skiplock'];
|
$vmid, '--stateuri', 'tcp', '--skiplock', '--migratedfrom', $nodename];
|
||||||
|
|
||||||
PVE::Tools::run_command($cmd, outfunc => sub {
|
PVE::Tools::run_command($cmd, outfunc => sub {
|
||||||
my $line = shift;
|
my $line = shift;
|
||||||
|
@ -1499,9 +1499,9 @@ sub destroy_vm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub load_config {
|
sub load_config {
|
||||||
my ($vmid) = @_;
|
my ($vmid, $node) = @_;
|
||||||
|
|
||||||
my $cfspath = cfs_config_path($vmid);
|
my $cfspath = cfs_config_path($vmid, $node);
|
||||||
|
|
||||||
my $conf = PVE::Cluster::cfs_read_file($cfspath);
|
my $conf = PVE::Cluster::cfs_read_file($cfspath);
|
||||||
|
|
||||||
@ -1757,9 +1757,9 @@ sub check_cmdline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub check_running {
|
sub check_running {
|
||||||
my ($vmid, $nocheck) = @_;
|
my ($vmid, $nocheck, $node) = @_;
|
||||||
|
|
||||||
my $filename = config_file($vmid);
|
my $filename = config_file($vmid, $node);
|
||||||
|
|
||||||
die "unable to find configuration file for VM $vmid - no such machine\n"
|
die "unable to find configuration file for VM $vmid - no such machine\n"
|
||||||
if !$nocheck && ! -f $filename;
|
if !$nocheck && ! -f $filename;
|
||||||
@ -2708,14 +2708,14 @@ sub qemu_block_resize {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub vm_start {
|
sub vm_start {
|
||||||
my ($storecfg, $vmid, $statefile, $skiplock) = @_;
|
my ($storecfg, $vmid, $statefile, $skiplock, $migratedfrom) = @_;
|
||||||
|
|
||||||
lock_config($vmid, sub {
|
lock_config($vmid, sub {
|
||||||
my $conf = load_config($vmid);
|
my $conf = load_config($vmid, $migratedfrom);
|
||||||
|
|
||||||
check_lock($conf) if !$skiplock;
|
check_lock($conf) if !$skiplock;
|
||||||
|
|
||||||
die "VM $vmid already running\n" if check_running($vmid);
|
die "VM $vmid already running\n" if check_running($vmid, undef, $migratedfrom);
|
||||||
|
|
||||||
my $migrate_uri;
|
my $migrate_uri;
|
||||||
my $migrate_port = 0;
|
my $migrate_port = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user