Example #1
0
        /// <summary>
        /// First time population of the control
        /// </summary>
        private void PopulateSrDataGridView()
        {
            try
            {
                m_dataGridView.SuspendLayout();

                foreach (var sr in _availableSrs)
                {
                    var row = new SrRow(sr, Pool);

                    if (row.IsDrEnabled)
                    {
                        m_drOriginallyEnabled = true;
                        m_numberOfCheckedSrs++;
                    }

                    m_dataGridView.Rows.Add(row);
                    ToggleRowCheckable(row);
                }
            }
            finally
            {
                m_dataGridView.ResumeLayout();
            }
        }
Example #2
0
        private bool ScanDeviceForSRs(SR.SRTypes type, string deviceId, Dictionary <string, string> dconf)
        {
            Host master = Helpers.GetMaster(Connection);

            if (master == null || dconf == null)
            {
                return(false);
            }

            Dictionary <string, string> smconf = new Dictionary <string, string>();

            smconf[METADATA] = "true";

            // Start probe
            SrProbeAction srProbeAction = new SrProbeAction(Connection, master, type, dconf, smconf);

            using (var dlg = new ActionProgressDialog(srProbeAction, ProgressBarStyle.Marquee))
                dlg.ShowDialog(this);

            if (!srProbeAction.Succeeded)
            {
                return(false);
            }

            try
            {
                List <SR.SRInfo> srList = SR.ParseSRListXML(srProbeAction.Result);

                List <SR.SRInfo> metadataSrs = srList; //srList.Where(srInfo => srInfo.PoolMetadataDetected).ToList();

                if (ScannedDevices.ContainsKey(deviceId))
                {
                    //update SR list
                    ScannedDevices[deviceId].SRList.Clear();
                    ScannedDevices[deviceId].SRList.AddRange(metadataSrs);
                }
                else
                {
                    ScannedDevices.Add(deviceId, new ScannedDeviceInfo(type, dconf, metadataSrs));
                }

                foreach (SR.SRInfo srInfo in metadataSrs)
                {
                    SrRow row;
                    if (!FindRowByUuid(srInfo.UUID, out row))
                    {
                        row = new SrRow(srInfo, type, srInfo.PoolMetadataDetected,
                                        srInfo.PoolMetadataDetected);
                        dataGridViewSRs.Rows.Add(row);
                        ToggleRowChecked(row);
                    }
                }
                return(true);
            }
            catch
            {
                return(false);
            }
        }
 private bool FindRowByUuid(string uuid, out SrRow row)
 {
     row = null;
     foreach (var srRow in dataGridViewSRs.Rows.Cast <SrRow>().Where(srRow => srRow.SrUuid == uuid))
     {
         row = srRow;
         return(true);
     }
     return(false);
 }
        private bool IsRowChecked(SrRow row)
        {
            if (row == null)
            {
                return(false);
            }

            var cell = row.Cells[0] as DataGridViewCheckBoxCell;

            return(cell == null ? false : (bool)cell.Value);
        }
Example #5
0
        private void _worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            spinnerIcon1.StopSpinning();
            try
            {
                dataGridViewSRs.SuspendLayout();

                foreach (SR sr in _availableSRs)
                {
                    var  vdis = sr.Connection.ResolveAll(sr.VDIs);
                    bool poolMetadataDetected = vdis.Any(vdi => vdi.type == vdi_type.metadata);

                    SrRow row;
                    if (!FindRowByUuid(sr.uuid, out row))
                    {
                        row = new SrRow(sr, poolMetadataDetected, SelectedSRsUuids.Contains(sr.uuid));
                        dataGridViewSRs.Rows.Add(row);
                    }
                }

                // add new SRs
                foreach (var scannedDevice in ScannedDevices.Values)
                {
                    foreach (var srInfo in scannedDevice.SRList)
                    {
                        SrRow row;
                        if (!FindRowByUuid(srInfo.UUID, out row))
                        {
                            row = new SrRow(srInfo, scannedDevice.Type, srInfo.PoolMetadataDetected,
                                            SelectedSRsUuids.Contains(srInfo.UUID));
                            dataGridViewSRs.Rows.Add(row);
                        }
                    }
                }

                if (dataGridViewSRs.Rows.Count > 0)
                {
                    SortRows();
                }
            }
            finally
            {
                dataGridViewSRs.ResumeLayout();
            }

            OnPageUpdated();
        }
        private void ToggleRowChecked(SrRow row)
        {
            if (row == null)
            {
                return;
            }

            if (IsRowChecked(row))
            {
                SelectedSRsUuids.Add(row.SrUuid);
            }
            else
            {
                SelectedSRsUuids.Remove(row.SrUuid);
            }

            OnPageUpdated();
        }
Example #7
0
        private void ToggleRowCheckable(SrRow row)
        {
            if (row == null)
            {
                return;
            }

            bool checkable = row.HasSpace && m_numberOfCheckedSrs < MAX_SR_SELECTED;

            //if it's already checked do not consider it
            if (IsRowChecked(row))
            {
                return;
            }

            row.Cells[0].ReadOnly = !checkable;
            row.DefaultCellStyle  = checkable ? regStyle : dimmedStyle;
        }
Example #8
0
        private void AddScanResultsToDataGridView(List <SR.SRInfo> metadataSrs, SR.SRTypes type)
        {
            if (metadataSrs == null || metadataSrs.Count == 0)
            {
                return;
            }

            foreach (SR.SRInfo srInfo in metadataSrs)
            {
                SrRow row;
                if (!FindRowByUuid(srInfo.UUID, out row))
                {
                    row = new SrRow(srInfo, type, srInfo.PoolMetadataDetected, srInfo.PoolMetadataDetected);
                    dataGridViewSRs.Rows.Add(row);
                    ToggleRowChecked(row);
                }
            }
            SortRows();
        }
Example #9
0
        /// <summary>
        /// First time population of the control
        /// </summary>
        private void PopulateSrDataGridView()
        {
            try
            {
                m_dataGridView.SuspendLayout();
                m_dataGridView.Rows.Clear();

                foreach (var sr in Pool.Connection.Cache.SRs)
                {
                    if (!sr.SupportsDatabaseReplication())
                    {
                        continue;
                    }

                    var row = new SrRow(sr, Pool);

                    if (row.IsDrEnabled)
                    {
                        m_drOriginallyEnabled = true;
                        m_numberOfCheckedSrs++;
                    }

                    m_dataGridView.Rows.Add(row);
                    ToggleRowCheckable(row);
                }

                //set the width of the last column
                columnSpace.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                int storedWidth = columnSpace.Width;
                columnSpace.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                columnSpace.MinimumWidth = storedWidth;
            }
            finally
            {
                m_dataGridView.ResumeLayout();
            }
        }
        private void PopulateSrList()
        {
            Pool currentPool = Helpers.GetPoolOfOne(Connection);

            if (currentPool == null)
            {
                return;
            }

            try
            {
                dataGridViewSRs.SuspendLayout();
                dataGridViewSRs.Rows.Clear();

                // add existing SRs
                List <SR> srs = new List <SR>(Connection.Cache.SRs);
                foreach (SR sr in srs)
                {
                    if (!sr.SupportsDatabaseReplication())
                    {
                        continue;
                    }

                    bool poolMetadataDetected = false;
                    log.DebugFormat("Looking for foreign pool metadata VDIs on SR {0}.", sr.Name);

                    List <VDI> vdis = sr.Connection.ResolveAll(sr.VDIs);

                    foreach (VDI vdi in vdis)
                    {
                        if (vdi.type != vdi_type.metadata)
                        {
                            continue;
                        }

                        /*if (vdi.metadata_of_pool.opaque_ref == currentPool.opaque_ref)
                         * {
                         *  continue;
                         * }*/

                        // found a metadata VDI
                        poolMetadataDetected = true;
                        break;
                    }

                    SrRow row;
                    if (!FindRowByUuid(sr.uuid, out row))
                    {
                        row = new SrRow(sr, poolMetadataDetected, SelectedSRsUuids.Contains(sr.uuid));
                        dataGridViewSRs.Rows.Add(row);
                    }
                }

                // add new SRs
                foreach (var scannedDevice in ScannedDevices.Values)
                {
                    foreach (var srInfo in scannedDevice.SRList)
                    {
                        SrRow row;
                        if (!FindRowByUuid(srInfo.UUID, out row))
                        {
                            row = new SrRow(srInfo, scannedDevice.Type, srInfo.PoolMetadataDetected,
                                            SelectedSRsUuids.Contains(srInfo.UUID));
                            dataGridViewSRs.Rows.Add(row);
                        }
                    }
                }

                //set the width of the last column
                columnMetadata.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                int storedWidth = columnMetadata.Width;
                columnMetadata.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                columnMetadata.MinimumWidth = storedWidth;
            }
            finally
            {
                dataGridViewSRs.ResumeLayout();
            }
        }
 private bool FindRowByUuid(string uuid, out SrRow row)
 {
     row = null;
     foreach (var srRow in dataGridViewSRs.Rows.Cast<SrRow>().Where(srRow => srRow.SrUuid == uuid))
     {
         row = srRow;
         return true;
     }
     return false;
 }
        private void ToggleRowChecked(SrRow row)
        {
            if (row == null)
                return;

            if (IsRowChecked(row))
                SelectedSRsUuids.Add(row.SrUuid);
            else
                SelectedSRsUuids.Remove(row.SrUuid);

            OnPageUpdated();
        }
        private bool IsRowChecked(SrRow row)
        {
            if (row == null)
                return false;

            var cell = row.Cells[0] as DataGridViewCheckBoxCell;

            return cell == null ? false : (bool)cell.Value;
        }
        private bool ScanDeviceForSRs(SR.SRTypes type, string deviceId, Dictionary<string, string> dconf)
        {
            Host master = Helpers.GetMaster(Connection);
            if (master == null || dconf == null)
            {
                return false;
            }

            Dictionary<string, string> smconf = new Dictionary<string, string>();
            smconf[METADATA] = "true";

            // Start probe
            SrProbeAction srProbeAction = new SrProbeAction(Connection, master, type, dconf, smconf);
            new ActionProgressDialog(srProbeAction, ProgressBarStyle.Marquee).ShowDialog(this);

            if (!srProbeAction.Succeeded)
                return false;

            try
            {
                List<SR.SRInfo> srList = SR.ParseSRListXML(srProbeAction.Result);

                List<SR.SRInfo> metadataSrs = srList; //srList.Where(srInfo => srInfo.PoolMetadataDetected).ToList();

                if (ScannedDevices.ContainsKey(deviceId))
                {
                    //update SR list
                    ScannedDevices[deviceId].SRList.Clear();
                    ScannedDevices[deviceId].SRList.AddRange(metadataSrs);
                }
                else
                {
                    ScannedDevices.Add(deviceId, new ScannedDeviceInfo(type, dconf, metadataSrs));
                }

                foreach (SR.SRInfo srInfo in metadataSrs)
                {
                    SrRow row;
                    if (!FindRowByUuid(srInfo.UUID, out row))
                    {
                        row = new SrRow(srInfo, type, srInfo.PoolMetadataDetected,
                                               srInfo.PoolMetadataDetected);
                        dataGridViewSRs.Rows.Add(row);
                        ToggleRowChecked(row);
                    }
                }
                return true;
            }
            catch
            {
                return false;
            }
        }
        private void PopulateSrList()
        {
            Pool currentPool = Helpers.GetPoolOfOne(Connection);
            if (currentPool == null)
                return;

            try
            {
                dataGridViewSRs.SuspendLayout();
                dataGridViewSRs.Rows.Clear();

                // add existing SRs
                List<SR> srs = new List<SR>(Connection.Cache.SRs);
                foreach (SR sr in srs)
                {
                    if (!sr.SupportsDatabaseReplication())
                        continue;

                    bool poolMetadataDetected = false;
                    log.DebugFormat("Looking for foreign pool metadata VDIs on SR {0}.", sr.Name);

                    List<VDI> vdis = sr.Connection.ResolveAll(sr.VDIs);

                    foreach (VDI vdi in vdis)
                    {
                        if (vdi.type != vdi_type.metadata)
                            continue;

                        /*if (vdi.metadata_of_pool.opaque_ref == currentPool.opaque_ref)
                        {
                            continue;
                        }*/

                        // found a metadata VDI
                        poolMetadataDetected = true;
                        break;
                    }

                    SrRow row;
                    if (!FindRowByUuid(sr.uuid, out row))
                    {
                        row = new SrRow(sr, poolMetadataDetected, SelectedSRsUuids.Contains(sr.uuid));
                        dataGridViewSRs.Rows.Add(row);
                    }
                }

                // add new SRs 
                foreach (var scannedDevice in ScannedDevices.Values)
                {
                    foreach (var srInfo in scannedDevice.SRList)
                    {
                        SrRow row;
                        if (!FindRowByUuid(srInfo.UUID, out row))
                        {
                            row = new SrRow(srInfo, scannedDevice.Type, srInfo.PoolMetadataDetected,
                                            SelectedSRsUuids.Contains(srInfo.UUID));
                            dataGridViewSRs.Rows.Add(row);
                        }
                    }
                }

                //set the width of the last column
                columnMetadata.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                int storedWidth = columnMetadata.Width;
                columnMetadata.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                columnMetadata.MinimumWidth = storedWidth;
            }
            finally
            {
                dataGridViewSRs.ResumeLayout();
            }
        }
        private void _worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            spinnerIcon1.StopSpinning();
            try
            {
                dataGridViewSRs.SuspendLayout();

                foreach (SR sr in _availableSRs)
                {
                    var vdis = sr.Connection.ResolveAll(sr.VDIs);
                    bool poolMetadataDetected = vdis.Any(vdi => vdi.type == vdi_type.metadata);

                    SrRow row;
                    if (!FindRowByUuid(sr.uuid, out row))
                    {
                        row = new SrRow(sr, poolMetadataDetected, SelectedSRsUuids.Contains(sr.uuid));
                        dataGridViewSRs.Rows.Add(row);
                    }
                }

                // add new SRs
                foreach (var scannedDevice in ScannedDevices.Values)
                {
                    foreach (var srInfo in scannedDevice.SRList)
                    {
                        SrRow row;
                        if (!FindRowByUuid(srInfo.UUID, out row))
                        {
                            row = new SrRow(srInfo, scannedDevice.Type, srInfo.PoolMetadataDetected,
                                            SelectedSRsUuids.Contains(srInfo.UUID));
                            dataGridViewSRs.Rows.Add(row);
                        }
                    }
                }

                if (dataGridViewSRs.Rows.Count > 0)
                    SortRows();
            }
            finally
            {
                dataGridViewSRs.ResumeLayout();
            }

            OnPageUpdated();
        }
Example #17
0
 private bool IsRowChecked(int rowIndex, out SrRow row)
 {
     row = m_dataGridView.Rows[rowIndex] as SrRow;
     return IsRowChecked(row);
 }
Example #18
0
 private bool IsRowChecked(int rowIndex, out SrRow row)
 {
     row = m_dataGridView.Rows[rowIndex] as SrRow;
     return(IsRowChecked(row));
 }
Example #19
0
        /// <summary>
        /// First time population of the control
        /// </summary>
        private void PopulateSrDataGridView()
        {
            try
            {
                m_dataGridView.SuspendLayout();

                foreach (var sr in _availableSrs)
                {
                    var row = new SrRow(sr, Pool);

                    if (row.IsDrEnabled)
                    {
                        m_drOriginallyEnabled = true;
                        m_numberOfCheckedSrs++;
                    }

                    m_dataGridView.Rows.Add(row);
                    ToggleRowCheckable(row);
                }
            }
            finally
            {
                m_dataGridView.ResumeLayout();
            }
        }
Example #20
0
        private void ToggleRowCheckable(SrRow row)
        {
            if (row == null)
                return;

            bool checkable = row.HasSpace && m_numberOfCheckedSrs < MAX_SR_SELECTED;

            //if it's already checked do not consider it
            if (IsRowChecked(row))
                return;

            row.Cells[0].ReadOnly = !checkable;
            row.DefaultCellStyle = checkable ? regStyle : dimmedStyle;
        }
        private void AddScanResultsToDataGridView(List<SR.SRInfo> metadataSrs, SR.SRTypes type)
        {
            if (metadataSrs == null || metadataSrs.Count == 0)
                return;

            foreach (SR.SRInfo srInfo in metadataSrs)
            {
                SrRow row;
                if (!FindRowByUuid(srInfo.UUID, out row))
                {
                    row = new SrRow(srInfo, type, srInfo.PoolMetadataDetected, srInfo.PoolMetadataDetected);
                    dataGridViewSRs.Rows.Add(row);
                    ToggleRowChecked(row);
                }
            }
            SortRows();
        }
Example #22
0
		/// <summary>
		/// First time population of the control
		/// </summary>
		private void PopulateSrDataGridView()
		{
			try
			{
				m_dataGridView.SuspendLayout();
				m_dataGridView.Rows.Clear();

				foreach (var sr in Pool.Connection.Cache.SRs)
				{
                    if (!sr.SupportsDatabaseReplication())
						continue;

					var row = new SrRow(sr, Pool);

					if (row.IsDrEnabled)
					{
						m_drOriginallyEnabled = true;
						m_numberOfCheckedSrs++;
					}

					m_dataGridView.Rows.Add(row);
					ToggleRowCheckable(row);
				}

				//set the width of the last column
				columnSpace.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
				int storedWidth = columnSpace.Width;
				columnSpace.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
				columnSpace.MinimumWidth = storedWidth;
			}
			finally
			{
				m_dataGridView.ResumeLayout();
			}
		}