internal static Command MoveMigrateCommand(IMainWindow mainWindow, SelectedItemCollection selection) { var cmd = new MigrateVirtualDiskCommand(mainWindow, selection); var con = selection.GetConnectionOfFirstItem(); if (cmd.CanExecute() && !Helpers.FeatureForbidden(con, Host.RestrictCrossPoolMigrate)) { return(cmd); } return(new MoveVirtualDiskCommand(mainWindow, selection)); }
private void InitialiseWizard(SelectedItemCollection selection) { var vmsFromSelection = new List <VM>(); foreach (var item in selection) { var vm = item.XenObject as VM; if (vm == null) { continue; } vmsFromSelection.Add(vm); m_vmMappings.Add(item.XenObject.opaque_ref, new VmMapping { VmNameLabel = item.XenObject.Name() }); } HasTemplatesOnly = vmsFromSelection.Count > 0 && vmsFromSelection.All(vm => vm.is_a_template); UpdateWindowTitle(); m_pageDestination = new CrossPoolMigrateDestinationPage(vmsFromSelection, wizardMode, GetSourceConnectionsForSelection(selection), _force) { VmMappings = m_vmMappings, Connection = selection.GetConnectionOfFirstItem() }; m_pageDestination.SetDefaultTarget(hostPreSelection); m_pageStorage = new CrossPoolMigrateStoragePage(wizardMode); m_pageNetwork = new CrossPoolMigrateNetworkingPage(HasTemplatesOnly, wizardMode); m_pageTransferNetwork = new CrossPoolMigrateTransferNetworkPage(vmsFromSelection, HasTemplatesOnly, wizardMode); m_pageFinish = new CrossPoolMigrateFinishPage(selection.Count(), wizardMode, HasTemplatesOnly) { SummaryRetreiver = GetVMMappingSummary }; m_pageTargetRbac = new RBACWarningPage(); m_pageCopyMode = new CrossPoolMigrateCopyModePage(vmsFromSelection); m_pageIntraPoolCopy = new IntraPoolCopyPage(vmsFromSelection); if (wizardMode == WizardMode.Copy) { AddPages(m_pageCopyMode, m_pageIntraPoolCopy); } else { AddPages(m_pageDestination, m_pageStorage, m_pageFinish); } }
protected override void ExecuteCore(SelectedItemCollection selection) { var con = selection.GetConnectionOfFirstItem(); if (Helpers.FeatureForbidden(con, Host.RestrictCrossPoolMigrate)) { ShowUpsellDialog(Parent); } else { MainWindowCommandInterface.ShowPerConnectionWizard(con, new CrossPoolMigrateWizard(con, selection, preSelectedHost, WizardMode.Copy)); } }
protected override bool CanExecuteCore(SelectedItemCollection selection) { IXenConnection connection = selection.GetConnectionOfFirstItem(); bool atLeastOneCanExecute = false; foreach (SelectedItem item in selection) { //all items should be VMs VM vm = item.XenObject as VM; if (vm == null) return false; // all VMs must be on the same connection if (connection != null && vm.Connection != connection) return false; //at least one VM should be able to execute if (CanExecute(vm)) atLeastOneCanExecute = true; } return atLeastOneCanExecute; }
protected override void ExecuteCore(SelectedItemCollection selection) { var con = selection.GetConnectionOfFirstItem(); MainWindowCommandInterface.ShowPerConnectionWizard(con, new ImportWizard(con, selection.FirstAsXenObject, null, false)); }
protected override void ExecuteCore(SelectedItemCollection selection) { var vdis = selection.AsXenObjects<VDI>(); new MoveVirtualDiskDialog(selection.GetConnectionOfFirstItem(), vdis, null).Show(Program.MainWindow); }
protected override void ExecuteCore(SelectedItemCollection selection) { var con = selection.GetConnectionOfFirstItem(); MainWindowCommandInterface.ShowPerConnectionWizard(con, new ExportApplianceWizard(con, selection)); }