NIFI-2237: - Reorganizing the refactored REST endpoints. - Tweaking message text.

This closes #788.

Signed-off-by: Bryan Bende <bbende@apache.org>
This commit is contained in:
Matt Gilman 2016-08-04 10:37:42 -04:00 committed by Bryan Bende
parent cb76e67a3d
commit aae6325603
No known key found for this signature in database
GPG Key ID: A0DDA9ED50711C39
5 changed files with 141 additions and 59 deletions

View File

@ -78,7 +78,7 @@
<description> <description>
The Rest Api provides programmatic access to command and control a NiFi instance in real time. Start and The Rest Api provides programmatic access to command and control a NiFi instance in real time. Start and
stop processors, monitor queues, query provenance data, and more. Each endpoint below includes a description, stop processors, monitor queues, query provenance data, and more. Each endpoint below includes a description,
definitions of the expected input and output, potential response codes, and the authorities required definitions of the expected input and output, potential response codes, and the authorizations required
to invoke each service. to invoke each service.
</description> </description>
<contact> <contact>

View File

@ -95,7 +95,7 @@ public abstract class ApplicationResource {
public static final String PROXY_PORT_HTTP_HEADER = "X-ProxyPort"; public static final String PROXY_PORT_HTTP_HEADER = "X-ProxyPort";
public static final String PROXY_CONTEXT_PATH_HTTP_HEADER = "X-ProxyContextPath"; public static final String PROXY_CONTEXT_PATH_HTTP_HEADER = "X-ProxyContextPath";
protected static final String NON_GUARANTEED_ENDPOINT = "Note: This endpoint is subject to change as the NiFi and it's REST API evolve."; protected static final String NON_GUARANTEED_ENDPOINT = "Note: This endpoint is subject to change as NiFi and it's REST API evolve.";
private static final Logger logger = LoggerFactory.getLogger(ApplicationResource.class); private static final Logger logger = LoggerFactory.getLogger(ApplicationResource.class);

View File

@ -320,7 +320,8 @@ public class ProcessGroupResource extends ApplicationResource {
value = "Deletes a process group", value = "Deletes a process group",
response = ProcessGroupEntity.class, response = ProcessGroupEntity.class,
authorizations = { authorizations = {
@Authorization(value = "Write - /process-groups/{uuid}", type = "") @Authorization(value = "Write - /process-groups/{uuid}", type = ""),
@Authorization(value = "Write - /{component-type}/{uuid} - For all encapsulated components", type = "")
} }
) )
@ApiResponses( @ApiResponses(
@ -1638,7 +1639,7 @@ public class ProcessGroupResource extends ApplicationResource {
response = FlowSnippetEntity.class, response = FlowSnippetEntity.class,
authorizations = { authorizations = {
@Authorization(value = "Write - /process-groups/{uuid}", type = ""), @Authorization(value = "Write - /process-groups/{uuid}", type = ""),
@Authorization(value = "Read - /{component-type}/{uuid} - For each component in the snippet", type = "") @Authorization(value = "Read - /{component-type}/{uuid} - For each component in the snippet and their descendant components", type = "")
} }
) )
@ApiResponses( @ApiResponses(
@ -1826,7 +1827,7 @@ public class ProcessGroupResource extends ApplicationResource {
response = TemplateEntity.class, response = TemplateEntity.class,
authorizations = { authorizations = {
@Authorization(value = "Write - /process-groups/{uuid}", type = ""), @Authorization(value = "Write - /process-groups/{uuid}", type = ""),
@Authorization(value = "Read - /{component-type}/{uuid} - For each component in the snippet", type = "") @Authorization(value = "Read - /{component-type}/{uuid} - For each component in the snippet and their descendant components", type = "")
} }
) )
@ApiResponses( @ApiResponses(

View File

@ -104,7 +104,7 @@ public class SnippetResource extends ApplicationResource {
value = "Creates a snippet", value = "Creates a snippet",
response = SnippetEntity.class, response = SnippetEntity.class,
authorizations = { authorizations = {
@Authorization(value = "Read - /{component-type}/{uuid} - For each component in the Snippet", type = "") @Authorization(value = "Read or Write - /{component-type}/{uuid} - For every component (all Read or all Write) in the Snippet and their descendant components", type = "")
} }
) )
@ApiResponses( @ApiResponses(
@ -188,7 +188,7 @@ public class SnippetResource extends ApplicationResource {
response = SnippetEntity.class, response = SnippetEntity.class,
authorizations = { authorizations = {
@Authorization(value = "Write Process Group - /process-groups/{uuid}", type = ""), @Authorization(value = "Write Process Group - /process-groups/{uuid}", type = ""),
@Authorization(value = "Write - /{component-type}/{uuid} - For each component in the Snippet", type = "") @Authorization(value = "Write - /{component-type}/{uuid} - For each component in the Snippet and their descendant components", type = "")
} }
) )
@ApiResponses( @ApiResponses(
@ -267,7 +267,7 @@ public class SnippetResource extends ApplicationResource {
value = "Deletes the components in a snippet and drops the snippet", value = "Deletes the components in a snippet and drops the snippet",
response = SnippetEntity.class, response = SnippetEntity.class,
authorizations = { authorizations = {
@Authorization(value = "Write - /{component-type}/{uuid} - For each component in the Snippet", type = "") @Authorization(value = "Write - /{component-type}/{uuid} - For each component in the Snippet and their descendant components", type = "")
} }
) )
@ApiResponses( @ApiResponses(

View File

@ -425,31 +425,40 @@
var endpoints = $(this); var endpoints = $(this);
var path = endpoints.find('div.path').text(); var path = endpoints.find('div.path').text();
if (term === null || path.indexOf(term) > 0) { if (term === null || path.indexOf(term) === 0) {
endpoints.detach().appendTo(container); endpoints.detach().appendTo(container);
} }
}); });
}; };
// organize the endpoints // organize the endpoints
organizeEndpoints('cluster', $('#cluster-endpoints')); organizeEndpoints('/process-groups', $('#process-group-endpoints'));
organizeEndpoints('provenance', $('#provenance-endpoints')); organizeEndpoints('/controller-services', $('#controller-service-endpoints'));
organizeEndpoints('user', $('#user-endpoints')); organizeEndpoints('/reporting-tasks', $('#reporting-task-endpoints'));
organizeEndpoints('controller-services', $('#controller-service-endpoints')); organizeEndpoints('/counters', $('#counter-endpoints'));
organizeEndpoints('reporting-tasks', $('#reporting-task-endpoints')); organizeEndpoints('/controller', $('#controller-endpoints'));
organizeEndpoints('connections', $('#connection-endpoints')); organizeEndpoints('/connections', $('#connection-endpoints'));
organizeEndpoints('processors', $('#processor-endpoints')); organizeEndpoints('/flowfile-queue', $('#flowfile-queue-endpoints'));
organizeEndpoints('funnels', $('#funnel-endpoints')); organizeEndpoints('/processors', $('#processor-endpoints'));
organizeEndpoints('remote-process-groups', $('#remote-process-group-endpoints')); organizeEndpoints('/funnels', $('#funnel-endpoints'));
organizeEndpoints('input-ports', $('#input-port-endpoints')); organizeEndpoints('/remote-process-groups', $('#remote-process-group-endpoints'));
organizeEndpoints('output-ports', $('#output-port-endpoints')); organizeEndpoints('/input-ports', $('#input-port-endpoints'));
organizeEndpoints('labels', $('#label-endpoints')); organizeEndpoints('/output-ports', $('#output-port-endpoints'));
organizeEndpoints('process-groups', $('#process-group-endpoints')); organizeEndpoints('/labels', $('#label-endpoints'));
organizeEndpoints('history', $('#history-endpoints')); organizeEndpoints('/access', $('#access-endpoints'));
organizeEndpoints('access', $('#access-endpoints')); organizeEndpoints('/flow', $('#flow-endpoints'));
organizeEndpoints('/provenance-events', $('#provenance-event-endpoints'));
organizeEndpoints('/provenance', $('#provenance-endpoints'));
organizeEndpoints('/tenants', $('#tenant-endpoints'));
organizeEndpoints('/data-transfer', $('#data-transfer-endpoints'));
organizeEndpoints('/policies', $('#policy-endpoints'));
organizeEndpoints('/resources', $('#resource-endpoints'));
organizeEndpoints('/site-to-site', $('#site-to-site-endpoints'));
organizeEndpoints('/snippets', $('#snippet-endpoints'));
organizeEndpoints('/system', $('#system-diagnostic-endpoints'));
organizeEndpoints('/templates', $('#template-endpoints'));
organizeEndpoints(null, $('#controller-endpoints')); organizeEndpoints(null, $('#controller-endpoints'));
// handle expanding/collapsing the sections // handle expanding/collapsing the sections
$('div.section-header > div.title').on('click', function() { $('div.section-header > div.title').on('click', function() {
$(this).parent('div.section-header').next('div.section-endpoints').slideToggle(); $(this).parent('div.section-header').next('div.section-endpoints').slideToggle();
@ -477,15 +486,47 @@
<div class="section"> <div class="section">
<div class="section-header"> <div class="section-header">
<div class="title link">Controller</div> <div class="title link">Controller</div>
<div class="sub-title section-description">Get controller configuration, Search the flow, Manage templates, System diagnostics</div> <div class="sub-title section-description">Get controller configuration, Manage the cluster, Create reporting tasks</div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div id="controller-endpoints" class="section-endpoints hidden"></div> <div id="controller-endpoints" class="section-endpoints hidden"></div>
</div> </div>
<div class="section">
<div class="section-header">
<div class="title link">Controller Services</div>
<div class="sub-title section-description">Manage controller services, Update controller service references</div>
<div class="clear"></div>
</div>
<div id="controller-service-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">Reporting Tasks</div>
<div class="sub-title section-description">Manage reporting tasks</div>
<div class="clear"></div>
</div>
<div id="reporting-task-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">Counters</div>
<div class="sub-title section-description">Get counters, Reset counters</div>
<div class="clear"></div>
</div>
<div id="counter-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">Flow</div>
<div class="sub-title section-description">Get the data flow, Obtain component status, Query history</div>
<div class="clear"></div>
</div>
<div id="flow-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section"> <div class="section">
<div class="section-header"> <div class="section-header">
<div class="title link">Process Groups</div> <div class="title link">Process Groups</div>
<div class="sub-title section-description">Get the flow, Instantiate a template, Manage sub groups, Monitor component status</div> <div class="sub-title section-description">Create components, Instantiate a template, Upload a template</div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div id="process-group-endpoints" class="section-endpoints hidden"></div> <div id="process-group-endpoints" class="section-endpoints hidden"></div>
@ -506,6 +547,14 @@
</div> </div>
<div id="connection-endpoints" class="section-endpoints hidden"></div> <div id="connection-endpoints" class="section-endpoints hidden"></div>
</div> </div>
<div class="section">
<div class="section-header">
<div class="title link">FlowFile Queues</div>
<div class="sub-title section-description">View queue contents, Download flowfile content, Empty queue</div>
<div class="clear"></div>
</div>
<div id="flowfile-queue-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section"> <div class="section">
<div class="section-header"> <div class="section-header">
<div class="title link">Input Ports</div> <div class="title link">Input Ports</div>
@ -546,53 +595,85 @@
</div> </div>
<div id="funnel-endpoints" class="section-endpoints hidden"></div> <div id="funnel-endpoints" class="section-endpoints hidden"></div>
</div> </div>
<div class="section">
<div class="section-header">
<div class="title link">Controller Services</div>
<div class="sub-title section-description">Manage controller services, Update controller service references</div>
<div class="clear"></div>
</div>
<div id="controller-service-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">Reporting Tasks</div>
<div class="sub-title section-description">Manage reporting tasks</div>
<div class="clear"></div>
</div>
<div id="reporting-task-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">Cluster</div>
<div class="sub-title section-description">View node status, Disconnect nodes, Aggregate component status</div>
<div class="clear"></div>
</div>
<div id="cluster-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section"> <div class="section">
<div class="section-header"> <div class="section-header">
<div class="title link">Provenance</div> <div class="title link">Provenance</div>
<div class="sub-title section-description">Query provenance, Search event lineage, Download content, Replay</div> <div class="sub-title section-description">Query provenance, Search event lineage</div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div id="provenance-endpoints" class="section-endpoints hidden"></div> <div id="provenance-endpoints" class="section-endpoints hidden"></div>
</div> </div>
<div class="section"> <div class="section">
<div class="section-header"> <div class="section-header">
<div class="title link">History</div> <div class="title link">Provenance Events</div>
<div class="sub-title section-description">View flow history, Purge flow history</div> <div class="sub-title section-description">Download content, Replay</div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div id="history-endpoints" class="section-endpoints hidden"></div> <div id="provenance-event-endpoints" class="section-endpoints hidden"></div>
</div> </div>
<div class="section"> <div class="section">
<div class="section-header"> <div class="section-header">
<div class="title link">Users</div> <div class="title link">Tenants</div>
<div class="sub-title section-description">Update user access, revoke accounts, get account details, Group users</div> <div class="sub-title section-description">Add users and group, Group users</div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div id="user-endpoints" class="section-endpoints hidden"></div> <div id="tenant-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">Policies</div>
<div class="sub-title section-description">Get policies, Create policies</div>
<div class="clear"></div>
</div>
<div id="policy-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">Resources</div>
<div class="sub-title section-description">Get resources</div>
<div class="clear"></div>
</div>
<div id="resource-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">Site to Site</div>
<div class="sub-title section-description">Get available ports, Get peers</div>
<div class="clear"></div>
</div>
<div id="site-to-site-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">Data Transfer</div>
<div class="sub-title section-description">Send data, Receive data</div>
<div class="clear"></div>
</div>
<div id="data-transfer-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">Snippets</div>
<div class="sub-title section-description">Create a snippet, Move a snippet, Delete a snippet</div>
<div class="clear"></div>
</div>
<div id="snippet-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">Templates</div>
<div class="sub-title section-description">Download a template, Delete a template</div>
<div class="clear"></div>
</div>
<div id="template-endpoints" class="section-endpoints hidden"></div>
</div>
<div class="section">
<div class="section-header">
<div class="title link">System Diagnostics</div>
<div class="sub-title section-description">Get system diagnostics</div>
<div class="clear"></div>
</div>
<div id="system-diagnostic-endpoints" class="section-endpoints hidden"></div>
</div> </div>
<div class="unorganized hidden"> <div class="unorganized hidden">
{{#each paths}} {{#each paths}}