/// <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;
        }
示例#2
0
 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;
        }