package org.ovirt.engine.core.bll;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.action.ChangeDiskCommandParameters;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.vdscommands.ChangeDiskVDSCommandParameters;
import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
import org.ovirt.engine.core.compat.StringHelper;
import org.ovirt.engine.core.compat.backendcompat.Path;
import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogField;
import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogFields;
@CustomLogFields({ @CustomLogField("DiskName") })
public class ChangeFloppyCommand<T extends ChangeDiskCommandParameters> extends VmOperationCommandBase<T> {
private String mCdImagePath;
public ChangeFloppyCommand(T parameters) {
super(parameters);
mCdImagePath = ImagesHandler.cdPathWindowsToLinux(parameters.getCdImagePath(), getVm().getstorage_pool_id());
}
public String getDiskName() {
return Path.GetFileName(mCdImagePath);
}
@Override
protected void Perform() {
if (VM.isStatusUpOrPaused(getVm().getstatus())) {
setActionReturnValue(Backend
.getInstance()
.getResourceManager()
.RunVdsCommand(VDSCommandType.ChangeFloppy,
new ChangeDiskVDSCommandParameters(getVdsId(), getVm().getvm_guid(), mCdImagePath))
.getReturnValue());
setSucceeded(true);
}
}
@Override
public AuditLogType getAuditLogTypeValue() {
return getSucceeded() ? StringHelper.EqOp(mCdImagePath, "") ? AuditLogType.USER_EJECT_VM_FLOPPY
: AuditLogType.USER_CHANGE_FLOPPY_VM : AuditLogType.USER_FAILED_CHANGE_FLOPPY_VM;
}
}