package org.ovirt.engine.core.bll.gluster;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.InternalCommandAttribute;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.action.gluster.GlusterVolumeActionParameters;
import org.ovirt.engine.core.common.businessentities.Cluster;
import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
import org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeActionVDSParameters;
import org.ovirt.engine.core.dao.ClusterDao;
@InternalCommandAttribute
public class DisableGlusterCliSnapshotScheduleInternalCommand<T extends GlusterVolumeActionParameters> extends GlusterVolumeCommandBase<T> {
@Inject
private ClusterDao clusterDao;
public DisableGlusterCliSnapshotScheduleInternalCommand(T parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
}
@Override
protected void executeCommand() {
Cluster cluster = getCluster();
VDSReturnValue retValue =
runVdsCommand(VDSCommandType.OverrideGlusterVolumeSnapshotSchedule,
new GlusterVolumeActionVDSParameters(getUpServer().getId(),
getGlusterVolumeName(),
getParameters().isForceAction()));
setSucceeded(retValue.getSucceeded());
if (!retValue.getSucceeded()) {
handleVdsError(AuditLogType.GLUSTER_CLI_SNAPSHOT_SCHEDULE_DISABLE_FAILED, retValue.getVdsError()
.getMessage());
} else {
// If force is passed as true, then VDSM verb disables the CLI scheduling as well
// else it just sets the scheduler type as ovirt in. If actual schedule disabling
// is of snapshot schedule happens in gluster side, then only we set the flag
// cliBasedSnapshotSchedulingOn=false and persist in engine side
if (getParameters().isForceAction()) {
cluster.setGlusterCliBasedSchedulingOn(false);
clusterDao.update(cluster);
}
}
}
@Override
public AuditLogType getAuditLogTypeValue() {
if (getSucceeded()) {
return AuditLogType.GLUSTER_CLI_SNAPSHOT_SCHEDULE_DISABLED;
} else {
return errorType == null ? AuditLogType.GLUSTER_CLI_SNAPSHOT_SCHEDULE_DISABLE_FAILED : errorType;
}
}
}