コード例 #1
0
ファイル: GeneralTabPage.cs プロジェクト: robhoes/xenadmin
        private static void GenerateVirtualisationStatusForGeneralBox(PDSection s, VM vm)
        {
            if (vm != null && vm.Connection != null)
            {
                //For Dundee or higher Windows VMs
                if (Helpers.DundeeOrGreater(vm.Connection) && vm.IsWindows)
                {
                    var gm = vm.Connection.Resolve(vm.guest_metrics);

                    bool isIoOptimized = gm != null && gm.network_paths_optimized && gm.storage_paths_optimized;
                    bool isManagementAgentInstalled = vm.GetVirtualisationStatus.HasFlag(VM.VirtualisationStatus.MANAGEMENT_INSTALLED);
                    bool canInstallIoDriversAndManagementAgent = InstallToolsCommand.CanExecute(vm) && !isIoOptimized;
                    bool canInstallManagementAgentOnly = InstallToolsCommand.CanExecute(vm) && isIoOptimized && !isManagementAgentInstalled;
                    //canInstallIoDriversOnly is missing - management agent communicates with XS using the I/O drivers

                    var sb = new StringBuilder();

                    if (vm.power_state == vm_power_state.Running)
                    {
                        if (vm.virtualisation_status.HasFlag(XenAPI.VM.VirtualisationStatus.UNKNOWN))
                        {
                            s.AddEntry(FriendlyName("VM.VirtualizationState"), vm.VirtualisationStatusString);
                        }
                        else
                        {
                            //Row 1 : I/O Drivers
                            if (isIoOptimized)
                            {
                                sb.Append(Messages.VIRTUALIZATION_STATE_VM_IO_OPTIMIZED);
                            }
                            else
                            {
                                sb.Append(Messages.VIRTUALIZATION_STATE_VM_IO_NOT_OPTIMIZED);
                            }

                            sb.Append(Environment.NewLine);

                            //Row 2: Management Agent
                            if (isManagementAgentInstalled)
                            {
                                sb.Append(Messages.VIRTUALIZATION_STATE_VM_MANAGEMENT_AGENT_INSTALLED);
                            }
                            else
                            {
                                sb.Append(Messages.VIRTUALIZATION_STATE_VM_MANAGEMENT_AGENT_NOT_INSTALLED);
                            }
                            sb.Append(Environment.NewLine);
                        }
                    }

                    //Row 3 : vendor device - Windows Update
                    sb.Append(vm.has_vendor_device ? Messages.VIRTUALIZATION_STATE_VM_RECEIVING_UPDATES : Messages.VIRTUALIZATION_STATE_VM_NOT_RECEIVING_UPDATES);

                    // displaying Row1 - Row3
                    s.AddEntry(FriendlyName("VM.VirtualizationState"), sb.ToString());

                    if (vm.power_state == vm_power_state.Running)
                    {
                        //Row 4: Install Tools
                        string installMessage = string.Empty;
                        if (canInstallIoDriversAndManagementAgent)
                        {
                            installMessage = Messages.VIRTUALIZATION_STATE_VM_INSTALL_IO_DRIVERS_AND_MANAGEMENT_AGENT;
                        }
                        else if (canInstallManagementAgentOnly)
                        {
                            installMessage = Messages.VIRTUALIZATION_STATE_VM_INSTALL_MANAGEMENT_AGENT;
                        }

                        if (!string.IsNullOrEmpty(installMessage))
                        {
                            var installtools = new ToolStripMenuItem(installMessage);
                            installtools.Click += delegate
                            {
                                new InstallToolsCommand(Program.MainWindow, vm).Execute();
                            };
                            s.AddEntryLink(string.Empty, installMessage,
                                new[] { installtools },
                                new InstallToolsCommand(Program.MainWindow, vm));
                        }
                    }
                }

                //for everything else (All VMs on pre-Dundee hosts & All non-Windows VMs on any host)
                else if (vm.power_state == vm_power_state.Running)
                {
                    if (vm.virtualisation_status == 0 || vm.virtualisation_status.HasFlag(XenAPI.VM.VirtualisationStatus.PV_DRIVERS_OUT_OF_DATE))
                    {
                        if (InstallToolsCommand.CanExecute(vm))
                        {
                            var installtools = new ToolStripMenuItem(Messages.INSTALL_XENSERVER_TOOLS_DOTS);
                            installtools.Click += delegate
                            {
                                new InstallToolsCommand(Program.MainWindow, vm).Execute();
                            };
                            s.AddEntryLink(FriendlyName("VM.VirtualizationState"), vm.VirtualisationStatusString,
                                new[] { installtools },
                                new InstallToolsCommand(Program.MainWindow, vm));
                        }
                        else
                        {
                            s.AddEntry(FriendlyName("VM.VirtualizationState"), vm.VirtualisationStatusString, Color.Red);
                        }

                    }
                    else
                    {
                        s.AddEntry(FriendlyName("VM.VirtualizationState"), vm.VirtualisationStatusString);
                    }
                }
            }
        }
コード例 #2
0
ファイル: GeneralTabPage.cs プロジェクト: huizh/xenadmin
        private static void GenerateVirtualisationStatusForGeneralBox(PDSection s, VM vm)
        {
            if (vm != null && vm.Connection != null && vm.power_state == vm_power_state.Running)
            {
                //For Dundee or higher Windows VMs
                if (Helpers.DundeeOrGreater(vm.Connection) && vm.IsWindows)
                {
                    var gm = vm.Connection.Resolve(vm.guest_metrics);

                    bool isIoOptimized = gm != null && gm.network_paths_optimized && gm.storage_paths_optimized;
                    bool isReceivingUpdates = vm.auto_update_drivers;

                    bool isXenPrepInProgress = false; //TODO in CP-13247  when XenPrep functions will be added
                    bool canTurnOnAutoUpdates = false && !isReceivingUpdates && !isXenPrepInProgress; //TODO in CP-13247: remove &&false when XenPrep functions have been added

                    bool isManagementAgentInstalled = vm.HasRDP; //HasRDP is the way to detect .Net/Management Agent

                    bool canInstallIoDriversAndManagementAgent = InstallToolsCommand.CanExecute(vm) && !isIoOptimized;
                    bool canInstallManagementAgentOnly = InstallToolsCommand.CanExecute(vm) && isIoOptimized && !isManagementAgentInstalled;
                    //canInstallIoDriversOnly is missing - management agent communicates with XS using the I/O drivers

                    if (vm.virtualisation_status == VM.VirtualisationStatus.UNKNOWN)
                    {
                        s.AddEntry(FriendlyName("VM.VirtualizationState"), vm.VirtualisationStatusString);
                    }
                    else
                    {
                        var sb = new StringBuilder();

                        //Row 1 : I/O Drivers
                        if (isIoOptimized)
                        {
                            sb.Append(Messages.VIRTUALIZATION_STATE_VM_IO_OPTIMIZED);
                        }
                        else
                        {
                            sb.Append(Messages.VIRTUALIZATION_STATE_VM_IO_NOT_OPTIMIZED);
                        }

                        sb.Append(Environment.NewLine);

                        //Row 2: Management Agent
                        if (isManagementAgentInstalled)
                        {
                            sb.Append(Messages.VIRTUALIZATION_STATE_VM_MANAGEMENT_AGENT_INSTALLED);
                        }
                        else
                        {
                            sb.Append(Messages.VIRTUALIZATION_STATE_VM_MANAGEMENT_AGENT_NOT_INSTALLED);
                        }

                        //Row 3 : Auto update
                        if (isReceivingUpdates)
                        {
                            sb.Append(Environment.NewLine);
                            sb.Append(Messages.VIRTUALIZATION_STATE_VM_RECEIVING_UPDATES);
                        }
                        else if (isXenPrepInProgress)
                        {
                            sb.Append(Environment.NewLine);
                            sb.Append(Messages.VIRTUALIZATION_STATE_VM_UPGRADING_VM);
                        }

                        // displaying Row1 - Row3
                        s.AddEntry(FriendlyName("VM.VirtualizationState"), sb.ToString());

                        //Row 4: Enable Auto Update link
                        if (canTurnOnAutoUpdates)
                        {
                            //implement launching XenPrep here (CP-13247)
                        }

                        //Row 4: Install Tools
                        string installMessage = string.Empty;
                        if (canInstallIoDriversAndManagementAgent)
                        {
                            installMessage = Messages.VIRTUALIZATION_STATE_VM_INSTALL_IO_DRIVERS_AND_MANAGEMENT_AGENT;
                        }
                        else if (canInstallManagementAgentOnly)
                        {
                            installMessage = Messages.VIRTUALIZATION_STATE_VM_INSTALL_MANAGEMENT_AGENT;
                        }

                        if (!string.IsNullOrEmpty(installMessage))
                        {
                            var installtools = new ToolStripMenuItem();
                            installtools.Click += delegate
                            {
                                new InstallToolsCommand(Program.MainWindow, vm).Execute();
                            };
                            s.AddEntryLink(string.Empty, installMessage,
                                new[] { installtools },
                                new InstallToolsCommand(Program.MainWindow, vm));
                        }
                    }
                }
                //for everything else (All VMs on pre-Dundee hosts & All non-Windows VMs on any host)
                else
                {
                    if (vm.virtualisation_status == VM.VirtualisationStatus.PV_DRIVERS_NOT_INSTALLED
                        || vm.virtualisation_status == VM.VirtualisationStatus.PV_DRIVERS_OUT_OF_DATE)
                    {
                        if (InstallToolsCommand.CanExecute(vm))
                        {
                            var installtools = new ToolStripMenuItem(Messages.INSTALL_XENSERVER_TOOLS_DOTS);
                            installtools.Click += delegate
                            {
                                new InstallToolsCommand(Program.MainWindow, vm).Execute();
                            };
                            s.AddEntryLink(FriendlyName("VM.VirtualizationState"), vm.VirtualisationStatusString,
                                new[] { installtools },
                                new InstallToolsCommand(Program.MainWindow, vm));
                        }
                        else
                        {
                            s.AddEntry(FriendlyName("VM.VirtualizationState"), vm.VirtualisationStatusString, Color.Red);
                        }

                    }
                    else
                    {
                        s.AddEntry(FriendlyName("VM.VirtualizationState"), vm.VirtualisationStatusString);
                    }
                }
            }
        }