Ejemplo n.º 1
0
            /// <summary>
            /// Find out if any VMs are already assigned to a different group, and if so, check they can be moved
            /// </summary>
            /// <param name="vms">All the VMs to be assigned to the group</param>
            /// <param name="group">The group to assign the VMs to (null for a new group)</param>
            /// <param name="groupName">The name of the group to assign the VMs to</param>
            /// <returns>Whether the user is happy to proceed</returns>
            public static bool ChangesOK(List <VM> vms, T group, string groupName)
            {
                var vmsWithExistingGroup = vms.FindAll(vm =>
                {
                    T oldGroup = vm.Connection.Resolve(VMGroup <T> .VmToGroup(vm));
                    return(oldGroup != null && (group == null || oldGroup.opaque_ref != group.opaque_ref));
                });

                if (vmsWithExistingGroup.Count == 0)
                {
                    return(true);
                }

                string text;

                if (vmsWithExistingGroup.Count == 1)
                {
                    VM vm       = vmsWithExistingGroup[0];
                    T  oldGroup = vm.Connection.Resolve(VMGroup <T> .VmToGroup(vm));
                    text = string.Format(VMGroup <T> .ChangeOneWarningString,
                                         vm.Name.Ellipsise(250), oldGroup.Name.Ellipsise(250), groupName.Ellipsise(250));
                }
                else
                {
                    text = string.Format(VMGroup <T> .ChangeMultipleWarningString, groupName.Ellipsise(250));
                }

                return(new ThreeButtonDialog(
                           new ThreeButtonDialog.Details(SystemIcons.Warning, text, VMGroup <T> .ChangeVMsGroupString),
                           ThreeButtonDialog.ButtonYes,
                           ThreeButtonDialog.ButtonNo).
                       ShowDialog() == DialogResult.Yes);
            }
Ejemplo n.º 2
0
        protected override void OnDropDownOpening(EventArgs e)
        {
            base.DropDownItems.Clear();

            var cmd  = new NewGroupCommand(Command.MainWindowCommandInterface, Command.GetSelection());
            var item = new CommandToolStripMenuItem(cmd);

            base.DropDownItems.Add(item);

            T[] groups = VMGroup <T> .GroupsInCache(Command.GetSelection()[0].Connection.Cache);

            if (groups.Length > 0)
            {
                base.DropDownItems.Add(new ToolStripSeparator());
            }

            Array.Sort(groups);

            for (int index = 0; index < groups.Length; index++)
            {
                T   group    = groups[index];
                var menuText = index < 9
                    ? String.Format(Messages.DYNAMIC_MENUITEM_WITH_ACCESS_KEY, index + 1, group.Name)
                    : String.Format(Messages.DYNAMIC_MENUITEM_WITHOUT_ACCESS_KEY, group.Name);

                var cmdGroup  = new AssignGroupToVMCommand(Command.MainWindowCommandInterface, Command.GetSelection(), group, menuText);
                var itemGroup = new CommandToolStripMenuItem(cmdGroup);
                if (Command.GetSelection().Count == 1 &&
                    VMGroup <T> .VmToGroup((VM)Command.GetSelection()[0].XenObject).opaque_ref == group.opaque_ref)
                {
                    itemGroup.Checked = true;
                }
                base.DropDownItems.Add(itemGroup);
            }
        }
Ejemplo n.º 3
0
            void Refresh(bool selected)
            {
                _selectedCell.Value    = selected;
                _nameCell.Value        = Vm.Name;
                _descriptionCell.Value = Vm.Description;
                T group = Vm.Connection.Resolve(VMGroup <T> .VmToGroup(Vm));

                _currentGroupCell.Value = group == null ? Messages.NONE : group.Name;
            }
        protected override void OnDropDownOpening(EventArgs e)
        {
            base.DropDownItems.Clear();

            var cmd  = new NewGroupCommand(Command.MainWindowCommandInterface, Command.GetSelection());
            var item = new CommandToolStripMenuItem(cmd);

            base.DropDownItems.Add(item);

            T[] groups = VMGroup <T> .GroupsInCache(Command.GetSelection()[0].Connection.Cache);

            if (groups.Length > 0)
            {
                base.DropDownItems.Add(new ToolStripSeparator());
            }

            Array.Sort(groups);

            for (int index = 0, offset = 0; index < groups.Length; index++)
            {
                T group = groups[index];

                /* do not add unsupported policies to the drop down for VMSS */
                XenAPI.VMSS policy = group as VMSS;
                if (policy != null && policy.policy_type == policy_backup_type.snapshot_with_quiesce)
                {
                    List <VM> vms          = Command.GetSelection().AsXenObjects <VM>();
                    bool      doNotInclude = vms.Any(vm => !vm.allowed_operations.Contains(vm_operations.snapshot_with_quiesce));
                    if (doNotInclude)
                    {
                        offset--;
                        continue;
                    }
                }

                var menuText = (index + offset) < 9
                    ? String.Format(Messages.DYNAMIC_MENUITEM_WITH_ACCESS_KEY, (index + offset) + 1, group.Name)
                    : String.Format(Messages.DYNAMIC_MENUITEM_WITHOUT_ACCESS_KEY, group.Name);

                var cmdGroup  = new AssignGroupToVMCommand(Command.MainWindowCommandInterface, Command.GetSelection(), group, menuText);
                var itemGroup = new CommandToolStripMenuItem(cmdGroup);
                if (Command.GetSelection().Count == 1 &&
                    VMGroup <T> .VmToGroup((VM)Command.GetSelection()[0].XenObject).opaque_ref == group.opaque_ref)
                {
                    itemGroup.Checked = true;
                }
                base.DropDownItems.Add(itemGroup);
            }
        }
Ejemplo n.º 5
0
            void Refresh(bool selected)
            {
                _selectedCell.Value    = selected;
                _nameCell.Value        = Vm.Name();
                _descriptionCell.Value = Vm.Description();
                T group = Vm.Connection.Resolve(VMGroup <T> .VmToGroup(Vm));

                _currentGroupCell.Value = group == null ? Messages.NONE : group.Name();
                if (VMGroup <T> .isQuescingSupported)
                {
                    if (Vm.allowed_operations.Contains((vm_operations.snapshot_with_quiesce)) && !Helpers.FeatureForbidden(Vm, Host.RestrictVss))
                    {
                        _quiesce_supported.Value = Messages.YES;
                    }
                    else
                    {
                        _quiesce_supported.Value = Messages.NO;
                    }
                }
            }
            /// <summary>
            /// Find out if any VMs are already assigned to a different group, and if so, check they can be moved
            /// </summary>
            /// <param name="vms">All the VMs to be assigned to the group</param>
            /// <param name="group">The group to assign the VMs to (null for a new group)</param>
            /// <param name="groupName">The name of the group to assign the VMs to</param>
            /// <returns>Whether the user is happy to proceed</returns>
            public static bool ChangesOK(List <VM> vms, T group, string groupName)
            {
                var vmsWithExistingGroup = vms.FindAll(vm =>
                {
                    T oldGroup = vm.Connection.Resolve(VMGroup <T> .VmToGroup(vm));
                    return(oldGroup != null && (group == null || oldGroup.opaque_ref != group.opaque_ref));
                });

                if (vmsWithExistingGroup.Count == 0)
                {
                    return(true);
                }

                string text;

                if (vmsWithExistingGroup.Count == 1)
                {
                    VM vm       = vmsWithExistingGroup[0];
                    T  oldGroup = vm.Connection.Resolve(VMGroup <T> .VmToGroup(vm));
                    text = string.Format(VMGroup <T> .ChangeOneWarningString,
                                         vm.Name().Ellipsise(250), oldGroup.Name().Ellipsise(250), groupName.Ellipsise(250));
                }
                else
                {
                    text = string.Format(VMGroup <T> .ChangeMultipleWarningString, groupName.Ellipsise(250));
                }

                DialogResult dialogResult;

                using (var dlg = new WarningDialog(text, ThreeButtonDialog.ButtonYes, ThreeButtonDialog.ButtonNo)
                {
                    WindowTitle = VMGroup <T> .ChangeVMsGroupString
                })
                {
                    dialogResult = dlg.ShowDialog();
                }
                return(dialogResult == DialogResult.Yes);
            }
Ejemplo n.º 7
0
        private void RefreshPoolTitle(Pool pool)
        {
            int protectedVMs = 0;
            int realVMs      = 0;

            foreach (var vm in pool.Connection.Cache.VMs)
            {
                if (vm.is_a_real_vm && vm.Show(Properties.Settings.Default.ShowHiddenVMs))
                {
                    realVMs++;
                    if (vm.Connection.Resolve(VMGroup <T> .VmToGroup(vm)) != null)
                    {
                        protectedVMs++;
                    }
                }
            }
            this.Text             = VMGroup <T> .VMPolicyDialogTitle;
            label2.Text           = VMGroup <T> .VMPolicyDialogText;
            labelPolicyTitle.Text = string.Format(Helpers.IsPool(pool.Connection)
                                                        ? VMGroup <T> .VMPolicyDialogSchedulesInPool
                                                        : VMGroup <T> .VMPolicyDialogSchedulesInServer,
                                                  pool.Name.Ellipsise(45), protectedVMs, realVMs);
        }