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); }
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); }
/// <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; }
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)); }
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; } } } } }
public static Icons GetIconFor(StorageLinkPool storageLinkPool) { return(Icons.StorageLinkPool); }
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); }
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); } }
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)); }