NIFI-5066: - Ensuring we verify we can enable/disable when appropriate.
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/18ec3861 Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/18ec3861 Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/18ec3861 Branch: refs/heads/master Commit: 18ec3861509193ab1affd196c01b315db6b98919 Parents: 64cd340 Author: Matt Gilman <[email protected]> Authored: Thu May 24 16:12:02 2018 -0400 Committer: Mark Payne <[email protected]> Committed: Fri May 25 11:22:21 2018 -0400 ---------------------------------------------------------------------- .../java/org/apache/nifi/web/NiFiServiceFacade.java | 9 +++++++++ .../apache/nifi/web/StandardNiFiServiceFacade.java | 5 +++++ .../java/org/apache/nifi/web/api/FlowResource.java | 8 +++++++- .../java/org/apache/nifi/web/dao/ProcessGroupDAO.java | 10 ++++++++++ .../nifi/web/dao/impl/StandardProcessGroupDAO.java | 14 ++++++++++++++ 5 files changed, 45 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/18ec3861/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java index e402e1c..9028f41 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java @@ -1010,6 +1010,15 @@ public interface NiFiServiceFacade { void verifyScheduleComponents(String processGroupId, ScheduledState state, Set<String> componentIds); /** + * Verifies the contents of the specified process group can be enabled or disabled. + * + * @param processGroupId the ProcessGroup id + * @param state scheduled state + * @param componentIds the components + */ + void verifyEnableComponents(String processGroupId, ScheduledState state, Set<String> componentIds); + + /** * Verifies the controller services with the given ID's can be enabled or disabled * * @param processGroupId the ID of the process group http://git-wip-us.apache.org/repos/asf/nifi/blob/18ec3861/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java index 0a008ea..5a01736 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java @@ -496,6 +496,11 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade { } @Override + public void verifyEnableComponents(String processGroupId, ScheduledState state, Set<String> componentIds) { + processGroupDAO.verifyEnableComponents(processGroupId, state, componentIds); + } + + @Override public void verifyActivateControllerServices(final String groupId, final ControllerServiceState state, final Collection<String> serviceIds) { processGroupDAO.verifyActivateControllerServices(state, serviceIds); } http://git-wip-us.apache.org/repos/asf/nifi/blob/18ec3861/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowResource.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/FlowResource.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowResource.java index eaa48d2..3446aa3 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowResource.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowResource.java @@ -686,7 +686,13 @@ public class FlowResource extends ApplicationResource { connectable.authorize(authorizer, RequestAction.WRITE, NiFiUserUtils.getNiFiUser()); }); }, - () -> serviceFacade.verifyScheduleComponents(id, state, requestComponentRevisions.keySet()), + () -> { + if (STATE_ENABLED.equals(requestScheduleComponentsEntity.getState()) || STATE_DISABLED.equals(requestScheduleComponentsEntity.getState())) { + serviceFacade.verifyEnableComponents(id, state, requestComponentRevisions.keySet()); + } else { + serviceFacade.verifyScheduleComponents(id, state, requestComponentRevisions.keySet()); + } + }, (revisions, scheduleComponentsEntity) -> { final ScheduledState scheduledState; http://git-wip-us.apache.org/repos/asf/nifi/blob/18ec3861/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessGroupDAO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessGroupDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessGroupDAO.java index 5cf7ecb..ffc3134 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessGroupDAO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessGroupDAO.java @@ -68,10 +68,20 @@ public interface ProcessGroupDAO { * * @param groupId id * @param state scheduled state + * @param componentIds component ids */ void verifyScheduleComponents(String groupId, ScheduledState state, Set<String> componentIds); /** + * Verifies the specified process group can be enabled. + * + * @param groupId id + * @param state scheduled state + * @param componentIds component ids + */ + void verifyEnableComponents(String groupId, ScheduledState state, Set<String> componentIds); + + /** * Verifies the specified controller services can be modified * * @param state the desired state http://git-wip-us.apache.org/repos/asf/nifi/blob/18ec3861/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java index 265d128..cce3390 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessGroupDAO.java @@ -131,6 +131,20 @@ public class StandardProcessGroupDAO extends ComponentDAO implements ProcessGrou } @Override + public void verifyEnableComponents(String groupId, ScheduledState state, Set<String> componentIds) { + final ProcessGroup group = locateProcessGroup(flowController, groupId); + + for (final String componentId : componentIds) { + final Connectable connectable = group.findLocalConnectable(componentId); + if (ScheduledState.STOPPED.equals(state)) { + connectable.verifyCanEnable(); + } else if (ScheduledState.DISABLED.equals(state)) { + connectable.verifyCanDisable(); + } + } + } + + @Override public void verifyActivateControllerServices(final ControllerServiceState state, final Collection<String> serviceIds) { final Set<ControllerServiceNode> serviceNodes = serviceIds.stream() .map(flowController::getControllerServiceNode)
