package org.ovirt.engine.ui.uicommonweb.models.vms.instancetypes;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import org.ovirt.engine.core.common.businessentities.DisplayType;
import org.ovirt.engine.core.common.businessentities.GraphicsType;
import org.ovirt.engine.core.common.businessentities.VmRngDevice;
import org.ovirt.engine.core.common.businessentities.VmWatchdogType;
import org.ovirt.engine.core.common.utils.Pair;
import org.ovirt.engine.core.compat.Version;
import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel;
import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
import org.ovirt.engine.ui.uicommonweb.models.vms.VmModelBehaviorBase;
public class NonClusterModelBehaviorBase extends VmModelBehaviorBase<UnitVmModel> {
@Override
public void initialize(SystemTreeItemModel systemTreeSelectedItem) {
super.initialize(systemTreeSelectedItem);
getModel().getIsVirtioScsiEnabled().setIsAvailable(true);
getModel().getIsVirtioScsiEnabled().setEntity(false);
getModel().getLease().setIsAvailable(false);
getModel().getMemoryBalloonDeviceEnabled().setIsAvailable(true);
getModel().updateWatchdogItems(new HashSet<>(Arrays.asList(VmWatchdogType.values())));
// no cluster data - init list to 'use cluster default' option
getModel().getEmulatedMachine().setItems(Arrays.asList("")); //$NON-NLS-1$
getModel().getCustomCpu().setItems(Arrays.asList("")); //$NON-NLS-1$
}
protected void initDisplayTypes(DisplayType selected, UnitVmModel.GraphicsTypes selectedGrahicsTypes) {
getModel().getDisplayType().getSelectedItemChangedEvent().addListener((ev, sender, args) -> enableSinglePCI(getModel().getDisplayType().getSelectedItem() == DisplayType.qxl));
List<Pair<GraphicsType, DisplayType>> allGraphicsAndDisplays = new ArrayList<>();
for (GraphicsType graphicsType : GraphicsType.values()) {
for (DisplayType displayType : DisplayType.values()) {
if (displayType != DisplayType.none) {
allGraphicsAndDisplays.add(new Pair<>(graphicsType, displayType));
}
}
}
getModel().initDisplayModels(allGraphicsAndDisplays);
initGraphicsModel(selectedGrahicsTypes);
if (getModel().getDisplayType().getItems().contains(selected)) {
getModel().getDisplayType().setSelectedItem(selected);
}
if (selected == DisplayType.none) {
getModel().getDisplayType().setSelectedItem(DisplayType.qxl);
getModel().getGraphicsType().setSelectedItem(UnitVmModel.GraphicsTypes.SPICE);
getModel().getIsHeadlessModeEnabled().setEntity(true);
}
}
private void initGraphicsModel(UnitVmModel.GraphicsTypes selectedGrahicsTypes) {
List graphicsTypes = new ArrayList();
graphicsTypes.add(UnitVmModel.GraphicsTypes.SPICE);
graphicsTypes.add(UnitVmModel.GraphicsTypes.VNC);
graphicsTypes.add(UnitVmModel.GraphicsTypes.SPICE_AND_VNC);
getModel().getGraphicsType().setItems(graphicsTypes);
getModel().getGraphicsType().setSelectedItem(selectedGrahicsTypes);
}
@Override
protected Version getCompatibilityVersion() {
return latestCluster();
}
@Override
public void postDataCenterWithClusterSelectedItemChanged() {
}
@Override
public void defaultHost_SelectedItemChanged() {
}
@Override
public void provisioning_SelectedItemChanged() {
}
@Override public int getMaxNameLength() {
return UnitVmModel.VM_TEMPLATE_AND_INSTANCE_TYPE_NAME_MAX_LIMIT;
}
@Override
public VmRngDevice.Source getUrandomOrRandomRngSource() {
return VmRngDevice.Source.URANDOM;
}
}