/// <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(); } }
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); }
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(); }
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(); }
/// <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(); }
private bool IsRowChecked(int rowIndex, out SrRow row) { row = m_dataGridView.Rows[rowIndex] as SrRow; return IsRowChecked(row); }
private bool IsRowChecked(int rowIndex, out SrRow row) { row = m_dataGridView.Rows[rowIndex] as SrRow; return(IsRowChecked(row)); }
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(); }
/// <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(); } }