package org.ovirt.engine.ui.uicommonweb.models.vms;
import java.util.Collections;
import org.ovirt.engine.core.compat.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.common.vdscommands.*;
import org.ovirt.engine.core.common.queries.*;
import org.ovirt.engine.core.common.action.*;
import org.ovirt.engine.ui.frontend.*;
import org.ovirt.engine.ui.uicommonweb.*;
import org.ovirt.engine.ui.uicommonweb.models.*;
import org.ovirt.engine.core.common.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.common.interfaces.*;
import org.ovirt.engine.ui.uicommonweb.*;
import org.ovirt.engine.ui.uicommonweb.models.*;
@SuppressWarnings("unused")
public class VmGeneralModel extends EntityModel
{
public static EventDefinition UpdateCompleteEventDefinition;
private Event privateUpdateCompleteEvent;
public Event getUpdateCompleteEvent()
{
return privateUpdateCompleteEvent;
}
private void setUpdateCompleteEvent(Event value)
{
privateUpdateCompleteEvent = value;
}
private String name;
public String getName()
{
return name;
}
public void setName(String value)
{
if (!StringHelper.stringsEqual(name, value))
{
name = value;
OnPropertyChanged(new PropertyChangedEventArgs("Name"));
}
}
private String description;
public String getDescription()
{
return description;
}
public void setDescription(String value)
{
if (!StringHelper.stringsEqual(description, value))
{
description = value;
OnPropertyChanged(new PropertyChangedEventArgs("Description"));
}
}
private String template;
public String getTemplate()
{
return template;
}
public void setTemplate(String value)
{
if (!StringHelper.stringsEqual(template, value))
{
template = value;
OnPropertyChanged(new PropertyChangedEventArgs("Template"));
}
}
private String definedMemory;
public String getDefinedMemory()
{
return definedMemory;
}
public void setDefinedMemory(String value)
{
if (!StringHelper.stringsEqual(definedMemory, value))
{
definedMemory = value;
OnPropertyChanged(new PropertyChangedEventArgs("DefinedMemory"));
}
}
private String minAllocatedMemory;
public String getMinAllocatedMemory()
{
return minAllocatedMemory;
}
public void setMinAllocatedMemory(String value)
{
if (!StringHelper.stringsEqual(minAllocatedMemory, value))
{
minAllocatedMemory = value;
OnPropertyChanged(new PropertyChangedEventArgs("MinAllocatedMemory"));
}
}
private String os;
public String getOS()
{
return os;
}
public void setOS(String value)
{
if (!StringHelper.stringsEqual(os, value))
{
os = value;
OnPropertyChanged(new PropertyChangedEventArgs("OS"));
}
}
private String defaultDisplayType;
public String getDefaultDisplayType()
{
return defaultDisplayType;
}
public void setDefaultDisplayType(String value)
{
if (!StringHelper.stringsEqual(defaultDisplayType, value))
{
defaultDisplayType = value;
OnPropertyChanged(new PropertyChangedEventArgs("DefaultDisplayType"));
}
}
private String origin;
public String getOrigin()
{
return origin;
}
public void setOrigin(String value)
{
if (!StringHelper.stringsEqual(origin, value))
{
origin = value;
OnPropertyChanged(new PropertyChangedEventArgs("Origin"));
}
}
private int monitorCount;
public int getMonitorCount()
{
return monitorCount;
}
public void setMonitorCount(int value)
{
if (monitorCount != value)
{
monitorCount = value;
OnPropertyChanged(new PropertyChangedEventArgs("MonitorCount"));
}
}
private boolean hasMonitorCount;
public boolean getHasMonitorCount()
{
return hasMonitorCount;
}
public void setHasMonitorCount(boolean value)
{
if (hasMonitorCount != value)
{
hasMonitorCount = value;
OnPropertyChanged(new PropertyChangedEventArgs("HasMonitorCount"));
}
}
private boolean hasDomain;
public boolean getHasDomain()
{
return hasDomain;
}
public void setHasDomain(boolean value)
{
if (hasDomain != value)
{
hasDomain = value;
OnPropertyChanged(new PropertyChangedEventArgs("HasDomain"));
}
}
private boolean hasStorageDomain;
public boolean getHasStorageDomain()
{
return hasStorageDomain;
}
public void setHasStorageDomain(boolean value)
{
if (hasStorageDomain != value)
{
hasStorageDomain = value;
OnPropertyChanged(new PropertyChangedEventArgs("HasStorageDomain"));
}
}
private boolean hasTimeZone;
public boolean getHasTimeZone()
{
return hasTimeZone;
}
public void setHasTimeZone(boolean value)
{
if (hasTimeZone != value)
{
hasTimeZone = value;
OnPropertyChanged(new PropertyChangedEventArgs("HasTimeZone"));
}
}
private String usbPolicy;
public String getUsbPolicy()
{
return usbPolicy;
}
public void setUsbPolicy(String value)
{
if (!StringHelper.stringsEqual(usbPolicy, value))
{
usbPolicy = value;
OnPropertyChanged(new PropertyChangedEventArgs("UsbPolicy"));
}
}
private boolean hasUsbPolicy;
public boolean getHasUsbPolicy()
{
return hasUsbPolicy;
}
public void setHasUsbPolicy(boolean value)
{
if (hasUsbPolicy != value)
{
hasUsbPolicy = value;
OnPropertyChanged(new PropertyChangedEventArgs("HasUsbPolicy"));
}
}
private String cpuInfo;
public String getCpuInfo()
{
return cpuInfo;
}
public void setCpuInfo(String value)
{
if (!StringHelper.stringsEqual(cpuInfo, value))
{
cpuInfo = value;
OnPropertyChanged(new PropertyChangedEventArgs("CpuInfo"));
}
}
private boolean hasHighlyAvailable;
public boolean getHasHighlyAvailable()
{
return hasHighlyAvailable;
}
public void setHasHighlyAvailable(boolean value)
{
if (hasHighlyAvailable != value)
{
hasHighlyAvailable = value;
OnPropertyChanged(new PropertyChangedEventArgs("HasHighlyAvailable"));
}
}
private boolean isHighlyAvailable;
public boolean getIsHighlyAvailable()
{
return isHighlyAvailable;
}
public void setIsHighlyAvailable(boolean value)
{
if (isHighlyAvailable != value)
{
isHighlyAvailable = value;
OnPropertyChanged(new PropertyChangedEventArgs("IsHighlyAvailable"));
}
}
private boolean hasPriority;
public boolean getHasPriority()
{
return hasPriority;
}
public void setHasPriority(boolean value)
{
if (hasPriority != value)
{
hasPriority = value;
OnPropertyChanged(new PropertyChangedEventArgs("HasPriority"));
}
}
private String priority;
public String getPriority()
{
return priority;
}
public void setPriority(String value)
{
if (!StringHelper.stringsEqual(priority, value))
{
priority = value;
OnPropertyChanged(new PropertyChangedEventArgs("Priority"));
}
}
private boolean hasAlert;
public boolean getHasAlert()
{
return hasAlert;
}
public void setHasAlert(boolean value)
{
if (hasAlert != value)
{
hasAlert = value;
OnPropertyChanged(new PropertyChangedEventArgs("HasAlert"));
}
}
private String alert;
public String getAlert()
{
return alert;
}
public void setAlert(String value)
{
if (!StringHelper.stringsEqual(alert, value))
{
alert = value;
OnPropertyChanged(new PropertyChangedEventArgs("Alert"));
}
}
private String domain;
public String getDomain()
{
return domain;
}
public void setDomain(String value)
{
if (!StringHelper.stringsEqual(domain, value))
{
domain = value;
OnPropertyChanged(new PropertyChangedEventArgs("Domain"));
}
}
private String storageDomain;
public String getStorageDomain()
{
return storageDomain;
}
public void setStorageDomain(String value)
{
if (!StringHelper.stringsEqual(storageDomain, value))
{
storageDomain = value;
OnPropertyChanged(new PropertyChangedEventArgs("StorageDomain"));
}
}
private String timeZone;
public String getTimeZone()
{
return timeZone;
}
public void setTimeZone(String value)
{
if (!StringHelper.stringsEqual(timeZone, value))
{
timeZone = value;
OnPropertyChanged(new PropertyChangedEventArgs("TimeZone"));
}
}
private boolean hasDefaultHost;
public boolean getHasDefaultHost()
{
return hasDefaultHost;
}
public void setHasDefaultHost(boolean value)
{
if (hasDefaultHost != value)
{
hasDefaultHost = value;
OnPropertyChanged(new PropertyChangedEventArgs("HasDefaultHost"));
}
}
private String defaultHost;
public String getDefaultHost()
{
return defaultHost;
}
public void setDefaultHost(String value)
{
if (!StringHelper.stringsEqual(defaultHost, value))
{
defaultHost = value;
OnPropertyChanged(new PropertyChangedEventArgs("DefaultHost"));
}
}
private boolean hasCustomProperties;
public boolean getHasCustomProperties()
{
return hasCustomProperties;
}
public void setHasCustomProperties(boolean value)
{
if (hasCustomProperties != value)
{
hasCustomProperties = value;
OnPropertyChanged(new PropertyChangedEventArgs("HasCustomProperties"));
}
}
private String customProperties;
public String getCustomProperties()
{
return customProperties;
}
public void setCustomProperties(String value)
{
if (!StringHelper.stringsEqual(customProperties, value))
{
customProperties = value;
OnPropertyChanged(new PropertyChangedEventArgs("CustomProperties"));
}
}
static
{
UpdateCompleteEventDefinition = new EventDefinition("UpdateComplete", VmGeneralModel.class);
}
public VmGeneralModel()
{
setUpdateCompleteEvent(new Event(UpdateCompleteEventDefinition));
setTitle("General");
}
@Override
protected void OnEntityChanged()
{
super.OnEntityChanged();
if (getEntity() != null)
{
UpdateProperties();
}
}
@Override
protected void EntityPropertyChanged(Object sender, PropertyChangedEventArgs e)
{
super.EntityPropertyChanged(sender, e);
UpdateProperties();
}
private void UpdateProperties()
{
VM vm = (VM)getEntity();
setName(vm.getvm_name());
setDescription(vm.getvm_description());
setTemplate(vm.getvmt_name());
setDefinedMemory(vm.getvm_mem_size_mb() + " MB");
setMinAllocatedMemory(vm.getMinAllocatedMem() + " MB");
Translator translator = EnumTranslator.Create(VmOsType.class);
setOS(translator.get(vm.getvm_os()));
translator = EnumTranslator.Create(DisplayType.class);
setDefaultDisplayType(translator.get(vm.getdefault_display_type()));
translator = EnumTranslator.Create(OriginType.class);
setOrigin(translator.get(vm.getorigin()));
setHasHighlyAvailable(vm.getvm_type() == VmType.Server);
setIsHighlyAvailable(vm.getauto_startup());
setHasPriority(vm.getvm_type() == VmType.Server);
setPriority(PriorityToString(vm.getpriority()));
setHasMonitorCount(vm.getvm_type() == VmType.Desktop);
setMonitorCount(vm.getnum_of_monitors());
setHasUsbPolicy(true);
translator = EnumTranslator.Create(UsbPolicy.class);
setUsbPolicy(translator.get(vm.getusb_policy()));
setCpuInfo(vm.getnum_of_cpus() + " " + "(" + vm.getnum_of_sockets() + " Socket(s), " + vm.getcpu_per_socket() + " Core(s) per Socket)");
setHasDomain(DataProvider.IsWindowsOsType(vm.getvm_os()));
setDomain(vm.getvm_domain());
setHasTimeZone(DataProvider.IsWindowsOsType(vm.getvm_os()));
setTimeZone(vm.gettime_zone());
setHasCustomProperties(!StringHelper.stringsEqual(vm.getCustomProperties(), ""));
setCustomProperties(getHasCustomProperties() ? "Configured" : "Not-Configured");
setHasAlert(vm.getVmPauseStatus() != VmPauseStatus.NONE && vm.getVmPauseStatus() != VmPauseStatus.NOERR);
if (getHasAlert())
{
translator = EnumTranslator.Create(VmPauseStatus.class);
setAlert(translator.get(vm.getVmPauseStatus()));
}
else
{
setAlert(null);
}
setHasDefaultHost(vm.getdedicated_vm_for_vds() != null);
if (getHasDefaultHost())
{
Frontend.RunQuery(VdcQueryType.Search, new SearchParameters("Host: cluster = " + vm.getvds_group_name() + " sortby name", SearchType.VDS), new AsyncQuery(this,
new INewAsyncCallback() {
@Override
public void OnSuccess(Object target, Object returnValue) {
VmGeneralModel model = (VmGeneralModel)target;
VM localVm = (VM)model.getEntity();
if (localVm == null)
{
return;
}
java.util.ArrayList<VDS> hosts = (java.util.ArrayList<VDS>)((VdcQueryReturnValue)returnValue).getReturnValue();
for (VDS host : hosts)
{
if (localVm.getdedicated_vm_for_vds() != null && host.getvds_id().equals(localVm.getdedicated_vm_for_vds()))
{
model.setDefaultHost(host.getvds_name());
break;
}
}
model.UpdateStorageDomain();
}
}));
}
else
{
setDefaultHost("Any Host in Cluster");
UpdateStorageDomain();
}
}
public void UpdateStorageDomain()
{
AsyncQuery _asyncQuery = new AsyncQuery();
_asyncQuery.setModel(this);
_asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object ReturnValue)
{
VmGeneralModel vmGeneralModel = (VmGeneralModel)model;
Iterable disks = (Iterable)((VdcQueryReturnValue)ReturnValue).getReturnValue();
java.util.Iterator disksIterator = disks.iterator();
if (disksIterator.hasNext())
{
vmGeneralModel.setHasStorageDomain(true);
AsyncQuery _asyncQuery1 = new AsyncQuery();
_asyncQuery1.setModel(vmGeneralModel);
_asyncQuery1.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model1, Object ReturnValue1)
{
VmGeneralModel vmGeneralModel1 = (VmGeneralModel)model1;
storage_domains storage = (storage_domains)((VdcQueryReturnValue)ReturnValue1).getReturnValue();
vmGeneralModel1.setStorageDomain(storage.getstorage_name());
vmGeneralModel1.getUpdateCompleteEvent().raise(this, EventArgs.Empty);
}};
DiskImage firstDisk = (DiskImage)disksIterator.next();
StorageDomainQueryParametersBase params = new StorageDomainQueryParametersBase(firstDisk.getstorage_id().getValue());
params.setRefresh(false);
Frontend.RunQuery(VdcQueryType.GetStorageDomainById, params, _asyncQuery1);
}
else
{
vmGeneralModel.setHasStorageDomain(false);
vmGeneralModel.getUpdateCompleteEvent().raise(this, EventArgs.Empty);
}
}};
VM vm = (VM)getEntity();
GetAllDisksByVmIdParameters params = new GetAllDisksByVmIdParameters(vm.getvm_guid());
params.setRefresh(false);
Frontend.RunQuery(VdcQueryType.GetAllDisksByVmId, params, _asyncQuery);
}
//TODO: Find a better place for this code. It must be something common,
//allowing using of converters' code available in UICommon.
public String PriorityToString(int value)
{
int highPriority = DataProvider.GetMaxVmPriority();
int roundedPriority = DataProvider.RoundPriority(value);
if (roundedPriority == 1)
{
return "Low";
}
else if (roundedPriority == DataProvider.GetMaxVmPriority() / 2)
{
return "Medium";
}
else if (roundedPriority == DataProvider.GetMaxVmPriority())
{
return "High";
}
else
{
return "Unknown";
}
}
}