/* * Copyright 2017 ThoughtWorks, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.thoughtworks.go.helper; import java.util.*; import com.rits.cloning.Cloner; import com.thoughtworks.go.config.*; import com.thoughtworks.go.config.materials.MaterialConfigs; import com.thoughtworks.go.domain.label.PipelineLabel; import com.thoughtworks.go.domain.materials.MaterialConfig; public class PipelineConfigMother { public static PipelineConfigs studiosAndEvolve() { return new BasicPipelineConfigs(pipelineConfig("studios"), pipelineConfig("evolve")); } public static PipelineConfig pipelineConfig(String pipelineName, String stageName, MaterialConfigs materialConfigs, String... buildNames) { return new PipelineConfig(new CaseInsensitiveString(pipelineName), materialConfigs, new StageConfig(new CaseInsensitiveString(stageName), BuildPlanMother.jobConfigs(buildNames))); } public static PipelineConfig createPipelineConfig(String pipelineName, String stageName, String... buildNames) { return new PipelineConfig(new CaseInsensitiveString(pipelineName), MaterialConfigsMother.defaultMaterialConfigs(), new StageConfig(new CaseInsensitiveString(stageName), BuildPlanMother.jobConfigs(buildNames))); } public static PipelineConfig createPipelineConfigWithStages(String pipelineName, String... stageNames) { StageConfig[] configs = new StageConfig[stageNames.length]; int i = 0; for (String stageName : stageNames) { configs[i++] = new StageConfig(new CaseInsensitiveString(stageName), BuildPlanMother.jobConfigs("dev")); } return new PipelineConfig(new CaseInsensitiveString(pipelineName), MaterialConfigsMother.defaultMaterialConfigs(), configs); } public static PipelineConfig createPipelineConfigWithStage(String pipelineName, String stageName) { return createPipelineConfigWithStages(pipelineName, stageName); } public static PipelineConfig pipelineConfig(String name) { return new PipelineConfig(new CaseInsensitiveString(name), MaterialConfigsMother.defaultMaterialConfigs(), new StageConfig(new CaseInsensitiveString("mingle"), new JobConfigs())); } public static PipelineConfig pipelineConfig(String name, MaterialConfig materialConfig, JobConfigs jobConfigs) { return pipelineConfig(name, new MaterialConfigs(materialConfig), jobConfigs); } public static PipelineConfig pipelineConfig(String name, MaterialConfigs materialConfigs) { return pipelineConfig(name, materialConfigs, new JobConfigs()); } public static PipelineConfig createPipelineConfigWithJobConfigs(String name) { return pipelineConfig(name, new MaterialConfigs(), new JobConfigs(JobConfigMother.createJobConfigWithJobNameAndEmptyResources())); } public static PipelineConfig pipelineConfig(String name, MaterialConfigs materialConfigs, JobConfigs jobConfigs) { return new PipelineConfig(new CaseInsensitiveString(name), materialConfigs, new StageConfig(new CaseInsensitiveString("mingle"), jobConfigs)); } public static PipelineConfigs createGroup(String groupName, PipelineConfig... pipelineConfigs) { return new BasicPipelineConfigs(groupName, new Authorization(), pipelineConfigs); } public static PipelineConfigs createGroup(String groupName, String... pipelineConfigs) { List<PipelineConfig> configs = new ArrayList<>(); for (String name : pipelineConfigs) { configs.add(pipelineConfig(name)); } return createGroup(groupName, configs.toArray(new PipelineConfig[0])); } public static List<PipelineConfigs> createGroups(String... groupNames) { List<PipelineConfigs> configs = new ArrayList<>(); int i = 0; for (String groupName : groupNames) { configs.add(createGroup(groupName, "pipeline_" + i++, "pipeline_" + i++)); } return configs; } public static PipelineConfig pipelineConfig(String name, StageConfig... stageConfigs) { return new PipelineConfig(new CaseInsensitiveString(name), MaterialConfigsMother.defaultMaterialConfigs(), stageConfigs); } public static PipelineConfig pipelineConfigWithTimer(String name, String cronSpec) { return pipelineConfigWithTimer(name, cronSpec, false); } public static PipelineConfig pipelineConfigWithTimer(String name, String timerSpec, boolean timerShouldTriggerOnlyOnMaterialChanges) { List<StageConfig> stages = Arrays.asList(new StageConfig(new CaseInsensitiveString("mingle"), new JobConfigs())); return new PipelineConfig(new CaseInsensitiveString(name), PipelineLabel.COUNT_TEMPLATE, timerSpec, timerShouldTriggerOnlyOnMaterialChanges, MaterialConfigsMother.defaultMaterialConfigs(), stages); } public static PipelineConfig pipelineConfigWithTrackingTool(String name, String trackingToolUrl, String trackingToolRegex) { PipelineConfig pipelineConfig = pipelineConfig(name); TrackingTool trackingTool = new TrackingTool(trackingToolUrl, trackingToolRegex); pipelineConfig.setTrackingTool(trackingTool); return pipelineConfig; } public static PipelineConfig pipelineConfigWithMingleConfiguration(String name, String mingleUrl, String mingleProjectId, String mql) { PipelineConfig pipelineConfig = pipelineConfig(name); MingleConfig mingleConfig = new MingleConfig(mingleUrl, mingleProjectId, mql); pipelineConfig.setMingleConfig(mingleConfig); return pipelineConfig; } public static PipelineConfigs groupWithOperatePermission(PipelineConfig pipelineConfig, String... users) { Authorization authorization = new Authorization(); for (String user : users) { authorization.getOperationConfig().add(new AdminUser(new CaseInsensitiveString(user))); } return new BasicPipelineConfigs("defaultGroup", authorization, pipelineConfig); } public static PipelineConfig pipelineConfigWithTemplate(String name, String templateName) { PipelineConfig pipelineWithTemplate = new PipelineConfig(new CaseInsensitiveString(name), MaterialConfigsMother.defaultMaterialConfigs()); pipelineWithTemplate.setTemplateName(new CaseInsensitiveString(templateName)); return pipelineWithTemplate; } public static PipelineConfig renamePipeline(PipelineConfig oldConfig, String newPipelineName) { PipelineConfig newConfig = new Cloner().deepClone(oldConfig); HashMap attributes = new HashMap(); attributes.put(PipelineConfig.NAME, newPipelineName); newConfig.setConfigAttributes(attributes); return newConfig; } public static PipelineConfig pipelineWithElasticJob(String... elasticProfileIds) { PipelineConfig pipelineConfig = pipelineConfig(UUID.randomUUID().toString()); pipelineConfig.first().getJobs().clear(); for (String elasticProfileId : elasticProfileIds) { pipelineConfig.first().getJobs().add(JobConfigMother.elasticJob(elasticProfileId)); } return pipelineConfig; } }