You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by st...@apache.org on 2016/03/24 13:09:23 UTC
[51/51] [abbrv] ambari git commit: Add ambari property to switch
auditlog
Add ambari property to switch auditlog
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/716b45ca
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/716b45ca
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/716b45ca
Branch: refs/heads/audit_logging
Commit: 716b45ca87244e9f30fc8dff5261afd002722fc5
Parents: 0a1e572
Author: Daniel Gergely <dg...@hortonworks.com>
Authored: Thu Mar 24 09:44:19 2016 +0100
Committer: Toader, Sebastian <st...@hortonworks.com>
Committed: Thu Mar 24 13:06:50 2016 +0100
----------------------------------------------------------------------
.../actionmanager/ActionDBAccessorImpl.java | 5 +++-
.../ambari/server/audit/AsyncAuditLogger.java | 28 +++++++++++++++-----
.../apache/ambari/server/audit/AuditLogger.java | 5 ++++
.../server/audit/AuditLoggerDefaultImpl.java | 21 +++++++++++++++
.../audit/request/RequestAuditLoggerImpl.java | 4 +++
.../server/configuration/Configuration.java | 15 +++--------
.../actionmanager/TestActionDBAccessorImpl.java | 4 +++
.../server/actionmanager/TestActionManager.java | 4 +++
.../server/agent/HeartbeatProcessorTest.java | 4 +++
.../audit/request/RequestAuditLoggerTest.java | 1 +
.../server/orm/InMemoryDefaultTestModule.java | 2 +-
11 files changed, 74 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/716b45ca/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
index 9ebe543..1519d4d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
@@ -814,12 +814,15 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
* @param requestId
*/
private void auditLog(HostRoleCommandEntity commandEntity, Long requestId) {
+ if(!auditLogger.isEnabled()) {
+ return;
+ }
+
if(requestId != null) {
CalculatedStatus cs = calculateStatus(commandEntity, requestId);
if (!temporaryStatusCache.containsKey(requestId) || temporaryStatusCache.get(requestId) != cs.getStatus()) {
-
RequestEntity request = requestDAO.findByPK(requestId);
String context = request != null ? request.getRequestContext() : null;
AuditEvent auditEvent = OperationStatusAuditEvent.builder()
http://git-wip-us.apache.org/repos/asf/ambari/blob/716b45ca/ambari-server/src/main/java/org/apache/ambari/server/audit/AsyncAuditLogger.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/AsyncAuditLogger.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/AsyncAuditLogger.java
index ac96391..11d0301 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/AsyncAuditLogger.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/AsyncAuditLogger.java
@@ -25,6 +25,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.ambari.server.audit.event.AuditEvent;
+import org.apache.ambari.server.configuration.Configuration;
import com.google.common.eventbus.AsyncEventBus;
import com.google.common.eventbus.EventBus;
@@ -48,21 +49,36 @@ class AsyncAuditLogger implements AuditLogger {
private EventBus eventBus;
/**
+ * Indicates if audit log feature is enabled
+ */
+ private final boolean isEnabled;
+
+ /**
* Constructor.
*
* @param auditLogger the audit logger to use
*/
@Inject
- public AsyncAuditLogger(@Named(InnerLogger) AuditLogger auditLogger) {
- eventBus = new AsyncEventBus("AuditLoggerEventBus", new ThreadPoolExecutor(0, 1, 5L, TimeUnit.MINUTES,
- new LinkedBlockingQueue<Runnable>(), new AuditLogThreadFactory(),
- new ThreadPoolExecutor.CallerRunsPolicy()));
- eventBus.register(auditLogger);
+ public AsyncAuditLogger(@Named(InnerLogger) AuditLogger auditLogger, Configuration configuration) {
+ isEnabled = configuration.isAuditLogEnabled();
+ if(isEnabled) {
+ eventBus = new AsyncEventBus("AuditLoggerEventBus", new ThreadPoolExecutor(0, 1, 5L, TimeUnit.MINUTES,
+ new LinkedBlockingQueue<Runnable>(), new AuditLogThreadFactory(),
+ new ThreadPoolExecutor.CallerRunsPolicy()));
+ eventBus.register(auditLogger);
+ }
}
@Override
public void log(AuditEvent event) {
- eventBus.post(event);
+ if(isEnabled) {
+ eventBus.post(event);
+ }
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return isEnabled;
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/716b45ca/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLogger.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLogger.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLogger.java
index 77a97ad..8c68e3e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLogger.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLogger.java
@@ -31,4 +31,9 @@ public interface AuditLogger {
*/
void log(final AuditEvent event);
+ /**
+ * Returns if the feature is enabled
+ */
+ boolean isEnabled();
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/716b45ca/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerDefaultImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerDefaultImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerDefaultImpl.java
index 16d568d..70ff5a3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerDefaultImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerDefaultImpl.java
@@ -23,10 +23,12 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.ambari.server.audit.event.AuditEvent;
+import org.apache.ambari.server.configuration.Configuration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.eventbus.Subscribe;
+import com.google.inject.Inject;
import com.google.inject.Singleton;
/**
@@ -38,15 +40,34 @@ public class AuditLoggerDefaultImpl implements AuditLogger {
private static final Logger LOG = LoggerFactory.getLogger("audit");
/**
+ * Indicates if audit log feature is enabled
+ */
+ private final boolean isEnabled;
+
+ @Inject
+ public AuditLoggerDefaultImpl(Configuration configuration) {
+ isEnabled = configuration.isAuditLogEnabled();
+ }
+
+ /**
* {@inheritDoc}
*/
@Override
@Subscribe
public void log(AuditEvent event) {
+ if(!isEnabled) {
+ return;
+ }
+
Date date = new Date(event.getTimestamp());
//2016-03-11T10:42:36.376Z
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
LOG.info("{}, {}", dateFormat.format(date), event.getAuditMessage());
}
+
+ @Override
+ public boolean isEnabled() {
+ return isEnabled;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/716b45ca/ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditLoggerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditLoggerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditLoggerImpl.java
index 4124921..56efd18 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditLoggerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditLoggerImpl.java
@@ -72,6 +72,10 @@ public class RequestAuditLoggerImpl implements RequestAuditLogger {
*/
@Override
public void log(Request request, Result result) {
+ if(!auditLogger.isEnabled()) {
+ return;
+ }
+
Resource.Type resourceType = request.getResource().getResourceDefinition().getType();
Request.Type requestType = request.getRequestType();
ResultStatus resultStatus = result.getStatus();
http://git-wip-us.apache.org/repos/asf/ambari/blob/716b45ca/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index c4f731c..5d182d3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -632,14 +632,9 @@ public class Configuration {
"custom.sqlanywhere.jdbc.name"));
/**
- * Capacity for buffered audit logger
+ * Main switch for audit log feature
*/
- private static final String BUFFERED_AUDIT_LOGGER_CAPACITY_KEY = "auditlog.bufferedlogger.capacity";
- /**
- * Default value for buffered audit logger capacity
- */
- private static final int BUFFERED_AUDIT_LOGGER_CAPACITY_DEFAULT = 10000;
-
+ private static final String AUDIT_LOG_ENABLED = "auditlog.enabled";
private static final Logger LOG = LoggerFactory.getLogger(
Configuration.class);
@@ -2802,9 +2797,7 @@ public class Configuration {
return properties.getProperty(AGENT_STACK_RETRY_ON_REPO_UNAVAILABILITY_KEY, AGENT_STACK_RETRY_ON_REPO_UNAVAILABILITY_DEFAULT);
}
- public int getBufferedAuditLoggerCapacity() {
- return NumberUtils.toInt(
- properties.getProperty(BUFFERED_AUDIT_LOGGER_CAPACITY_KEY),
- BUFFERED_AUDIT_LOGGER_CAPACITY_DEFAULT);
+ public boolean isAuditLogEnabled() {
+ return Boolean.parseBoolean(properties.getProperty(AUDIT_LOG_ENABLED,Boolean.TRUE.toString()));
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/716b45ca/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
index f88cf8e..50021c2 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
@@ -35,6 +35,7 @@ import org.apache.ambari.server.agent.ActionQueue;
import org.apache.ambari.server.agent.CommandReport;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.api.services.BaseRequest;
+import org.apache.ambari.server.audit.AuditLogger;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.HostsMap;
import org.apache.ambari.server.controller.internal.RequestResourceFilter;
@@ -50,6 +51,7 @@ import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.svccomphost.ServiceComponentHostStartEvent;
import org.apache.ambari.server.utils.StageUtils;
+import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -124,6 +126,8 @@ public class TestActionDBAccessorImpl {
new HostsMap((String) null), injector.getInstance(UnitOfWork.class),
injector.getInstance(RequestFactory.class), null, null);
+
+ EasyMock.replay(injector.getInstance(AuditLogger.class));
}
@After
http://git-wip-us.apache.org/repos/asf/ambari/blob/716b45ca/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
index d7d08b1..baee0d8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionManager.java
@@ -37,6 +37,7 @@ import org.apache.ambari.server.Role;
import org.apache.ambari.server.RoleCommand;
import org.apache.ambari.server.agent.ActionQueue;
import org.apache.ambari.server.agent.CommandReport;
+import org.apache.ambari.server.audit.AuditLogger;
import org.apache.ambari.server.controller.HostsMap;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
@@ -44,6 +45,7 @@ import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.svccomphost.ServiceComponentHostStartEvent;
import org.apache.ambari.server.utils.StageUtils;
+import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
@@ -79,6 +81,8 @@ public class TestActionManager {
StackId stackId = new StackId("HDP-0.1");
clusters.addCluster(clusterName, stackId);
unitOfWork = injector.getInstance(UnitOfWork.class);
+
+ EasyMock.replay(injector.getInstance(AuditLogger.class));
}
@After
http://git-wip-us.apache.org/repos/asf/ambari/blob/716b45ca/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
index 7f3d763..bdbb9ab 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/HeartbeatProcessorTest.java
@@ -38,6 +38,7 @@ import org.apache.ambari.server.actionmanager.RequestFactory;
import org.apache.ambari.server.actionmanager.Stage;
import org.apache.ambari.server.actionmanager.StageFactory;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.audit.AuditLogger;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.HostsMap;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
@@ -62,6 +63,7 @@ import org.apache.ambari.server.state.svccomphost.ServiceComponentHostInstallEve
import org.apache.ambari.server.state.svccomphost.ServiceComponentHostUpgradeEvent;
import org.apache.ambari.server.utils.EventBusSynchronizer;
import org.apache.ambari.server.utils.StageUtils;
+import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -134,6 +136,8 @@ public class HeartbeatProcessorTest {
clusters = injector.getInstance(Clusters.class);
injector.injectMembers(this);
unitOfWork = injector.getInstance(UnitOfWork.class);
+
+ EasyMock.replay(injector.getInstance(AuditLogger.class));
}
@After
http://git-wip-us.apache.org/repos/asf/ambari/blob/716b45ca/ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLoggerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLoggerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLoggerTest.java
index 55c1d24..580fd61 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLoggerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLoggerTest.java
@@ -133,6 +133,7 @@ public class RequestAuditLoggerTest {
}
private Capture<AuditEvent> createCapture() {
+ EasyMock.expect(mockAuditLogger.isEnabled()).andReturn(true).anyTimes();
Capture<AuditEvent> capture = EasyMock.newCapture();
mockAuditLogger.log(EasyMock.capture(capture));
EasyMock.expectLastCall();
http://git-wip-us.apache.org/repos/asf/ambari/blob/716b45ca/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
index 8ea378c..b1336de 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
@@ -80,7 +80,7 @@ public class InMemoryDefaultTestModule extends AbstractModule {
try {
install(new BeanDefinitionsCachingTestControllerModule(properties));
- bind(AuditLogger.class).toInstance(EasyMock.createStrictMock(AuditLoggerDefaultImpl.class));
+ bind(AuditLogger.class).toInstance(EasyMock.createNiceMock(AuditLoggerDefaultImpl.class));
} catch (Exception e) {
throw new RuntimeException(e);
}