package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; import org.ovirt.engine.core.common.action.AddVmInterfaceParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmBase; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; import org.ovirt.engine.ui.uicommonweb.models.IModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; public class NewVmInterfaceModel extends VmInterfaceModel { public static NewVmInterfaceModel createInstance(VmBase vm, VMStatus vmStatus, Guid dcId, Version clusterCompatibilityVersion, ArrayList<VmNetworkInterface> vmNicList, IModel sourceModel) { NewVmInterfaceModel instance = new NewVmInterfaceModel(vm, vmStatus, dcId, clusterCompatibilityVersion, vmNicList, sourceModel); instance.init(); return instance; } protected NewVmInterfaceModel(VmBase vm, VMStatus vmStatus, Guid dcId, Version clusterCompatibilityVersion, ArrayList<VmNetworkInterface> vmNicList, IModel sourceModel) { super(vm, vmStatus, dcId, clusterCompatibilityVersion, vmNicList, sourceModel, new NewProfileBehavior()); setTitle(ConstantsManager.getInstance().getConstants().newNetworkInterfaceTitle()); setHelpTag(HelpTag.new_network_interface_vms); setHashName("new_network_interface_vms"); //$NON-NLS-1$ } @Override protected void init() { AsyncDataProvider.getInstance().getNicTypeList(getVm().getOsId(), getClusterCompatibilityVersion(), new AsyncQuery<>( returnValue -> { setSupportedVnicTypes(returnValue); postNicInit(); })); } private void postNicInit() { getName().setEntity(AsyncDataProvider.getInstance().getNewNicName(getVmNicList())); initMAC(); if (!allowPlug()) { getPlugged().setChangeProhibitionReason(ConstantsManager.getInstance() .getMessages() .nicHotPlugNotSupported(getClusterCompatibilityVersion().toString())); } getPlugged().setIsChangeable(allowPlug()); getPlugged().setEntity(allowPlug()); initLinked(); initProfiles(); initCommands(); } @Override protected VmNetworkInterface createBaseNic() { return new VmNetworkInterface(); } @Override protected VdcActionType getVdcActionType() { return VdcActionType.AddVmInterface; } @Override protected String getDefaultMacAddress() { return ""; //$NON-NLS-1$ } @Override protected void initSelectedType() { final VmInterfaceType defaultNicType = getDefaultNicTypeByProfile(); if (getNicType().getItems() == null) { getNicType().setItems(getSupportedVnicTypes(), defaultNicType); } else { getNicType().setSelectedItem(defaultNicType); } } @Override protected void initMAC() { getMAC().setIsChangeable(false); } @Override protected void initLinked() { getLinked().setEntity(true); } @Override protected VdcActionParametersBase createVdcActionParameters(VmNetworkInterface nicToSave) { return new AddVmInterfaceParameters(getVm().getId(), nicToSave); } protected VmNetworkInterface getNic() { // no nic for new return null; } }