Exemplo n.º 1
0
        /// <summary>
        /// Retrieve subscriptions and set _subscriptionCollection
        /// </summary>
        private void SetSubscriptionCollection()
        {
            _subscriptionCollection = null;

            WlbPoolConfiguration           poolConfiguration;
            RetrieveWlbConfigurationAction action = new RetrieveWlbConfigurationAction(_pool);

            using (var dialog = new ActionProgressDialog(action, ProgressBarStyle.Blocks))
            {
                dialog.ShowCancel = true;
                dialog.ShowDialog(this);
            }

            if (action.Succeeded)
            {
                poolConfiguration = new WlbPoolConfiguration(action.WlbConfiguration);

                _isCreedenceOrLater = poolConfiguration.IsCreedenceOrLater;

                this.splitContainerLeftPane.Panel2Collapsed = true;
                this.wlbReportView1.btnSubscribe.Visible    = false;
            }
            else
            {
                throw (action.Exception);
            }
        }
Exemplo n.º 2
0
        public void ConstructedWithEmptyDictionaryVerifyGettersReturnValues()
        {
            wlbPool = new WlbPoolConfiguration(new Dictionary <string, string>());
            PropertyInfo[] pi = wlbPool.GetType().GetProperties();

            Assert.AreEqual(NUMBER_OF_PROPERTIES, pi.Length, "Number of properties");

            List <string> fieldsToSkip = new List <string>()
            {
                "AutoBalanceAggressiveness",                              //Enum
                "AutoBalanceSeverity",                                    //Enum
                "ReportingSMTPServer"                                     //Not set
            };

            foreach (PropertyInfo propertyInfo in pi)
            {
                if (!fieldsToSkip.Contains(propertyInfo.Name))
                {
                    string extractedValue = propertyInfo.GetValue(wlbPool, null).ToString();
                    Assert.IsFalse(String.IsNullOrEmpty(extractedValue), "PB:" + propertyInfo.Name);
                }
            }

            Assert.IsNullOrEmpty(wlbPool.ReportingSMTPServer);
        }
Exemplo n.º 3
0
        internal void EditWLB(Pool pool)
        {
            // Do nothing if there is a WLB action in progress
            if (HelpersGUI.FindActiveWLBAction(pool.Connection) != null)
            {
                log.Debug("Not opening WLB dialog: an WLB action is in progress");
                return;
            }

            if (!pool.Connection.IsConnected)
            {
                log.Debug("Not opening WLB dialog: the connection to the pool is now closed");
                return;
            }

            try
            {
                WlbConfigurationDialog wlbConfigDialog = new WlbConfigurationDialog(pool);
                DialogResult           dr = wlbConfigDialog.ShowDialog();

                if (dr == DialogResult.OK)
                {
                    _wlbPoolConfiguration = wlbConfigDialog.WlbPoolConfiguration;

                    //check to see if the current opt mode matches the current schedule
                    if (_wlbPoolConfiguration.AutomateOptimizationMode)
                    {
                        WlbPoolPerformanceMode scheduledPerfMode = _wlbPoolConfiguration.ScheduledTasks.GetCurrentScheduledPerformanceMode();
                        if (scheduledPerfMode != _wlbPoolConfiguration.PerformanceMode)
                        {
                            string       blurb = string.Format(Messages.WLB_PROMPT_FOR_MODE_CHANGE_BLURB, getOptModeText(scheduledPerfMode), getOptModeText(_wlbPoolConfiguration.PerformanceMode));
                            DialogResult drModeCheck;
                            using (var dlg = new ThreeButtonDialog(
                                       new ThreeButtonDialog.Details(null, blurb, Messages.WLB_PROMPT_FOR_MODE_CHANGE_CAPTION),
                                       ThreeButtonDialog.ButtonYes,
                                       ThreeButtonDialog.ButtonNo))
                            {
                                drModeCheck = dlg.ShowDialog(this);
                            }

                            if (drModeCheck == DialogResult.Yes)
                            {
                                _wlbPoolConfiguration.PerformanceMode = scheduledPerfMode;
                            }
                        }
                    }
                    SaveWLBConfig(_wlbPoolConfiguration);
                }
            }
            catch (Exception ex)
            {
                log.Debug("Unable to open the WLB configuration dialog.", ex);
                return;
            }

            if (!(WlbServerState.GetState(_pool) == WlbServerState.ServerState.NotConfigured))
            {
                RetrieveConfiguration();
            }
        }
Exemplo n.º 4
0
        public void ConstructedWithEmptyDictionaryVerifyGettersReturnValues()
        {
            wlbPool = new WlbPoolConfiguration(new Dictionary <string, string>());
            PropertyInfo[] pi = wlbPool.GetType().GetProperties();

            Assert.AreEqual(NUMBER_OF_PROPERTIES, pi.Length, "Number of properties");

            List <string> fieldsToSkip = new List <string>
            {
                "AutoBalanceAggressiveness", //Enum
                "AutoBalanceSeverity",       //Enum
                "ReportingSMTPServer",       //Not set
                "PoolAuditGranularity"       //Enum
            };

            foreach (PropertyInfo propertyInfo in pi)
            {
                if (!fieldsToSkip.Contains(propertyInfo.Name))
                {
                    string extractedValue = propertyInfo.GetValue(wlbPool, null).ToString();
                    Assert.That(extractedValue, Is.Not.Null.And.Not.Empty, $"PB: {propertyInfo.Name}");
                }
            }

            Assert.That(wlbPool.ReportingSMTPServer, Is.Null.Or.Empty);
        }
Exemplo n.º 5
0
        private void InitializeControls()
        {
            _loading = true;
            updownCPUCriticalPoint.Value          = GetSafeUpDownValue(_poolConfiguration.HostCpuThresholdCritical, updownCPUCriticalPoint);
            updownMemoryCriticalPoint.Value       = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostMemoryThresholdCritical), updownMemoryCriticalPoint);
            updownDiskReadCriticalPoint.Value     = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostDiskReadThresholdCritical), updownDiskReadCriticalPoint);
            updownDiskWriteCriticalPoint.Value    = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostDiskWriteThresholdCritical), updownDiskWriteCriticalPoint);
            updownNetworkReadCriticalPoint.Value  = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostNetworkReadThresholdCritical), updownNetworkReadCriticalPoint);
            updownNetworkWriteCriticalPoint.Value = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostNetworkWriteThresholdCritical), updownNetworkWriteCriticalPoint);

            labelCPUUnits.Text          = string.Format(labelCPUUnits.Text, updownCPUCriticalPoint.Minimum, updownCPUCriticalPoint.Maximum);
            labelFreeMemoryUnits.Text   = string.Format(labelFreeMemoryUnits.Text, updownMemoryCriticalPoint.Minimum, updownMemoryCriticalPoint.Maximum);
            labelDiskReadUnits.Text     = string.Format(labelDiskReadUnits.Text, updownDiskReadCriticalPoint.Minimum, updownDiskReadCriticalPoint.Maximum);
            labelDiskWriteUnits.Text    = string.Format(labelDiskWriteUnits.Text, updownDiskWriteCriticalPoint.Minimum, updownDiskWriteCriticalPoint.Maximum);
            labelNetworkReadUnits.Text  = string.Format(labelNetworkReadUnits.Text, updownNetworkReadCriticalPoint.Minimum, updownNetworkReadCriticalPoint.Maximum);
            labelNetworkWriteUnits.Text = string.Format(labelNetworkWriteUnits.Text, updownNetworkWriteCriticalPoint.Minimum, updownNetworkWriteCriticalPoint.Maximum);

            // CA-194940:
            // Host disk read/write threshold and weight settings work since Dundee.
            // For previous XenServer, hide the host disk read/write settings.
            if (!Helpers.DundeeOrGreater(_connection))
            {
                updownDiskReadCriticalPoint.Visible  = false;
                updownDiskWriteCriticalPoint.Visible = false;
                labelDiskReadUnits.Visible           = false;
                labelDiskWriteUnits.Visible          = false;
                labelDiskRead.Visible   = false;
                label1DiskWrite.Visible = false;
            }
            _loading = false;;
        }
Exemplo n.º 6
0
        private void InitializeControls()
        {
            _loading = true;
            updownCPUCriticalPoint.Value          = GetSafeUpDownValue(_poolConfiguration.HostCpuThresholdCritical, updownCPUCriticalPoint);
            updownMemoryCriticalPoint.Value       = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostMemoryThresholdCritical), updownMemoryCriticalPoint);
            updownDiskReadCriticalPoint.Value     = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostDiskReadThresholdCritical), updownDiskReadCriticalPoint);
            updownDiskWriteCriticalPoint.Value    = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostDiskWriteThresholdCritical), updownDiskWriteCriticalPoint);
            updownNetworkReadCriticalPoint.Value  = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostNetworkReadThresholdCritical), updownNetworkReadCriticalPoint);
            updownNetworkWriteCriticalPoint.Value = GetSafeUpDownValue(WlbPoolConfiguration.ConvertToMB(_poolConfiguration.HostNetworkWriteThresholdCritical), updownNetworkWriteCriticalPoint);

            labelCPUUnits.Text          = string.Format(labelCPUUnits.Text, updownCPUCriticalPoint.Minimum, updownCPUCriticalPoint.Maximum);
            labelFreeMemoryUnits.Text   = string.Format(labelFreeMemoryUnits.Text, updownMemoryCriticalPoint.Minimum, updownMemoryCriticalPoint.Maximum);
            labelDiskReadUnits.Text     = string.Format(labelDiskReadUnits.Text, updownDiskReadCriticalPoint.Minimum, updownDiskReadCriticalPoint.Maximum);
            labelDiskWriteUnits.Text    = string.Format(labelDiskWriteUnits.Text, updownDiskWriteCriticalPoint.Minimum, updownDiskWriteCriticalPoint.Maximum);
            labelNetworkReadUnits.Text  = string.Format(labelNetworkReadUnits.Text, updownNetworkReadCriticalPoint.Minimum, updownNetworkReadCriticalPoint.Maximum);
            labelNetworkWriteUnits.Text = string.Format(labelNetworkWriteUnits.Text, updownNetworkWriteCriticalPoint.Minimum, updownNetworkWriteCriticalPoint.Maximum);

            //CA-134554 - Hide Disk Read/Write until the backend server side is ready
            updownDiskReadCriticalPoint.Visible  = false;
            updownDiskWriteCriticalPoint.Visible = false;
            labelDiskReadUnits.Visible           = false;
            labelDiskWriteUnits.Visible          = false;

            _loading = false;;
        }
Exemplo n.º 7
0
        public AsyncAction SaveSettings()
        {
            _poolConfiguration.HostCpuThresholdCritical          = (int)updownCPUCriticalPoint.Value;
            _poolConfiguration.HostMemoryThresholdCritical       = WlbPoolConfiguration.ConvertFromMB((int)updownMemoryCriticalPoint.Value);
            _poolConfiguration.HostDiskReadThresholdCritical     = WlbPoolConfiguration.ConvertFromMB((int)updownDiskReadCriticalPoint.Value);
            _poolConfiguration.HostDiskWriteThresholdCritical    = WlbPoolConfiguration.ConvertFromMB((int)updownDiskWriteCriticalPoint.Value);
            _poolConfiguration.HostNetworkReadThresholdCritical  = WlbPoolConfiguration.ConvertFromMB((int)updownNetworkReadCriticalPoint.Value);
            _poolConfiguration.HostNetworkWriteThresholdCritical = WlbPoolConfiguration.ConvertFromMB((int)updownNetworkWriteCriticalPoint.Value);

            return(null);
        }
Exemplo n.º 8
0
        private void SaveWLBConfig(WlbPoolConfiguration PoolConfiguration)
        {
            Dictionary <string, string> completeConfiguration = PoolConfiguration.ToDictionary();
            SendWlbConfigurationKind    kind = SendWlbConfigurationKind.SetPoolConfiguration;

            // check for host configurations in the pool configuration
            if (PoolConfiguration.HostConfigurations.Count > 0)
            {
                // add the flag denoting that there are host configs to be saved
                kind |= SendWlbConfigurationKind.SetHostConfiguration;
                // get the key for each host config (host.uuid)
                foreach (string key in PoolConfiguration.HostConfigurations.ToDictionary().Keys)
                {
                    //Drop any exising copy from the pool configuration
                    if (completeConfiguration.ContainsKey(key))
                    {
                        completeConfiguration.Remove(key);
                    }
                    // and add the task to the collection
                    completeConfiguration.Add(key, PoolConfiguration.HostConfigurations.ToDictionary()[key]);
                }
            }

            // check for scheduled tasks in the pool configuration
            if (PoolConfiguration.ScheduledTasks.TaskList.Count > 0)
            {
                // add the flag denoting that there are scheduled tasks to be saved
                kind |= SendWlbConfigurationKind.SetScheduledTask;
                // get the key for each scheduled task
                foreach (string key in PoolConfiguration.ScheduledTasks.ToDictionary().Keys)
                {
                    //Drop any exising copy from the pool configuration
                    if (completeConfiguration.ContainsKey(key))
                    {
                        completeConfiguration.Remove(key);
                    }
                    // and add the task to the collection
                    completeConfiguration.Add(key, PoolConfiguration.ScheduledTasks.ToDictionary()[key]);
                }
            }

            SendWlbConfigurationAction action = new SendWlbConfigurationAction(_pool, PoolConfiguration.ToDictionary(), kind);

            using (var dialog = new ActionProgressDialog(action, ProgressBarStyle.Blocks))
            {
                dialog.ShowCancel = true;
                dialog.ShowDialog(this);
            }
            Program.MainWindow.UpdateToolbars();
        }
        private void Build()
        {
            _poolConfiguration = RetrieveWLBConfiguration();

            if (null != _poolConfiguration)
            {
                verticalTabs.Items.Clear();
                verticalTabs.Items.Add(wlbOptimizationModePage);
                wlbOptimizationModePage.PoolConfiguration = _poolConfiguration;
                wlbOptimizationModePage.Pool = _pool;

                if (_poolConfiguration.IsMROrLater)
                {
                    verticalTabs.Items.Add(wlbAutomationPage);
                    wlbAutomationPage.Connection        = _pool.Connection;
                    wlbAutomationPage.PoolConfiguration = _poolConfiguration;

                    //verticalTabs.Items.Add(wlbPowerManagementPage);
                    //wlbPowerManagementPage.Connection = _pool.Connection;
                    //wlbPowerManagementPage.PoolConfiguration = _poolConfiguration;
                }

                verticalTabs.Items.Add(wlbThresholdsPage);
                wlbThresholdsPage.Connection        = _pool.Connection;
                wlbThresholdsPage.PoolConfiguration = _poolConfiguration;

                verticalTabs.Items.Add(wlbMetricWeightingPage);
                wlbMetricWeightingPage.Connection        = _pool.Connection;
                wlbMetricWeightingPage.PoolConfiguration = _poolConfiguration;

                if (_poolConfiguration.IsMROrLater)
                {
                    verticalTabs.Items.Add(wlbHostExclusionPage);
                    wlbHostExclusionPage.PoolConfiguration = _poolConfiguration;
                    wlbHostExclusionPage.Connection        = _pool.Connection;
                }

                verticalTabs.Items.Add(wlbAdvancedSettingsPage);
                wlbAdvancedSettingsPage.PoolConfiguration = _poolConfiguration;
                wlbAdvancedSettingsPage.Pool = _pool;

                verticalTabs.SelectedIndex = 0;
            }
            else
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
            }
        }
Exemplo n.º 10
0
        protected void action_Completed(ActionBase sender)
        {
            // This seems to be called off the event thread
            AsyncAction action = (AsyncAction)sender;

            if (action.IsCompleted)
            {
                action.Completed -= action_Completed;
                if (action is EnableWLBAction || action is RetrieveWlbConfigurationAction || action is DisableWLBAction)
                {
                    if (action is EnableWLBAction)
                    {
                        EnableWLBAction thisAction = (EnableWLBAction)action;
                        _wlbPoolConfiguration = new WlbPoolConfiguration(thisAction.WlbConfiguration);
                    }
                    else if (action is RetrieveWlbConfigurationAction)
                    {
                        RetrieveWlbConfigurationAction thisAction = (RetrieveWlbConfigurationAction)action;
                        if (thisAction.Succeeded)
                        {
                            _wlbPoolConfiguration = new WlbPoolConfiguration(thisAction.WlbConfiguration);
                        }
                        else
                        {
                            //_statusError = thisAction.Exception.Message;
                            _wlbPoolConfiguration = null;
                        }
                    }
                    else if (action is DisableWLBAction)
                    {
                    }

                    Program.Invoke(Program.MainWindow, delegate()
                    {
                        if (_pool != null && _pool.Connection == action.Connection)
                        {
                            RefreshControls();
                        }
                    });
                }
            }
        }
Exemplo n.º 11
0
        public void OvercommitCPUsGetTheCorrectValueForDifferentModes()
        {
            Dictionary <string, string> inputData = new Dictionary <string, string>()
            {
                { "OverCommitCpuInDensityMode", "false" },
                { "OverCommitCpuInPerfMode", "true" }
            };

            wlbPool = new WlbPoolConfiguration(inputData);

            //Setter drops through if the key has not been added to the dictionary so won't set the values
            wlbPool.PerformanceMode = WlbPoolPerformanceMode.MaximizeDensity;
            //This should be false if the key were there
            Assert.IsTrue(wlbPool.OvercommitCPUs, "OvercommitCPUs in MaximizeDensity mode without key");

            //Add the key and set the data - this is now the default behaviour
            wlbPool.AddParameter("OptimizationMode", "MaximizeDensity");
            wlbPool.PerformanceMode = WlbPoolPerformanceMode.MaximizeDensity;
            Assert.IsFalse(wlbPool.OvercommitCPUs, "OvercommitCPUs in MaximizeDensity mode");

            wlbPool.PerformanceMode = WlbPoolPerformanceMode.MaximizePerformance;
            Assert.IsTrue(wlbPool.OvercommitCPUs, "OvercommitCPUs in MaximizePerformance");
        }
Exemplo n.º 12
0
 public void NullCtorThrows()
 {
     wlbPool = new WlbPoolConfiguration(null);
 }