package org.ovirt.engine.ui.uicommonweb.builders.vm;
import org.ovirt.engine.core.common.businessentities.StorageDomain;
import org.ovirt.engine.core.common.businessentities.VmBase;
import org.ovirt.engine.ui.uicommonweb.builders.CompositeSyncBuilder;
import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
/**
* Maps properties that are common to non-pool VMs and Templates. Thus explicitly is used
* only when New Template dialogue is created (in UserPortalListModel and VmListModel).
*
* This builder is further subsumed by {@link FullUnitToVmBaseBuilder}
* that performs full mapping of VmBase fields.
*/
public class CommonUnitToVmBaseBuilder<T extends VmBase> extends CompositeSyncBuilder<UnitVmModel, T> {
public CommonUnitToVmBaseBuilder() {
super(
new CoreUnitToVmBaseBuilder(),
new QuotaUnitToVmBaseBuilder<T>(),
new CpuProfileUnitToVmBaseBuilder<T>(),
new NumaUnitToVmBaseBuilder<T>()
);
}
@Override
protected void postBuild(UnitVmModel model, VmBase vm) {
vm.setAutoStartup(model.getIsHighlyAvailable().getEntity());
vm.setComment(model.getComment().getEntity());
vm.setDescription(model.getDescription().getEntity());
vm.setPriority(model.getPriority().getSelectedItem().getEntity());
vm.setRunAndPause(model.getIsRunAndPause().getEntity());
vm.setStateless(model.getIsStateless().getEntity());
StorageDomain leaseSd = model.getLease().getSelectedItem();
vm.setLeaseStorageDomainId(leaseSd != null ? leaseSd.getId() : null);
}
}