package org.ovirt.engine.core.bll.network.host;
import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute;
import org.ovirt.engine.core.bll.VdsCommand;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.common.action.HostSetupNetworksParameters;
import org.ovirt.engine.core.common.action.NetworkAttachmentParameters;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.action.VdcReturnValueBase;
import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.common.validation.group.UpdateEntity;
@NonTransactiveCommandAttribute
public class UpdateNetworkAttachmentCommand<T extends NetworkAttachmentParameters> extends VdsCommand<T> {
public UpdateNetworkAttachmentCommand(T parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
addValidationGroup(UpdateEntity.class);
}
@Override
protected boolean validate() {
NetworkAttachment networkAttachment = getParameters().getNetworkAttachment();
if (networkAttachment == null) {
return failValidation(EngineMessage.NETWORK_ATTACHMENT_NOT_SPECIFIED);
}
if (networkAttachment.getId() == null) {
return failValidation(EngineMessage.NETWORK_ATTACHMENT_WHEN_UPDATING_YOU_HAVE_TO_PROVIDE_ID);
}
return true;
}
@Override
protected void executeCommand() {
HostSetupNetworksParameters params = new HostSetupNetworksParameters(getParameters().getVdsId());
params.getNetworkAttachments().add(getParameters().getNetworkAttachment());
VdcReturnValueBase returnValue = runInternalAction(VdcActionType.HostSetupNetworks, params);
propagateFailure(returnValue);
setSucceeded(returnValue.getSucceeded());
}
}