Beispiel #1
0
        private void populateHosts()
        {
            Program.AssertOnEventThread();

            ToStringWrapper <Host> previousSelection = NewMasterComboBox.SelectedItem as ToStringWrapper <Host>;

            NewMasterComboBox.BeginUpdate();
            try
            {
                NewMasterComboBox.Items.Clear();

                foreach (Host host in connection.Cache.Hosts)
                {
                    Host_metrics metrics = connection.Resolve <Host_metrics>(host.metrics);
                    if (host.opaque_ref == this.host.opaque_ref)
                    {
                        continue;
                    }

                    host.PropertyChanged -= new PropertyChangedEventHandler(host_PropertyChanged);
                    host.PropertyChanged += new PropertyChangedEventHandler(host_PropertyChanged);
                    if (host.enabled && metrics != null && metrics.live)
                    {
                        NewMasterComboBox.Items.Add(new ToStringWrapper <Host>(host, host.Name()));
                    }
                }

                SelectProperItemInNewMasterComboBox(previousSelection);
            }
            finally
            {
                NewMasterComboBox.EndUpdate();
            }
        }
Beispiel #2
0
        private void PopulateHosts()
        {
            Program.AssertOnEventThread();

            if (!tableLayoutPanelNewMaster.Visible)
            {
                return;
            }

            try
            {
                NewMasterComboBox.BeginUpdate();
                var hosts = connection.Cache.Hosts.Where(h => h.opaque_ref != _host.opaque_ref).ToList();
                hosts.Sort();

                foreach (Host host in hosts)
                {
                    host.PropertyChanged -= host_PropertyChanged;
                    host.PropertyChanged += host_PropertyChanged;

                    Host_metrics metrics = connection.Resolve(host.metrics);
                    if (host.enabled && metrics != null && metrics.live)
                    {
                        var item = new ToStringWrapper <Host>(host, host.Name());
                        NewMasterComboBox.Items.Add(item);

                        if (hostSelection != null && host.opaque_ref == hostSelection.item.opaque_ref)
                        {
                            NewMasterComboBox.SelectedItem = item;
                        }
                    }
                }

                //Update NewMasterComboBox for host power on recommendation
                foreach (KeyValuePair <XenRef <VM>, string[]> kvp in reasons)
                {
                    var vm = connection.Resolve(kvp.Key);
                    if (vm != null && vm.is_control_domain)
                    {
                        Host powerOnHost = connection.Cache.Hosts.FirstOrDefault(h =>
                                                                                 h.uuid == kvp.Value[(int)RecProperties.ToHost]);

                        if (powerOnHost != null)
                        {
                            var hostToAdd = new ToStringWrapper <Host>(powerOnHost, powerOnHost.Name());

                            if (NewMasterComboBox.Items.Cast <ToStringWrapper <Host> >().FirstOrDefault(i =>
                                                                                                        i.item.opaque_ref == powerOnHost.opaque_ref) == null)
                            {
                                powerOnHost.PropertyChanged -= host_PropertyChanged;
                                powerOnHost.PropertyChanged += host_PropertyChanged;
                                NewMasterComboBox.Items.Add(hostToAdd);
                            }
                        }
                    }
                }

                if (NewMasterComboBox.SelectedItem == null && NewMasterComboBox.Items.Count > 0)
                {
                    NewMasterComboBox.SelectedIndex = 0;
                }
            }
            finally
            {
                EnableComboBox();
                NewMasterComboBox.EndUpdate();
            }
        }