package org.ovirt.engine.core.bll.gluster;
import java.util.Map;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.action.gluster.GlusterVolumeGeoRepSessionConfigParameters;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterGeoRepSession;
import org.ovirt.engine.core.common.constants.gluster.GlusterConstants;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
import org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeGeoRepConfigVdsParameters;
public class ResetDefaultGeoRepConfigCommand extends GeoRepSessionCommandBase<GlusterVolumeGeoRepSessionConfigParameters> {
@Inject
private GlusterGeoRepSyncJob glusterGeoRepSyncJob;
public ResetDefaultGeoRepConfigCommand(GlusterVolumeGeoRepSessionConfigParameters params, CommandContext context) {
super(params, context);
}
@Override
protected void init() {
super.init();
setGlusterVolumeId(getGeoRepSession().getMasterVolumeId());
}
@Override
protected void executeCommand() {
GlusterGeoRepSession session = getGeoRepSession();
VDSReturnValue returnValue =
runVdsCommand(VDSCommandType.SetGlusterVolumeGeoRepConfigDefault,
new GlusterVolumeGeoRepConfigVdsParameters(upServer.getId(),
session.getMasterVolumeName(),
session.getSlaveHostName(),
session.getSlaveVolumeName(),
getParameters().getConfigKey(),
null,
session.getUserName()));
glusterGeoRepSyncJob.updateDiscoveredSessionConfig(getCluster(), session);
setSucceeded(returnValue.getSucceeded());
if (!getSucceeded()) {
handleVdsError(AuditLogType.GLUSTER_GEOREP_CONFIG_SET_DEFAULT_FAILED, returnValue.getVdsError()
.getMessage());
return;
}
}
@Override
public Map<String, String> getCustomValues() {
addCustomValue(GlusterConstants.OPTION_KEY, getParameters().getConfigKey());
addCustomValue(GlusterConstants.GEO_REP_SESSION_KEY, getGeoRepSession().getSessionKey());
return super.getCustomValues();
}
@Override
protected void setActionMessageParameters() {
addValidationMessage(EngineMessage.VAR__ACTION__RESET);
addValidationMessage(EngineMessage.VAR__TYPE__GLUSTER_GEOREP_CONFIG);
}
@Override
public AuditLogType getAuditLogTypeValue() {
if (getSucceeded()) {
return AuditLogType.GLUSTER_GEOREP_CONFIG_SET_DEFAULT;
} else {
return errorType == null ? AuditLogType.GLUSTER_GEOREP_CONFIG_SET_DEFAULT_FAILED : errorType;
}
}
}