package org.ovirt.engine.core.bll.network.dc;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.CommandBase;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.bll.utils.PermissionSubject;
import org.ovirt.engine.core.bll.validator.NetworkValidator;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.VdcObjectType;
import org.ovirt.engine.core.common.action.AddNetworkStoragePoolParameters;
import org.ovirt.engine.core.common.action.UnlabelNetworkParameters;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.action.VdcReturnValueBase;
import org.ovirt.engine.core.common.businessentities.network.Network;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.VmDao;
import org.ovirt.engine.core.dao.network.NetworkDao;
public class UnlabelNetworkCommand<T extends UnlabelNetworkParameters> extends CommandBase<T> {
@Inject
private NetworkDao networkDao;
@Inject
private VmDao vmDao;
private Network network;
public UnlabelNetworkCommand(T parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
}
@Override
protected void init() {
super.init();
setStoragePoolId(getNetwork() == null ? null : getNetwork().getDataCenterId());
}
@Override
protected void executeCommand() {
getNetwork().setLabel(null);
VdcReturnValueBase result = runInternalAction(VdcActionType.UpdateNetwork,
new AddNetworkStoragePoolParameters(getNetwork().getDataCenterId(), getNetwork()));
if (!result.getSucceeded()) {
propagateFailure(result);
}
setSucceeded(result.getSucceeded());
}
@Override
protected void setActionMessageParameters() {
addValidationMessage(EngineMessage.VAR__TYPE__LABEL);
addValidationMessage(EngineMessage.VAR__ACTION__REMOVE);
}
@Override
protected boolean validate() {
NetworkValidator validatorNew = new NetworkValidator(vmDao, getNetwork());
return validate(validatorNew.networkIsSet(getParameters().getNetworkId()));
}
@Override
public AuditLogType getAuditLogTypeValue() {
return getSucceeded() ? AuditLogType.UNLABEL_NETWORK : AuditLogType.UNLABEL_NETWORK_FAILED;
}
private Network getNetwork() {
if (network == null) {
network = networkDao.get(getParameters().getNetworkId());
}
return network;
}
public String getNetworkName() {
return getNetwork().getName();
}
@Override
public List<PermissionSubject> getPermissionCheckSubjects() {
Guid networkId = getNetwork() == null ? null : getNetwork().getId();
return Collections.singletonList(new PermissionSubject(networkId,
VdcObjectType.Network,
getActionType().getActionGroup()));
}
}