/** * Delete paragraph REST API * * @param * @return JSON with status.OK * @throws IOException */ @DELETE @Path("{notebookId}/paragraph/{paragraphId}") @ZeppelinApi public Response deleteParagraph( @PathParam("notebookId") String notebookId, @PathParam("paragraphId") String paragraphId) throws IOException { LOG.info("delete paragraph {} {}", notebookId, paragraphId); Note note = notebook.getNote(notebookId); if (note == null) { return new JsonResponse(Status.NOT_FOUND, "note not found.").build(); } Paragraph p = note.getParagraph(paragraphId); if (p == null) { return new JsonResponse(Status.NOT_FOUND, "paragraph not found.").build(); } AuthenticationInfo subject = new AuthenticationInfo(SecurityUtils.getPrincipal()); note.removeParagraph(paragraphId); note.persist(subject); notebookServer.broadcastNote(note); return new JsonResponse(Status.OK, "").build(); }
/** * Run paragraph job REST API * * @param message - JSON with params if user wants to update dynamic form's value null, empty * string, empty json if user doesn't want to update * @return JSON with status.OK * @throws IOException, IllegalArgumentException */ @POST @Path("job/{notebookId}/{paragraphId}") @ZeppelinApi public Response runParagraph( @PathParam("notebookId") String notebookId, @PathParam("paragraphId") String paragraphId, String message) throws IOException, IllegalArgumentException { LOG.info("run paragraph job {} {} {}", notebookId, paragraphId, message); Note note = notebook.getNote(notebookId); if (note == null) { return new JsonResponse<>(Status.NOT_FOUND, "note not found.").build(); } Paragraph paragraph = note.getParagraph(paragraphId); if (paragraph == null) { return new JsonResponse<>(Status.NOT_FOUND, "paragraph not found.").build(); } // handle params if presented if (!StringUtils.isEmpty(message)) { RunParagraphWithParametersRequest request = gson.fromJson(message, RunParagraphWithParametersRequest.class); Map<String, Object> paramsForUpdating = request.getParams(); if (paramsForUpdating != null) { paragraph.settings.getParams().putAll(paramsForUpdating); AuthenticationInfo subject = new AuthenticationInfo(SecurityUtils.getPrincipal()); note.persist(subject); } } note.run(paragraph.getId()); return new JsonResponse<>(Status.OK).build(); }
/** * Move paragraph REST API * * @param newIndex - new index to move * @return JSON with status.OK * @throws IOException */ @POST @Path("{notebookId}/paragraph/{paragraphId}/move/{newIndex}") @ZeppelinApi public Response moveParagraph( @PathParam("notebookId") String notebookId, @PathParam("paragraphId") String paragraphId, @PathParam("newIndex") String newIndex) throws IOException { LOG.info("move paragraph {} {} {}", notebookId, paragraphId, newIndex); Note note = notebook.getNote(notebookId); if (note == null) { return new JsonResponse(Status.NOT_FOUND, "note not found.").build(); } Paragraph p = note.getParagraph(paragraphId); if (p == null) { return new JsonResponse(Status.NOT_FOUND, "paragraph not found.").build(); } try { note.moveParagraph(paragraphId, Integer.parseInt(newIndex), true); AuthenticationInfo subject = new AuthenticationInfo(SecurityUtils.getPrincipal()); note.persist(subject); notebookServer.broadcastNote(note); return new JsonResponse(Status.OK, "").build(); } catch (IndexOutOfBoundsException e) { LOG.error("Exception in NotebookRestApi while moveParagraph ", e); return new JsonResponse(Status.BAD_REQUEST, "paragraph's new index is out of bound").build(); } }
public List<Map<String, Object>> getJobListByParagraphId(String paragraphID) { String gotNoteId = null; List<Note> notes = getAllNotes(); for (Note note : notes) { Paragraph p = note.getParagraph(paragraphID); if (p != null) { gotNoteId = note.getId(); } } return getJobListBymNotebookId(gotNoteId); }
/** * Stop(delete) paragraph job REST API * * @param * @return JSON with status.OK * @throws IOException, IllegalArgumentException */ @DELETE @Path("job/{notebookId}/{paragraphId}") @ZeppelinApi public Response stopParagraph( @PathParam("notebookId") String notebookId, @PathParam("paragraphId") String paragraphId) throws IOException, IllegalArgumentException { LOG.info("stop paragraph job {} ", notebookId); Note note = notebook.getNote(notebookId); if (note == null) { return new JsonResponse<>(Status.NOT_FOUND, "note not found.").build(); } Paragraph p = note.getParagraph(paragraphId); if (p == null) { return new JsonResponse<>(Status.NOT_FOUND, "paragraph not found.").build(); } p.abort(); return new JsonResponse<>(Status.OK).build(); }
/** * Get paragraph REST API * * @param * @return JSON with information of the paragraph * @throws IOException */ @GET @Path("{notebookId}/paragraph/{paragraphId}") @ZeppelinApi public Response getParagraph( @PathParam("notebookId") String notebookId, @PathParam("paragraphId") String paragraphId) throws IOException { LOG.info("get paragraph {} {}", notebookId, paragraphId); Note note = notebook.getNote(notebookId); if (note == null) { return new JsonResponse(Status.NOT_FOUND, "note not found.").build(); } Paragraph p = note.getParagraph(paragraphId); if (p == null) { return new JsonResponse(Status.NOT_FOUND, "paragraph not found.").build(); } return new JsonResponse(Status.OK, "", p).build(); }
/** * Stop(delete) paragraph job REST API * * @param notebookId ID of Notebook * @param paragraphId ID of Paragraph * @return JSON with status.OK * @throws IOException, IllegalArgumentException */ @DELETE @Path("job/{notebookId}/{paragraphId}") @ZeppelinApi public Response stopParagraph( @PathParam("notebookId") String notebookId, @PathParam("paragraphId") String paragraphId) throws IOException, IllegalArgumentException { /** TODO(jl): Fixed notebookId to noteId https://issues.apache.org/jira/browse/ZEPPELIN-1163 */ LOG.info("stop paragraph job {} ", notebookId); Note note = notebook.getNote(notebookId); if (note == null) { return new JsonResponse<>(Status.NOT_FOUND, "note not found.").build(); } Paragraph p = note.getParagraph(paragraphId); if (p == null) { return new JsonResponse<>(Status.NOT_FOUND, "paragraph not found.").build(); } p.abort(); return new JsonResponse<>(Status.OK).build(); }
/** * Get notebook paragraph job status REST API * * @param notebookId ID of Notebook * @param paragraphId ID of Paragraph * @return JSON with status.OK * @throws IOException, IllegalArgumentException */ @GET @Path("job/{notebookId}/{paragraphId}") @ZeppelinApi public Response getNoteParagraphJobStatus( @PathParam("notebookId") String notebookId, @PathParam("paragraphId") String paragraphId) throws IOException, IllegalArgumentException { LOG.info("get notebook paragraph job status."); Note note = notebook.getNote(notebookId); if (note == null) { return new JsonResponse<>(Status.NOT_FOUND, "note not found.").build(); } Paragraph paragraph = note.getParagraph(paragraphId); if (paragraph == null) { return new JsonResponse<>(Status.NOT_FOUND, "paragraph not found.").build(); } return new JsonResponse<>(Status.OK, null, note.generateSingleParagraphInfo(paragraphId)) .build(); }