package org.ovirt.engine.ui.uicommon.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.uicommon.*; import org.ovirt.engine.ui.uicommon.models.*; import org.ovirt.engine.core.common.*; import org.ovirt.engine.ui.uicommon.dataprovider.*; import org.ovirt.engine.ui.uicommon.validation.*; import org.ovirt.engine.ui.uicompat.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.ui.uicommon.*; import org.ovirt.engine.ui.uicommon.models.*; @SuppressWarnings("unused") public class TemplateVmModelBehavior extends IVmModelBehavior { private VmTemplate template; public TemplateVmModelBehavior(VmTemplate template) { this.template = template; } @Override public void Initialize(SystemTreeItemModel systemTreeSelectedItem) { super.Initialize(systemTreeSelectedItem); getModel().getTemplate().setIsChangable(false); getModel().getProvisioning().setIsChangable(false); getModel().getStorageDomain().setIsChangable(false); if (template.getstorage_pool_id() != null && !template.getstorage_pool_id().getValue().equals(Guid.Empty)) { AsyncDataProvider.GetDataCenterById(new AsyncQuery(getModel(), new INewAsyncCallback() { @Override public void OnSuccess(Object target, Object returnValue) { UnitVmModel model = (UnitVmModel)target; storage_pool dataCenter = (storage_pool)returnValue; model.SetDataCenter(model, new java.util.ArrayList<storage_pool>(java.util.Arrays.asList(new storage_pool[] { dataCenter }))); model.getDataCenter().setIsChangable(false); } }, getModel().getHash()), template.getstorage_pool_id().getValue()); } } @Override public void DataCenter_SelectedItemChanged() { storage_pool dataCenter = (storage_pool)getModel().getDataCenter().getSelectedItem(); getModel().setIsHostAvailable(dataCenter.getstorage_pool_type() != StorageType.LOCALFS); AsyncDataProvider.GetClusterList(new AsyncQuery(new Object[] { this, getModel() }, new INewAsyncCallback() { @Override public void OnSuccess(Object target, Object returnValue) { Object[] array = (Object[])target; TemplateVmModelBehavior behavior = (TemplateVmModelBehavior)array[0]; UnitVmModel model = (UnitVmModel)array[1]; VmTemplate vmTemplate = ((TemplateVmModelBehavior)(array[0])).template; java.util.ArrayList<VDSGroup> clusters = (java.util.ArrayList<VDSGroup>)returnValue; model.SetClusters(model, clusters, vmTemplate.getvds_group_id().getValue()); behavior.InitTemplate(); behavior.InitCdImage(); } }, getModel().getHash()), dataCenter.getId()); } @Override public void Template_SelectedItemChanged() { //Leave this method empty. Not relevant for template. } @Override public void Cluster_SelectedItemChanged() { UpdateDefaultHost(); UpdateNumOfSockets(); } @Override public void DefaultHost_SelectedItemChanged() { UpdateCdImage(); } @Override public void Provisioning_SelectedItemChanged() { } @Override public void UpdateMinAllocatedMemory() { } private void InitTemplate() { //Update model state according to VM properties. getModel().getName().setEntity(this.template.getname()); getModel().getDescription().setEntity(this.template.getdescription()); getModel().getMemSize().setEntity(this.template.getmem_size_mb()); getModel().getOSType().setSelectedItem(this.template.getos()); getModel().getDomain().setSelectedItem(this.template.getdomain()); getModel().getUsbPolicy().setSelectedItem(this.template.getusb_policy()); getModel().getNumOfMonitors().setSelectedItem(this.template.getnum_of_monitors()); getModel().setBootSequence(this.template.getdefault_boot_sequence()); getModel().getIsHighlyAvailable().setEntity(this.template.getauto_startup()); getModel().getNumOfSockets().setEntity(this.template.getnum_of_sockets()); getModel().getTotalCPUCores().setEntity(this.template.getnum_of_cpus()); getModel().getIsStateless().setEntity(this.template.getis_stateless()); getModel().getKernel_parameters().setEntity(this.template.getkernel_params()); getModel().getKernel_path().setEntity(this.template.getkernel_url()); getModel().getInitrd_path().setEntity(this.template.getinitrd_url()); if (!StringHelper.isNullOrEmpty(template.gettime_zone())) { //Patch! Create key-value pair with a right key. getModel().getTimeZone().setSelectedItem(new KeyValuePairCompat<String, String>(template.gettime_zone(), "")); UpdateTimeZone(); } else { UpdateDefaultTimeZone(); } // Update domain list UpdateDomain(); //Storage domain and provisioning are not available for an existing VM. getModel().getStorageDomain().setIsChangable(false); getModel().getProvisioning().setIsAvailable(false); //Select display protocol. for (Object item : getModel().getDisplayProtocol().getItems()) { EntityModel model = (EntityModel)item; DisplayType displayType = (DisplayType)model.getEntity(); if (displayType == this.template.getdefault_display_type()) { getModel().getDisplayProtocol().setSelectedItem(item); break; } } InitPriority(this.template.getpriority()); } private void InitCdImage() { getModel().getCdImage().setSelectedItem(template.getiso_path()); getModel().getCdImage().setIsChangable(!StringHelper.isNullOrEmpty(template.getiso_path())); UpdateCdImage(); } }