@Override public ConfigOrigin getOrigin() { MergeConfigOrigin origins = new MergeConfigOrigin(); for(PipelineConfigs part : this.parts) { origins.add(part.getOrigin()); } return origins; }
@Override public List<PipelineConfig> getAllLocalPipelineConfigs(boolean excludeMembersOfRemoteEnvironments) { List<PipelineConfig> locals = new ArrayList<>(); PipelineGroups localGroups = BasicCruiseConfig.this.groups.getLocal(); for (PipelineConfigs pipelineConfigs : localGroups) { if (pipelineConfigs.getOrigin() instanceof UIConfigOrigin) { //then we have injected this so that UI has a piece to edit // we want to keep it only if there is something added if (!pipelineConfigs.isEmpty()) { for (PipelineConfig pipelineConfig : pipelineConfigs.getPipelines()) { if (excludeMembersOfRemoteEnvironments && BasicCruiseConfig.this.getEnvironments().isPipelineAssociatedWithRemoteEnvironment(pipelineConfig.name())) continue; locals.add(pipelineConfig); } } } else { //origin is local file for (PipelineConfig pipelineConfig : pipelineConfigs.getPipelines()) { if (excludeMembersOfRemoteEnvironments && BasicCruiseConfig.this.getEnvironments().isPipelineAssociatedWithRemoteEnvironment(pipelineConfig.name())) continue; locals.add(pipelineConfig); } } } return locals; }
@Test public void shouldReturnRemoteOriginOfTheGroup() { assertThat(cruiseConfig.findGroup("remote_group").getOrigin(), is(createRepoOrigin())); }
@Test public void shouldReturnOriginAsASumOfAllOrigins() { BasicPipelineConfigs fileConfigs = new BasicPipelineConfigs(PipelineConfigMother.pipelineConfig("pipeline1")); fileConfigs.setOrigin(new FileConfigOrigin()); BasicPipelineConfigs remoteConfigs = new BasicPipelineConfigs(PipelineConfigMother.pipelineConfig("pipeline2")); remoteConfigs.setOrigin(new RepoConfigOrigin()); PipelineConfigs group = new MergePipelineConfigs(fileConfigs, remoteConfigs); ConfigOrigin allOrigins = group.getOrigin(); assertThat(allOrigins instanceof MergeConfigOrigin,is(true)); MergeConfigOrigin mergeConfigOrigin = (MergeConfigOrigin)allOrigins; assertThat(mergeConfigOrigin.size(),is(2)); assertThat(mergeConfigOrigin.contains(new FileConfigOrigin()),is(true)); assertThat(mergeConfigOrigin.contains(new RepoConfigOrigin()),is(true)); }
@Test public void shouldAddAuthorizationToPipelinesConfigForEditsWithUIOrigin_WhenFileHasNoPipelineGroupYet_AndForEdit() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(); // only remotely defined group PartialConfig partialConfig = PartialConfigMother.withPipelineInGroup("pipe1", "group1"); partialConfig.setOrigins(new RepoConfigOrigin()); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, true, partialConfig); assertThat(cruiseConfig.getGroups().size(), is(1)); assertThat(cruiseConfig.getGroups().get(0) instanceof MergePipelineConfigs, is(true)); assertThat(cruiseConfig.getGroups().get(0).getGroup(), is("group1")); MergePipelineConfigs mergedEnv = (MergePipelineConfigs) cruiseConfig.getGroups().get(0); assertThat(mergedEnv.getLocal().getOrigin(), is(new UIConfigOrigin())); Authorization authorization = new Authorization(new AdminsConfig( new AdminUser(new CaseInsensitiveString("firstTemplate-admin")))); cruiseConfig.getGroups().get(0).setAuthorization(authorization); assertThat(mergedEnv.getLocal().getAuthorization(), is(authorization)); }