[pve-devel] [PATCH qemu-server 2/4] migrate: add remote parameter
Fabian Grünbichler
f.gruenbichler at proxmox.com
Fri Mar 6 11:20:33 CET 2020
Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
---
PVE/API2/Qemu.pm | 29 +++++++++++++++++++++++------
1 file changed, 23 insertions(+), 6 deletions(-)
diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 24f0dfd..a3592ed 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -35,6 +35,7 @@ use PVE::API2::Qemu::Agent;
use PVE::VZDump::Plugin;
use PVE::DataCenterConfig;
use PVE::SSHInfo;
+use PVE::RemoteConfig;
BEGIN {
if (!$ENV{PVE_GENERATING_DOCS}) {
@@ -3297,6 +3298,10 @@ __PACKAGE__->register_method({
description => "Target node.",
completion => \&PVE::Cluster::complete_migration_target,
}),
+ remote => {
+ type => 'string',
+ optional => 1,
+ },
online => {
type => 'boolean',
description => "Use online/live migration if VM is running. Ignored if VM is stopped.",
@@ -3354,9 +3359,17 @@ __PACKAGE__->register_method({
PVE::Cluster::check_cfs_quorum();
- PVE::Cluster::check_node_exists($target);
+ my $targetip;
+
+ if ($param->{remote}) {
+ my $remote_config = PVE::RemoteConfig->new();
+ my (undef, $conn_args) = $remote_config->get_remote_info($param->{remote}, $target);
+ $targetip = $conn_args->{host};
+ } else {
+ PVE::Cluster::check_node_exists($target);
- my $targetip = PVE::Cluster::remote_node_ip($target);
+ $targetip = PVE::Cluster::remote_node_ip($target);
+ }
my $vmid = extract_param($param, 'vmid');
@@ -3389,14 +3402,18 @@ __PACKAGE__->register_method({
my $storecfg = PVE::Storage::config();
- if( $param->{targetstorage}) {
- PVE::Storage::storage_check_node($storecfg, $param->{targetstorage}, $target);
- } else {
- PVE::QemuServer::check_storage_availability($storecfg, $conf, $target);
+ if (!$param->{remote}) {
+ if($param->{targetstorage}) {
+ PVE::Storage::storage_check_node($storecfg, $param->{targetstorage}, $target);
+ } else {
+ PVE::QemuServer::check_storage_availability($storecfg, $conf, $target);
+ }
}
if (PVE::HA::Config::vm_is_ha_managed($vmid) && $rpcenv->{type} ne 'ha') {
+ raise_param_exc({ remote => "Remote migration not supported for HA-managed VMs." });
+
my $hacmd = sub {
my $upid = shift;
--
2.20.1
More information about the pve-devel
mailing list