diff --git a/jobs/pacman-data-shipper/src/main/java/com/tmobile/cso/pacman/datashipper/entity/AssetGroupStatsCollector.java b/jobs/pacman-data-shipper/src/main/java/com/tmobile/cso/pacman/datashipper/entity/AssetGroupStatsCollector.java index 4e8035b15..d42919ecd 100644 --- a/jobs/pacman-data-shipper/src/main/java/com/tmobile/cso/pacman/datashipper/entity/AssetGroupStatsCollector.java +++ b/jobs/pacman-data-shipper/src/main/java/com/tmobile/cso/pacman/datashipper/entity/AssetGroupStatsCollector.java @@ -27,6 +27,9 @@ public class AssetGroupStatsCollector implements Constants{ /** The Constant compApiUri. */ private static final String COMP_API_URL = System.getenv("CMPL_API_URL"); + + /** The Constant compApiUri. */ + private static final String VULN_API_URL = System.getenv("VULN_API_URL"); /** The ag stats. */ @@ -80,6 +83,9 @@ public List> collectAssetGroupStats() { ESManager.createType(AG_STATS, "compliance", errorList); ESManager.createType(AG_STATS, "tagcompliance", errorList); ESManager.createType(AG_STATS, "issues", errorList); + ESManager.createType(AG_STATS, "count_vuln", errorList); + ESManager.createType(AG_STATS, "vulncompliance", errorList); + List assetGroups = new ArrayList<>(assetGroupMap.keySet()); @@ -164,6 +170,25 @@ public List> collectAssetGroupStats() { } } }); + + + executor.execute(() -> { + try { + uploadAssetGroupVulnCompliance(assetGroups); + } catch (Exception e) { + log.error("Exception in uploadAssetGroupVulnCompliance " , e); + Map errorMap = new HashMap<>(); + errorMap.put(ERROR, "Exception in uploadAssetGroupVulnCompliance"); + errorMap.put(ERROR_TYPE, WARN); + errorMap.put(EXCEPTION, e.getMessage()); + synchronized(errorList){ + errorList.add(errorMap); + } + } + }); + + + executor.shutdown(); while (!executor.isTerminated()); @@ -387,4 +412,41 @@ public void uploadAssetGroupIssues(Map> assetGroups) throws ESManager.uploadData(AG_STATS, "issues", docs, "@id", false); log.info(" End Collecing issues"); } + + /** + * Upload asset group vuln compliance. + * + * @param assetGroups the asset groups + * @throws Exception the exception + */ + public void uploadAssetGroupVulnCompliance(List assetGroups) throws Exception { + + + log.info(" Start Collecing vuln compliance"); + List> docs = new ArrayList<>(); + for (String ag : assetGroups) { + try { + Map doc = AssetGroupUtil.fetchVulnSummary(VULN_API_URL, ag, getToken()); + if (!doc.isEmpty()) { + doc.put("ag", ag); + doc.put("date", CURR_DATE); + doc.put("@id", Util.getUniqueID(ag + CURR_DATE)); + docs.add(doc); + } + } catch (Exception e) { + log.error("Exception in uploadAssetGroupVulnCompliance" , e); + Map errorMap = new HashMap<>(); + errorMap.put(ERROR, "Exception in uploadAssetGroupVulnCompliance for Asset Group"+ag); + errorMap.put(ERROR_TYPE, WARN); + errorMap.put(EXCEPTION, e.getMessage()); + synchronized(errorList){ + errorList.add(errorMap); + } + } + } + ESManager.uploadData(AG_STATS, "vulncompliance", docs, "@id", false); + log.info(" End Collecing vuln compliance"); + } + + }