package org.ovirt.engine.core.vdsbroker;
import org.ovirt.engine.core.common.businessentities.VmDevice;
import org.ovirt.engine.core.common.vdscommands.VdsIdVDSCommandParametersBase;
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 HotUnplugMemoryVDSCommand<P extends HotUnplugMemoryVDSCommand.Params> extends VdsBrokerCommand<P> {
public HotUnplugMemoryVDSCommand(P parameters) {
super(parameters);
}
@Override
protected void executeVdsBrokerCommand() {
try {
status = getBroker().hotUnplugMemory(
MemoryUtils.createVmMemoryDeviceMap(getParameters().getMemoryDeviceToUnplug(), true));
proceedProxyReturnValue();
} catch (RuntimeException e) {
setVdsRuntimeErrorAndReport(e);
// prevent exception handler from rethrowing an exception
getVDSReturnValue().setExceptionString(null);
}
}
public static class Params extends VdsIdVDSCommandParametersBase {
private final VmDevice memoryDeviceToUnplug;
public Params(Guid vdsId, VmDevice memoryDeviceToUnplug) {
super(vdsId);
this.memoryDeviceToUnplug = memoryDeviceToUnplug;
}
public VmDevice getMemoryDeviceToUnplug() {
return memoryDeviceToUnplug;
}
}
}