@Override protected void writeSimpleResult(final PrintStream output) throws IOException { final ProcessGroupsResult result = new ProcessGroupsResult( ResultType.SIMPLE, Collections.singletonList(entity.getComponent()) ); result.writeSimpleResult(output); } }
/** * Merges multiple ProcessGroupEntity responses. * * @param processGroupEntities entities being returned to the client * @param entityMap all node responses */ public static void mergeProcessGroups(final Set<ProcessGroupEntity> processGroupEntities, final Map<String, Map<NodeIdentifier, ProcessGroupEntity>> entityMap) { for (final ProcessGroupEntity entity : processGroupEntities) { processGroupEntityMerger.merge(entity, entityMap.get(entity.getId())); } } }
final ProcessGroupEntity entity = new ProcessGroupEntity(); entity.setRevision(revision); if (dto != null) { entity.setPermissions(permissions); entity.setStatus(status); entity.setId(dto.getId()); entity.setPosition(dto.getPosition()); entity.setInputPortCount(dto.getInputPortCount()); entity.setOutputPortCount(dto.getOutputPortCount()); entity.setRunningCount(dto.getRunningCount()); entity.setStoppedCount(dto.getStoppedCount()); entity.setInvalidCount(dto.getInvalidCount()); entity.setDisabledCount(dto.getDisabledCount()); entity.setActiveRemotePortCount(dto.getActiveRemotePortCount()); entity.setInactiveRemotePortCount(dto.getInactiveRemotePortCount()); entity.setUpToDateCount(dto.getUpToDateCount()); entity.setLocallyModifiedCount(dto.getLocallyModifiedCount()); entity.setStaleCount(dto.getStaleCount()); entity.setLocallyModifiedAndStaleCount(dto.getLocallyModifiedAndStaleCount()); entity.setSyncFailureCount(dto.getSyncFailureCount()); entity.setVersionedFlowState(dto.getVersionControlInformation().getState()); entity.setBulletins(bulletins); // include bulletins as authorized descendant component bulletins should be available if (permissions != null && permissions.getCanRead()) { entity.setComponent(dto);
/** * Populates the remaining fields in the specified process group. * * @param processGroupEntity group * @return group dto */ public ProcessGroupEntity populateRemainingProcessGroupEntityContent(ProcessGroupEntity processGroupEntity) { processGroupEntity.setUri(generateResourceUri("process-groups", processGroupEntity.getId())); return processGroupEntity; }
@Override public void merge(ProcessGroupEntity clientEntity, Map<NodeIdentifier, ProcessGroupEntity> entityMap) { ComponentEntityMerger.super.merge(clientEntity, entityMap); for (Map.Entry<NodeIdentifier, ProcessGroupEntity> entry : entityMap.entrySet()) { final ProcessGroupEntity entityStatus = entry.getValue(); if (entityStatus != clientEntity) { mergeStatus(clientEntity.getStatus(), clientEntity.getPermissions().getCanRead(), entry.getValue().getStatus(), entry.getValue().getPermissions().getCanRead(), entry.getKey()); mergeVersionControlInformation(clientEntity, entityStatus); } } }
pgDto.setPosition(posDto); final ProcessGroupEntity pgEntity = new ProcessGroupEntity(); pgEntity.setComponent(pgDto); pgEntity.setRevision(getInitialRevisionDTO()); return new StringResult(createdEntity.getId(), getContext().isInteractive());
if (requestProcessGroupEntity == null || requestProcessGroupEntity.getComponent() == null) { throw new IllegalArgumentException("Process group details must be specified."); if (requestProcessGroupEntity.getRevision() == null || (requestProcessGroupEntity.getRevision().getVersion() == null || requestProcessGroupEntity.getRevision().getVersion() != 0)) { throw new IllegalArgumentException("A revision of 0 must be specified when creating a new Process group."); if (requestProcessGroupEntity.getComponent().getId() != null) { throw new IllegalArgumentException("Process group ID cannot be specified."); final PositionDTO proposedPosition = requestProcessGroupEntity.getComponent().getPosition(); if (proposedPosition != null) { if (proposedPosition.getX() == null || proposedPosition.getY() == null) { if (StringUtils.isBlank(requestProcessGroupEntity.getComponent().getName()) && requestProcessGroupEntity.getComponent().getVersionControlInformation() == null) { throw new IllegalArgumentException("The group name is required when the group is not imported from version control."); if (requestProcessGroupEntity.getComponent().getParentGroupId() != null && !groupId.equals(requestProcessGroupEntity.getComponent().getParentGroupId())) { throw new IllegalArgumentException(String.format("If specified, the parent process group id %s must be the same as specified in the URI %s", requestProcessGroupEntity.getComponent().getParentGroupId(), groupId)); requestProcessGroupEntity.getComponent().setParentGroupId(groupId); final VersionControlInformationDTO versionControlInfo = requestProcessGroupEntity.getComponent().getVersionControlInformation(); if (versionControlInfo != null && requestProcessGroupEntity.getVersionedFlowSnapshot() == null) { requestProcessGroupEntity.setVersionedFlowSnapshot(flowSnapshot); final VersionedFlowSnapshot flowSnapshot = requestProcessGroupEntity.getVersionedFlowSnapshot(); serviceFacade.verifyImportProcessGroup(versionControlInfo, flowSnapshot.getFlowContents(), groupId);
final ProcessGroupEntity requestProcessGroupEntity = new ProcessGroupEntity(); requestProcessGroupEntity.setId(id); (revision, processGroupEntity) -> { final ProcessGroupEntity entity = serviceFacade.deleteProcessGroup(revision, processGroupEntity.getId());
) final ProcessGroupEntity requestProcessGroupEntity) { if (requestProcessGroupEntity == null || requestProcessGroupEntity.getComponent() == null) { throw new IllegalArgumentException("Process group details must be specified."); if (requestProcessGroupEntity.getRevision() == null) { throw new IllegalArgumentException("Revision must be specified."); final ProcessGroupDTO requestProcessGroupDTO = requestProcessGroupEntity.getComponent(); if (!id.equals(requestProcessGroupDTO.getId())) { throw new IllegalArgumentException(String.format("The process group id (%s) in the request body does " return replicate(HttpMethod.PUT, requestProcessGroupEntity); } else if (isDisconnectedFromCluster()) { verifyDisconnectedNodeModification(requestProcessGroupEntity.isDisconnectedNodeAcknowledged()); (revision, processGroupEntity) -> { final ProcessGroupEntity entity = serviceFacade.updateProcessGroup(revision, processGroupEntity.getComponent()); populateRemainingProcessGroupEntityContent(entity);
final VersionControlInformationDTO updatedVci = updatedGroup.getComponent().getVersionControlInformation(); responseEntity.setProcessGroupRevision(updatedGroup.getRevision()); responseEntity.setVersionControlInformation(updatedVci);
final ProcessGroupEntity processGroup = serviceFacade.getProcessGroup(groupId); entity = new VersionControlInformationEntity(); entity.setProcessGroupRevision(processGroup.getRevision());
final RevisionDTO groupRevision = serviceFacade.getProcessGroup(groupId).getRevision(); updateRequestEntity.setProcessGroupRevision(groupRevision); updateRequestEntity.setRequest(updateRequestDto);
private void mergeVersionControlInformation(ProcessGroupEntity targetGroup, ProcessGroupEntity toMerge) { final ProcessGroupDTO targetGroupDto = targetGroup.getComponent(); final ProcessGroupDTO toMergeGroupDto = toMerge.getComponent(); if (targetGroupDto == null || toMergeGroupDto == null) { return; } final VersionControlInformationDTO targetVersionControl = targetGroupDto.getVersionControlInformation(); final VersionControlInformationDTO toMergeVersionControl = toMergeGroupDto.getVersionControlInformation(); if (targetVersionControl == null) { targetGroupDto.setVersionControlInformation(toMergeGroupDto.getVersionControlInformation()); } else if (toMergeVersionControl != null) { VersionControlInformationEntityMerger.updateFlowState(targetVersionControl, toMergeVersionControl); } } }
@Override public ProcessGroupEntity updateProcessGroup(final ProcessGroupEntity entity) throws NiFiClientException, IOException { if (entity == null){ throw new IllegalArgumentException("Process group entity cannot be null"); } return executeAction("Error updating process group", () -> { final WebTarget target = processGroupsTarget .path("{id}") .resolveTemplate("id", entity.getId()); return getRequestBuilder(target).put( Entity.entity(entity, MediaType.APPLICATION_JSON_TYPE), ProcessGroupEntity.class ); }); }
final RevisionDTO groupRevision = serviceFacade.getProcessGroup(groupId).getRevision(); updateRequestEntity.setProcessGroupRevision(groupRevision); updateRequestEntity.setRequest(updateRequestDto);
@Override public ProcessGroupsResult doExecute(final NiFiClient client, final Properties properties) throws NiFiClientException, IOException { final FlowClient flowClient = client.getFlowClient(); // get the optional id of the parent PG, otherwise fallback to the root group String parentPgId = getArg(properties, CommandOption.PG_ID); if (StringUtils.isBlank(parentPgId)) { parentPgId = flowClient.getRootGroupId(); } final ProcessGroupFlowEntity processGroupFlowEntity = flowClient.getProcessGroup(parentPgId); final ProcessGroupFlowDTO processGroupFlowDTO = processGroupFlowEntity.getProcessGroupFlow(); final FlowDTO flowDTO = processGroupFlowDTO.getFlow(); final List<ProcessGroupDTO> processGroups = new ArrayList<>(); if (flowDTO.getProcessGroups() != null) { flowDTO.getProcessGroups().stream().map(pge -> pge.getComponent()).forEach(dto -> processGroups.add(dto)); } return new ProcessGroupsResult(getResultType(properties), processGroups); }
if (innerMap == null) { innerMap = new HashMap<>(); entityMap.put(nodeProcessGroupEntity.getId(), innerMap);
private Response retrieveRequest(final String requestType, final String requestId) { if (requestId == null) { throw new IllegalArgumentException("Request ID must be specified."); } final NiFiUser user = NiFiUserUtils.getNiFiUser(); // request manager will ensure that the current is the user that submitted this request final AsynchronousWebRequest<VersionControlInformationEntity> asyncRequest = requestManager.getRequest(requestType, requestId, user); final VersionedFlowUpdateRequestDTO updateRequestDto = new VersionedFlowUpdateRequestDTO(); updateRequestDto.setComplete(asyncRequest.isComplete()); updateRequestDto.setFailureReason(asyncRequest.getFailureReason()); updateRequestDto.setLastUpdated(asyncRequest.getLastUpdated()); updateRequestDto.setProcessGroupId(asyncRequest.getProcessGroupId()); updateRequestDto.setRequestId(requestId); updateRequestDto.setUri(generateResourceUri("versions", requestType, requestId)); updateRequestDto.setState(asyncRequest.getState()); updateRequestDto.setPercentCompleted(asyncRequest.getPercentComplete()); if (updateRequestDto.isComplete()) { final VersionControlInformationEntity vciEntity = serviceFacade.getVersionControlInformation(asyncRequest.getProcessGroupId()); updateRequestDto.setVersionControlInformation(vciEntity == null ? null : vciEntity.getVersionControlInformation()); } final RevisionDTO groupRevision = serviceFacade.getProcessGroup(asyncRequest.getProcessGroupId()).getRevision(); final VersionedFlowUpdateRequestEntity updateRequestEntity = new VersionedFlowUpdateRequestEntity(); updateRequestEntity.setProcessGroupRevision(groupRevision); updateRequestEntity.setRequest(updateRequestDto); return generateOkResponse(updateRequestEntity).build(); }
populateRemainingProcessGroupEntityContent(entity); if (entity.getComponent() != null) { entity.getComponent().setContents(null);
processGroups.computeIfAbsent(entity.getId(), id -> new HashMap<>()).computeIfAbsent(nodeIdentifier, nodeId -> entity);