package org.ovirt.engine.ui.uicommonweb.models.vms.instancetypes; import java.util.ArrayList; import java.util.List; import org.ovirt.engine.core.common.action.AddVmTemplateInterfaceParameters; import org.ovirt.engine.core.common.action.RemoveVmTemplateInterfaceParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; 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; import org.ovirt.engine.ui.uicommonweb.models.vms.BaseInterfaceCreatingManager; import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel; import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; public class InstanceTypeInterfaceCreatingManager extends BaseInterfaceCreatingManager { public InstanceTypeInterfaceCreatingManager(PostVnicCreatedCallback callback) { super(callback); } @Override protected VdcActionParametersBase createAddInterfaceParameter(Guid id, VmNetworkInterface editedVnic) { return new AddVmTemplateInterfaceParameters(id, editedVnic); } @Override protected VdcActionParametersBase createRemoveInterfaceParameter(Guid id, Guid nicId) { return new RemoveVmTemplateInterfaceParameters(id, nicId); } @Override protected void getNics(final AsyncQuery<List<VmNetworkInterface>> getNicsQuery, final Guid vmId, final UnitVmModel unitVmModel) { AsyncDataProvider.getInstance().getTemplateNicList(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.AddVmTemplateInterface, createVnicParameters, new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result) { Frontend.getInstance().runMultipleActions(VdcActionType.UpdateVmTemplateInterface, updateVnicParameters, new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result) { Frontend.getInstance().runMultipleActions(VdcActionType.RemoveVmTemplateInterface, removeVnicParameters, r -> { // no need to reorder - it will be done for the VMs when creating from instance type getCallback().vnicCreated(id, unitVmModel); }, this); } }, this); } }, this); } }