/// <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); }
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); } }
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); } }
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); }
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); }