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/03/11 21:37:12 UTC
incubator-nifi git commit: NIFI-250: - Updating controller service
auditing to ensure transitive referenced components are reported correctly. -
Restoring reference to reporting task provider.
Repository: incubator-nifi
Updated Branches:
refs/heads/NIFI-250 fe09680de -> 4f41202e9
NIFI-250:
- Updating controller service auditing to ensure transitive referenced components are reported correctly.
- Restoring reference to reporting task provider.
Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/4f41202e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/4f41202e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/4f41202e
Branch: refs/heads/NIFI-250
Commit: 4f41202e9df732211f9a9b2ccd54d1f652984d8b
Parents: fe09680
Author: Matt Gilman <ma...@gmail.com>
Authored: Wed Mar 11 16:36:56 2015 -0400
Committer: Matt Gilman <ma...@gmail.com>
Committed: Wed Mar 11 16:36:56 2015 -0400
----------------------------------------------------------------------
.../nifi/audit/ControllerServiceAuditor.java | 123 ++++++++++++-------
.../web/dao/impl/StandardReportingTaskDAO.java | 6 +-
2 files changed, 84 insertions(+), 45 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4f41202e/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/audit/ControllerServiceAuditor.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/audit/ControllerServiceAuditor.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/audit/ControllerServiceAuditor.java
index f6cc131..ea3af14 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/audit/ControllerServiceAuditor.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/audit/ControllerServiceAuditor.java
@@ -32,12 +32,14 @@ import org.apache.nifi.action.details.ConfigureDetails;
import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.controller.ConfiguredComponent;
import org.apache.nifi.controller.ProcessorNode;
+import org.apache.nifi.controller.ReportingTaskNode;
import org.apache.nifi.controller.ScheduledState;
import org.apache.nifi.web.security.user.NiFiUserUtils;
import org.apache.nifi.user.NiFiUser;
import org.apache.nifi.controller.service.ControllerServiceNode;
import org.apache.nifi.controller.service.ControllerServiceReference;
import org.apache.nifi.controller.service.ControllerServiceState;
+import org.apache.nifi.reporting.ReportingTask;
import org.apache.nifi.web.api.dto.ControllerServiceDTO;
import org.apache.nifi.web.dao.ControllerServiceDAO;
import org.aspectj.lang.ProceedingJoinPoint;
@@ -219,6 +221,7 @@ public class ControllerServiceAuditor extends NiFiAuditor {
* Audits the update of a component referencing a controller service.
*
* @param proceedingJoinPoint
+ * @param controllerServiceId
* @return
* @throws Throwable
*/
@@ -233,49 +236,11 @@ public class ControllerServiceAuditor extends NiFiAuditor {
if (user != null) {
final Collection<Action> actions = new ArrayList<>();
+ final Collection<String> visitedServices = new ArrayList<>();
+ visitedServices.add(controllerServiceReference.getReferencedComponent().getIdentifier());
- // consider each component updates
- for (final ConfiguredComponent component : controllerServiceReference.getReferencingComponents()) {
- if (component instanceof ProcessorNode) {
- final ProcessorNode processor = ((ProcessorNode) component);
-
- // create the processor details
- ExtensionDetails processorDetails = new ExtensionDetails();
- processorDetails.setType(processor.getProcessor().getClass().getSimpleName());
-
- // create a processor action
- Action processorAction = new Action();
- processorAction.setUserDn(user.getDn());
- processorAction.setUserName(user.getUserName());
- processorAction.setTimestamp(new Date());
- processorAction.setSourceId(processor.getIdentifier());
- processorAction.setSourceName(processor.getName());
- processorAction.setSourceType(Component.Processor);
- processorAction.setComponentDetails(processorDetails);
- processorAction.setOperation(ScheduledState.RUNNING.equals(processor.getScheduledState()) ? Operation.Start : Operation.Stop);
- actions.add(processorAction);
- } else if (component instanceof ControllerServiceNode) {
- final ControllerServiceNode controllerService = ((ControllerServiceNode) component);
-
- // create the processor details
- ExtensionDetails serviceDetails = new ExtensionDetails();
- serviceDetails.setType(controllerService.getControllerServiceImplementation().getClass().getSimpleName());
-
- // create a controller service action
- Action serviceAction = new Action();
- serviceAction.setUserDn(user.getDn());
- serviceAction.setUserName(user.getUserName());
- serviceAction.setTimestamp(new Date());
- serviceAction.setSourceId(controllerService.getIdentifier());
- serviceAction.setSourceName(controllerService.getName());
- serviceAction.setSourceType(Component.ControllerService);
- serviceAction.setComponentDetails(serviceDetails);
- serviceAction.setOperation(isDisabled(controllerService) ? Operation.Disable : Operation.Enable);
- actions.add(serviceAction);
-
- // need to consider components referencing this controller service (transitive)
- }
- }
+ // get all applicable actions
+ getUpdateActionsForReferencingComponents(user, actions, visitedServices, controllerServiceReference.getReferencingComponents());
// ensure there are actions to record
if (!actions.isEmpty()) {
@@ -288,6 +253,80 @@ public class ControllerServiceAuditor extends NiFiAuditor {
}
/**
+ * Gets the update actions for all specified referencing components.
+ *
+ * @param user
+ * @param actions
+ * @param visitedServices
+ * @param referencingComponents
+ */
+ private void getUpdateActionsForReferencingComponents(final NiFiUser user, final Collection<Action> actions, final Collection<String> visitedServices, final Set<ConfiguredComponent> referencingComponents) {
+ // consider each component updates
+ for (final ConfiguredComponent component : referencingComponents) {
+ if (component instanceof ProcessorNode) {
+ final ProcessorNode processor = ((ProcessorNode) component);
+
+ // create the processor details
+ ExtensionDetails processorDetails = new ExtensionDetails();
+ processorDetails.setType(processor.getProcessor().getClass().getSimpleName());
+
+ // create a processor action
+ Action processorAction = new Action();
+ processorAction.setUserDn(user.getDn());
+ processorAction.setUserName(user.getUserName());
+ processorAction.setTimestamp(new Date());
+ processorAction.setSourceId(processor.getIdentifier());
+ processorAction.setSourceName(processor.getName());
+ processorAction.setSourceType(Component.Processor);
+ processorAction.setComponentDetails(processorDetails);
+ processorAction.setOperation(ScheduledState.RUNNING.equals(processor.getScheduledState()) ? Operation.Start : Operation.Stop);
+ actions.add(processorAction);
+ } else if (component instanceof ReportingTask) {
+ final ReportingTaskNode reportingTask = ((ReportingTaskNode) component);
+
+ // create the reporting task details
+ ExtensionDetails processorDetails = new ExtensionDetails();
+ processorDetails.setType(reportingTask.getReportingTask().getClass().getSimpleName());
+
+ // create a reporting task action
+ Action reportingTaskAction = new Action();
+ reportingTaskAction.setUserDn(user.getDn());
+ reportingTaskAction.setUserName(user.getUserName());
+ reportingTaskAction.setTimestamp(new Date());
+ reportingTaskAction.setSourceId(reportingTask.getIdentifier());
+ reportingTaskAction.setSourceName(reportingTask.getName());
+ reportingTaskAction.setSourceType(Component.ReportingTask);
+ reportingTaskAction.setComponentDetails(processorDetails);
+ reportingTaskAction.setOperation(ScheduledState.RUNNING.equals(reportingTask.getScheduledState()) ? Operation.Start : Operation.Stop);
+ actions.add(reportingTaskAction);
+ } else if (component instanceof ControllerServiceNode) {
+ final ControllerServiceNode controllerService = ((ControllerServiceNode) component);
+
+ // create the controller service details
+ ExtensionDetails serviceDetails = new ExtensionDetails();
+ serviceDetails.setType(controllerService.getControllerServiceImplementation().getClass().getSimpleName());
+
+ // create a controller service action
+ Action serviceAction = new Action();
+ serviceAction.setUserDn(user.getDn());
+ serviceAction.setUserName(user.getUserName());
+ serviceAction.setTimestamp(new Date());
+ serviceAction.setSourceId(controllerService.getIdentifier());
+ serviceAction.setSourceName(controllerService.getName());
+ serviceAction.setSourceType(Component.ControllerService);
+ serviceAction.setComponentDetails(serviceDetails);
+ serviceAction.setOperation(isDisabled(controllerService) ? Operation.Disable : Operation.Enable);
+ actions.add(serviceAction);
+
+ // need to consider components referencing this controller service (transitive)
+ if (!visitedServices.contains(controllerService.getIdentifier())) {
+ getUpdateActionsForReferencingComponents(user, actions, visitedServices, controllerService.getReferences().getReferencingComponents());
+ }
+ }
+ }
+ }
+
+ /**
* Audits the removal of a controller service via deleteControllerService().
*
* @param proceedingJoinPoint
http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/4f41202e/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java
----------------------------------------------------------------------
diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java
index 0bdbe42..8a9a897 100644
--- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java
+++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java
@@ -21,13 +21,13 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.RejectedExecutionException;
-import org.apache.nifi.controller.FlowController;
import org.apache.nifi.controller.ReportingTaskNode;
import org.apache.nifi.controller.ScheduledState;
import org.apache.nifi.controller.exception.ProcessorLifeCycleException;
import org.apache.nifi.controller.exception.ValidationException;
import org.apache.nifi.controller.reporting.ReportingTaskInstantiationException;
+import org.apache.nifi.controller.reporting.ReportingTaskProvider;
import org.apache.nifi.web.NiFiCoreException;
import org.apache.nifi.web.ResourceNotFoundException;
import org.apache.nifi.web.api.dto.ReportingTaskDTO;
@@ -35,7 +35,7 @@ import org.apache.nifi.web.dao.ReportingTaskDAO;
public class StandardReportingTaskDAO extends ComponentDAO implements ReportingTaskDAO {
- private FlowController reportingTaskProvider;
+ private ReportingTaskProvider reportingTaskProvider;
/**
* Locates the specified reporting task.
@@ -298,7 +298,7 @@ public class StandardReportingTaskDAO extends ComponentDAO implements ReportingT
/* setters */
- public void setReportingTaskProvider(FlowController reportingTaskProvider) {
+ public void setReportingTaskProvider(ReportingTaskProvider reportingTaskProvider) {
this.reportingTaskProvider = reportingTaskProvider;
}
}