private Set<String> populateReachableFingerprints(PipelineConfigDependencyGraph graph, Username username, boolean skipCheckForMingle, boolean skipTrackingToolMatch) { Set<String> fingerprints = new HashSet<>(); populateViewableMaterialsStartingAt(graph, username, fingerprints, graph.getCurrent().getMingleConfig(), graph.getCurrent().trackingTool(), skipCheckForMingle, skipTrackingToolMatch); return fingerprints; }
boolean mingleConfigMatches(PipelineConfig pipeline, MingleConfig mingleConfig) { MingleConfig otherMingleConfig = pipeline.getMingleConfig(); if (isNullOrNotDefined(mingleConfig) || isNullOrNotDefined(otherMingleConfig)) { return true; } return mingleConfig.isDifferentFrom(otherMingleConfig); }
private static void writeTrackingTool(OutputWriter jsonWriter, PipelineConfig pipelineConfig) { if (pipelineConfig.getTrackingTool() != null || pipelineConfig.getMingleConfig().isDefined()) { jsonWriter.addChild("tracking_tool", trackingToolWriter -> TrackingToolRepresenter.toJSON(trackingToolWriter, pipelineConfig)); } else { jsonWriter.renderNull("tracking_tool"); } }
@Test public void shouldPopulateMingleConfigWhenIntegrationTypeIsMingle() { PipelineConfig pipelineConfig = new PipelineConfig(); pipelineConfig.setTrackingTool(new TrackingTool("link", "regex")); Map map = new HashMap(); HashMap valueHashMap = new HashMap(); valueHashMap.put(MingleConfig.BASE_URL, "url"); valueHashMap.put(MingleConfig.PROJECT_IDENTIFIER, "identifier"); valueHashMap.put(MqlCriteria.MQL, "criteria"); valueHashMap.put(MingleConfig.MQL_GROUPING_CONDITIONS, valueHashMap); map.put(PipelineConfig.MINGLE_CONFIG, valueHashMap); map.put(PipelineConfig.INTEGRATION_TYPE, PipelineConfig.INTEGRATION_TYPE_MINGLE); pipelineConfig.setConfigAttributes(map); assertThat(pipelineConfig.getMingleConfig(), is(new MingleConfig("url", "identifier", "criteria"))); assertThat(pipelineConfig.getTrackingTool(), is(nullValue())); assertThat(pipelineConfig.getIntegrationType(), is(PipelineConfig.INTEGRATION_TYPE_MINGLE)); }
public static void toJSON(OutputWriter jsonWriter, PipelineConfig pipelineConfig) { HashMap<String, String> mapping = new HashMap<>(); mapping.put("projectIdentifier", "project_identifier"); mapping.put("baseUrl", "base_url"); mapping.put("link", "url_pattern"); if (pipelineConfig.getMingleConfig().isDefined()) { MingleConfig mingleConfig = pipelineConfig.getMingleConfig(); if (!mingleConfig.errors().isEmpty()) { jsonWriter.addChild("errors", errorWriter -> { new ErrorGetter(mapping).toJSON(errorWriter, mingleConfig); }); } jsonWriter.add("type", "mingle"); jsonWriter.addChild("attributes", attributeWriter -> MingleTrackingToolRepresenter.toJSON(attributeWriter, mingleConfig)); } else if (pipelineConfig.getTrackingTool() != null) { TrackingTool trackingTool = pipelineConfig.getTrackingTool(); if (!trackingTool.errors().isEmpty()) { jsonWriter.addChild("errors", errorWriter -> { new ErrorGetter(mapping).toJSON(errorWriter, trackingTool); }); } jsonWriter.add("type", "generic"); jsonWriter.addChild("attributes", attributeWriter -> ExternalTrackingToolRepresenter.toJSON(attributeWriter, trackingTool)); } }
@Test public void shouldPopulateTrackingToolWhenIntegrationTypeIsTrackingToolAndLinkAndRegexAreDefined() { PipelineConfig pipelineConfig = new PipelineConfig(); pipelineConfig.setMingleConfig(new MingleConfig("baseUri", "go")); HashMap map = new HashMap(); HashMap valueHashMap = new HashMap(); valueHashMap.put("link", "GoleyLink"); valueHashMap.put("regex", "GoleyRegex"); map.put(PipelineConfig.TRACKING_TOOL, valueHashMap); map.put(PipelineConfig.INTEGRATION_TYPE, PipelineConfig.INTEGRATION_TYPE_TRACKING_TOOL); pipelineConfig.setConfigAttributes(map); assertThat(pipelineConfig.getTrackingTool(), is(new TrackingTool("GoleyLink", "GoleyRegex"))); assertThat(pipelineConfig.getMingleConfig(), is(new MingleConfig())); assertThat(pipelineConfig.getIntegrationType(), is(PipelineConfig.INTEGRATION_TYPE_TRACKING_TOOL)); }
public MingleConfig mingleConfigForPipelineNamed(String pipelineName, Username user, HttpLocalizedOperationResult result) { if (!securityService.hasViewPermissionForPipeline(user, pipelineName)) { result.forbidden(LocalizedMessage.forbiddenToViewPipeline(pipelineName), HealthStateType.forbiddenForPipeline(pipelineName)); return null; } PipelineConfig pipelineConfig = goConfigService.pipelineConfigNamed(new CaseInsensitiveString(pipelineName)); MingleConfig mingleConfig = pipelineConfig.getMingleConfig(); return mingleConfig.equals(new MingleConfig()) ? null : mingleConfig; }
@Test public void shouldResetMingleConfigWhenIntegrationTypeIsNone() { PipelineConfig pipelineConfig = new PipelineConfig(); pipelineConfig.setMingleConfig(new MingleConfig("baseUri", "go")); Map map = new HashMap(); map.put(PipelineConfig.INTEGRATION_TYPE, PipelineConfig.INTEGRATION_TYPE_NONE); pipelineConfig.setConfigAttributes(map); assertThat(pipelineConfig.getMingleConfig(), is(new MingleConfig())); assertThat(pipelineConfig.getIntegrationType(), is(PipelineConfig.INTEGRATION_TYPE_NONE)); }
if (config.hasPipelineNamed(new CaseInsensitiveString(pipelineForRev))) { PipelineConfig pipelineConfig = config.pipelineConfigByName(new CaseInsensitiveString(pipelineForRev)); MingleConfig mingleConfig = pipelineConfig.getMingleConfig(); Set<String> cardNos = rev.getCardNumbersFromComments(); if (mingleConfig.isDefined()) {
@Test public void shouldLoadMingleConfigForPipeline() throws Exception { String configWithCommand = withMingleConfig("<mingle baseUrl=\"https://foo.bar/baz\" projectIdentifier=\"cruise-performance\"/>"); MingleConfig mingleConfig = ConfigMigrator.loadWithMigration(configWithCommand).config.pipelineConfigByName(new CaseInsensitiveString("pipeline1")).getMingleConfig(); assertThat(mingleConfig, is(new MingleConfig("https://foo.bar/baz", "cruise-performance"))); configWithCommand = withMingleConfig( "<mingle baseUrl=\"https://foo.bar/baz\" projectIdentifier=\"cruise-performance\"><mqlGroupingConditions>foo = bar!=baz</mqlGroupingConditions></mingle>"); mingleConfig = ConfigMigrator.loadWithMigration(configWithCommand).config.pipelineConfigByName(new CaseInsensitiveString("pipeline1")).getMingleConfig(); assertThat(mingleConfig, is(new MingleConfig("https://foo.bar/baz", "cruise-performance", "foo = bar!=baz"))); configWithCommand = withMingleConfig("<mingle baseUrl=\"https://foo.bar/baz\" projectIdentifier=\"cruise-performance\"><mqlGroupingConditions/></mingle>"); mingleConfig = ConfigMigrator.loadWithMigration(configWithCommand).config.pipelineConfigByName(new CaseInsensitiveString("pipeline1")).getMingleConfig(); assertThat(mingleConfig, is(new MingleConfig("https://foo.bar/baz", "cruise-performance", ""))); }
if (pipelineConfig.getTrackingTool() != null) isValid = pipelineConfig.getTrackingTool().validateTree(contextForChildren) && isValid; if (pipelineConfig.getMingleConfig() != null) isValid = pipelineConfig.getMingleConfig().validateTree(contextForChildren) && isValid; if (pipelineConfig.getTimer() != null) isValid = pipelineConfig.getTimer().validateTree(contextForChildren) && isValid;
CRPipeline pipelineConfigToCRPipeline(PipelineConfig pipelineConfig, String groupName) { CRPipeline crPipeline = new CRPipeline(); crPipeline.setGroupName(groupName); crPipeline.setName(pipelineConfig.name().toString()); for(StageConfig stage: pipelineConfig.getStages()) { crPipeline.addStage(stageToCRStage(stage)); } for (ParamConfig param: pipelineConfig.getParams()) { crPipeline.addParameter(paramToCRParam(param)); } for (MaterialConfig material: pipelineConfig.materialConfigs()) { crPipeline.addMaterial(materialToCRMaterial(material)); } for (EnvironmentVariableConfig envVar: pipelineConfig.getVariables()) { crPipeline.addEnvironmentVariable(environmentVariableConfigToCREnvironmentVariable(envVar)); } if (pipelineConfig.getTemplateName() != null) crPipeline.setTemplate(pipelineConfig.getTemplateName().toString()); crPipeline.setTrackingTool(trackingToolToCRTrackingTool(pipelineConfig.getTrackingTool())); crPipeline.setTimer(timerConfigToCRTimer(pipelineConfig.getTimer())); crPipeline.setLock_behavior(pipelineConfig.getLockBehavior()); if (pipelineConfig.getMingleConfig().isDefined()) { crPipeline.setMingle(mingleToCRMingle(pipelineConfig.getMingleConfig())); } crPipeline.setLabelTemplate(pipelineConfig.getLabelTemplate()); return crPipeline; }
private PipelineGroupModels allPipelineInstances(Username username) { CruiseConfig currentConfig = goConfigService.currentCruiseConfig(); PipelineGroups groups = currentConfig.getGroups(); PipelineInstanceModels activePipelines = filterPermissions(pipelineDao.loadActivePipelines(), username); PipelineGroupModels groupModels = new PipelineGroupModels(); for (PipelineConfig pipelineConfig : currentConfig.getAllPipelineConfigs()) { CaseInsensitiveString pipelineName = pipelineConfig.name(); for (PipelineInstanceModel activePipeline : activePipelines.findAll(CaseInsensitiveString.str(pipelineName))) { activePipeline.setTrackingTool(pipelineConfig.getTrackingTool()); activePipeline.setMingleConfig(pipelineConfig.getMingleConfig()); populatePlaceHolderStages(activePipeline); String groupName = groups.findGroupNameByPipeline(pipelineName); if (groupName == null) { throw new RuntimeException("Unable to find group find pipeline " + pipelineName); } populatePreviousStageState(activePipeline); populateLockStatus(activePipeline.getName(), username, activePipeline); boolean canForce = schedulingCheckerService.canManuallyTrigger(CaseInsensitiveString.str(pipelineName), username); PipelinePauseInfo pauseInfo = pipelinePauseService.pipelinePauseInfo(CaseInsensitiveString.str(pipelineName)); groupModels.addPipelineInstance(groupName, activePipeline, canForce, securityService.hasOperatePermissionForPipeline( username.getUsername(), CaseInsensitiveString.str(pipelineName) ), pauseInfo); } } for (PipelineConfigs group : groups) { populateMissingPipelines(username, groupModels, group); } return groupModels; }