xenadmin/XenAdmin/SettingsPanels/VMEnlightenmentEditPage.cs
Mihaela Stoica c3b667ec7f CP-10900: Add functionality for enabling/disabling/querying the container monitoring on a per-VM-basis to XenCenter
New Page: Enlightenment on VM Properties Dialog, visible only for:
- VMs on Cream Or Greater hosts
- that can be enlightened, regardless of their power state

A VM can be enlightened if the key "xscontainer-monitor" exists in other_config.
A VM is enlightened if other_config:xscontainer-monitor if true.

Signed-off-by: Mihaela Stoica <mihaela.stoica@citrix.com>
2015-02-06 17:46:58 +00:00

117 lines
3.5 KiB
C#

/* Copyright (c) Citrix Systems Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
using XenAdmin.Actions;
using XenAdmin.Core;
using XenAdmin.Properties;
using XenAPI;
namespace XenAdmin.SettingsPanels
{
public partial class VMEnlightenmentEditPage : UserControl, IEditPage
{
public VM vm;
private bool currentValue;
public VMEnlightenmentEditPage()
{
InitializeComponent();
}
#region Implementation of VerticalTab
public override string Text
{
get { return Messages.VM_ENLIGHTENMENT; }
}
public string SubText
{
get { return enlightenCheckBox.Checked ? Messages.ENABLED : Messages.DISABLED; }
}
public Image Image
{
get { return Resources.DC_16; }
}
#endregion
#region Implementation of IEditPage
public AsyncAction SaveSettings()
{
return enlightenCheckBox.Checked
? (AsyncAction) new EnableVMEnlightenmentAction(vm, true)
: new DisableVMEnlightenmentAction(vm, true);
}
public void SetXenObjects(IXenObject orig, IXenObject clone)
{
Trace.Assert(clone is VM); // only VMs should show this page
Trace.Assert(Helpers.CreamOrGreater(clone.Connection)); // If not Cream or greater, we shouldn't see this page
vm = (VM)clone;
Trace.Assert(vm.CanBeEnlightened); // If the VM cannot be enlightened, we shouldn't see this page
PopulatePage();
}
public bool ValidToSave
{
get { return true; }
}
public void ShowLocalValidationMessages()
{ }
public void Cleanup()
{ }
public bool HasChanged
{
get { return enlightenCheckBox.Checked != currentValue; }
}
#endregion
private void PopulatePage()
{
currentValue = vm.IsEnlightened;
enlightenCheckBox.Checked = currentValue;
}
}
}