public static Set<String> getProjectAndGroupLinks(Collection<String> tenantLinks) { if (tenantLinks == null) { return new HashSet<>(); } return tenantLinks.stream() .filter(link -> isProjectLink(link) || isGroupLink(link)) .collect(Collectors.toSet()); }
public static boolean isNotTenantLink(String link) { return !isTenantLink(link); }
public static boolean isNotUserLink(String link) { return !isUserLink(link); }
/** * Takes all non-project links from the old tenant links and all project links from the patched * tenant links, puts them together and returns the result. */ List<String> mergeTenantLinks(List<String> oldTenantLinks, List<String> patchTenantLinks) { // no pathed tenant links = keep original tenant links if (patchTenantLinks == null) { return oldTenantLinks; } // we are allowed to patch only the project links (i.e. to make group assignments). // Clear all other links from the patch List<String> projectLinks = patchTenantLinks.stream() .filter(link -> { return TenantLinksUtil.isProjectLink(link) || TenantLinksUtil.isGroupLink(link); }).collect(Collectors.toList()); if (oldTenantLinks == null) { // no old tenant links = use patch links return projectLinks; } // merge old non-project links with patch project links and return the result List<String> otherLinks = oldTenantLinks.stream() .filter(link -> { return TenantLinksUtil.isNotProjectLink(link) && TenantLinksUtil.isNotGroupLink(link); }).collect(Collectors.toList()); otherLinks.addAll(projectLinks); return otherLinks; }
public static boolean isNotProjectLink(String link) { return !isProjectLink(link); }
void doValidatePlanSelection(String planName, Collection<String> taskTenantLinks, Endpoint endpoint) { Set<String> projectLinks = TenantLinksUtil.getProjectAndGroupLinks(taskTenantLinks); boolean validSelection = projectLinks.stream() .anyMatch(projectLink -> { return endpoint.planAssignments.get(projectLink).plans.contains(planName); }); if (!validSelection) { throw new IllegalArgumentException(String.format( INVALID_PLAN_SELECTION_MESSAGE_FORMAT, planName, getSelfId())); } logFine("Valid plan selection [%s] for PKS cluster provisioning task [%s]", planName, getSelfId()); }
public static boolean isNotGroupLink(String link) { return !isGroupLink(link); }
private static boolean isCreatePKSClusterRequest(Operation op, SecurityContext sc, String projectLink) { ContainerHostSpec hostSpec = extractContainerHostSpec(op); boolean isCreatePKSClusterRequest = hostSpec != null && hostSpec.hostState != null && hostSpec.hostState.customProperties != null && hostSpec.hostState.customProperties .get(PKSConstants.PKS_ENDPOINT_PROP_NAME) != null; if (isCreatePKSClusterRequest) { if (projectLink == null && hostSpec.hostState.tenantLinks != null) { projectLink = hostSpec.hostState.tenantLinks.stream() .filter(tenantLink -> isProjectLink(tenantLink)) .findFirst().orElse(null); } return op.getAction() == Action.POST && isCreatePKSClusterRequest && isProjectAdminOrProjectMember(projectLink, sc); } return false; }
Set<String> projectLinks = TenantLinksUtil.getProjectAndGroupLinks(state.tenantLinks); if (projectLinks.isEmpty()) { String projectHeader = OperationUtil.extractProjectFromHeader(startOp);
registry.tenantLinks .stream() .anyMatch(tenantLink -> TenantLinksUtil.isProjectLink(tenantLink) || TenantLinksUtil.isGroupLink(tenantLink))); if (registryInvalid) { post.setStatusCode(Operation.STATUS_CODE_BAD_REQUEST);
@Test public void testGetProjectAndGroupLinks() { Set<String> set = TenantLinksUtil.getProjectAndGroupLinks(null); assertNotNull(set); assertTrue(set.isEmpty()); set = TenantLinksUtil.getProjectAndGroupLinks( Arrays.asList(SAMPLE_GROUP_LINK, SAMPLE_RANDOM_LINK)); assertNotNull(set); assertEquals(1, set.size()); assertTrue(set.contains(SAMPLE_GROUP_LINK)); set = TenantLinksUtil.getProjectAndGroupLinks( Arrays.asList(SAMPLE_PROJECT_LINK, SAMPLE_RANDOM_LINK)); assertNotNull(set); assertEquals(1, set.size()); assertTrue(set.contains(SAMPLE_PROJECT_LINK)); set = TenantLinksUtil.getProjectAndGroupLinks( Arrays.asList(SAMPLE_PROJECT_LINK, SAMPLE_GROUP_LINK, SAMPLE_USER_LINK, SAMPLE_TENANT_LINK, SAMPLE_RANDOM_LINK)); assertNotNull(set); assertEquals(2, set.size()); assertTrue(set.contains(SAMPLE_PROJECT_LINK)); assertTrue(set.contains(SAMPLE_GROUP_LINK)); }
@Override protected void validateStateOnStart(PKSProvisioningTaskState task) throws IllegalArgumentException { AssertUtil.assertNotNull(task, "task"); AssertUtil.assertNotNull(task.customProperties, "customProperties"); AssertUtil.assertNotEmpty(task.getCustomProperty(PKS_CLUSTER_NAME_PROP_NAME), "customProperties [" + PKS_CLUSTER_NAME_PROP_NAME + "]"); AssertUtil.assertNotEmpty(task.getCustomProperty(PKS_PLAN_NAME_FIELD), "customProperties [" + PKS_PLAN_NAME_FIELD + "]"); AssertUtil.assertNotEmpty(task.getCustomProperty(PKS_MASTER_HOST_FIELD), "customProperties [" + PKS_MASTER_HOST_FIELD + "]"); AssertUtil.assertNotNullOrEmpty(task.endpointLink, "endpointLink"); AssertUtil.assertNotNull(task.tenantLinks, "tenantLinks"); AssertUtil.assertNotEmpty(TenantLinksUtil.getProjectAndGroupLinks(task.tenantLinks), "tenantLinks(project/group links only)"); }