Merge pull request #317 from nsacyber/update-component-failure-highlight

[#316] Update component failure highlight
This commit is contained in:
Cyrus 2020-11-19 10:56:06 -05:00 committed by GitHub
commit d99bb1039c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 19 deletions

View File

@ -84,6 +84,7 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe
private static final Logger LOGGER
= LogManager.getLogger(SupplyChainValidationServiceImpl.class);
private static final int VALUE_INDEX = 1;
/**
* Constructor.
@ -238,7 +239,8 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe
String.format("%s%n%s", platformScv.getMessage(),
attributeScv.getMessage())));
}
componentFailures = attributeScv.getMessage();
componentFailures = updateUnmatchedComponents(
attributeScv.getMessage());
}
pc.setDevice(device);
@ -270,6 +272,29 @@ public class SupplyChainValidationServiceImpl implements SupplyChainValidationSe
return summary;
}
private String updateUnmatchedComponents(final String unmatchedString) {
StringBuilder updatedFailures = new StringBuilder();
String manufacturer = "";
String model = "";
for (String rows : unmatchedString.split(";")) {
for (String str : rows.split(",")) {
String[] manufacturerSplit;
String[] modelSplit;
if (str.contains("Manufacturer")) {
manufacturerSplit = str.split("=");
manufacturer = manufacturerSplit[VALUE_INDEX];
}
if (str.contains("Model")) {
modelSplit = str.split("=");
model = modelSplit[VALUE_INDEX];
}
}
updatedFailures.append(String.format("%s%s;", manufacturer, model));
}
return updatedFailures.toString();
}
/**
* This method is a sub set of the validate supply chain method and focuses
* on the specific multibase validation check for a delta chain. This method

View File

@ -31,7 +31,6 @@ public final class CertificateStringMapBuilder {
private static final Logger LOGGER =
LogManager.getLogger(CertificateStringMapBuilder.class);
private static final int SERIAL_INDEX = 1;
private CertificateStringMapBuilder() {
@ -341,19 +340,7 @@ public final class CertificateStringMapBuilder {
//CPSuri
data.put("CPSuri", certificate.getCPSuri());
//component failure
StringBuilder savedFailures = new StringBuilder();
String[] serialSplit;
for (String s : certificate.getComponentFailures().split(",")) {
if (s.contains("Serial")) {
serialSplit = s.split("=");
if (serialSplit.length > SERIAL_INDEX) {
savedFailures.append(serialSplit[SERIAL_INDEX]);
} else {
savedFailures.append(s);
}
}
}
data.put("failures", savedFailures.toString());
data.put("failures", certificate.getComponentFailures());
//Get platform Configuration values and set map with it
PlatformConfiguration platformConfiguration = certificate.getPlatformConfiguration();

View File

@ -614,10 +614,11 @@
<div class="panel-body">
<div id="componentIdentifier" class="row">
<c:forEach items="${initialData.componentsIdentifier}" var="component">
<c:set var="combined" value="${component.getComponentManufacturer()}${component.getComponentModel()}" scope="page"/>
<div class="component col col-md-4">
<div class="panel panel-default">
<c:choose>
<c:when test="${fn:contains(initialData.failures, component.getComponentSerial()) && not empty fn:trim(component.getComponentSerial())}">
<c:when test="${fn:contains(initialData.failures, combined)}">
<div class="panel-heading" style="background-color: red; color: white">
</c:when>
<c:otherwise>

View File

@ -852,11 +852,11 @@ public final class SupplyChainCredentialValidator implements CredentialValidator
LOGGER.error(String.format("Platform Credential contained %d unmatched components:",
pcUnmatchedComponents.size()));
int umatchedComponentCounter = 1;
int unmatchedComponentCounter = 1;
for (ComponentIdentifier unmatchedComponent : pcUnmatchedComponents) {
LOGGER.error("Unmatched component " + umatchedComponentCounter++ + ": "
LOGGER.error("Unmatched component " + unmatchedComponentCounter++ + ": "
+ unmatchedComponent);
sb.append(String.format("Manufacturer=%s, Model=%s, Serial=%s, Revision=%s%n",
sb.append(String.format("Manufacturer=%s, Model=%s, Serial=%s, Revision=%s;%n",
unmatchedComponent.getComponentManufacturer(),
unmatchedComponent.getComponentModel(),
unmatchedComponent.getComponentSerial(),