package org.ovirt.engine.ui.uicommonweb.models.vms;
import java.util.ArrayList;
import java.util.List;
import org.ovirt.engine.core.common.action.AddVmInterfaceParameters;
import org.ovirt.engine.core.common.action.RemoveVmInterfaceParameters;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.action.VmOperationParameterBase;
import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.ui.frontend.AsyncQuery;
import org.ovirt.engine.ui.frontend.Frontend;
import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
public class VmInterfaceCreatingManager extends BaseInterfaceCreatingManager {
public VmInterfaceCreatingManager(PostVnicCreatedCallback callback) {
super(callback);
}
@Override
protected VdcActionParametersBase createAddInterfaceParameter(Guid id, VmNetworkInterface editedVnic) {
editedVnic.setVmTemplateId(null);
return new AddVmInterfaceParameters(id, editedVnic);
}
@Override
protected VdcActionParametersBase createRemoveInterfaceParameter(Guid id, Guid nicId) {
return new RemoveVmInterfaceParameters(id, nicId);
}
protected void getNics(final AsyncQuery<List<VmNetworkInterface>> getNicsQuery, final Guid vmId, final UnitVmModel unitVmModel) {
AsyncDataProvider.getInstance().getNicTypeList(unitVmModel.getOSType().getSelectedItem(),
unitVmModel.getDataCenterWithClustersList().getSelectedItem().getCluster().getCompatibilityVersion(),
new AsyncQuery<>(returnValue -> {
defaultType = AsyncDataProvider.getInstance().getDefaultNicType(returnValue);
supportedInterfaceTypes = returnValue;
AsyncDataProvider.getInstance().getVmNicList(getNicsQuery, vmId);
}));
}
@Override
protected void doNicManipulation(
final ArrayList<VdcActionParametersBase> createVnicParameters,
final ArrayList<VdcActionParametersBase> updateVnicParameters,
final ArrayList<VdcActionParametersBase> removeVnicParameters,
final boolean isAddingNewVm,
final Guid id,
final UnitVmModel unitVmModel) {
Frontend.getInstance().runMultipleActions(VdcActionType.AddVmInterface,
createVnicParameters,
addInterfaceResult ->
Frontend.getInstance().runMultipleActions(VdcActionType.UpdateVmInterface,
updateVnicParameters,
updateInterfaceResult-> Frontend.getInstance().runMultipleActions(VdcActionType.RemoveVmInterface,
removeVnicParameters,
removeInterfaceResult -> {
if (isAddingNewVm) {
VmOperationParameterBase reorderParams = new VmOperationParameterBase(id);
Frontend.getInstance().runAction(VdcActionType.ReorderVmNics, reorderParams,
reorderResult -> getCallback().vnicCreated(id, unitVmModel));
} else {
getCallback().vnicCreated(id, unitVmModel);
}
},
this),
this),
this);
}
}