コード例 #1
0
 private StorageLinkServer GetStorageLinkServer(IXenObject xo)
 {
     if (xo is StorageLinkServer)
     {
         return((StorageLinkServer)xo);
     }
     else if (xo is StorageLinkSystem)
     {
         StorageLinkSystem system = (StorageLinkSystem)xo;
         return(system.StorageLinkServer);
     }
     else if (xo is StorageLinkPool)
     {
         StorageLinkPool pool = (StorageLinkPool)xo;
         if (pool.Parent == null)
         {
             return(pool.StorageLinkSystem.StorageLinkServer);
         }
         else
         {
             return(GetStorageLinkServer(pool.Parent));
         }
     }
     return(null);
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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;
        }
コード例 #4
0
            private VirtualTreeNode AddStorageLinkRepositoryNode(VirtualTreeNode parent, int index, StorageLinkRepository storageLinkRepository)
            {
                string          name = storageLinkRepository.Name;
                StorageLinkPool pool = storageLinkRepository.StorageLinkPool;

                if (pool != null && !string.IsNullOrEmpty(pool.ParentStorageLinkPoolId))
                {
                    name = string.Format("{0} ({1})", storageLinkRepository.Name, pool);
                }

                return(AddNode(parent, index, name, Images.GetIconFor(storageLinkRepository), false, storageLinkRepository));
            }
コード例 #5
0
ファイル: CSLG.cs プロジェクト: heiden-deng/xenadmin
        private void comboBoxStorageSystem_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBoxStorageSystem.SelectedItem is NonSelectableComboBoxItem)
            {
                if (comboBoxStorageSystem.SelectedItem.ToString() == Messages.ADD_HOST)
                {
                    Program.BeginInvoke(Program.MainWindow, AddStorageSystem);
                    comboBoxStorageSystem.SelectedIndex = -1;
                }
                else if (comboBoxStorageSystem.SelectedIndex < comboBoxStorageSystem.Items.Count - 1 &&
                         (_storageSystemComboLastSelectedIndex < comboBoxStorageSystem.SelectedIndex || comboBoxStorageSystem.SelectedIndex == 0))
                {
                    _storageSystemComboLastSelectedIndex = comboBoxStorageSystem.SelectedIndex;
                    comboBoxStorageSystem.SelectedIndex++;
                }
                else
                {
                    _storageSystemComboLastSelectedIndex = comboBoxStorageSystem.SelectedIndex;
                    comboBoxStorageSystem.SelectedIndex--;
                }
            }
            else
            {
                _storageSystemComboLastSelectedIndex = comboBoxStorageSystem.SelectedIndex;
            }

            OnPageUpdated();

            if (comboBoxStorageSystem.SelectedIndex >= 0)
            {
                if (_storageLinkObject != null)
                {
                    // The user has changed which SL object to use using the storage-system combo-box so update that here.

                    if (_storageLinkObject is StorageLinkServer || _storageLinkObject is StorageLinkSystem)
                    {
                        _storageLinkObject = ((CslgSystemStorage)comboBoxStorageSystem.SelectedItem).StorageLinkSystem;
                    }
                    else
                    {
                        StorageLinkPool storageLinkPool = (StorageLinkPool)_storageLinkObject;

                        if (storageLinkPool.StorageLinkSystem != ((CslgSystemStorage)comboBoxStorageSystem.SelectedItem).StorageLinkSystem)
                        {
                            _storageLinkObject = ((CslgSystemStorage)comboBoxStorageSystem.SelectedItem).StorageLinkSystem;
                        }
                    }
                }
            }
        }
コード例 #6
0
ファイル: Images.cs プロジェクト: mfilippov/xenadmin
 public static Icons GetIconFor(StorageLinkPool storageLinkPool)
 {
     return(Icons.StorageLinkPool);
 }
コード例 #7
0
ファイル: Images.cs プロジェクト: mfilippov/xenadmin
        public static Icons GetIconFor(IXenObject o)
        {
            VM vm = o as VM;

            if (vm != null)
            {
                return(GetIconFor(vm));
            }

            VM_appliance appl = o as VM_appliance;

            if (appl != null)
            {
                return(GetIconFor(appl));
            }

            SR sr = o as SR;

            if (sr != null)
            {
                return(GetIconFor(sr));
            }

            Host host = o as Host;

            if (host != null)
            {
                return(GetIconFor(host));
            }

            Pool pool = o as Pool;

            if (pool != null)
            {
                return(GetIconFor(pool));
            }

            XenAPI.Network network = o as XenAPI.Network;
            if (network != null)
            {
                return(GetIconFor(network));
            }

            VDI vdi = o as VDI;

            if (vdi != null)
            {
                return(GetIconFor(vdi));
            }

            VBD vbd = o as VBD;

            if (vbd != null)
            {
                return(GetIconFor(vbd));
            }

            Folder folder = o as Folder;

            if (folder != null)
            {
                return(GetIconFor(folder));
            }

            PIF pif = o as PIF;

            if (pif != null)
            {
                return(GetIconFor(pif));
            }

            StorageLinkServer storageLinkServer = o as StorageLinkServer;

            if (storageLinkServer != null)
            {
                return(GetIconFor(storageLinkServer));
            }

            StorageLinkSystem storageLinkSystem = o as StorageLinkSystem;

            if (storageLinkSystem != null)
            {
                return(GetIconFor(storageLinkSystem));
            }

            StorageLinkPool storageLinkPool = o as StorageLinkPool;

            if (storageLinkPool != null)
            {
                return(GetIconFor(storageLinkPool));
            }

            StorageLinkVolume storageLinkVolume = o as StorageLinkVolume;

            if (storageLinkVolume != null)
            {
                return(GetIconFor(storageLinkVolume));
            }

            StorageLinkRepository storageLinkRepository = o as StorageLinkRepository;

            if (storageLinkRepository != null)
            {
                return(GetIconFor(storageLinkRepository));
            }

            System.Diagnostics.Trace.Assert(false,
                                            "You asked for an icon for a type I don't recognise!");

            return(Icons.XenCenter);
        }
コード例 #8
0
ファイル: Action.cs プロジェクト: ryu2048/xenadmin
        protected void SetAppliesTo(IXenObject xo)
        {
            if (xo == null)
            {
                return;
            }

            if (xo is Pool)
            {
                Pool pool = (Pool)xo;
                AppliesTo.Add(pool.opaque_ref);
            }
            else if (xo is Host)
            {
                Host host = (Host)xo;
                SetAppliesTo(Helpers.GetPoolOfOne(host.Connection));
                AppliesTo.Add(host.opaque_ref);
            }
            else if (xo is VM)
            {
                VM vm = (VM)xo;
                SetAppliesTo(vm.Home());
                AppliesTo.Add(vm.opaque_ref);
            }
            else if (xo is SR)
            {
                SR sr = (SR)xo;
                SetAppliesTo(sr.Home);
                AppliesTo.Add(sr.opaque_ref);
            }
            else if (xo is VDI)
            {
                VDI vdi = (VDI)xo;
                SetAppliesTo(vdi.Connection.Resolve(vdi.SR));
            }
            else if (xo is StorageLinkServer)
            {
                AppliesTo.Add(xo.opaque_ref);
            }
            else if (xo is StorageLinkSystem)
            {
                StorageLinkSystem system = (StorageLinkSystem)xo;
                AppliesTo.Add(system.opaque_ref);
                SetAppliesTo(system.StorageLinkServer);
            }
            else if (xo is StorageLinkPool)
            {
                StorageLinkPool pool = (StorageLinkPool)xo;
                AppliesTo.Add(xo.opaque_ref);

                if (pool.Parent == null)
                {
                    SetAppliesTo(pool.StorageLinkSystem);
                }
                else
                {
                    SetAppliesTo(pool.Parent);
                }
            }
            else if (xo is StorageLinkVolume)
            {
                StorageLinkVolume volume = (StorageLinkVolume)xo;
                AppliesTo.Add(xo.opaque_ref);
                SetAppliesTo(volume.StorageLinkPool);
            }
        }
コード例 #9
0
 private VirtualTreeNode AddStorageLinkPoolNode(VirtualTreeNode parent, int index, StorageLinkPool storageLinkPool)
 {
     return(AddNode(parent, index, Helpers.GetName(storageLinkPool), Images.GetIconFor(storageLinkPool), false, storageLinkPool));
 }
コード例 #10
0
 private VirtualTreeNode AddStorageLinkPoolNode(StorageLinkPool storageLinkPool)
 {
     return(AddNode(Helpers.GetName(storageLinkPool), Images.GetIconFor(storageLinkPool), false, storageLinkPool));
 }