[ https://issues.apache.org/jira/browse/NIFI-375?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16613065#comment-16613065 ]
ASF GitHub Bot commented on NIFI-375: ------------------------------------- Github user ijokarumawak commented on a diff in the pull request: https://github.com/apache/nifi/pull/2990#discussion_r217269601 --- Diff: nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/InputPortResource.java --- @@ -315,6 +319,90 @@ public Response removeInputPort( ); } + /** + * Updates the operational status for the specified input port with the specified values. + * + * @param httpServletRequest request + * @param id The id of the port to update. + * @param requestRunStatus A portRunStatusEntity. + * @return A portEntity. + */ + @PUT + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Path("/{id}/run-status") + @ApiOperation( + value = "Updates run status of an input-port", + response = ProcessorEntity.class, + authorizations = { + @Authorization(value = "Write - /input-ports/{uuid} or /operation/input-ports/{uuid}") + } + ) + @ApiResponses( + value = { + @ApiResponse(code = 400, message = "NiFi was unable to complete the request because it was invalid. The request should not be retried without modification."), + @ApiResponse(code = 401, message = "Client could not be authenticated."), + @ApiResponse(code = 403, message = "Client is not authorized to make this request."), + @ApiResponse(code = 404, message = "The specified resource could not be found."), + @ApiResponse(code = 409, message = "The request was valid but NiFi was not in the appropriate state to process it. Retrying the same request later may be successful.") + } + ) + public Response updateRunStatus( + @Context final HttpServletRequest httpServletRequest, + @ApiParam( + value = "The port id.", + required = true + ) + @PathParam("id") final String id, + @ApiParam( + value = "The port run status.", + required = true + ) final PortRunStatusEntity requestRunStatus) { + + if (requestRunStatus == null) { + throw new IllegalArgumentException("Port run status must be specified."); + } + + if (requestRunStatus.getRevision() == null) { + throw new IllegalArgumentException("Revision must be specified."); + } + + requestRunStatus.validateState(); + + if (isReplicateRequest()) { + return replicate(HttpMethod.PUT, requestRunStatus); + } else if (isDisconnectedFromCluster()) { + verifyDisconnectedNodeModification(requestRunStatus.isDisconnectedNodeAcknowledged()); + } + + // handle expects request (usually from the cluster manager) + final Revision requestRevision = getRevision(requestRunStatus.getRevision(), id); + // Create port DTO to verify if it can be updated. + final PortDTO portDTO = new PortDTO(); + portDTO.setId(id); + portDTO.setState(requestRunStatus.getState()); + + return withWriteLock( + serviceFacade, + requestRunStatus, + requestRevision, + lookup -> { + final NiFiUser user = NiFiUserUtils.getNiFiUser(); + + final Authorizable authorizable = lookup.getInputPort(id); + OperationAuthorizable.authorize(authorizable, authorizer, RequestAction.WRITE, user); + }, + () -> serviceFacade.verifyUpdateInputPort(portDTO), + (revision, runStatusEntity) -> { + // update the input port + final PortEntity entity = serviceFacade.updateInputPort(revision, portDTO); --- End diff -- Fixed. > New user role: Operator who can start and stop components > --------------------------------------------------------- > > Key: NIFI-375 > URL: https://issues.apache.org/jira/browse/NIFI-375 > Project: Apache NiFi > Issue Type: New Feature > Components: Core Framework > Reporter: Daniel Ueberfluss > Assignee: Koji Kawamura > Priority: Major > > Would like to have a user role that allows a user to stop/start processors > but perform no other changes to the dataflow. > This would allow users to address simple problems without providing full > access to modifying a data flow. -- This message was sent by Atlassian JIRA (v7.6.3#76005)