@Override public ResponseEntity<List<MgmtTarget>> createTargets(@RequestBody final List<MgmtTargetRequestBody> targets) { LOG.debug("creating {} targets", targets.size()); final Collection<Target> createdTargets = this.targetManagement .create(MgmtTargetMapper.fromRequest(entityFactory, targets)); LOG.debug("{} targets created, return status {}", targets.size(), HttpStatus.CREATED); return new ResponseEntity<>(MgmtTargetMapper.toResponse(createdTargets), HttpStatus.CREATED); }
protected List<TargetMetadata> createTargetMetadata(final String controllerId, final List<MetaData> md) { return targetManagement.createMetaData(controllerId, md); }
@Override public List<Target> getAssignedEntity() { if (CollectionUtils.isEmpty(assignedTargets)) { return Collections.emptyList(); } return targetManagement.getByControllerID(assignedTargets); }
@Override public ResponseEntity<PagedList<MgmtTarget>> getTargets( @RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = MgmtRestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = MgmtRestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, @RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_SEARCH, required = false) final String rsqlParam) { final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam); final int sanitizedLimitParam = PagingUtility.sanitizePageLimitParam(pagingLimitParam); final Sort sorting = PagingUtility.sanitizeTargetSortParam(sortParam); final Pageable pageable = new OffsetBasedPageRequest(sanitizedOffsetParam, sanitizedLimitParam, sorting); final Slice<Target> findTargetsAll; final long countTargetsAll; if (rsqlParam != null) { final Page<Target> findTargetPage = this.targetManagement.findByRsql(pageable, rsqlParam); countTargetsAll = findTargetPage.getTotalElements(); findTargetsAll = findTargetPage; } else { findTargetsAll = this.targetManagement.findAll(pageable); countTargetsAll = this.targetManagement.count(); } final List<MgmtTarget> rest = MgmtTargetMapper.toResponse(findTargetsAll.getContent()); return ResponseEntity.ok(new PagedList<>(rest, countTargetsAll)); }
private long countOverlappingTargetsWithPreviousGroups(final String baseFilter, final List<RolloutGroup> groups, final RolloutGroup group, final int groupIndex, final Map<String, Long> targetFilterCounts) { // there can't be overlapping targets in the first group if (groupIndex == 0) { return 0; } final List<RolloutGroup> previousGroups = groups.subList(0, groupIndex); final String overlappingTargetsFilter = RolloutHelper.getOverlappingWithGroupsTargetFilter(baseFilter, previousGroups, group); if (targetFilterCounts.containsKey(overlappingTargetsFilter)) { return targetFilterCounts.get(overlappingTargetsFilter); } else { final long overlappingTargets = targetManagement.countByRsql(overlappingTargetsFilter); targetFilterCounts.put(overlappingTargetsFilter, overlappingTargets); return overlappingTargets; } }
final List<ProxyTarget> proxyTargetBeans = new ArrayList<>(); if (!StringUtils.isEmpty(filterQuery)) { targetBeans = targetManagement.findByRsql(new PageRequest(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort), filterQuery); } else { targetBeans = targetManagement.findAll( new PageRequest(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort));
final List<ProxyTarget> proxyTargetBeans = new ArrayList<>(); if (pinnedDistId != null) { targetBeans = getTargetManagement().findByFilterOrderByLinkedDistributionSet( new OffsetBasedPageRequest(startIndex, SPUIDefinitions.PAGE_SIZE, sort), pinnedDistId, new FilterParams(status, overdueState, searchText, distributionId, noTagClicked, targetTags)); } else if (null != targetFilterQueryId) { targetBeans = getTargetManagement().findByTargetFilterQuery( new PageRequest(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort), targetFilterQueryId); } else if (!isAnyFilterSelected()) { targetBeans = getTargetManagement() .findAll(new PageRequest(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort)); } else { targetBeans = getTargetManagement().findByFilters( new PageRequest(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort), new FilterParams(status, overdueState, searchText, distributionId, noTagClicked, targetTags));
@Override public ResponseEntity<MgmtTarget> updateTarget(@PathVariable("targetId") final String targetId, @RequestBody final MgmtTargetRequestBody targetRest) { if (targetRest.isRequestAttributes() != null) { if (targetRest.isRequestAttributes()) { targetManagement.requestControllerAttributes(targetId); } else { return ResponseEntity.badRequest().build(); } } final Target updateTarget = this.targetManagement.update(entityFactory.target().update(targetId) .name(targetRest.getName()).description(targetRest.getDescription()).address(targetRest.getAddress()) .securityToken(targetRest.getSecurityToken()).requestAttributes(targetRest.isRequestAttributes())); final MgmtTarget response = MgmtTargetMapper.toResponse(updateTarget); MgmtTargetMapper.addPollStatus(updateTarget, response); MgmtTargetMapper.addTargetLinks(response); return ResponseEntity.ok(response); }
@Override public int size() { final long totSize = getTargetManagement().count(); long size; if (null != targetFilterQueryId) { size = getTargetManagement().countByTargetFilterQuery(targetFilterQueryId); } else if (!isAnyFilterSelected()) { size = totSize; } else { size = getTargetManagement().countByFilters(status, overdueState, searchText, distributionId, noTagClicked, targetTags); } final ManagementUIState tmpManagementUIState = getManagementUIState(); tmpManagementUIState.setTargetsCountAll(totSize); if (size > SPUIDefinitions.MAX_TABLE_ENTRIES) { tmpManagementUIState.setTargetsTruncated(size - SPUIDefinitions.MAX_TABLE_ENTRIES); size = SPUIDefinitions.MAX_TABLE_ENTRIES; } else { tmpManagementUIState.setTargetsTruncated(null); } return (int) size; }
/** * Sets {@link TargetUpdateStatus} based on given {@link ActionStatus}. */ private Action handleAddUpdateActionStatus(final JpaActionStatus actionStatus, final JpaAction action) { String controllerId = null; LOG.debug("handleAddUpdateActionStatus for action {}", action.getId()); switch (actionStatus.getStatus()) { case ERROR: final JpaTarget target = DeploymentHelper.updateTargetInfo((JpaTarget) action.getTarget(), TargetUpdateStatus.ERROR, false); handleErrorOnAction(action, target); break; case FINISHED: controllerId = handleFinishedAndStoreInTargetStatus(action); break; default: // information status entry - check for a potential DOS attack assertActionStatusQuota(action); assertActionStatusMessageQuota(actionStatus); break; } actionStatus.setAction(action); actionStatusRepository.save(actionStatus); final Action savedAction = actionRepository.save(action); if (controllerId != null) { targetManagement.requestControllerAttributes(controllerId); } return savedAction; }
@Override public ValidationOracleContext suggest(final String rsqlQuery, final int cursorPosition) { final List<SuggestToken> expectedTokens = new ArrayList<>(); final ValidationOracleContext context = new ValidationOracleContext(); context.setSyntaxError(true); final SuggestionContext suggestionContext = new SuggestionContext(); context.setSuggestionContext(suggestionContext); final SyntaxErrorContext errorContext = new SyntaxErrorContext(); context.setSyntaxErrorContext(errorContext); try { targetManagement.findByRsql(PageRequest.of(0, 1), rsqlQuery); context.setSyntaxError(false); suggestionContext.getSuggestions().addAll(getLogicalOperatorSuggestion(rsqlQuery)); } catch (final RSQLParameterSyntaxException | RSQLParserException ex) { setExceptionDetails(rsqlQuery, new Exception(ex.getCause().getCause()), expectedTokens); errorContext.setErrorMessage(getCustomMessage(ex.getCause().getMessage(), expectedTokens)); suggestionContext.setSuggestions(expectedTokens); LOGGER.trace("Syntax exception on parsing :", ex); } catch (final RSQLParameterUnsupportedFieldException | IllegalArgumentException ex) { errorContext.setErrorMessage(getCustomMessage(ex.getMessage(), null)); LOGGER.trace("Illegal argument on parsing :", ex); } catch (@SuppressWarnings("squid:S1166") final ConversionException | JpaSystemException e) { // noop } return context; }
@Override public ResponseEntity<Void> deleteMetadata(@PathVariable("targetId") final String targetId, @PathVariable("metadataKey") final String metadataKey) { targetManagement.deleteMetaData(targetId, metadataKey); return ResponseEntity.ok().build(); }
@Override public ResponseEntity<List<MgmtTarget>> assignTargets(@PathVariable("targetTagId") final Long targetTagId, @RequestBody final List<MgmtAssignedTargetRequestBody> assignedTargetRequestBodies) { LOG.debug("Assign Targets {} for target tag {}", assignedTargetRequestBodies.size(), targetTagId); final List<Target> assignedTarget = this.targetManagement .assignTag(findTargetControllerIds(assignedTargetRequestBodies), targetTagId); return ResponseEntity.ok(MgmtTargetMapper.toResponse(assignedTarget)); }
private long getTotalTargetsCount() { return targetManagement.count(); }
@Override @Async public ListenableFuture<RolloutGroupsValidation> validateTargetsInGroups(final List<RolloutGroupCreate> groups, final String targetFilter, final Long createdAt) { final String baseFilter = RolloutHelper.getTargetFilterQuery(targetFilter, createdAt); final long totalTargets = targetManagement.countByRsql(baseFilter); if (totalTargets == 0) { throw new ConstraintDeclarationException("Rollout target filter does not match any targets"); } return new AsyncResult<>(validateTargetsInGroups( groups.stream().map(RolloutGroupCreate::build).collect(Collectors.toList()), baseFilter, totalTargets)); }
final List<ProxyTarget> proxyTargetBeans = new ArrayList<>(); if (!StringUtils.isEmpty(filterQuery)) { targetBeans = targetManagement.findByRsql( PageRequest.of(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort), filterQuery); } else { targetBeans = targetManagement .findAll(PageRequest.of(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort));
final List<ProxyTarget> proxyTargetBeans = new ArrayList<>(); if (pinnedDistId != null) { targetBeans = getTargetManagement().findByFilterOrderByLinkedDistributionSet( new OffsetBasedPageRequest(startIndex, SPUIDefinitions.PAGE_SIZE, sort), pinnedDistId, new FilterParams(status, overdueState, searchText, distributionId, noTagClicked, targetTags)); } else if (null != targetFilterQueryId) { targetBeans = getTargetManagement().findByTargetFilterQuery( PageRequest.of(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort), targetFilterQueryId); } else if (!isAnyFilterSelected()) { targetBeans = getTargetManagement() .findAll(PageRequest.of(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort)); } else { targetBeans = getTargetManagement().findByFilters( PageRequest.of(startIndex / SPUIDefinitions.PAGE_SIZE, SPUIDefinitions.PAGE_SIZE, sort), new FilterParams(status, overdueState, searchText, distributionId, noTagClicked, targetTags));
@Override public int size() { final long totSize = getTargetManagement().count(); long size; if (null != targetFilterQueryId) { size = getTargetManagement().countByTargetFilterQuery(targetFilterQueryId); } else if (!isAnyFilterSelected()) { size = totSize; } else { size = getTargetManagement().countByFilters(status, overdueState, searchText, distributionId, noTagClicked, targetTags); } final ManagementUIState tmpManagementUIState = getManagementUIState(); tmpManagementUIState.setTargetsCountAll(totSize); if (size > SPUIDefinitions.MAX_TABLE_ENTRIES) { tmpManagementUIState.setTargetsTruncated(size - SPUIDefinitions.MAX_TABLE_ENTRIES); size = SPUIDefinitions.MAX_TABLE_ENTRIES; } else { tmpManagementUIState.setTargetsTruncated(null); } return (int) size; }
private Button buildRequestAttributesUpdateButton(final String controllerId, final boolean isRequestAttributes) { final Button requestAttributesUpdateButton = SPUIComponentProvider.getButton( UIComponentIdProvider.TARGET_ATTRIBUTES_UPDATE, "", "", "", false, FontAwesome.REFRESH, SPUIButtonStyleNoBorder.class); requestAttributesUpdateButton.addClickListener(e -> targetManagement.requestControllerAttributes(controllerId)); if (isRequestAttributes) { requestAttributesUpdateButton .setDescription(getI18n().getMessage("tooltip.target.attributes.update.requested")); requestAttributesUpdateButton.setEnabled(false); } else { requestAttributesUpdateButton .setDescription(getI18n().getMessage("tooltip.target.attributes.update.request")); requestAttributesUpdateButton.setEnabled(true); } return requestAttributesUpdateButton; }
@Override public ValidationOracleContext suggest(final String rsqlQuery, final int cursorPosition) { final List<SuggestToken> expectedTokens = new ArrayList<>(); final ValidationOracleContext context = new ValidationOracleContext(); context.setSyntaxError(true); final SuggestionContext suggestionContext = new SuggestionContext(); context.setSuggestionContext(suggestionContext); final SyntaxErrorContext errorContext = new SyntaxErrorContext(); context.setSyntaxErrorContext(errorContext); try { targetManagement.findByRsql(new PageRequest(0, 1), rsqlQuery); context.setSyntaxError(false); suggestionContext.getSuggestions().addAll(getLogicalOperatorSuggestion(rsqlQuery)); } catch (final RSQLParameterSyntaxException | RSQLParserException ex) { setExceptionDetails(rsqlQuery, new Exception(ex.getCause().getCause()), expectedTokens); errorContext.setErrorMessage(getCustomMessage(ex.getCause().getMessage(), expectedTokens)); suggestionContext.setSuggestions(expectedTokens); LOGGER.trace("Syntax exception on parsing :", ex); } catch (final RSQLParameterUnsupportedFieldException | IllegalArgumentException ex) { errorContext.setErrorMessage(getCustomMessage(ex.getMessage(), null)); LOGGER.trace("Illegal argument on parsing :", ex); } catch (@SuppressWarnings("squid:S1166") final ConversionException | JpaSystemException e) { // noop } return context; }