public ImportStorageLinkVolumeDialog(StorageLinkRepository slr) { Util.ThrowIfParameterNull(slr, "slr"); _slr = slr; InitializeComponent(); treeView.ImageList = Images.ImageList16; listView.SmallImageList = Images.ImageList16; _canonRootNodes = PopulateCanonRootNodes(_slr); treeView.UpdateRootNodes(GetNewRootNodes()); treeView.EndUpdate(); // expand storage-system and top level pools by default new List <VirtualTreeNode>(treeView.Nodes).ForEach(n => n.Expand()); if (treeView.Nodes.Count > 0) { treeView.Nodes[0].EnsureVisible(); treeView.AfterCheck += treeView_AfterCheck; listView.ItemChecked += listView_ItemChecked; // check clipboard. If it matches any node, then select that node string text = null; bool selected = false; try { text = Clipboard.GetText().Trim(); } catch (Exception) { } if (text != null) { var node = new List <VirtualTreeNode>(treeView.AllNodes).Find(n => n.Text.ToLower() == text.ToLower()); if (node != null) { treeView.SelectedNode = node; node.EnsureVisible(); selected = true; } } if (!selected) { // select the pool that the SR is in? } } }
public ImportStorageLinkVolumeDialog(StorageLinkRepository slr) { Util.ThrowIfParameterNull(slr, "slr"); _slr = slr; InitializeComponent(); treeView.ImageList = Images.ImageList16; listView.SmallImageList = Images.ImageList16; _canonRootNodes = PopulateCanonRootNodes(_slr); treeView.UpdateRootNodes(GetNewRootNodes()); treeView.EndUpdate(); // expand storage-system and top level pools by default new List<VirtualTreeNode>(treeView.Nodes).ForEach(n => n.Expand()); if (treeView.Nodes.Count > 0) { treeView.Nodes[0].EnsureVisible(); treeView.AfterCheck += treeView_AfterCheck; listView.ItemChecked += listView_ItemChecked; // check clipboard. If it matches any node, then select that node string text = null; bool selected = false; try { text = Clipboard.GetText().Trim(); } catch (Exception) { } if (text != null) { var node = new List<VirtualTreeNode>(treeView.AllNodes).Find(n => n.Text.ToLower() == text.ToLower()); if (node != null) { treeView.SelectedNode = node; node.EnsureVisible(); selected = true; } } if (!selected) { // select the pool that the SR is in? } } }
private VirtualTreeNode AddStorageLinkRepositoryNode(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(name, Images.GetIconFor(storageLinkRepository), false, storageLinkRepository)); }
protected override void ExecuteCore(SelectedItemCollection selection) { StorageLinkRepository slr = selection[0].XenObject as StorageLinkRepository; if (slr == null) { var sr = selection[0].XenObject as SR; slr = sr != null?sr.StorageLinkRepository(Program.StorageLinkConnections) : null; } if (slr != null) { var dialog = new ImportStorageLinkVolumeDialog(slr); dialog.FormClosing += (s, e) => { if (dialog.DialogResult == DialogResult.OK) { var volumes = dialog.Volumes; if (volumes.Count > 0) { var action = new DelegatedAsyncAction(null, string.Format(Messages.IMPORT_STORAGELINK_VOLUME_ACTION_TITLE, slr), string.Format(Messages.IMPORT_STORAGELINK_VOLUME_ACTION_START, slr), string.Format(Messages.IMPORT_STORAGELINK_VOLUME_ACTION_FINSH, slr), session => slr.StorageLinkConnection.AddStorageVolumesToStorageRepository(slr, volumes)); action.AppliesTo.Add(slr.opaque_ref); action.AppliesTo.Add(slr.StorageLinkConnection.Cache.Server.opaque_ref); action.RunAsync(); } } }; dialog.Show(Parent); } }
private static List <VirtualTreeNode> PopulateCanonRootNodes(StorageLinkRepository slr) { List <VirtualTreeNode> output = new List <VirtualTreeNode>(); foreach (StorageLinkPool pool in slr.StorageLinkConnection.Cache.StoragePools) { if (pool.StorageLinkSystemId == slr.StorageLinkSystemId && string.IsNullOrEmpty(pool.ParentStorageLinkPoolId)) { output.Add(CreateCanonNode(pool)); } } var dontShow = new List <string>(); foreach (IXenConnection c in ConnectionsManager.XenConnectionsCopy.FindAll(c => c.IsConnected && Helpers.MidnightRideOrGreater(c))) { foreach (VDI vdi in c.Cache.VDIs) { var otherConfig = new Dictionary <string, string>(vdi.sm_config); if (otherConfig.ContainsKey("SVID")) { dontShow.Add(otherConfig["SVID"]); } } } foreach (StorageLinkVolume volume in slr.StorageLinkConnection.Cache.StorageVolumes) { if (volume.StorageLinkSystemId == slr.StorageLinkSystemId && !dontShow.Contains(volume.opaque_ref)) { output.Find(n => n.Name == volume.RootStorageLinkPool.opaque_ref).Nodes.Add(CreateCanonNode(volume)); } } return(output); }
public void AddStorageVolumesToStorageRepository(StorageLinkRepository storageLinkRepository, IEnumerable<string> storageVolumes) { _service.addStorageToRepository(storageLinkRepository.opaque_ref, new List<string>(storageVolumes).ToArray(), 0); }
public ImportStorageLinkVolumeCommand(IMainWindow mainWindow, StorageLinkRepository slr) : base(mainWindow, slr) { }
public RemoveStorageLinkVolumeCommand(IMainWindow mainWindow, StorageLinkRepository slr, VDI vdi) : base(mainWindow, vdi) { _slr = slr; }
public RemoveStorageLinkVolumeCommand(IMainWindow mainWindow, StorageLinkRepository slr, IEnumerable<SelectedItem> selection) : base(mainWindow, selection) { _slr = slr; }
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); }
public void RemoveStorageVolumesFromStorageRepository(StorageLinkRepository storageLinkRepository, IEnumerable <string> storageVolumes) { _service.removeStorageFromRepository(storageLinkRepository.opaque_ref, new List <string>(storageVolumes).ToArray(), 0); }
public void AddStorageVolumesToStorageRepository(StorageLinkRepository storageLinkRepository, IEnumerable <string> storageVolumes) { _service.addStorageToRepository(storageLinkRepository.opaque_ref, new List <string>(storageVolumes).ToArray(), 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); }
public ImportStorageLinkVolumeCommand(IMainWindow mainWindow, StorageLinkRepository slr) : base(mainWindow, slr) { }
public void RemoveStorageVolumesFromStorageRepository(StorageLinkRepository storageLinkRepository, IEnumerable<string> storageVolumes) { _service.removeStorageFromRepository(storageLinkRepository.opaque_ref, new List<string>(storageVolumes).ToArray(), 0); }
public RemoveStorageLinkVolumeCommand(IMainWindow mainWindow, StorageLinkRepository slr, IEnumerable <SelectedItem> selection) : base(mainWindow, selection) { _slr = slr; }
public static Icons GetIconFor(StorageLinkRepository storageLinkRepository) { return Icons.StorageLinkRepository; }
public RemoveStorageLinkVolumeCommand(IMainWindow mainWindow, StorageLinkRepository slr, VDI vdi) : base(mainWindow, vdi) { _slr = slr; }
public static Icons GetIconFor(StorageLinkRepository storageLinkRepository) { return(Icons.StorageLinkRepository); }
private static List<VirtualTreeNode> PopulateCanonRootNodes(StorageLinkRepository slr) { List<VirtualTreeNode> output = new List<VirtualTreeNode>(); foreach (StorageLinkPool pool in slr.StorageLinkConnection.Cache.StoragePools) { if (pool.StorageLinkSystemId == slr.StorageLinkSystemId && string.IsNullOrEmpty(pool.ParentStorageLinkPoolId)) { output.Add(CreateCanonNode(pool)); } } var dontShow = new List<string>(); foreach (IXenConnection c in ConnectionsManager.XenConnectionsCopy.FindAll(c => c.IsConnected && Helpers.MidnightRideOrGreater(c))) { foreach (VDI vdi in c.Cache.VDIs) { var otherConfig = new Dictionary<string, string>(vdi.sm_config); if (otherConfig.ContainsKey("SVID")) { dontShow.Add(otherConfig["SVID"]); } } } foreach (StorageLinkVolume volume in slr.StorageLinkConnection.Cache.StorageVolumes) { if (volume.StorageLinkSystemId == slr.StorageLinkSystemId && !dontShow.Contains(volume.opaque_ref)) { output.Find(n => n.Name == volume.RootStorageLinkPool.opaque_ref).Nodes.Add(CreateCanonNode(volume)); } } return output; }