/// <summary> /// Initializes a new instance of the <see cref="CslgStoragePool"/> class. /// </summary> /// <param name="displayName">The display name.</param> /// <param name="storagePoolId">The storage pool id.</param> /// <param name="raidTypes">The raid types.</param> /// <param name="provisioningTypes">The provisioning types.</param> /// <param name="hasParent">if set to <c>true</c> if this pool has a parent pool.</param> public CslgStoragePool(string displayName, string storagePoolId, IEnumerable<string> raidTypes, IEnumerable<CslgParameter> provisioningTypes, bool hasParent, StorageLinkPool storageLinkPool) { Util.ThrowIfStringParameterNullOrEmpty(displayName, "displayName"); Util.ThrowIfStringParameterNullOrEmpty(storagePoolId, "storagePoolId"); _displayName = displayName; _storagePoolId = storagePoolId; _raidTypes = new ReadOnlyCollection<string>(new List<string>(raidTypes)); _provisioningTypes = new ReadOnlyCollection<CslgParameter>(new List<CslgParameter>(provisioningTypes)); _hasParent = hasParent; StorageLinkPool = storageLinkPool; }
public static Icons GetIconFor(StorageLinkPool storageLinkPool) { return Icons.StorageLinkPool; }
private VirtualTreeNode AddStorageLinkPoolNode(VirtualTreeNode parent, int index, StorageLinkPool storageLinkPool) { return AddNode(parent, index, Helpers.GetName(storageLinkPool), Images.GetIconFor(storageLinkPool), false, storageLinkPool); }
private VirtualTreeNode AddStorageLinkPoolNode(StorageLinkPool storageLinkPool) { return AddNode(Helpers.GetName(storageLinkPool), Images.GetIconFor(storageLinkPool), false, storageLinkPool); }
private List<CslgStoragePool> ParseStoragePoolXml(String xml) { List<CslgStoragePool> output = new List<CslgStoragePool>(); XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); foreach (XmlNode storagePoolInfo in doc.GetElementsByTagName("csl__storagePoolInfo")) { string displayName = GetXmlNodeInnerText(storagePoolInfo, "displayName").Trim(); string storagePoolId = GetXmlNodeInnerText(storagePoolInfo, "storagePoolId").Trim(); List<string> raidTypes = new List<string>(); foreach (var raid in GetXmlChildNodeInnerTexts(storagePoolInfo, "provisioningOptions/supportedRaidTypes/raidType")) { raidTypes.Add(raid.Trim()); } List<CslgParameter> provisioningTypes = new List<CslgParameter>(); string parentStoragePoolId = GetXmlNodeInnerText(storagePoolInfo, "parentStoragePoolId"); foreach (string innerText in GetXmlChildNodeInnerTexts(storagePoolInfo, "provisioningOptions/supportedProvisioningTypes/provisioningType")) { var trimmedInnerText = innerText.Trim(); // CVSM-3277: bridge returns "FULL" for some versions but "THICK" is required. if (trimmedInnerText == "FULL" || trimmedInnerText == "THICK") { provisioningTypes.Add(new CslgParameter("THICK", Messages.NEWSR_CSLG_THICK_PROVISIONING)); } else if (trimmedInnerText == "THIN") { provisioningTypes.Add(new CslgParameter(trimmedInnerText, Messages.NEWSR_CSLG_THIN_PROVISIONING)); } } if (raidTypes.Count == 0) { raidTypes.Add("RAID_NONE"); } if (provisioningTypes.Count == 0) { provisioningTypes.Add(new CslgParameter(null, Messages.NEWSR_CSLG_DEFAULT_PROVISIONING)); } uint capacity = 0; uint usedSpace = 0; try { capacity = UInt32.Parse(GetXmlNodeInnerText(storagePoolInfo, "sizeInMB").Trim()); usedSpace = capacity - UInt32.Parse(GetXmlNodeInnerText(storagePoolInfo, "freeSpaceInMB").Trim()); } catch { } StorageLinkPool storageLinkPool = new StorageLinkPool(storagePoolId, displayName, parentStoragePoolId, _storageSystemId, capacity, usedSpace, (StorageLinkEnums.RaidType)Enum.Parse(typeof(StorageLinkEnums.RaidType), raidTypes[0].ToUpper()), (StorageLinkEnums.ProvisioningType)Enum.Parse(typeof(StorageLinkEnums.ProvisioningType), provisioningTypes[0].Name.ToUpper())); output.Add(new CslgStoragePool(displayName, storagePoolId, raidTypes, provisioningTypes, !string.IsNullOrEmpty(parentStoragePoolId), storageLinkPool)); } return output; }