You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mc...@apache.org on 2015/12/18 14:39:29 UTC

nifi git commit: NIFI-108: - Removing Delete FlowFile button. - Ensuring sort flags are being passed correctly. - Setting column widths. - Also including the cluster node address in the flowfile summaries.

Repository: nifi
Updated Branches:
  refs/heads/NIFI-108 bbe819811 -> f3385a853


NIFI-108:
- Removing Delete FlowFile button.
- Ensuring sort flags are being passed correctly.
- Setting column widths.
- Also including the cluster node address in the flowfile summaries.


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/f3385a85
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/f3385a85
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/f3385a85

Branch: refs/heads/NIFI-108
Commit: f3385a8533d2a4ecdc440aa117c2d274ae16ecf3
Parents: bbe8198
Author: Matt Gilman <ma...@gmail.com>
Authored: Fri Dec 18 08:39:16 2015 -0500
Committer: Matt Gilman <ma...@gmail.com>
Committed: Fri Dec 18 08:39:16 2015 -0500

----------------------------------------------------------------------
 .../nifi/web/api/dto/FlowFileSummaryDTO.java    | 17 +++++-
 .../cluster/manager/impl/WebClusterManager.java |  7 ++-
 .../apache/nifi/web/api/ConnectionResource.java | 57 --------------------
 .../webapp/js/nf/canvas/nf-queue-listing.js     | 49 ++++++-----------
 4 files changed, 37 insertions(+), 93 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/f3385a85/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/FlowFileSummaryDTO.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/FlowFileSummaryDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/FlowFileSummaryDTO.java
index e787e41..e9bf9c5 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/FlowFileSummaryDTO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/FlowFileSummaryDTO.java
@@ -30,7 +30,8 @@ public class FlowFileSummaryDTO {
     private Long lineageDuration;
     private Boolean isPenalized;
 
-    private String clusterNodeId;
+    private String clusterNodeId; // include when clustered
+    private String clusterNodeAddress; // include when clustered
 
     /**
      * @return the FlowFile uri
@@ -157,4 +158,18 @@ public class FlowFileSummaryDTO {
     public void setClusterNodeId(String clusterNodeId) {
         this.clusterNodeId = clusterNodeId;
     }
+
+    /**
+     * @return label for the node where this FlowFile resides
+     */
+    @ApiModelProperty(
+        value = "The label for the node where this FlowFile resides."
+    )
+    public String getClusterNodeAddress() {
+        return clusterNodeAddress;
+    }
+
+    public void setClusterNodeAddress(String clusterNodeAddress) {
+        this.clusterNodeAddress = clusterNodeAddress;
+    }
 }

http://git-wip-us.apache.org/repos/asf/nifi/blob/f3385a85/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/impl/WebClusterManager.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/impl/WebClusterManager.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/impl/WebClusterManager.java
index 3282318..f01b1a5 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/impl/WebClusterManager.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/manager/impl/WebClusterManager.java
@@ -2869,6 +2869,9 @@ public class WebClusterManager implements HttpClusterManager, ProtocolHandler, C
         int numStepsTotal = 0;
         boolean finished = true;
         for (final Map.Entry<NodeIdentifier, ListingRequestDTO> entry : listingRequestMap.entrySet()) {
+            final NodeIdentifier nodeIdentifier = entry.getKey();
+            final String nodeAddress = nodeIdentifier.getApiAddress() + ":" + nodeIdentifier.getApiPort();
+
             final ListingRequestDTO nodeRequest = entry.getValue();
 
             numStepsCompleted += nodeRequest.getCompletedStepCount();
@@ -2889,7 +2892,9 @@ public class WebClusterManager implements HttpClusterManager, ProtocolHandler, C
             }
 
             for (final FlowFileSummaryDTO summaryDTO : nodeRequest.getFlowFileSummaries()) {
-                summaryDTO.setClusterNodeId(entry.getKey().getId());
+                summaryDTO.setClusterNodeId(nodeIdentifier.getId());
+                summaryDTO.setClusterNodeAddress(nodeAddress);
+
                 flowFileSummaries.add(summaryDTO);
 
                 // Keep the set from growing beyond our max

http://git-wip-us.apache.org/repos/asf/nifi/blob/f3385a85/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ConnectionResource.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ConnectionResource.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ConnectionResource.java
index 4b5193f..9da3d77 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ConnectionResource.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ConnectionResource.java
@@ -1027,63 +1027,6 @@ public class ConnectionResource extends ApplicationResource {
         return generateOkResponse(entity).build();
     }
 
-    @DELETE
-    @Consumes(MediaType.WILDCARD)
-    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
-    @Path("/{connection-id}/flowfiles/{flowfile-uuid}")
-    @PreAuthorize("hasRole('ROLE_DFM')")
-    public Response deleteFlowFile(
-            @Context HttpServletRequest httpServletRequest,
-            @ApiParam(
-                value = "If the client id is not specified, new one will be generated. This value (whether specified or generated) is included in the response.",
-                required = false
-            )
-            @QueryParam(CLIENT_ID) @DefaultValue(StringUtils.EMPTY) ClientIdParameter clientId,
-            @ApiParam(
-                value = "The connection id.",
-                required = true
-            )
-            @PathParam("connection-id") String connectionId,
-            @ApiParam(
-                value = "The flowfile uuid.",
-                required = true
-            )
-            @PathParam("flowfile-uuid") String flowFileUuid,
-            @ApiParam(
-                value = "The id of the node where the content exists if clustered.",
-                required = false
-            )
-            @QueryParam("clusterNodeId") String clusterNodeId) {
-
-        // replicate if cluster manager
-        if (properties.isClusterManager()) {
-            // determine where this request should be sent
-            if (clusterNodeId == null) {
-                throw new IllegalArgumentException("The id of the node in the cluster is required.");
-            } else {
-                // get the target node and ensure it exists
-                final Node targetNode = clusterManager.getNode(clusterNodeId);
-                if (targetNode == null) {
-                    throw new UnknownNodeException("The specified cluster node does not exist.");
-                }
-
-                final Set<NodeIdentifier> targetNodes = new HashSet<>();
-                targetNodes.add(targetNode.getNodeId());
-
-                // replicate the request to the specific node
-                return clusterManager.applyRequest(HttpMethod.DELETE, getAbsolutePath(), getRequestParameters(true), getHeaders(), targetNodes).getResponse();
-            }
-        }
-
-        // handle expects request (usually from the cluster manager)
-        final String expects = httpServletRequest.getHeader(WebClusterManager.NCM_EXPECTS_HTTP_HEADER);
-        if (expects != null) {
-            return generateContinueResponse().build();
-        }
-
-        return null;
-    }
-
     /**
      * Gets the content for the specified flowfile in the specified connection.
      *

http://git-wip-us.apache.org/repos/asf/nifi/blob/f3385a85/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-queue-listing.js
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-queue-listing.js b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-queue-listing.js
index 5336b89..76bea54 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-queue-listing.js
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src/main/webapp/js/nf/canvas/nf-queue-listing.js
@@ -195,7 +195,7 @@ nf.QueueListing = (function () {
                             });
                         }
                     }
-                });
+                }).fail(nf.Common.handleAjaxError);
             } else {
                 // close the dialog
                 $('#listing-request-status-dialog').modal('hide');
@@ -234,7 +234,7 @@ nf.QueueListing = (function () {
             }).done(function(response) {
                 listingRequest = response.listingRequest;
                 processListingRequest(nextDelay);
-            }).fail(completeListingRequest);
+            }).fail(completeListingRequest).fail(nf.Common.handleAjaxError);
         };
 
         // issue the request to list the flow files
@@ -242,8 +242,8 @@ nf.QueueListing = (function () {
             type: 'POST',
             url: connection.component.uri + '/listing-requests',
             data: {
-                sortCol: sortCol,
-                sortDir: sortAsc ? 'asc' : 'desc'
+                sortColumn: sortCol,
+                sortOrder: sortAsc ? 'asc' : 'desc'
             },
             dataType: 'json'
         }).done(function(response) {
@@ -256,7 +256,7 @@ nf.QueueListing = (function () {
             // process the drop request
             listingRequest = response.listingRequest;
             processListingRequest(1);
-        }).fail(completeListingRequest);
+        }).fail(completeListingRequest).fail(nf.Common.handleAjaxError);
     };
 
     /**
@@ -278,24 +278,6 @@ nf.QueueListing = (function () {
     };
 
     /**
-     * Deletes the specified flowfile.
-     *
-     * @param flowFileSummary the flowfile summary
-     */
-    var deleteFlowfile = function (flowFileSummary) {
-        $.ajax({
-            type: 'DELETE',
-            url: flowFileSummary.uri,
-            dataType: 'json'
-        }).done(function(response) {
-            // get the table and update the row accordingly
-            var queueListingGrid = $('#queue-listing-table').data('gridInstance');
-            var queueListingData = queueListingGrid.getData();
-            queueListingData.deleteItem(flowFileSummary.uuid);
-        }).fail(nf.Common.handleAjaxError);
-    };
-
-    /**
      * Resets the table size.
      */
     var resetTableSize = function () {
@@ -330,24 +312,23 @@ nf.QueueListing = (function () {
                 return nf.Common.formatDuration(value);
             }
 
-            // function for formatting the actions column
-            var actionFormatter = function (row, cell, value, columnDef, dataContext) {
-                return '<img src="images/iconDelete.png" title="Delete FlowFile" class="pointer delete-flowfile" style="margin-top: 2px;"/>';
-            };
-
             // initialize the queue listing table
-            var flowFileListingColumns = [
-                {id: 'moreDetails', field: 'moreDetails', name: '&nbsp;', resizable: false, formatter: moreDetailsFormatter, sortable: true, width: 50, maxWidth: 50},
-                {id: 'QUEUE_POSITION', name: 'Position', field: 'position', sortable: true, resizable: true},
+            var queueListingColumns = [
+                {id: 'moreDetails', field: 'moreDetails', name: '&nbsp;', sortable: false, resizable: false, formatter: moreDetailsFormatter, width: 50, maxWidth: 50},
+                {id: 'QUEUE_POSITION', name: 'Position', field: 'position', sortable: true, resizable: false, width: 75, maxWidth: 75},
                 {id: 'FLOWFILE_UUID', name: 'UUID', field: 'uuid', sortable: true, resizable: true},
                 {id: 'FILENAME', name: 'Filename', field: 'filename', sortable: true, resizable: true},
                 {id: 'FLOWFILE_SIZE', name: 'File Size', field: 'size', sortable: true, resizable: true, defaultSortAsc: false, formatter: dataSizeFormatter},
                 {id: 'QUEUED_DURATION', name: 'Queued Duration', field: 'queuedDuration', sortable: true, resizable: true, formatter: formatDuration},
                 {id: 'FLOWFILE_AGE', name: 'Lineage Duration', field: 'lineageDuration', sortable: true, resizable: true, formatter: formatDuration},
-                {id: 'PENALIZATION', name: 'Penalized', field: 'penalized', sortable: true, resizable: true},
-                {id: 'actions', name: '&nbsp;', sortable: false, resizable: false, formatter: actionFormatter, width: 100, maxWidth: 100}
+                {id: 'PENALIZATION', name: 'Penalized', field: 'penalized', sortable: true, resizable: false, width: 100, maxWidth: 100}
             ];
 
+            // conditionally show the cluster node identifier
+            if (nf.Canvas.isClustered()) {
+                queueListingColumns.push({id: 'clusterNodeAddress', name: 'Node', field: 'clusterNodeAddress', sortable: false, resizable: true});
+            }
+
             var queueListingOptions = {
                 forceFitColumns: true,
                 enableTextSelectionOnCells: true,
@@ -363,7 +344,7 @@ nf.QueueListing = (function () {
             queueListingData.setItems([]);
 
             // initialize the grid
-            var queueListingGrid = new Slick.Grid('#queue-listing-table', queueListingData, flowFileListingColumns, queueListingOptions);
+            var queueListingGrid = new Slick.Grid('#queue-listing-table', queueListingData, queueListingColumns, queueListingOptions);
             queueListingGrid.setSelectionModel(new Slick.RowSelectionModel());
             queueListingGrid.registerPlugin(new Slick.AutoTooltips());
             queueListingGrid.setSortColumn(DEFAULT_SORT_COL, DEFAULT_SORT_ASC);