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?
                }
            }
        }
Ejemplo n.º 3
0
            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);
        }
Ejemplo n.º 6
0
 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;
 }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
 public void RemoveStorageVolumesFromStorageRepository(StorageLinkRepository storageLinkRepository, IEnumerable <string> storageVolumes)
 {
     _service.removeStorageFromRepository(storageLinkRepository.opaque_ref, new List <string>(storageVolumes).ToArray(), 0);
 }
Ejemplo n.º 12
0
 public void AddStorageVolumesToStorageRepository(StorageLinkRepository storageLinkRepository, IEnumerable <string> storageVolumes)
 {
     _service.addStorageToRepository(storageLinkRepository.opaque_ref, new List <string>(storageVolumes).ToArray(), 0);
 }
Ejemplo n.º 13
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)
 {
 }
Ejemplo n.º 15
0
 public void RemoveStorageVolumesFromStorageRepository(StorageLinkRepository storageLinkRepository, IEnumerable<string> storageVolumes)
 {
     _service.removeStorageFromRepository(storageLinkRepository.opaque_ref, new List<string>(storageVolumes).ToArray(), 0);
 }
Ejemplo n.º 16
0
 public RemoveStorageLinkVolumeCommand(IMainWindow mainWindow, StorageLinkRepository slr, IEnumerable <SelectedItem> selection)
     : base(mainWindow, selection)
 {
     _slr = slr;
 }
Ejemplo n.º 17
0
 public static Icons GetIconFor(StorageLinkRepository storageLinkRepository)
 {
     return Icons.StorageLinkRepository;
 }
Ejemplo n.º 18
0
 public RemoveStorageLinkVolumeCommand(IMainWindow mainWindow, StorageLinkRepository slr, VDI vdi)
     : base(mainWindow, vdi)
 {
     _slr = slr;
 }
Ejemplo n.º 19
0
 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;
        }