rhtyd closed pull request #2911: Unify templates/ISOs checksum API output
URL: https://github.com/apache/cloudstack/pull/2911
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
index 4f1984257ed..c0d57d7e4af 100644
--- a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
+++ b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
@@ -25,6 +25,7 @@
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 TemplateResponse newTemplateResponse(ResponseView
view, TemplateJoinVO te
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 TemplateResponse newIsoResponse(TemplateJoinVO iso) {
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());
diff --git
a/utils/src/main/java/org/apache/cloudstack/utils/security/DigestHelper.java
b/utils/src/main/java/org/apache/cloudstack/utils/security/DigestHelper.java
index 40b0c1c8def..f856b1f2892 100644
--- a/utils/src/main/java/org/apache/cloudstack/utils/security/DigestHelper.java
+++ b/utils/src/main/java/org/apache/cloudstack/utils/security/DigestHelper.java
@@ -116,4 +116,19 @@ public static void validateChecksumString(String checksum)
{
}
}
}
+
+ /**
+ * 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;
+ }
}
diff --git
a/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java
b/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java
index 4a6e3f7960a..eac234ef2fc 100644
---
a/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java
+++
b/utils/src/test/java/org/apache/cloudstack/utils/security/DigestHelperTest.java
@@ -26,6 +26,9 @@
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 @@
@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 void testChecksumSanityPrefixWrongChecksumLength() {
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
\ No newline at end of file
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services