mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CID-1114601/CID-1114602 Fix ignored return values and remove duplicate code
This commit is contained in:
parent
7e58a278a0
commit
22ad646aca
@ -29,12 +29,10 @@ import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.exception.InternalErrorException;
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.storage.StorageLayer;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.component.AdapterBase;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
|
||||
/**
|
||||
* VhdProcessor processes the downloaded template for VHD. It
|
||||
@ -54,92 +52,60 @@ public class VhdProcessor extends AdapterBase implements Processor {
|
||||
private byte[][] citrixCreatorApp = { {0x74, 0x61, 0x70, 0x00}, {0x43, 0x54, 0x58, 0x53}}; /*"tap ", and "CTXS"*/
|
||||
|
||||
@Override
|
||||
public FormatInfo process(String templatePath, ImageFormat format, String templateName) throws InternalErrorException {
|
||||
public FormatInfo process(String templatePath, ImageFormat format, String templateName) {
|
||||
if (format != null) {
|
||||
s_logger.debug("We currently don't handle conversion from " + format + " to VHD.");
|
||||
return null;
|
||||
}
|
||||
|
||||
String vhdPath = templatePath + File.separator + templateName + "." + ImageFormat.VHD.getFileExtension();
|
||||
|
||||
if (!_storage.exists(vhdPath)) {
|
||||
s_logger.debug("Unable to find the vhd file: " + vhdPath);
|
||||
return null;
|
||||
}
|
||||
|
||||
File vhdFile = _storage.getFile(vhdPath);
|
||||
|
||||
FormatInfo info = new FormatInfo();
|
||||
info.format = ImageFormat.VHD;
|
||||
info.filename = templateName + "." + ImageFormat.VHD.getFileExtension();
|
||||
|
||||
File vhdFile = _storage.getFile(vhdPath);
|
||||
|
||||
info.size = _storage.getSize(vhdPath);
|
||||
FileInputStream strm = null;
|
||||
byte[] currentSize = new byte[8];
|
||||
byte[] creatorApp = new byte[4];
|
||||
|
||||
try {
|
||||
strm = new FileInputStream(vhdFile);
|
||||
long skipped = strm.skip(info.size - vhdFooterSize + vhdFooterCreatorAppOffset);
|
||||
if (skipped == -1) {
|
||||
throw new InternalErrorException("Unexpected end-of-file");
|
||||
}
|
||||
long read = strm.read(creatorApp);
|
||||
if (read == -1) {
|
||||
throw new InternalErrorException("Unexpected end-of-file");
|
||||
}
|
||||
skipped = strm.skip(vhdFooterCurrentSizeOffset - vhdFooterCreatorVerOffset);
|
||||
if (skipped == -1) {
|
||||
throw new InternalErrorException("Unexpected end-of-file");
|
||||
}
|
||||
read = strm.read(currentSize);
|
||||
if (read == -1) {
|
||||
throw new InternalErrorException("Unexpected end-of-file");
|
||||
}
|
||||
info.virtualSize = getVirtualSize(vhdFile);
|
||||
} catch (IOException e) {
|
||||
s_logger.warn("Unable to read vhd file " + vhdPath, e);
|
||||
throw new InternalErrorException("Unable to read vhd file " + vhdPath + ": " + e, e);
|
||||
} finally {
|
||||
if (strm != null) {
|
||||
try {
|
||||
strm.close();
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
s_logger.error("Unable to get the virtual size for " + vhdPath);
|
||||
return null;
|
||||
}
|
||||
|
||||
//imageSignatureCheck(creatorApp);
|
||||
|
||||
long templateSize = NumbersUtil.bytesToLong(currentSize);
|
||||
info.virtualSize = templateSize;
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getVirtualSize(File file) {
|
||||
FileInputStream strm = null;
|
||||
public long getVirtualSize(File file) throws IOException {
|
||||
byte[] currentSize = new byte[8];
|
||||
byte[] creatorApp = new byte[4];
|
||||
try {
|
||||
strm = new FileInputStream(file);
|
||||
strm.skip(file.length() - vhdFooterSize + vhdFooterCreatorAppOffset);
|
||||
strm.read(creatorApp);
|
||||
strm.skip(vhdFooterCurrentSizeOffset - vhdFooterCreatorVerOffset);
|
||||
strm.read(currentSize);
|
||||
} catch (Exception e) {
|
||||
s_logger.warn("Unable to read vhd file " + file.getAbsolutePath(), e);
|
||||
throw new CloudRuntimeException("Unable to read vhd file " + file.getAbsolutePath() + ": " + e);
|
||||
} finally {
|
||||
if (strm != null) {
|
||||
try {
|
||||
strm.close();
|
||||
} catch (IOException e) {
|
||||
}
|
||||
|
||||
try (FileInputStream strm = new FileInputStream(file)) {
|
||||
long skipped = strm.skip(file.length() - vhdFooterSize + vhdFooterCreatorAppOffset);
|
||||
if (skipped == -1) {
|
||||
throw new IOException("Unexpected end-of-file");
|
||||
}
|
||||
long read = strm.read(creatorApp);
|
||||
if (read == -1) {
|
||||
throw new IOException("Unexpected end-of-file");
|
||||
}
|
||||
skipped = strm.skip(vhdFooterCurrentSizeOffset - vhdFooterCreatorVerOffset);
|
||||
if (skipped == -1) {
|
||||
throw new IOException("Unexpected end-of-file");
|
||||
}
|
||||
read = strm.read(currentSize);
|
||||
if (read == -1) {
|
||||
throw new IOException("Unexpected end-of-file");
|
||||
}
|
||||
}
|
||||
|
||||
long templateSize = NumbersUtil.bytesToLong(currentSize);
|
||||
return templateSize;
|
||||
return NumbersUtil.bytesToLong(currentSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user