server: Unify templates/ISOs checksum API output (#2911)

Unify checksum API output for templates and ISOs: not list the checksum algorithm on:
KVM direct downloads

On in progress normal template downloads. The algorithm is shown on the listtemplates API, but after it is downloaded it is not shown anymore.
This commit is contained in:
Nicolas Vazquez 2018-10-21 14:03:04 -03:00 committed by Rohit Yadav
parent 5ce14df31f
commit 5cf163d888
3 changed files with 46 additions and 5 deletions

View File

@ -25,6 +25,7 @@ import java.util.Set;
import javax.inject.Inject;
import org.apache.cloudstack.utils.security.DigestHelper;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
@ -188,7 +189,7 @@ public class TemplateJoinDaoImpl extends GenericDaoBaseWithTagInformation<Templa
templateResponse.setPhysicalSize(templatePhysicalSize);
}
templateResponse.setChecksum(template.getChecksum());
templateResponse.setChecksum(DigestHelper.getHashValueFromChecksumValue(template.getChecksum()));
if (template.getSourceTemplateId() != null) {
templateResponse.setSourceTemplateId(template.getSourceTemplateUuid());
}
@ -320,7 +321,7 @@ public class TemplateJoinDaoImpl extends GenericDaoBaseWithTagInformation<Templa
isoResponse.setFeatured(iso.isFeatured());
isoResponse.setCrossZones(iso.isCrossZones());
isoResponse.setPublic(iso.isPublicTemplate());
isoResponse.setChecksum(iso.getChecksum());
isoResponse.setChecksum(DigestHelper.getHashValueFromChecksumValue(iso.getChecksum()));
isoResponse.setOsTypeId(iso.getGuestOSUuid());
isoResponse.setOsTypeName(iso.getGuestOSName());

View File

@ -116,4 +116,19 @@ public class DigestHelper {
}
}
}
/**
* True if the algorithm is present on the checksum value. Format: {ALG}HASH
*/
protected static boolean isAlgorithmPresent(String checksum) {
return StringUtils.isNotBlank(checksum) && checksum.contains("{") && checksum.contains("}") &&
checksum.indexOf("{") == 0 && checksum.indexOf("}") > checksum.indexOf("{");
}
/**
* Returns the checksum HASH from the checksum value which can have the following formats: {ALG}HASH or HASH
*/
public static String getHashValueFromChecksumValue(String checksum) {
return isAlgorithmPresent(checksum) ? new ChecksumValue(checksum).getChecksum() : checksum;
}
}

View File

@ -26,6 +26,9 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class DigestHelperTest {
private final static String INPUT_STRING = "01234567890123456789012345678901234567890123456789012345678901234567890123456789\n";
@ -46,17 +49,17 @@ public class DigestHelperTest {
@Test
public void check_SHA256() throws Exception {
Assert.assertTrue(DigestHelper.check(SHA256_CHECKSUM, inputStream));
assertTrue(DigestHelper.check(SHA256_CHECKSUM, inputStream));
}
@Test
public void check_SHA1() throws Exception {
Assert.assertTrue(DigestHelper.check(SHA1_CHECKSUM, inputStream));
assertTrue(DigestHelper.check(SHA1_CHECKSUM, inputStream));
}
@Test
public void check_MD5() throws Exception {
Assert.assertTrue(DigestHelper.check(MD5_CHECKSUM, inputStream));
assertTrue(DigestHelper.check(MD5_CHECKSUM, inputStream));
}
@Test
@ -127,6 +130,28 @@ public class DigestHelperTest {
String checksum = SHA256_CHECKSUM + "XXXXX";
DigestHelper.validateChecksumString(checksum);
}
@Test
public void testIsAlgorithmPresentPositiveCase() {
assertTrue(DigestHelper.isAlgorithmSupported(SHA256_CHECKSUM));
}
@Test
public void testIsAlgorithmPresentnegativeCase() {
assertTrue(DigestHelper.isAlgorithmSupported(SHA256_NO_PREFIX_CHECKSUM));
}
@Test
public void testGetHashValueFromChecksumValuePrefixPresent() {
String checksum = DigestHelper.getHashValueFromChecksumValue(SHA256_CHECKSUM);
assertEquals(SHA256_NO_PREFIX_CHECKSUM, checksum);
}
@Test
public void testGetHashValueFromChecksumValueNoPrefixPresent() {
String checksum = DigestHelper.getHashValueFromChecksumValue(SHA256_NO_PREFIX_CHECKSUM);
assertEquals(SHA256_NO_PREFIX_CHECKSUM, checksum);
}
}
//Generated with love by TestMe :) Please report issues and submit feature requests at: http://weirddev.com/forum#!/testme