예제 #1
0
        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));
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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;
            }
예제 #5
0
		protected override void ExecuteCore(SelectedItemCollection selection)
		{
			var con = selection.GetConnectionOfFirstItem();
			MainWindowCommandInterface.ShowPerConnectionWizard(con, new ImportWizard(con, selection.FirstAsXenObject, null, false));
		}
예제 #6
0
 protected override void ExecuteCore(SelectedItemCollection selection)
 {
     var vdis = selection.AsXenObjects<VDI>();
     new MoveVirtualDiskDialog(selection.GetConnectionOfFirstItem(), vdis, null).Show(Program.MainWindow);
 }
예제 #7
0
 protected override void ExecuteCore(SelectedItemCollection selection)
 {
     var con = selection.GetConnectionOfFirstItem();
     MainWindowCommandInterface.ShowPerConnectionWizard(con, new ExportApplianceWizard(con, selection));
 }