Пример #1
0
        private void ScanForSRs(SR.SRTypes type)
        {
            bool succeeded;
            List<string> srs = new List<string>();

            switch (type)
            {
                case SR.SRTypes.lvmohba :
                    List<FibreChannelDevice> devices = new List<FibreChannelDevice>();
                    succeeded = FiberChannelScan(devices);
                    if (succeeded)
                    {
                        foreach (FibreChannelDevice device in devices)
                        {
                            string deviceId = string.IsNullOrEmpty(device.SCSIid) ? device.Path : device.SCSIid;
                            succeeded = succeeded && ScanDeviceForSRs(SR.SRTypes.lvmohba, deviceId,
                                                                      GetFCDeviceConfig(device));
                            
                            srs.AddRange(ScannedDevices[deviceId].SRList.Select(srInfo => srInfo.Name));
                        }
                    }
                    ShowScanResult(srs, succeeded);
                    break;

                case SR.SRTypes.lvmoiscsi :
                    IscsiDeviceConfigDialog dialog = new IscsiDeviceConfigDialog(Connection);
                    if (dialog.ShowDialog(this) == DialogResult.OK)
                    {
                        Dictionary<String, String> dconf = dialog.DeviceConfig;
                        string deviceId = string.IsNullOrEmpty(dconf[SCSIID]) ? dconf[LUNSERIAL] : dconf[SCSIID];

                        succeeded = ScanDeviceForSRs(SR.SRTypes.lvmoiscsi, deviceId, dconf);

                        if (succeeded)
                            srs.AddRange(ScannedDevices[deviceId].SRList.Select(srInfo => srInfo.Name));

                        ShowScanResult(srs, succeeded);
                    }
                    break;
            }
        }
        private void ScanForSRs(SR.SRTypes type)
        {
            var srs = new List<SR.SRInfo>();

            switch (type)
            {
                case SR.SRTypes.lvmohba:
                    var devices = FiberChannelScan();
                    if (devices != null && devices.Count > 0)
                    {
                        foreach (FibreChannelDevice device in devices)
                        {
                            string deviceId = string.IsNullOrEmpty(device.SCSIid) ? device.Path : device.SCSIid;
                            var metadataSrs = ScanDeviceForSRs(SR.SRTypes.lvmohba, deviceId, GetFCDeviceConfig(device));
                            if (metadataSrs != null && metadataSrs.Count > 0)
                                srs.AddRange(metadataSrs);
                        }
                    }
                    AddScanResultsToDataGridView(srs, SR.SRTypes.lvmohba);
                    break;

                case SR.SRTypes.lvmoiscsi:
                    using (var dialog = new IscsiDeviceConfigDialog(Connection))
                    {
                        if (dialog.ShowDialog(this) == DialogResult.OK)
                        {
                            Dictionary<String, String> dconf = dialog.DeviceConfig;
                            string deviceId = string.IsNullOrEmpty(dconf[SCSIID]) ? dconf[LUNSERIAL] : dconf[SCSIID];

                            var metadataSrs = ScanDeviceForSRs(SR.SRTypes.lvmoiscsi, deviceId, dconf);
                            if (metadataSrs != null && metadataSrs.Count > 0)
                                srs.AddRange(metadataSrs);
                        }
                    }
                    AddScanResultsToDataGridView(srs, SR.SRTypes.lvmoiscsi);
                    break;
            }

            if (srs.Count == 0)
                using (var dlg = new ThreeButtonDialog(
                    new ThreeButtonDialog.Details(SystemIcons.Information,
                        Messages.DR_WIZARD_STORAGEPAGE_SCAN_RESULT_NONE,
                        Messages.XENCENTER)))
                {
                    dlg.ShowDialog(this);
                }
        }