[! use strict; use PVE::pvecfg; use PVE::I18N; use PVE::ConfigServer; use PVE::Cluster; use PVE::HTMLForm; use PVE::HTMLUtils; use PVE::HTMLGrid; !] [- use strict; my $out = ''; my $form = PVE::HTMLForm->new (\%fdat); my $cinfo = $fdat{__cinfo}; my $cidlist = PVE::HTMLUtils::cluster_format_cid_list ($cinfo); if (scalar (@{$cinfo->{nodes}}) <= 1) { $out .= __("Only one cluster node defined - no migration possible."); print OUT $out; return; } $fdat{cid} = $cinfo->{local}->{cid} if !defined ($fdat{cid}); my $cidlist2 = PVE::HTMLUtils::cluster_format_cid_list ($cinfo, $fdat{cid}); my $conn = PVE::ConfigClient::connect ($udat{auth_cookie}); my $vzlist = $conn->cluster_vzlist()->result; if ($form->action eq 'migrate') { my $trackid; eval { check_write_mode ($udat{AM}); die __("Please select a VM") . "\n" if !$fdat{veid} || $fdat{veid} eq '-'; die __("Please select a target node") . "\n" if !defined ($fdat{targetcid}); my $vzl = $vzlist->{"CID_$fdat{cid}"} || die "undefined cluster node '$fdat{cid}'\n"; my $d = $vzl->{"VEID_$fdat{veid}"} || die "undefined virtual machine VM $fdat{veid}\n"; $trackid = $conn->vmcommand_migrate ($fdat{cid}, $fdat{veid}, $d->{type}, $fdat{targetcid}, $fdat{online})->result; }; if ($@) { $udat{popup_error} = $@; } else { print OUT PVE::HTMLUtils::create_vmops_frame ($fdat{veid}, $trackid); return; } } $out .= $form->create_header(); my $vzl = $vzlist->{"CID_$fdat{cid}"}; my $srclist = PVE::HTMLUtils::cluster_format_vmid_list ($vzl); my $grid = PVE::HTMLGrid->new ('fw1', 'fw2', 'fw3:right', 'fw4'); $grid->add_row (__("Source Node") . ':', $form->create_element ('cid', 'dynamicdropdown', $fdat{cid}, $cidlist), "VMID:", $form->create_element ('veid', 'dropdown', $fdat{veid}, $srclist)); $grid->add_row (__("Target Node") . ':', $form->create_element ('targetcid', 'dropdown', $fdat{targetcid}, $cidlist2), __("Online migration"), $form->create_element ('online', 'bool', $fdat{online})); my $html = $grid->html(); $html .= "
" . $form->create_cmdbutton ('migrate'); $out .= PVE::HTMLUtils::create_statusframe (undef, __("Define migration task"), undef, $html); $out .= $form->create_footer(); print OUT $out; -]