private void removeFromAllGroups(CruiseConfig preprocessedConfig) { PipelineGroups groups = preprocessedConfig.getGroups(); for (PipelineConfigs group : groups) { group.cleanupAllUsagesOfRole(role); } }
public List<PipelineConfigs> viewableOrOperatableGroupsFor(Username username) { ArrayList<PipelineConfigs> list = new ArrayList<>(); for (PipelineConfigs pipelineConfigs : goConfigService.cruiseConfig().getGroups()) { if (hasViewOrOperatePermissionForGroup(username, pipelineConfigs.getGroup())) { list.add(pipelineConfigs); } } return list; }
public List<PipelineConfigs> viewableGroupsFor(Username username) { ArrayList<PipelineConfigs> list = new ArrayList<>(); for (PipelineConfigs pipelineConfigs : goConfigService.cruiseConfig().getGroups()) { if (securityService.hasViewPermissionForGroup(CaseInsensitiveString.str(username.getUsername()), pipelineConfigs.getGroup())) { list.add(pipelineConfigs); } } return list; }
public PipelineInstanceModels latestInstancesForConfiguredPipelines(Username username) { PipelineInstanceModels pipelineInstances = PipelineInstanceModels.createPipelineInstanceModels(); for (PipelineConfigs group : goConfigService.currentCruiseConfig().getGroups()) { for (PipelineConfig pipelineConfig : group) { PipelineInstanceModel pipelineInstanceModel = latest(CaseInsensitiveString.str(pipelineConfig.name()), username); if (pipelineInstanceModel != null) { pipelineInstances.add(pipelineInstanceModel); } } } return pipelineInstances; }
@Test public void shouldWriteConfigWithMultipleGroups() throws Exception { CruiseConfig cruiseConfig = ConfigMigrator.load(ConfigFileFixture.PIPELINE_GROUPS); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); xmlWriter.write(cruiseConfig, buffer, false); final ByteArrayInputStream inputStream = new ByteArrayInputStream(buffer.toByteArray()); CruiseConfig config = xmlLoader.loadConfigHolder(IOUtils.toString(inputStream, UTF_8)).config; assertThat(config.getGroups().size(), is(2)); assertThat(config.getGroups().first().getGroup(), is("studios")); }
public void checkPermission(CruiseConfig cruiseConfig, LocalizedOperationResult result) { String groupName = cruiseConfig.getGroups().findGroupNameByPipeline(new CaseInsensitiveString(pipeline)); if (!securityService.isUserAdminOfGroup(username.getUsername(), groupName)) { result.forbidden(LocalizedMessage.forbiddenToEdit(), null); } }
@Test public void createsMergePipelineConfigsOnlyWhenManyParts() { assertThat(cruiseConfig.getGroups().get(0) instanceof MergePipelineConfigs, is(false)); BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, PartialConfigMother.withPipelineInGroup("pipe2", "existing_group")); assertThat(cruiseConfig.getGroups().get(0) instanceof MergePipelineConfigs, is(true)); }
@Test public void getAllLocalPipelineConfigs_shouldReturnOnlyLocalPipelinesWhenRemoteExist() { PipelineConfig pipeline1 = createPipelineConfig("local-pipe-1", "stage1"); cruiseConfig.getGroups().addPipeline("existing_group", pipeline1); List<PipelineConfig> localPipelines = cruiseConfig.getAllLocalPipelineConfigs(false); assertThat(localPipelines.size(),is(1)); assertThat(localPipelines,hasItem(pipeline1)); }
@Test public void getAllLocalPipelineConfigs_shouldReturnOnlyLocalPipelinesWhenNoRemotes() { PipelineConfig pipeline1 = createPipelineConfig("local-pipe-1", "stage1"); cruiseConfig.getGroups().addPipeline("existing_group", pipeline1); List<PipelineConfig> localPipelines = cruiseConfig.getAllLocalPipelineConfigs(false); assertThat(localPipelines.size(), is(1)); assertThat(localPipelines, hasItem(pipeline1)); }
@Test public void shouldDeletePipelineGroupWithGroupName() { PipelineConfigs group = createGroup("group", new PipelineConfig[] {}); CruiseConfig config = createCruiseConfig(); config.setGroup(new PipelineGroups(group)); assertThat(config.getGroups().isEmpty(), is(false)); config.deletePipelineGroup("group"); assertThat(config.getGroups().isEmpty(), is(true)); }
public boolean hasOperatePermissionForGroup(final CaseInsensitiveString username, String groupName) { CruiseConfig cruiseConfig = goConfigService.getCurrentConfig(); if (!cruiseConfig.isSecurityEnabled()) { return true; } if (isUserAdmin(new Username(username))) { return true; } PipelineConfigs group = cruiseConfig.getGroups().findGroup(groupName); return isUserAdminOfGroup(username, group) || group.hasOperatePermission(username, new UserRoleMatcherImpl(cruiseConfig.server().security())); }
public boolean hasViewPermissionForGroup(String userName, String pipelineGroupName) { CruiseConfig cruiseConfig = goConfigService.getCurrentConfig(); if (!cruiseConfig.isSecurityEnabled()) { return true; } CaseInsensitiveString username = new CaseInsensitiveString(userName); if (isUserAdmin(new Username(username))) { return true; } PipelineConfigs group = cruiseConfig.getGroups().findGroup(pipelineGroupName); return isUserAdminOfGroup(username, group) || group.hasViewPermission(username, new UserRoleMatcherImpl(cruiseConfig.server().security())); }
@Test public void shouldGetPipelinesWithGroupName() throws Exception { PipelineConfig pipeline1 = createPipelineConfig("pipeline1", "stage1"); cruiseConfig.getGroups().addPipeline("existing_group", pipeline1); assertThat(cruiseConfig.pipelines("existing_group"), hasItem(pipeline1)); assertThat(cruiseConfig.pipelines("remote_group").hasPipeline(new CaseInsensitiveString("remote-pipe-1")), is(true)); }
@Test public void shouldReturnGroupsOtherThanMain_WhenMerged() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, PartialConfigMother.withPipeline("pipe2")); assertNotSame(mainCruiseConfig.getGroups(), cruiseConfig.getGroups()); }
@Test(expected = PipelineGroupNotEmptyException.class) public void shouldNotDeletePipelineGroupIfNotEmpty() { PipelineConfigs group = createGroup("group", createPipelineConfig("pipeline", "stage")); CruiseConfig config = createCruiseConfig(); config.setGroup(new PipelineGroups(group)); assertThat(config.getGroups().isEmpty(), is(false)); config.deletePipelineGroup("group"); } }
@Test public void getAllUniquePostCommitSchedulableMaterials_shouldReturnMaterialsWithAutoUpdateFalse() { GitMaterialConfig gitAutoMaterial = MaterialConfigsMother.gitMaterialConfig("url"); PipelineConfig pipelineAuto = pipelineConfig("pipelineAuto", new MaterialConfigs(gitAutoMaterial)); GitMaterialConfig gitNonAutoMaterial = new GitMaterialConfig(new UrlArgument("other-url"), "master", "dest", false, null, false, null, new CaseInsensitiveString("git"), false); PipelineConfig pipelineTriggerable = pipelineConfig("pipelineTriggerable", new MaterialConfigs(gitNonAutoMaterial)); PipelineConfigs defaultGroup = createGroup("defaultGroup", pipelineAuto, pipelineTriggerable); cruiseConfig.getGroups().add(defaultGroup); Set<MaterialConfig> materials = cruiseConfig.getAllUniquePostCommitSchedulableMaterials(); assertThat(materials.size(), is(1)); assertThat(materials, hasItem(gitNonAutoMaterial)); }
public GoConfigMother addAdminRoleForPipelineGroup(CruiseConfig config, String roleName, String groupName) { PipelineConfigs group = config.getGroups().findGroup(groupName); group.getAuthorization().getAdminsConfig().add(new AdminRole(new CaseInsensitiveString(roleName))); return this; }
@Test public void shouldLoadOperationAndViewPermissionForPipelinesNoMatterTheConfigOrder() { CruiseConfig cruiseConfig = ConfigMigrator.load(configureAuthorization(OPERATION_PERMISSION + VIEW_PERMISSION)); PipelineConfigs group = cruiseConfig.getGroups().first(); assertThat(group.getAuthorization(), instanceOf(Authorization.class)); AdminsConfig actualView = group.getAuthorization().getViewConfig(); AdminsConfig actualOperation = group.getAuthorization().getOperationConfig(); assertion(actualView); assertion(actualOperation); }
@Test public void shouldLoadViewAndOperationPermissionForPipelinesNoMatterTheConfigOrder() { CruiseConfig cruiseConfig = ConfigMigrator.load(configureAuthorization(VIEW_PERMISSION + OPERATION_PERMISSION)); PipelineConfigs group = cruiseConfig.getGroups().first(); assertThat(group.getAuthorization(), instanceOf(Authorization.class)); AdminsConfig actualView = group.getAuthorization().getViewConfig(); AdminsConfig actualOperation = group.getAuthorization().getOperationConfig(); assertion(actualView); assertion(actualOperation); }