@Override
public Answer execute(final ResizeVolumeCommand command, final CitrixResourceBase citrixResourceBase) {
Connection conn = citrixResourceBase.getConnection();
String volId = command.getPath();
long newSize = command.getNewSize();
try {
if (command.getCurrentSize() >= newSize) {
s_logger.info("No need to resize volume: " + volId +", current size " + command.getCurrentSize() + " is same as new size " + newSize);
return new ResizeVolumeAnswer(command, true, "success", newSize);
}
if (command.isManaged()) {
resizeSr(conn, command);
}
VDI vdi = citrixResourceBase.getVDIbyUuid(conn, volId);
vdi.resize(conn, newSize);
return new ResizeVolumeAnswer(command, true, "success", newSize);
} catch (Exception ex) {
s_logger.warn("Unable to resize volume", ex);
String error = "Failed to resize volume: " + ex;
return new ResizeVolumeAnswer(command, false, error);
}
}