public PipelineConfigDependencyGraph upstreamDependencyGraphOf(String pipelineName) { CruiseConfig currentConfig = getCurrentConfig(); return upstreamDependencyGraphOf(pipelineName, currentConfig); }
public Map<Long, List<ModificationForPipeline>> modificationsOfPipelines(List<Long> pipelineIds, String pipelineName, Username username) { Map<Long, List<ModificationForPipeline>> modificationsForPipelineIds = materialRepository.findModificationsForPipelineIds(pipelineIds); PipelineConfigDependencyGraph graph = goConfigService.upstreamDependencyGraphOf(pipelineName); Set<String> allMaterialFingerprints = graph.allMaterialFingerprints(); Set<String> reachableMaterialfingerprints = populateReachableFingerprints(graph, username, true, true); FingerprintLoader<ModificationForPipeline> loader = ModificationForPipeline::getMaterialFingerprint; for (Map.Entry<Long, List<ModificationForPipeline>> pipelineIdAndModifications : modificationsForPipelineIds.entrySet()) { List<ModificationForPipeline> visibleModifications = filterFingerprintHolders(pipelineIdAndModifications.getValue(), reachableMaterialfingerprints, allMaterialFingerprints, loader); pipelineIdAndModifications.setValue(visibleModifications); } return modificationsForPipelineIds; } }
private MaterialRevisions fanInOffTriangleDependency(MaterialRevisions originalMaterialRevisions, CruiseConfig cruiseConfig) { LOGGER.debug("[Revision Resolution] Triangle Resolution is active for pipeline {}", pipelineName); PipelineConfigDependencyGraph dependencyGraph = goConfigService.upstreamDependencyGraphOf(pipelineName, cruiseConfig); if (hasAnyUnsharedMaterialChanged(dependencyGraph, originalMaterialRevisions) || dependencyGraph.isRevisionsOfSharedMaterialsIgnored(originalMaterialRevisions)) { return pipelineService.getRevisionsBasedOnDependencies(dependencyGraph, originalMaterialRevisions); } return null; }
private <T> List<T> filterReachableFingerprintHolders(List<T> allFingerprintHolders, final FingerprintLoader<T> fingerprintLoader, String pipelineName, Username username, boolean skipCheckForMingle, boolean skipTrackingToolMatch) { PipelineConfigDependencyGraph graph = goConfigService.upstreamDependencyGraphOf(pipelineName); Set<String> allMaterialFingerprints = graph.allMaterialFingerprints(); Set<String> reachableMaterialfingerprints = populateReachableFingerprints(graph, username, skipCheckForMingle, skipTrackingToolMatch); return filterFingerprintHolders(allFingerprintHolders, reachableMaterialfingerprints, allMaterialFingerprints, fingerprintLoader); }