package org.ovirt.engine.core.vdsbroker;
import org.ovirt.engine.core.common.businessentities.VmDevice;
import org.ovirt.engine.core.common.utils.ToStringBuilder;
import org.ovirt.engine.core.common.vdscommands.VdsAndVmIDVDSParametersBase;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.vdsbroker.architecture.MemoryUtils;
import org.ovirt.engine.core.vdsbroker.vdsbroker.VdsBrokerCommand;
public class SetAmountOfMemoryVDSCommand <P extends SetAmountOfMemoryVDSCommand.Params> extends VdsBrokerCommand<P> {
public SetAmountOfMemoryVDSCommand(P parameters) {
super(parameters);
}
@Override
protected void executeVdsBrokerCommand() {
try {
status = getBroker().hotplugMemory(
MemoryUtils.createVmMemoryDeviceMap(getParameters().getMemoryDevice(), false));
proceedProxyReturnValue();
} catch (RuntimeException e) {
setVdsRuntimeErrorAndReport(e);
// prevent exception handler from rethrowing an exception
getVDSReturnValue().setExceptionString(null);
}
}
public static class Params extends VdsAndVmIDVDSParametersBase {
private VmDevice memoryDevice;
public Params(Guid vdsId, Guid vmId, VmDevice memoryDevice) {
super(vdsId, vmId);
this.memoryDevice = memoryDevice;
}
public VmDevice getMemoryDevice() {
return memoryDevice;
}
@Override
protected ToStringBuilder appendAttributes(ToStringBuilder tsb) {
return super.appendAttributes(tsb)
.append("memoryDevice", getMemoryDevice());
}
}
}