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/04/07 20:11:46 UTC
[1/3] ambari git commit: AMBARI-15646. Audit Log Code Cleanup &
Safety. (Daniel Gergely via stoader)
Repository: ambari
Updated Branches:
refs/heads/trunk f0645b68a -> 6320d589f
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilterTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilterTest.java b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilterTest.java
index 3dd6b0a..ff47ac2 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilterTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilterTest.java
@@ -363,6 +363,8 @@ public class AmbariAuthorizationFilterTest {
private void injectMembers(AmbariAuthorizationFilter filter) {
final Configuration configuration = EasyMock.createMock(Configuration.class);
expect(configuration.getDefaultApiAuthenticatedUser()).andReturn(null).anyTimes();
+ final AuditLogger auditLogger = EasyMock.createNiceMock(AuditLogger.class);
+ expect(auditLogger.isEnabled()).andReturn(false).anyTimes();
Injector injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
@@ -373,10 +375,10 @@ public class AmbariAuthorizationFilterTest {
bind(DBAccessor.class).toInstance(EasyMock.createMock(DBAccessor.class));
bind(PasswordEncoder.class).toInstance(EasyMock.createMock(PasswordEncoder.class));
bind(OsFamily.class).toInstance(EasyMock.createMock(OsFamily.class));
- bind(AuditLogger.class).toInstance(EasyMock.createNiceMock(AuditLogger.class));
+ bind(AuditLogger.class).toInstance(auditLogger);
}
});
injector.injectMembers(filter);
- replay(configuration);
+ replay(configuration, auditLogger);
}
}
[2/3] ambari git commit: AMBARI-15646. Audit Log Code Cleanup &
Safety. (Daniel Gergely via stoader)
Posted by st...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryVersionEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryVersionEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryVersionEventCreator.java
index 3f5e2d0..30fd377 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryVersionEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryVersionEventCreator.java
@@ -31,9 +31,10 @@ import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.AddRepositoryVersionRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.ChangeRepositoryVersionRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.DeleteRepositoryVersionRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.OperatingSystemResourceProvider;
+import org.apache.ambari.server.controller.internal.RepositoryResourceProvider;
+import org.apache.ambari.server.controller.internal.RepositoryVersionResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -92,10 +93,10 @@ public class RepositoryVersionEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withStackName(getProperty(request, PropertyHelper.getPropertyId("RepositoryVersions", "stack_name")))
- .withStackVersion(getProperty(request, PropertyHelper.getPropertyId("RepositoryVersions", "stack_version")))
- .withDisplayName(getProperty(request, PropertyHelper.getPropertyId("RepositoryVersions", "display_name")))
- .withRepoVersion(getProperty(request, PropertyHelper.getPropertyId("RepositoryVersions", "repository_version")))
+ .withStackName(RequestAuditEventCreatorHelper.getProperty(request, RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID))
+ .withStackVersion(RequestAuditEventCreatorHelper.getProperty(request, RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID))
+ .withDisplayName(RequestAuditEventCreatorHelper.getProperty(request, RepositoryVersionResourceProvider.REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID))
+ .withRepoVersion(RequestAuditEventCreatorHelper.getProperty(request, RepositoryVersionResourceProvider.REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID))
.withRepos(getRepos(request))
.build();
case PUT:
@@ -105,10 +106,10 @@ public class RepositoryVersionEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withStackName(getProperty(request, PropertyHelper.getPropertyId("RepositoryVersions", "stack_name")))
- .withStackVersion(getProperty(request, PropertyHelper.getPropertyId("RepositoryVersions", "stack_version")))
- .withDisplayName(getProperty(request, PropertyHelper.getPropertyId("RepositoryVersions", "display_name")))
- .withRepoVersion(getProperty(request, PropertyHelper.getPropertyId("RepositoryVersions", "repository_version")))
+ .withStackName(RequestAuditEventCreatorHelper.getProperty(request, RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID))
+ .withStackVersion(RequestAuditEventCreatorHelper.getProperty(request, RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID))
+ .withDisplayName(RequestAuditEventCreatorHelper.getProperty(request, RepositoryVersionResourceProvider.REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID))
+ .withRepoVersion(RequestAuditEventCreatorHelper.getProperty(request, RepositoryVersionResourceProvider.REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID))
.withRepos(getRepos(request))
.build();
case DELETE:
@@ -157,7 +158,7 @@ public class RepositoryVersionEventCreator implements RequestAuditEventCreator {
for (Object entry : set) {
if (entry instanceof Map) {
Map<String, Object> map = (Map<String, Object>) entry;
- String osType = (String) map.get(PropertyHelper.getPropertyId("OperatingSystems", "os_type"));
+ String osType = (String) map.get(OperatingSystemResourceProvider.OPERATING_SYSTEM_OS_TYPE_PROPERTY_ID);
if (!result.containsKey(osType)) {
result.put(osType, new LinkedList<Map<String, String>>());
}
@@ -182,28 +183,13 @@ public class RepositoryVersionEventCreator implements RequestAuditEventCreator {
*/
private Map<String, String> buildResultRepo(Map<String, String> repo) {
Map<String, String> m = repo;
- String repoId = m.get(PropertyHelper.getPropertyId("Repositories", "repo_id"));
- String repo_name = m.get(PropertyHelper.getPropertyId("Repositories", "repo_name"));
- String baseUrl = m.get(PropertyHelper.getPropertyId("Repositories", "base_url"));
+ String repoId = m.get(RepositoryResourceProvider.REPOSITORY_REPO_ID_PROPERTY_ID);
+ String repo_name = m.get(RepositoryResourceProvider.REPOSITORY_REPO_NAME_PROPERTY_ID);
+ String baseUrl = m.get(RepositoryResourceProvider.REPOSITORY_BASE_URL_PROPERTY_ID);
Map<String, String> resultMap = new HashMap<>();
resultMap.put("repo_id", repoId);
resultMap.put("repo_name", repo_name);
resultMap.put("base_url", baseUrl);
return resultMap;
}
-
- /**
- * Returns property from the request based on the propertyId parameter
- * @param request
- * @param properyId
- * @return
- */
- private String getProperty(Request request, String properyId) {
- if (!request.getBody().getPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getPropertySets().iterator().next().get(properyId));
- }
- return null;
- }
-
-
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestAuditEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestAuditEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestAuditEventCreator.java
new file mode 100644
index 0000000..5c3ea65
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestAuditEventCreator.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.audit.request.eventcreator;
+
+import java.util.Set;
+
+import org.apache.ambari.server.api.services.Request;
+import org.apache.ambari.server.api.services.Result;
+import org.apache.ambari.server.api.services.ResultStatus;
+import org.apache.ambari.server.audit.event.AuditEvent;
+import org.apache.ambari.server.controller.spi.Resource;
+
+/**
+ * This interface must be implemented by the plugins for the request audit logger
+ * in order to make custom {@link AuditEvent}s based on {@link org.apache.ambari.server.api.services.Request.Type}s
+ * and {@link org.apache.ambari.server.controller.spi.Resource.Type}
+ */
+public interface RequestAuditEventCreator {
+
+ /**
+ * @return the set of {@link org.apache.ambari.server.api.services.Request.Type}s that are handled by this creator
+ */
+ Set<Request.Type> getRequestTypes();
+
+ /**
+ * @return the {@link org.apache.ambari.server.controller.spi.Resource.Type}s that is handled by this creator
+ */
+ Set<Resource.Type> getResourceTypes();
+
+ /**
+ * @return the {@link ResultStatus}es that is handled by this creator
+ */
+ Set<ResultStatus.STATUS> getResultStatuses();
+
+ /**
+ * Creates and {@link AuditEvent}
+ * @param request HTTP request object
+ * @param result HTTP result object
+ * @return an {@link AuditEvent}
+ */
+ AuditEvent createAuditEvent(Request request, Result result);
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestAuditEventCreatorHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestAuditEventCreatorHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestAuditEventCreatorHelper.java
new file mode 100644
index 0000000..a02428f
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestAuditEventCreatorHelper.java
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.audit.request.eventcreator;
+
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ambari.server.api.services.Request;
+
+/**
+ * The purpose of this class is to retrieve information from {@link Request} objects.
+ * This information can be a single value or a list of values.
+ */
+public class RequestAuditEventCreatorHelper {
+
+ /**
+ * Returns a named property from a request
+ * @param request
+ * @param propertyName
+ * @return
+ */
+ public static String getNamedProperty(Request request, String propertyName) {
+ if (isValid(request, propertyName)) {
+ return String.valueOf(request.getBody().getNamedPropertySets().iterator().next().getProperties().get(propertyName));
+ }
+ return null;
+ }
+
+ /**
+ * Returns a list of named properties from a request
+ * @param request
+ * @param propertyName
+ * @return
+ */
+ public static List<String> getNamedPropertyList(Request request, String propertyName) {
+ if (isValidList(request, propertyName)) {
+ List<String> list = (List<String>) request.getBody().getNamedPropertySets().iterator().next().getProperties().get(propertyName);
+ if (list != null) {
+ return list;
+ }
+ }
+ return Collections.emptyList();
+ }
+
+ /**
+ * Checks if the property is valid: can be found and has correct type
+ * @param request
+ * @param propertyName
+ * @return
+ */
+ private static boolean isValid(Request request, String propertyName) {
+ return !request.getBody().getNamedPropertySets().isEmpty() &&
+ request.getBody().getNamedPropertySets().iterator().next().getProperties() != null &&
+ request.getBody().getNamedPropertySets().iterator().next().getProperties().get(propertyName) instanceof String;
+ }
+
+ /**
+ * Checks if the property is a valid list: can be found and has correct type
+ * @param request
+ * @param propertyName
+ * @return
+ */
+ private static boolean isValidList(Request request, String propertyName) {
+ return !request.getBody().getNamedPropertySets().isEmpty() &&
+ request.getBody().getNamedPropertySets().iterator().next().getProperties() != null &&
+ request.getBody().getNamedPropertySets().iterator().next().getProperties().get(propertyName) instanceof List;
+ }
+
+ /**
+ * Returns a property from a request
+ * @param request
+ * @param propertyName
+ * @return
+ */
+ public static String getProperty(Request request, String propertyName) {
+ List<String> list = getPropertyList(request, propertyName);
+ return list.isEmpty() ? null : list.get(0);
+ }
+
+ /**
+ * Returns a list of properties from a request
+ * @param request
+ * @param propertyName
+ * @return
+ */
+ public static List<String> getPropertyList(Request request, String propertyName) {
+ List<String> list = new LinkedList<String>();
+ for (Map<String, Object> propertyMap : request.getBody().getPropertySets()) {
+ String userName = String.valueOf(propertyMap.get(propertyName));
+ list.add(userName);
+ }
+ return list;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestEventCreator.java
index 3a33114..075e328 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RequestEventCreator.java
@@ -25,7 +25,6 @@ import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.AddRequestRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
import org.apache.ambari.server.controller.internal.RequestOperationLevel;
import org.apache.ambari.server.controller.spi.Resource;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceConfigDownloadEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceConfigDownloadEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceConfigDownloadEventCreator.java
index 0999010..7da45c2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceConfigDownloadEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceConfigDownloadEventCreator.java
@@ -25,7 +25,6 @@ import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.ClientConfigDownloadRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
import org.apache.ambari.server.controller.spi.Resource;
import com.google.common.collect.ImmutableSet;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceEventCreator.java
index 65d94f9..0a49e6f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ServiceEventCreator.java
@@ -27,10 +27,9 @@ import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.DeleteServiceRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.StartOperationRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
import org.apache.ambari.server.controller.internal.RequestOperationLevel;
+import org.apache.ambari.server.controller.internal.ServiceResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -120,12 +119,12 @@ public class ServiceEventCreator implements RequestAuditEventCreator {
* @return
*/
private String getOperation(Request request) {
- if (request.getBody().getRequestInfoProperties().containsKey(RequestOperationLevel.OPERATION_LEVEL_ID)) {
+ if (request.getBody().getRequestInfoProperties() != null && request.getBody().getRequestInfoProperties().containsKey(RequestOperationLevel.OPERATION_LEVEL_ID)) {
String operation = "";
if ("CLUSTER".equals(request.getBody().getRequestInfoProperties().get(RequestOperationLevel.OPERATION_LEVEL_ID))) {
for (Map<String, Object> map : request.getBody().getPropertySets()) {
- if (map.containsKey(PropertyHelper.getPropertyId("ServiceInfo", "state"))) {
- operation = String.valueOf(map.get(PropertyHelper.getPropertyId("ServiceInfo", "state"))) + ": all services"
+ if (map.containsKey(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID)) {
+ operation = String.valueOf(map.get(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID)) + ": all services"
+ " (" + request.getBody().getRequestInfoProperties().get(RequestOperationLevel.OPERATION_CLUSTER_ID) + ")";
break;
}
@@ -133,8 +132,8 @@ public class ServiceEventCreator implements RequestAuditEventCreator {
}
if ("SERVICE".equals(request.getBody().getRequestInfoProperties().get(RequestOperationLevel.OPERATION_LEVEL_ID))) {
for (Map<String, Object> map : request.getBody().getPropertySets()) {
- if (map.containsKey(PropertyHelper.getPropertyId("ServiceInfo", "state"))) {
- operation = String.valueOf(map.get(PropertyHelper.getPropertyId("ServiceInfo", "state"))) + ": " + map.get(PropertyHelper.getPropertyId("ServiceInfo", "service_name"))
+ if (map.containsKey(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID)) {
+ operation = String.valueOf(map.get(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID)) + ": " + map.get(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID)
+ " (" + request.getBody().getRequestInfoProperties().get(RequestOperationLevel.OPERATION_CLUSTER_ID) + ")";
break;
}
@@ -144,8 +143,8 @@ public class ServiceEventCreator implements RequestAuditEventCreator {
}
for (Map<String, Object> map : request.getBody().getPropertySets()) {
- if (map.containsKey(PropertyHelper.getPropertyId("ServiceInfo", "maintenance_state"))) {
- return "Turn " + map.get(PropertyHelper.getPropertyId("ServiceInfo", "maintenance_state")) + " Maintenance Mode for " + map.get(PropertyHelper.getPropertyId("ServiceInfo", "service_name"));
+ if (map.containsKey(ServiceResourceProvider.SERVICE_MAINTENANCE_STATE_PROPERTY_ID)) {
+ return "Turn " + map.get(ServiceResourceProvider.SERVICE_MAINTENANCE_STATE_PROPERTY_ID) + " Maintenance Mode for " + map.get(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID);
}
}
return null;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UnauthorizedEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UnauthorizedEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UnauthorizedEventCreator.java
index db3c934..64644fb 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UnauthorizedEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UnauthorizedEventCreator.java
@@ -25,7 +25,6 @@ import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AccessUnauthorizedAuditEvent;
import org.apache.ambari.server.audit.event.AuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
import org.apache.ambari.server.controller.spi.Resource;
import com.google.common.collect.ImmutableSet;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeEventCreator.java
index f9f4152..456aa00 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeEventCreator.java
@@ -25,9 +25,8 @@ import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.AddUpgradeRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.UpgradeResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -84,23 +83,10 @@ public class UpgradeEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withRepositoryVersion(getProperty(request, "repository_version"))
- .withUpgradeType(getProperty(request, "upgrade_type"))
- .withClusterName(getProperty(request, "cluster_name"))
+ .withRepositoryVersion(RequestAuditEventCreatorHelper.getProperty(request, UpgradeResourceProvider.UPGRADE_VERSION))
+ .withUpgradeType(RequestAuditEventCreatorHelper.getProperty(request, UpgradeResourceProvider.UPGRADE_TYPE))
+ .withClusterName(RequestAuditEventCreatorHelper.getProperty(request, UpgradeResourceProvider.UPGRADE_CLUSTER_NAME))
.build();
}
-
- /**
- * Returns property from the request based on the propertyName parameter
- * @param request
- * @param propertyName
- * @return
- */
- private String getProperty(Request request, String propertyName) {
- if (!request.getBody().getPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getPropertySets().iterator().next().get(PropertyHelper.getPropertyId("Upgrade", propertyName)));
- }
- return null;
- }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeItemEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeItemEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeItemEventCreator.java
index 1869909..2919388 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeItemEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UpgradeItemEventCreator.java
@@ -25,7 +25,7 @@ import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.UpdateUpgradeItemRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.UpgradeItemResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
@@ -84,23 +84,9 @@ public class UpgradeItemEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withStatus(getProperty(request, "status"))
- .withStageId(getProperty(request, "stage_id"))
- .withRequestId(getProperty(request, "request_id"))
+ .withStatus(RequestAuditEventCreatorHelper.getProperty(request, PropertyHelper.getPropertyId("UpgradeItem", "status")))
+ .withStageId(RequestAuditEventCreatorHelper.getProperty(request, UpgradeItemResourceProvider.UPGRADE_ITEM_STAGE_ID))
+ .withRequestId(RequestAuditEventCreatorHelper.getProperty(request, UpgradeItemResourceProvider.UPGRADE_REQUEST_ID))
.build();
-
- }
-
- /**
- * Returns property from the request based on the propertyName parameter
- * @param request
- * @param propertyName
- * @return
- */
- private String getProperty(Request request, String propertyName) {
- if (!request.getBody().getPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getPropertySets().iterator().next().get(PropertyHelper.getPropertyId("UpgradeItem", propertyName)));
- }
- return null;
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UserEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UserEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UserEventCreator.java
index 89f0755..54d02a7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UserEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/UserEventCreator.java
@@ -29,9 +29,8 @@ import org.apache.ambari.server.audit.event.request.AdminUserRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.CreateUserRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.DeleteUserRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.UserPasswordChangeRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.UserResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -149,7 +148,7 @@ public class UserEventCreator implements RequestAuditEventCreator {
* @return
*/
private boolean isAdmin(Request request) {
- return hasAdmin(request) && "true".equals(request.getBody().getPropertySets().iterator().next().get(PropertyHelper.getPropertyId("Users", "admin")));
+ return hasAdmin(request) && "true".equals(RequestAuditEventCreatorHelper.getProperty(request, UserResourceProvider.USER_ADMIN_PROPERTY_ID));
}
/**
@@ -158,7 +157,7 @@ public class UserEventCreator implements RequestAuditEventCreator {
* @return
*/
private boolean isActive(Request request) {
- return hasActive(request) && "true".equals(request.getBody().getPropertySets().iterator().next().get(PropertyHelper.getPropertyId("Users", "active")));
+ return hasActive(request) && "true".equals(RequestAuditEventCreatorHelper.getProperty(request, UserResourceProvider.USER_ACTIVE_PROPERTY_ID));
}
/**
@@ -167,7 +166,7 @@ public class UserEventCreator implements RequestAuditEventCreator {
* @return
*/
private boolean hasAdmin(Request request) {
- return !request.getBody().getPropertySets().isEmpty() && request.getBody().getPropertySets().iterator().next().containsKey(PropertyHelper.getPropertyId("Users", "admin"));
+ return !request.getBody().getPropertySets().isEmpty() && request.getBody().getPropertySets().iterator().next().containsKey(UserResourceProvider.USER_ADMIN_PROPERTY_ID);
}
/**
@@ -176,7 +175,7 @@ public class UserEventCreator implements RequestAuditEventCreator {
* @return
*/
private boolean hasActive(Request request) {
- return !request.getBody().getPropertySets().isEmpty() && request.getBody().getPropertySets().iterator().next().containsKey(PropertyHelper.getPropertyId("Users", "active"));
+ return !request.getBody().getPropertySets().isEmpty() && request.getBody().getPropertySets().iterator().next().containsKey(UserResourceProvider.USER_ACTIVE_PROPERTY_ID);
}
/**
@@ -185,7 +184,7 @@ public class UserEventCreator implements RequestAuditEventCreator {
* @return
*/
private boolean hasOldPassword(Request request) {
- return !request.getBody().getPropertySets().isEmpty() && request.getBody().getPropertySets().iterator().next().containsKey(PropertyHelper.getPropertyId("Users", "old_password"));
+ return !request.getBody().getPropertySets().isEmpty() && request.getBody().getPropertySets().iterator().next().containsKey(UserResourceProvider.USER_OLD_PASSWORD_PROPERTY_ID);
}
/**
@@ -195,7 +194,7 @@ public class UserEventCreator implements RequestAuditEventCreator {
*/
private String getUsername(Request request) {
if (!request.getBody().getPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getPropertySets().iterator().next().get(PropertyHelper.getPropertyId("Users", "user_name")));
+ return String.valueOf(request.getBody().getPropertySets().iterator().next().get(UserResourceProvider.USER_USERNAME_PROPERTY_ID));
}
return null;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ValidationIgnoreEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ValidationIgnoreEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ValidationIgnoreEventCreator.java
index 081f3d3..73277cd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ValidationIgnoreEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ValidationIgnoreEventCreator.java
@@ -24,7 +24,6 @@ import org.apache.ambari.server.api.services.Request;
import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
import org.apache.ambari.server.controller.spi.Resource;
import com.google.common.collect.ImmutableSet;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewInstanceEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewInstanceEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewInstanceEventCreator.java
index a9a3fcd..2197380 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewInstanceEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewInstanceEventCreator.java
@@ -27,9 +27,8 @@ import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.AddViewInstanceRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.ChangeViewInstanceRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.DeleteViewInstanceRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.ViewInstanceResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -89,11 +88,11 @@ public class ViewInstanceEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withType(getProperty(request, PropertyHelper.getPropertyId("ViewInstanceInfo", "view_name")))
- .withVersion(getProperty(request, PropertyHelper.getPropertyId("ViewInstanceInfo", "version")))
- .withName(getProperty(request, PropertyHelper.getPropertyId("ViewInstanceInfo", "instance_name")))
- .withDisplayName(getProperty(request, PropertyHelper.getPropertyId("ViewInstanceInfo", "label")))
- .withDescription(getProperty(request, PropertyHelper.getPropertyId("ViewInstanceInfo", "description")))
+ .withType(RequestAuditEventCreatorHelper.getProperty(request, ViewInstanceResourceProvider.VIEW_NAME_PROPERTY_ID))
+ .withVersion(RequestAuditEventCreatorHelper.getProperty(request, ViewInstanceResourceProvider.VIEW_VERSION_PROPERTY_ID))
+ .withName(RequestAuditEventCreatorHelper.getProperty(request, ViewInstanceResourceProvider.INSTANCE_NAME_PROPERTY_ID))
+ .withDisplayName(RequestAuditEventCreatorHelper.getProperty(request, ViewInstanceResourceProvider.LABEL_PROPERTY_ID))
+ .withDescription(RequestAuditEventCreatorHelper.getProperty(request, ViewInstanceResourceProvider.DESCRIPTION_PROPERTY_ID))
.build();
case PUT:
@@ -103,11 +102,11 @@ public class ViewInstanceEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withType(getProperty(request, PropertyHelper.getPropertyId("ViewInstanceInfo", "view_name")))
- .withVersion(getProperty(request, PropertyHelper.getPropertyId("ViewInstanceInfo", "version")))
- .withName(getProperty(request, PropertyHelper.getPropertyId("ViewInstanceInfo", "instance_name")))
- .withDisplayName(getProperty(request, PropertyHelper.getPropertyId("ViewInstanceInfo", "label")))
- .withDescription(getProperty(request, PropertyHelper.getPropertyId("ViewInstanceInfo", "description")))
+ .withType(RequestAuditEventCreatorHelper.getProperty(request, ViewInstanceResourceProvider.VIEW_NAME_PROPERTY_ID))
+ .withVersion(RequestAuditEventCreatorHelper.getProperty(request, ViewInstanceResourceProvider.VIEW_VERSION_PROPERTY_ID))
+ .withName(RequestAuditEventCreatorHelper.getProperty(request, ViewInstanceResourceProvider.INSTANCE_NAME_PROPERTY_ID))
+ .withDisplayName(RequestAuditEventCreatorHelper.getProperty(request, ViewInstanceResourceProvider.LABEL_PROPERTY_ID))
+ .withDescription(RequestAuditEventCreatorHelper.getProperty(request, ViewInstanceResourceProvider.DESCRIPTION_PROPERTY_ID))
.build();
case DELETE:
@@ -126,18 +125,4 @@ public class ViewInstanceEventCreator implements RequestAuditEventCreator {
return null;
}
}
-
- /**
- * Returns property from the requet based on the propertyId parameter
- * @param request
- * @param properyId
- * @return
- */
- private String getProperty(Request request, String properyId) {
- if (!request.getBody().getPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getPropertySets().iterator().next().get(properyId));
- }
- return null;
- }
-
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewPrivilegeEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewPrivilegeEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewPrivilegeEventCreator.java
index d2d7bd9..56d35c0 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewPrivilegeEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ViewPrivilegeEventCreator.java
@@ -29,9 +29,11 @@ import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.ViewPrivilegeChangeRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.ViewPrivilegeResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.apache.ambari.server.orm.entities.PrincipalTypeEntity;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.User;
import com.google.common.collect.ImmutableSet;
@@ -83,8 +85,8 @@ public class ViewPrivilegeEventCreator implements RequestAuditEventCreator {
public AuditEvent createAuditEvent(Request request, Result result) {
- Map<String, List<String>> users = getEntities(request, "USER");
- Map<String, List<String>> groups = getEntities(request, "GROUP");
+ Map<String, List<String>> users = getEntities(request, PrincipalTypeEntity.USER_PRINCIPAL_TYPE_NAME);
+ Map<String, List<String>> groups = getEntities(request, PrincipalTypeEntity.GROUP_PRINCIPAL_TYPE_NAME);
return ViewPrivilegeChangeRequestAuditEvent.builder()
.withTimestamp(System.currentTimeMillis())
@@ -92,9 +94,9 @@ public class ViewPrivilegeEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withType(getProperty(request, PropertyHelper.getPropertyId("PrivilegeInfo", "view_name")))
- .withVersion(getProperty(request, PropertyHelper.getPropertyId("PrivilegeInfo", "version")))
- .withName(getProperty(request, PropertyHelper.getPropertyId("PrivilegeInfo", "instance_name")))
+ .withType(RequestAuditEventCreatorHelper.getProperty(request, ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_NAME_PROPERTY_ID))
+ .withVersion(RequestAuditEventCreatorHelper.getProperty(request, ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_VERSION_PROPERTY_ID))
+ .withName(RequestAuditEventCreatorHelper.getProperty(request, ViewPrivilegeResourceProvider.PRIVILEGE_INSTANCE_NAME_PROPERTY_ID))
.withUsers(users)
.withGroups(groups)
.build();
@@ -102,19 +104,6 @@ public class ViewPrivilegeEventCreator implements RequestAuditEventCreator {
}
/**
- * Returns property from the request based on the propertyId parameter
- * @param request
- * @param properyId
- * @return
- */
- private String getProperty(Request request, String properyId) {
- if (!request.getBody().getPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getPropertySets().iterator().next().get(properyId));
- }
- return null;
- }
-
- /**
* Assembles entities from the request. The result can contain users or groups based on the value of type parameter
* @param request
* @param type
@@ -124,10 +113,10 @@ public class ViewPrivilegeEventCreator implements RequestAuditEventCreator {
Map<String, List<String>> entities = new HashMap<String, List<String>>();
for (Map<String, Object> propertyMap : request.getBody().getPropertySets()) {
- String ptype = String.valueOf(propertyMap.get(PropertyHelper.getPropertyId("PrivilegeInfo", "principal_type")));
+ String ptype = String.valueOf(propertyMap.get(ViewPrivilegeResourceProvider.PRINCIPAL_TYPE_PROPERTY_ID));
if (type.equals(ptype)) {
- String role = String.valueOf(propertyMap.get(PropertyHelper.getPropertyId("PrivilegeInfo", "permission_name")));
- String name = String.valueOf(propertyMap.get(PropertyHelper.getPropertyId("PrivilegeInfo", "principal_name")));
+ String role = String.valueOf(propertyMap.get(ViewPrivilegeResourceProvider.PERMISSION_NAME_PROPERTY_ID));
+ String name = String.valueOf(propertyMap.get(ViewPrivilegeResourceProvider.PRINCIPAL_NAME_PROPERTY_ID));
if (!entities.containsKey(role)) {
entities.put(role, new LinkedList<String>());
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/cleanup/ClasspathScannerUtils.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/cleanup/ClasspathScannerUtils.java b/ambari-server/src/main/java/org/apache/ambari/server/cleanup/ClasspathScannerUtils.java
index 4c12a62..01487f0 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/cleanup/ClasspathScannerUtils.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/cleanup/ClasspathScannerUtils.java
@@ -20,11 +20,11 @@ package org.apache.ambari.server.cleanup;
import java.io.IOException;
import java.lang.annotation.Annotation;
-import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.apache.commons.lang.ClassUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -113,7 +113,7 @@ public class ClasspathScannerUtils {
private static boolean checkSubClasses(Class candidate, List<Class> selectors) {
boolean ret = false;
LOGGER.debug("Checking interfaces for: [{}]", candidate);
- List<Class> interfaces = Arrays.asList(candidate.getInterfaces());
+ List interfaces = ClassUtils.getAllInterfaces(candidate);
for (Class selectorItf : selectors) {
if (interfaces.contains(selectorItf)) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertGroupResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertGroupResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertGroupResourceProvider.java
index 36469c1..dafd194 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertGroupResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertGroupResourceProvider.java
@@ -61,13 +61,13 @@ import com.google.inject.Inject;
public class AlertGroupResourceProvider extends
AbstractControllerResourceProvider {
- protected static final String ALERT_GROUP = "AlertGroup";
- protected static final String ALERT_GROUP_ID = "AlertGroup/id";
- protected static final String ALERT_GROUP_CLUSTER_NAME = "AlertGroup/cluster_name";
- protected static final String ALERT_GROUP_NAME = "AlertGroup/name";
- protected static final String ALERT_GROUP_DEFAULT = "AlertGroup/default";
- protected static final String ALERT_GROUP_DEFINITIONS = "AlertGroup/definitions";
- protected static final String ALERT_GROUP_TARGETS = "AlertGroup/targets";
+ public static final String ALERT_GROUP = "AlertGroup";
+ public static final String ALERT_GROUP_ID = "AlertGroup/id";
+ public static final String ALERT_GROUP_CLUSTER_NAME = "AlertGroup/cluster_name";
+ public static final String ALERT_GROUP_NAME = "AlertGroup/name";
+ public static final String ALERT_GROUP_DEFAULT = "AlertGroup/default";
+ public static final String ALERT_GROUP_DEFINITIONS = "AlertGroup/definitions";
+ public static final String ALERT_GROUP_TARGETS = "AlertGroup/targets";
private static final Set<String> PK_PROPERTY_IDS = new HashSet<String>(
Arrays.asList(ALERT_GROUP_ID, ALERT_GROUP_CLUSTER_NAME));
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProvider.java
index 992d33f..3b749d9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AlertTargetResourceProvider.java
@@ -67,15 +67,15 @@ import com.google.inject.Inject;
public class AlertTargetResourceProvider extends
AbstractAuthorizedResourceProvider {
- protected static final String ALERT_TARGET = "AlertTarget";
- protected static final String ALERT_TARGET_ID = "AlertTarget/id";
- protected static final String ALERT_TARGET_NAME = "AlertTarget/name";
- protected static final String ALERT_TARGET_DESCRIPTION = "AlertTarget/description";
- protected static final String ALERT_TARGET_NOTIFICATION_TYPE = "AlertTarget/notification_type";
- protected static final String ALERT_TARGET_PROPERTIES = "AlertTarget/properties";
- protected static final String ALERT_TARGET_GROUPS = "AlertTarget/groups";
- protected static final String ALERT_TARGET_STATES = "AlertTarget/alert_states";
- protected static final String ALERT_TARGET_GLOBAL = "AlertTarget/global";
+ public static final String ALERT_TARGET = "AlertTarget";
+ public static final String ALERT_TARGET_ID = "AlertTarget/id";
+ public static final String ALERT_TARGET_NAME = "AlertTarget/name";
+ public static final String ALERT_TARGET_DESCRIPTION = "AlertTarget/description";
+ public static final String ALERT_TARGET_NOTIFICATION_TYPE = "AlertTarget/notification_type";
+ public static final String ALERT_TARGET_PROPERTIES = "AlertTarget/properties";
+ public static final String ALERT_TARGET_GROUPS = "AlertTarget/groups";
+ public static final String ALERT_TARGET_STATES = "AlertTarget/alert_states";
+ public static final String ALERT_TARGET_GLOBAL = "AlertTarget/global";
private static final Set<String> PK_PROPERTY_IDS = new HashSet<String>(
Arrays.asList(ALERT_TARGET_ID, ALERT_TARGET_NAME));
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/GroupResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/GroupResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/GroupResourceProvider.java
index 1678931..0d215ae 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/GroupResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/GroupResourceProvider.java
@@ -42,13 +42,13 @@ import org.apache.ambari.server.security.authorization.RoleAuthorization;
/**
* Resource provider for group resources.
*/
-class GroupResourceProvider extends AbstractControllerResourceProvider {
+public class GroupResourceProvider extends AbstractControllerResourceProvider {
// ----- Property ID constants ---------------------------------------------
// Groups
- protected static final String GROUP_GROUPNAME_PROPERTY_ID = PropertyHelper.getPropertyId("Groups", "group_name");
- protected static final String GROUP_LDAP_GROUP_PROPERTY_ID = PropertyHelper.getPropertyId("Groups", "ldap_group");
+ public static final String GROUP_GROUPNAME_PROPERTY_ID = PropertyHelper.getPropertyId("Groups", "group_name");
+ public static final String GROUP_LDAP_GROUP_PROPERTY_ID = PropertyHelper.getPropertyId("Groups", "ldap_group");
private static Set<String> pkPropertyIds =
new HashSet<String>(Arrays.asList(new String[]{
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
index 3c33a23..11db913 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
@@ -81,35 +81,35 @@ public class HostComponentResourceProvider extends AbstractControllerResourcePro
// ----- Property ID constants ---------------------------------------------
// Host Components
- protected static final String HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID
+ public static final String HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "cluster_name");
- protected static final String HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID
+ public static final String HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "service_name");
- protected static final String HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID
+ public static final String HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "component_name");
- protected static final String HOST_COMPONENT_DISPLAY_NAME_PROPERTY_ID
+ public static final String HOST_COMPONENT_DISPLAY_NAME_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "display_name");
- protected static final String HOST_COMPONENT_HOST_NAME_PROPERTY_ID
+ public static final String HOST_COMPONENT_HOST_NAME_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "host_name");
- protected static final String HOST_COMPONENT_STATE_PROPERTY_ID
+ public static final String HOST_COMPONENT_STATE_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "state");
- protected static final String HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID
+ public static final String HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "desired_state");
- protected static final String HOST_COMPONENT_STACK_ID_PROPERTY_ID
+ public static final String HOST_COMPONENT_STACK_ID_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "stack_id");
- protected static final String HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID
+ public static final String HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "desired_stack_id");
- protected static final String HOST_COMPONENT_ACTUAL_CONFIGS_PROPERTY_ID
+ public static final String HOST_COMPONENT_ACTUAL_CONFIGS_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "actual_configs");
- protected static final String HOST_COMPONENT_STALE_CONFIGS_PROPERTY_ID
+ public static final String HOST_COMPONENT_STALE_CONFIGS_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "stale_configs");
- protected static final String HOST_COMPONENT_DESIRED_ADMIN_STATE_PROPERTY_ID
+ public static final String HOST_COMPONENT_DESIRED_ADMIN_STATE_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "desired_admin_state");
- protected static final String HOST_COMPONENT_MAINTENANCE_STATE_PROPERTY_ID
+ public static final String HOST_COMPONENT_MAINTENANCE_STATE_PROPERTY_ID
= "HostRoles/maintenance_state";
- protected static final String HOST_COMPONENT_HDP_VERSION_PROPERTY_ID
+ public static final String HOST_COMPONENT_HDP_VERSION_PROPERTY_ID
= PropertyHelper.getPropertyId("HostRoles", "hdp_version");
- protected static final String HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID = "HostRoles/upgrade_state";
+ public static final String HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID = "HostRoles/upgrade_state";
//Component name mappings
private final Map<String, PropertyProvider> HOST_COMPONENT_PROPERTIES_PROVIDER = new HashMap<String, PropertyProvider>();
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MemberResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MemberResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MemberResourceProvider.java
index 04e5f67..307ed3f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MemberResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MemberResourceProvider.java
@@ -52,8 +52,8 @@ public class MemberResourceProvider extends AbstractControllerResourceProvider {
// ----- Property ID constants ---------------------------------------------
// Members
- protected static final String MEMBER_GROUP_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("MemberInfo", "group_name");
- protected static final String MEMBER_USER_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("MemberInfo", "user_name");
+ public static final String MEMBER_GROUP_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("MemberInfo", "group_name");
+ public static final String MEMBER_USER_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("MemberInfo", "user_name");
private static Set<String> pkPropertyIds =
new HashSet<String>(Arrays.asList(new String[]{
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeItemResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeItemResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeItemResourceProvider.java
index a45b1ac..8518593 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeItemResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeItemResourceProvider.java
@@ -56,11 +56,11 @@ import com.google.inject.Inject;
@StaticallyInject
public class UpgradeItemResourceProvider extends ReadOnlyResourceProvider {
- protected static final String UPGRADE_CLUSTER_NAME = "UpgradeItem/cluster_name";
- protected static final String UPGRADE_REQUEST_ID = "UpgradeItem/request_id";
- protected static final String UPGRADE_GROUP_ID = "UpgradeItem/group_id";
- protected static final String UPGRADE_ITEM_STAGE_ID = "UpgradeItem/stage_id";
- protected static final String UPGRADE_ITEM_TEXT = "UpgradeItem/text";
+ public static final String UPGRADE_CLUSTER_NAME = "UpgradeItem/cluster_name";
+ public static final String UPGRADE_REQUEST_ID = "UpgradeItem/request_id";
+ public static final String UPGRADE_GROUP_ID = "UpgradeItem/group_id";
+ public static final String UPGRADE_ITEM_STAGE_ID = "UpgradeItem/stage_id";
+ public static final String UPGRADE_ITEM_TEXT = "UpgradeItem/text";
private static final Set<String> PK_PROPERTY_IDS = new HashSet<String>(
Arrays.asList(UPGRADE_REQUEST_ID, UPGRADE_ITEM_STAGE_ID));
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
index 0384f6c..4cd0419 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
@@ -128,20 +128,20 @@ import com.google.inject.persist.Transactional;
@StaticallyInject
public class UpgradeResourceProvider extends AbstractControllerResourceProvider {
- protected static final String UPGRADE_CLUSTER_NAME = "Upgrade/cluster_name";
- protected static final String UPGRADE_VERSION = "Upgrade/repository_version";
- protected static final String UPGRADE_TYPE = "Upgrade/upgrade_type";
- protected static final String UPGRADE_PACK = "Upgrade/pack";
- protected static final String UPGRADE_REQUEST_ID = "Upgrade/request_id";
- protected static final String UPGRADE_FROM_VERSION = "Upgrade/from_version";
- protected static final String UPGRADE_TO_VERSION = "Upgrade/to_version";
- protected static final String UPGRADE_DIRECTION = "Upgrade/direction";
- protected static final String UPGRADE_DOWNGRADE_ALLOWED = "Upgrade/downgrade_allowed";
- protected static final String UPGRADE_REQUEST_STATUS = "Upgrade/request_status";
- protected static final String UPGRADE_SUSPENDED = "Upgrade/suspended";
- protected static final String UPGRADE_ABORT_REASON = "Upgrade/abort_reason";
- protected static final String UPGRADE_SKIP_PREREQUISITE_CHECKS = "Upgrade/skip_prerequisite_checks";
- protected static final String UPGRADE_FAIL_ON_CHECK_WARNINGS = "Upgrade/fail_on_check_warnings";
+ public static final String UPGRADE_CLUSTER_NAME = "Upgrade/cluster_name";
+ public static final String UPGRADE_VERSION = "Upgrade/repository_version";
+ public static final String UPGRADE_TYPE = "Upgrade/upgrade_type";
+ public static final String UPGRADE_PACK = "Upgrade/pack";
+ public static final String UPGRADE_REQUEST_ID = "Upgrade/request_id";
+ public static final String UPGRADE_FROM_VERSION = "Upgrade/from_version";
+ public static final String UPGRADE_TO_VERSION = "Upgrade/to_version";
+ public static final String UPGRADE_DIRECTION = "Upgrade/direction";
+ public static final String UPGRADE_DOWNGRADE_ALLOWED = "Upgrade/downgrade_allowed";
+ public static final String UPGRADE_REQUEST_STATUS = "Upgrade/request_status";
+ public static final String UPGRADE_SUSPENDED = "Upgrade/suspended";
+ public static final String UPGRADE_ABORT_REASON = "Upgrade/abort_reason";
+ public static final String UPGRADE_SKIP_PREREQUISITE_CHECKS = "Upgrade/skip_prerequisite_checks";
+ public static final String UPGRADE_FAIL_ON_CHECK_WARNINGS = "Upgrade/fail_on_check_warnings";
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UserResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UserResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UserResourceProvider.java
index fee1826..099cfd4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UserResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UserResourceProvider.java
@@ -35,19 +35,19 @@ import java.util.Set;
/**
* Resource provider for user resources.
*/
-class UserResourceProvider extends AbstractControllerResourceProvider {
+public class UserResourceProvider extends AbstractControllerResourceProvider {
// ----- Property ID constants ---------------------------------------------
// Users
- protected static final String USER_USERNAME_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "user_name");
- protected static final String USER_PASSWORD_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "password");
- protected static final String USER_OLD_PASSWORD_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "old_password");
- protected static final String USER_LDAP_USER_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "ldap_user");
- protected static final String USER_TYPE_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "user_type");
- protected static final String USER_ACTIVE_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "active");
- protected static final String USER_GROUPS_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "groups");
- protected static final String USER_ADMIN_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "admin");
+ public static final String USER_USERNAME_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "user_name");
+ public static final String USER_PASSWORD_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "password");
+ public static final String USER_OLD_PASSWORD_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "old_password");
+ public static final String USER_LDAP_USER_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "ldap_user");
+ public static final String USER_TYPE_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "user_type");
+ public static final String USER_ACTIVE_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "active");
+ public static final String USER_GROUPS_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "groups");
+ public static final String USER_ADMIN_PROPERTY_ID = PropertyHelper.getPropertyId("Users", "admin");
private static Set<String> pkPropertyIds =
new HashSet<String>(Arrays.asList(new String[]{
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/notifications/dispatchers/EmailDispatcher.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/notifications/dispatchers/EmailDispatcher.java b/ambari-server/src/main/java/org/apache/ambari/server/notifications/dispatchers/EmailDispatcher.java
index 9c2b42b..e9009c3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/notifications/dispatchers/EmailDispatcher.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/notifications/dispatchers/EmailDispatcher.java
@@ -68,7 +68,7 @@ public class EmailDispatcher implements NotificationDispatcher {
/**
* The JavaMail property for the {@code From:} header.
*/
- private static final String JAVAMAIL_FROM_PROPERTY = "mail.smtp.from";
+ public static final String JAVAMAIL_FROM_PROPERTY = "mail.smtp.from";
/**
* {@inheritDoc}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilter.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilter.java b/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilter.java
index 5663ed2..0a312f3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilter.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilter.java
@@ -76,7 +76,7 @@ public class AmbariAuthenticationFilter extends BasicAuthenticationFilter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String header = request.getHeader("Authorization");
- if (AuthorizationHelper.getAuthenticatedName() == null && (header == null || !header.startsWith("Basic "))) {
+ if (auditLogger.isEnabled() && AuthorizationHelper.getAuthenticatedName() == null && (header == null || !header.startsWith("Basic "))) {
AuditEvent loginFailedAuditEvent = LoginAuditEvent.builder()
.withRemoteIp(RequestUtils.getRemoteAddress(request))
.withTimestamp(System.currentTimeMillis())
@@ -97,6 +97,9 @@ public class AmbariAuthenticationFilter extends BasicAuthenticationFilter {
*/
@Override
protected void onSuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, Authentication authResult) throws IOException {
+ if(!auditLogger.isEnabled()) {
+ return;
+ }
AuditEvent loginSucceededAuditEvent = LoginAuditEvent.builder()
.withRemoteIp(RequestUtils.getRemoteAddress(request))
.withUserName(authResult.getName())
@@ -123,13 +126,15 @@ public class AmbariAuthenticationFilter extends BasicAuthenticationFilter {
} catch (Exception e) {
LOG.warn("Error occurred during decoding authorization header.",e);
}
- AuditEvent loginFailedAuditEvent = LoginAuditEvent.builder()
- .withRemoteIp(RequestUtils.getRemoteAddress(request))
- .withTimestamp(System.currentTimeMillis())
- .withReasonOfFailure("Invalid username/password combination")
- .withUserName(username)
- .build();
- auditLogger.log(loginFailedAuditEvent);
+ if(auditLogger.isEnabled()) {
+ AuditEvent loginFailedAuditEvent = LoginAuditEvent.builder()
+ .withRemoteIp(RequestUtils.getRemoteAddress(request))
+ .withTimestamp(System.currentTimeMillis())
+ .withReasonOfFailure("Invalid username/password combination")
+ .withUserName(username)
+ .build();
+ auditLogger.log(loginFailedAuditEvent);
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilter.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilter.java b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilter.java
index 96d6131..5c74f07 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilter.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilter.java
@@ -137,12 +137,14 @@ public class AmbariAuthorizationFilter implements Filter {
if (token != null) {
InternalAuthenticationToken internalAuthenticationToken = new InternalAuthenticationToken(token);
context.setAuthentication(internalAuthenticationToken);
- LoginAuditEvent loginAuditEvent = LoginAuditEvent.builder()
- .withUserName(internalAuthenticationToken.getName())
- .withRemoteIp(RequestUtils.getRemoteAddress(httpRequest))
- .withRoles(permissionHelper.getPermissionLabels(authentication))
- .withTimestamp(System.currentTimeMillis()).build();
- auditLogger.log(loginAuditEvent);
+ if(auditLogger.isEnabled()) {
+ LoginAuditEvent loginAuditEvent = LoginAuditEvent.builder()
+ .withUserName(internalAuthenticationToken.getName())
+ .withRemoteIp(RequestUtils.getRemoteAddress(httpRequest))
+ .withRoles(permissionHelper.getPermissionLabels(authentication))
+ .withTimestamp(System.currentTimeMillis()).build();
+ auditLogger.log(loginAuditEvent);
+ }
} else {
// for view access, we should redirect to the Ambari login
if (requestURI.matches(VIEWS_CONTEXT_ALL_PATTERN)) {
@@ -207,14 +209,17 @@ public class AmbariAuthorizationFilter implements Filter {
if (!authorized &&
(!httpRequest.getMethod().equals("GET")
|| requestURI.matches(API_LDAP_SYNC_EVENTS_ALL_PATTERN))) {
- auditEvent = AccessUnauthorizedAuditEvent.builder()
- .withHttpMethodName(httpRequest.getMethod())
- .withRemoteIp(RequestUtils.getRemoteAddress(httpRequest))
- .withResourcePath(httpRequest.getRequestURI())
- .withUserName(AuthorizationHelper.getAuthenticatedName())
- .withTimestamp(System.currentTimeMillis())
- .build();
- auditLogger.log(auditEvent);
+
+ if(auditLogger.isEnabled()) {
+ auditEvent = AccessUnauthorizedAuditEvent.builder()
+ .withHttpMethodName(httpRequest.getMethod())
+ .withRemoteIp(RequestUtils.getRemoteAddress(httpRequest))
+ .withResourcePath(httpRequest.getRequestURI())
+ .withUserName(AuthorizationHelper.getAuthenticatedName())
+ .withTimestamp(System.currentTimeMillis())
+ .build();
+ auditLogger.log(auditEvent);
+ }
httpResponse.setHeader("WWW-Authenticate", "Basic realm=\"" + realm + "\"");
httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "You do not have permissions to access this resource.");
@@ -224,7 +229,7 @@ public class AmbariAuthorizationFilter implements Filter {
}
if (AuthorizationHelper.getAuthenticatedName() != null) {
httpResponse.setHeader("User", AuthorizationHelper.getAuthenticatedName());
- if (httpResponse.getStatus() == HttpServletResponse.SC_FORBIDDEN) {
+ if (auditLogger.isEnabled() && httpResponse.getStatus() == HttpServletResponse.SC_FORBIDDEN) {
auditEvent = AccessUnauthorizedAuditEvent.builder()
.withHttpMethodName(httpRequest.getMethod())
.withRemoteIp(RequestUtils.getRemoteAddress(httpRequest))
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/PermissionHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/PermissionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/PermissionHelper.java
index ecf2d7a..3531fda 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/PermissionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/security/authorization/PermissionHelper.java
@@ -54,6 +54,9 @@ public class PermissionHelper {
Map<String,List<String>> permissionLabels = new HashMap<>();
if (authentication.getAuthorities() != null) {
for (GrantedAuthority grantedAuthority : authentication.getAuthorities()) {
+ if(!(grantedAuthority instanceof AmbariGrantedAuthority)) {
+ continue;
+ }
AmbariGrantedAuthority ambariGrantedAuthority = (AmbariGrantedAuthority) grantedAuthority;
PrivilegeEntity privilegeEntity = ambariGrantedAuthority.getPrivilegeEntity();
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/state/services/AlertNoticeDispatchService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/services/AlertNoticeDispatchService.java b/ambari-server/src/main/java/org/apache/ambari/server/state/services/AlertNoticeDispatchService.java
index 0b84568..9e424f7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/services/AlertNoticeDispatchService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/services/AlertNoticeDispatchService.java
@@ -129,7 +129,7 @@ public class AlertNoticeDispatchService extends AbstractScheduledService {
/**
* The property containing the dispatch recipients
*/
- private static final String AMBARI_DISPATCH_RECIPIENTS = "ambari.dispatch.recipients";
+ public static final String AMBARI_DISPATCH_RECIPIENTS = "ambari.dispatch.recipients";
/**
* The context key for Ambari information to be passed to Velocity.
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
index 3976c03..17c5513 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatHandler.java
@@ -68,6 +68,7 @@ import org.apache.ambari.server.actionmanager.Stage;
import org.apache.ambari.server.actionmanager.StageFactory;
import org.apache.ambari.server.agent.HostStatus.Status;
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.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
@@ -92,6 +93,7 @@ import org.apache.ambari.server.utils.StageUtils;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.codehaus.jackson.JsonGenerationException;
+import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
@@ -135,6 +137,9 @@ public class TestHeartbeatHandler {
@Inject
HeartbeatTestHelper heartbeatTestHelper;
+ @Inject
+ AuditLogger auditLogger;
+
private UnitOfWork unitOfWork;
@Rule
@@ -152,11 +157,13 @@ public class TestHeartbeatHandler {
injector.injectMembers(this);
log.debug("Using server os type=" + config.getServerOsType());
unitOfWork = injector.getInstance(UnitOfWork.class);
+ EasyMock.replay(auditLogger);
}
@After
public void teardown() throws AmbariException {
injector.getInstance(PersistService.class).stop();
+ EasyMock.reset(auditLogger);
}
@Test
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/test/java/org/apache/ambari/server/audit/ActionDBAAccessorAuditlogTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/audit/ActionDBAAccessorAuditlogTest.java b/ambari-server/src/test/java/org/apache/ambari/server/audit/ActionDBAAccessorAuditlogTest.java
new file mode 100644
index 0000000..2fcf9d5
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/audit/ActionDBAAccessorAuditlogTest.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.audit;
+
+import nl.jqno.equalsverifier.EqualsVerifier;
+
+import org.apache.ambari.server.actionmanager.ActionDBAccessorImpl;
+import org.junit.Test;
+
+public class ActionDBAAccessorAuditlogTest {
+
+ @Test
+ public void equalsVerifierTest() {
+
+ Class<?>[] innerClasses = ActionDBAccessorImpl.class.getDeclaredClasses();
+
+ for(Class<?> clazz : innerClasses) {
+ if(clazz.getSimpleName().contains("RequestDetails")) {
+ Class<?>[] innerClasses2 = clazz.getDeclaredClasses();
+ for(Class<?> clazz2 : innerClasses2) {
+ if (clazz2.getSimpleName().contains("Component")) {
+ EqualsVerifier.forClass(clazz2).verify();
+ }
+ }
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/test/java/org/apache/ambari/server/audit/OperationStatusAuditEventTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/audit/OperationStatusAuditEventTest.java b/ambari-server/src/test/java/org/apache/ambari/server/audit/OperationStatusAuditEventTest.java
index 0d2e710..038cebc 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/audit/OperationStatusAuditEventTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/audit/OperationStatusAuditEventTest.java
@@ -38,6 +38,7 @@ public class OperationStatusAuditEventTest {
.withTimestamp(System.currentTimeMillis())
.withRequestId(testRequestId.toString())
.withStatus(testStatus)
+ .withUserName("testuser")
.withRequestContext("Start Service")
.build();
@@ -45,7 +46,7 @@ public class OperationStatusAuditEventTest {
String actualAuditMessage = evnt.getAuditMessage();
// Then
- String expectedAuditMessage = String.format("Operation(Start Service), Status(%s), RequestId(%s)", testStatus, testRequestId);
+ String expectedAuditMessage = String.format("User(testuser), Operation(Start Service), Status(%s), RequestId(%s)", testStatus, testRequestId);
assertThat(actualAuditMessage, equalTo(expectedAuditMessage));
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/test/java/org/apache/ambari/server/audit/request/AbstractBaseCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/audit/request/AbstractBaseCreator.java b/ambari-server/src/test/java/org/apache/ambari/server/audit/request/AbstractBaseCreator.java
index 02ecb00..c405668 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/audit/request/AbstractBaseCreator.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/audit/request/AbstractBaseCreator.java
@@ -21,6 +21,7 @@ package org.apache.ambari.server.audit.request;
import org.apache.ambari.server.api.services.Request;
import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.audit.event.AuditEvent;
+import org.apache.ambari.server.audit.request.eventcreator.RequestAuditEventCreator;
public abstract class AbstractBaseCreator implements RequestAuditEventCreator {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLogModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLogModule.java b/ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLogModule.java
index 52ad44c..175e539 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLogModule.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/audit/request/RequestAuditLogModule.java
@@ -20,6 +20,7 @@ package org.apache.ambari.server.audit.request;
import org.apache.ambari.server.audit.AuditLogger;
import org.apache.ambari.server.audit.AuditLoggerDefaultImpl;
+import org.apache.ambari.server.audit.request.eventcreator.RequestAuditEventCreator;
import org.easymock.EasyMock;
import com.google.inject.AbstractModule;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index 05f3dcf..c79f9d2 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -72,6 +72,7 @@ import org.apache.ambari.server.actionmanager.StageFactory;
import org.apache.ambari.server.actionmanager.TargetHostType;
import org.apache.ambari.server.agent.ExecutionCommand;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.audit.AuditLogger;
import org.apache.ambari.server.audit.AuditLoggerModule;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.internal.ClusterStackVersionResourceProviderTest;
@@ -263,12 +264,14 @@ public class AmbariManagementControllerTest {
topologyManager = injector.getInstance(TopologyManager.class);
StageUtils.setTopologyManager(topologyManager);
ActionManager.setTopologyManager(topologyManager);
+ EasyMock.replay(injector.getInstance(AuditLogger.class));
}
@After
public void teardown() {
injector.getInstance(PersistService.class).stop();
actionDB = null;
+ EasyMock.reset(injector.getInstance(AuditLogger.class));
}
private void setOsFamily(Host host, String osFamily, String osVersion) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
index 4a474bf..92043f0 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
@@ -43,6 +43,7 @@ import org.apache.ambari.server.actionmanager.HostRoleStatus;
import org.apache.ambari.server.actionmanager.Stage;
import org.apache.ambari.server.api.resources.UpgradeResourceDefinition;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.audit.AuditLogger;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.controller.AmbariServer;
import org.apache.ambari.server.controller.spi.Predicate;
@@ -237,11 +238,13 @@ public class UpgradeResourceProviderTest {
topologyManager = injector.getInstance(TopologyManager.class);
StageUtils.setTopologyManager(topologyManager);
ActionManager.setTopologyManager(topologyManager);
+ EasyMock.replay(injector.getInstance(AuditLogger.class));
}
@After
public void after() {
injector.getInstance(PersistService.class).stop();
+ EasyMock.reset(injector.getInstance(AuditLogger.class));
injector = null;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/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 b1336de..771f830 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,9 @@ public class InMemoryDefaultTestModule extends AbstractModule {
try {
install(new BeanDefinitionsCachingTestControllerModule(properties));
- bind(AuditLogger.class).toInstance(EasyMock.createNiceMock(AuditLoggerDefaultImpl.class));
+ AuditLogger al = EasyMock.createNiceMock(AuditLogger.class);
+ EasyMock.expect(al.isEnabled()).andReturn(false).anyTimes();
+ bind(AuditLogger.class).toInstance(al);
} catch (Exception e) {
throw new RuntimeException(e);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilterTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilterTest.java b/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilterTest.java
index f6a885d..0f2b104 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilterTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/AmbariAuthenticationFilterTest.java
@@ -78,6 +78,7 @@ public class AmbariAuthenticationFilterTest {
FilterChain filterChain = createMock(FilterChain.class);
expect(request.getHeader("Authorization")).andReturn("header").andReturn(null);
expect(request.getHeader("X-Forwarded-For")).andReturn("1.2.3.4");
+ expect(mockedAuditLogger.isEnabled()).andReturn(true);
mockedAuditLogger.log(anyObject(AuditEvent.class));
expectLastCall().times(1);
filterChain.doFilter(request, response);
@@ -106,6 +107,7 @@ public class AmbariAuthenticationFilterTest {
expect(AuthorizationHelper.getAuthenticatedName()).andReturn("perm1");
expect(request.getHeader("X-Forwarded-For")).andReturn("1.2.3.4");
expect(authentication.getName()).andReturn("admin");
+ expect(mockedAuditLogger.isEnabled()).andReturn(true);
mockedAuditLogger.log(anyObject(AuditEvent.class));
expectLastCall().times(1);
replay(mockedAuditLogger, request, authentication, permissionHelper);
@@ -125,6 +127,7 @@ public class AmbariAuthenticationFilterTest {
expect(request.getHeader("X-Forwarded-For")).andReturn("1.2.3.4");
expect(request.getHeader("Authorization")).andReturn(
"Basic " + new String(Base64.encode("admin:admin".getBytes("UTF-8"))));
+ expect(mockedAuditLogger.isEnabled()).andReturn(true);
mockedAuditLogger.log(anyObject(AuditEvent.class));
expectLastCall().times(1);
replay(mockedAuditLogger, request, authEx);
[3/3] ambari git commit: AMBARI-15646. Audit Log Code Cleanup &
Safety. (Daniel Gergely via stoader)
Posted by st...@apache.org.
AMBARI-15646. Audit Log Code Cleanup & Safety. (Daniel Gergely via stoader)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6320d589
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6320d589
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6320d589
Branch: refs/heads/trunk
Commit: 6320d589f942b41cdab34c1de241423ccb5b4752
Parents: f0645b6
Author: Daniel Gergely <dg...@hortonworks.com>
Authored: Thu Apr 7 18:48:43 2016 +0200
Committer: Toader, Sebastian <st...@hortonworks.com>
Committed: Thu Apr 7 20:11:29 2016 +0200
----------------------------------------------------------------------
.../actionmanager/ActionDBAccessorImpl.java | 277 +++++++++++++++----
.../ambari/server/api/services/BaseService.java | 5 +-
.../server/api/services/LogoutService.java | 3 +
.../server/audit/AuditLoggerDefaultImpl.java | 13 +-
.../ambari/server/audit/AuditLoggerModule.java | 95 +++----
.../audit/event/OperationStatusAuditEvent.java | 14 +-
.../audit/event/TaskStatusAuditEvent.java | 13 +-
.../MembershipChangeRequestAuditEvent.java | 4 +-
.../StartOperationRequestAuditEvent.java | 17 +-
.../audit/request/RequestAuditEventCreator.java | 59 ----
.../audit/request/RequestAuditLoggerImpl.java | 1 +
.../eventcreator/AlertGroupEventCreator.java | 59 +---
.../eventcreator/AlertTargetEventCreator.java | 66 ++---
.../eventcreator/BlueprintEventCreator.java | 1 -
.../BlueprintExportEventCreator.java | 1 -
.../eventcreator/ComponentEventCreator.java | 28 +-
.../ConfigurationChangeEventCreator.java | 12 +-
.../eventcreator/CredentialEventCreator.java | 24 +-
.../eventcreator/DefaultEventCreator.java | 1 -
.../request/eventcreator/GroupEventCreator.java | 18 +-
.../request/eventcreator/HostEventCreator.java | 22 +-
.../eventcreator/MemberEventCreator.java | 38 +--
.../eventcreator/PrivilegeEventCreator.java | 16 +-
.../RecommendationIgnoreEventCreator.java | 1 -
.../eventcreator/RepositoryEventCreator.java | 37 +--
.../RepositoryVersionEventCreator.java | 44 +--
.../eventcreator/RequestAuditEventCreator.java | 59 ++++
.../RequestAuditEventCreatorHelper.java | 112 ++++++++
.../eventcreator/RequestEventCreator.java | 1 -
.../ServiceConfigDownloadEventCreator.java | 1 -
.../eventcreator/ServiceEventCreator.java | 17 +-
.../eventcreator/UnauthorizedEventCreator.java | 1 -
.../eventcreator/UpgradeEventCreator.java | 22 +-
.../eventcreator/UpgradeItemEventCreator.java | 22 +-
.../request/eventcreator/UserEventCreator.java | 15 +-
.../ValidationIgnoreEventCreator.java | 1 -
.../eventcreator/ViewInstanceEventCreator.java | 37 +--
.../eventcreator/ViewPrivilegeEventCreator.java | 35 +--
.../server/cleanup/ClasspathScannerUtils.java | 4 +-
.../internal/AlertGroupResourceProvider.java | 14 +-
.../internal/AlertTargetResourceProvider.java | 18 +-
.../internal/GroupResourceProvider.java | 6 +-
.../internal/HostComponentResourceProvider.java | 30 +-
.../internal/MemberResourceProvider.java | 4 +-
.../internal/UpgradeItemResourceProvider.java | 10 +-
.../internal/UpgradeResourceProvider.java | 28 +-
.../internal/UserResourceProvider.java | 18 +-
.../dispatchers/EmailDispatcher.java | 2 +-
.../AmbariAuthenticationFilter.java | 21 +-
.../AmbariAuthorizationFilter.java | 35 ++-
.../authorization/PermissionHelper.java | 3 +
.../services/AlertNoticeDispatchService.java | 2 +-
.../server/agent/TestHeartbeatHandler.java | 7 +
.../audit/ActionDBAAccessorAuditlogTest.java | 45 +++
.../audit/OperationStatusAuditEventTest.java | 3 +-
.../audit/request/AbstractBaseCreator.java | 1 +
.../audit/request/RequestAuditLogModule.java | 1 +
.../AmbariManagementControllerTest.java | 3 +
.../internal/UpgradeResourceProviderTest.java | 3 +
.../server/orm/InMemoryDefaultTestModule.java | 4 +-
.../AmbariAuthenticationFilterTest.java | 3 +
.../AmbariAuthorizationFilterTest.java | 6 +-
62 files changed, 806 insertions(+), 657 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/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 79d3470..06311c2 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
@@ -23,13 +23,10 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.EnumSet;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
+import java.util.Objects;
import java.util.concurrent.TimeUnit;
import org.apache.ambari.annotations.Experimental;
@@ -38,9 +35,9 @@ import org.apache.ambari.annotations.TransactionalLock;
import org.apache.ambari.annotations.TransactionalLock.LockArea;
import org.apache.ambari.annotations.TransactionalLock.LockType;
import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.Role;
import org.apache.ambari.server.agent.CommandReport;
import org.apache.ambari.server.agent.ExecutionCommand;
-import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.AuditLogger;
import org.apache.ambari.server.audit.event.OperationStatusAuditEvent;
@@ -48,6 +45,7 @@ import org.apache.ambari.server.audit.event.TaskStatusAuditEvent;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.internal.CalculatedStatus;
import org.apache.ambari.server.events.HostRemovedEvent;
+import org.apache.ambari.server.events.ServiceComponentUninstalledEvent;
import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.orm.dao.ClusterDAO;
import org.apache.ambari.server.orm.dao.ExecutionCommandDAO;
@@ -65,6 +63,7 @@ import org.apache.ambari.server.orm.entities.RequestEntity;
import org.apache.ambari.server.orm.entities.RequestScheduleEntity;
import org.apache.ambari.server.orm.entities.RoleSuccessCriteriaEntity;
import org.apache.ambari.server.orm.entities.StageEntity;
+import org.apache.ambari.server.security.authorization.AuthorizationHelper;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Host;
import org.apache.ambari.server.utils.LoopBody;
@@ -132,17 +131,12 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
AuditLogger auditLogger;
/**
- * Caches to store current request and task statuses.
- * It is used for avoiding audit log entry duplication
+ * Cache for auditlog. It stores a {@link RequestDetails} object for every requests.
+ * {@link RequestDetails} contains the previous status of the request and a map for tasks.
+ * A task has a {@link RequestDetails.Component} key and the value of that is the previous status of the task.
+ * {@link RequestDetails.Component} contains the component name and the host name
*/
- private Map<Long, HostRoleStatus> temporaryStatusCache = new HashMap<Long, HostRoleStatus>();
- private Map<Long, HostRoleStatus> temporaryTaskStatusCache = new HashMap<Long, HostRoleStatus>();
-
- /**
- * Stores the host role command entities that are not completed for a request id
- * It is used to calculate the summary state of the request for audit logging
- */
- private Map<Long, Map<Long, HostRoleStatus>> tasksForRequest = new HashMap<>();
+ private Cache<Long,RequestDetails> auditlogRequestCache = CacheBuilder.newBuilder().expireAfterAccess(60, TimeUnit.MINUTES).concurrencyLevel(4).build();
private Cache<Long, HostRoleCommand> hostRoleCommandCache;
private long cacheLimit; //may be exceeded to store tasks from one request
@@ -333,6 +327,8 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
//TODO wire request to cluster
List<StageEntity> stageEntities = new ArrayList<StageEntity>(request.getStages().size());
+ addRequestToAuditlogCache(request);
+
for (Stage stage : request.getStages()) {
StageEntity stageEntity = stage.constructNewPersistenceEntity();
stageEntities.add(stageEntity);
@@ -517,11 +513,11 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
long[] requestStageIds = StageUtils.getRequestStage(actionId);
long requestId = requestStageIds[0];
long stageId = requestStageIds[1];
+ if(statusChanged) {
+ auditLog(commandEntity, requestId);
+ }
if (requestDAO.getLastStageId(requestId).equals(stageId)) {
requestsToCheck.add(requestId);
- if(statusChanged) {
- auditLog(commandEntity, requestId); // wrong requestId !!!
- }
}
}
}
@@ -810,74 +806,119 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
}
/**
- * AuditLog operation status change
+ * Updates auditlog cache and returns the status of the latest task for the given component on the given host.
+ * @param commandEntity new entity with the new status. It also holds the component and the hostname
* @param requestId
+ * @return
*/
- private void auditLog(HostRoleCommandEntity commandEntity, Long requestId) {
- if(!auditLogger.isEnabled()) {
- return;
- }
+ private HostRoleStatus updateAuditlogCache(HostRoleCommandEntity commandEntity, Long requestId) {
- if(requestId != null) {
+ RequestDetails details = auditlogRequestCache.getIfPresent(requestId);
+ if(details == null) {
+ return null;
+ }
- HostRoleStatus calculatedStatus = calculateStatus(commandEntity, requestId);
+ RequestDetails.Component component = new RequestDetails.Component(commandEntity.getRole(), commandEntity.getHostName());
- if (!temporaryStatusCache.containsKey(requestId) || temporaryStatusCache.get(requestId) != calculatedStatus) {
- RequestEntity request = requestDAO.findByPK(requestId);
- String context = request != null ? request.getRequestContext() : null;
- AuditEvent auditEvent = OperationStatusAuditEvent.builder()
- .withRequestId(String.valueOf(requestId))
- .withStatus(String.valueOf(calculatedStatus))
- .withRequestContext(context)
- .withTimestamp(System.currentTimeMillis())
- .build();
- auditLogger.log(auditEvent);
+ HostRoleStatus lastTaskStatus = null;
+ if(details.getTasks().containsKey(component)) {
+ lastTaskStatus = details.getTasks().get(component);
+ }
+ details.getTasks().put(component, commandEntity.getStatus());
+ return lastTaskStatus;
+ }
- temporaryStatusCache.put(requestId, calculatedStatus);
+ /**
+ * Adds request to auditlog cache
+ * @param request
+ */
+ private void addRequestToAuditlogCache(Request request) {
+ if(!auditLogger.isEnabled()) {
+ return;
+ }
+ if(auditlogRequestCache.getIfPresent(request.getRequestId()) == null) {
+ int numberOfTasks = 0;
+ for (Stage stage : request.getStages()) {
+ numberOfTasks += stage.getOrderedHostRoleCommands().size();
}
+ RequestDetails requestDetails = new RequestDetails();
+ requestDetails.setNumberOfTasks(numberOfTasks);
+ requestDetails.setUserName(AuthorizationHelper.getAuthenticatedName());
+ auditlogRequestCache.put(request.getRequestId(), requestDetails);
}
- logTask(commandEntity, requestId);
}
/**
- * Calculates summary status for the given request id for the new command entity status
- * @param commandEntity
+ * AuditLog operation status change
* @param requestId
- * @return
*/
- private HostRoleStatus calculateStatus(HostRoleCommandEntity commandEntity, Long requestId) {
- if(!tasksForRequest.containsKey(requestId)) {
- tasksForRequest.put(requestId, new HashMap<Long, HostRoleStatus>());
+ private void auditLog(HostRoleCommandEntity commandEntity, Long requestId) {
+ if(!auditLogger.isEnabled()) {
+ return;
}
- tasksForRequest.get(requestId).put(commandEntity.getTaskId(), commandEntity.getStatus());
-
- HostRoleStatus calculatedStatus = CalculatedStatus.calculateSummaryStatusOfStage(CalculatedStatus.calculateStatusCounts(tasksForRequest.get(requestId).values()), tasksForRequest.get(requestId).size(), false);
-
- // if all task status is completed, we can remove it from the container
- boolean hasInProgress = false;
- for(HostRoleStatus hrcs : tasksForRequest.get(requestId).values()) {
- if(!hrcs.isCompletedState()) {
- hasInProgress = true;
- break;
+ if(requestId != null) {
+ HostRoleStatus lastTaskStatus = updateAuditlogCache(commandEntity, requestId);
+
+ // details must not be null
+ RequestDetails details = auditlogRequestCache.getIfPresent(requestId);
+ if (details != null) {
+ HostRoleStatus calculatedStatus = calculateStatus(requestId, details.getNumberOfTasks());
+
+ if (details.getLastStatus() != calculatedStatus) {
+ RequestEntity request = requestDAO.findByPK(requestId);
+ String context = request != null ? request.getRequestContext() : null;
+ AuditEvent auditEvent = OperationStatusAuditEvent.builder()
+ .withRequestId(String.valueOf(requestId))
+ .withStatus(String.valueOf(calculatedStatus))
+ .withRequestContext(context)
+ .withUserName(details.getUserName())
+ .withTimestamp(System.currentTimeMillis())
+ .build();
+ auditLogger.log(auditEvent);
+
+ details.setLastStatus(calculatedStatus);
+ }
}
+ logTask(commandEntity, requestId, lastTaskStatus);
}
- if(!hasInProgress) {
- tasksForRequest.remove(requestId);
+ }
+
+ /**
+ * Calculates summary status for the given request
+ * @param requestId
+ * @return
+ */
+ private HostRoleStatus calculateStatus(Long requestId, int numberOfTasks) {
+ RequestDetails details = auditlogRequestCache.getIfPresent(requestId);
+ if(details == null) {
+ return HostRoleStatus.QUEUED;
}
- return calculatedStatus;
+ Collection<HostRoleStatus> taskStatuses = details.getTaskStatuses();
+ return CalculatedStatus.calculateSummaryStatusOfStage(CalculatedStatus.calculateStatusCounts(taskStatuses), numberOfTasks, false);
}
/**
* Logs task status change
* @param commandEntity
* @param requestId
+ * @param lastTaskStatus
*/
- private void logTask(HostRoleCommandEntity commandEntity, Long requestId) {
- if(!temporaryTaskStatusCache.containsKey(commandEntity.getTaskId()) || temporaryTaskStatusCache.get(commandEntity.getTaskId()) != commandEntity.getStatus() ) {
+ private void logTask(HostRoleCommandEntity commandEntity, Long requestId, HostRoleStatus lastTaskStatus) {
+
+ RequestDetails.Component component = new RequestDetails.Component(commandEntity.getRole(), commandEntity.getHostName());
+ RequestDetails details = auditlogRequestCache.getIfPresent(requestId);
+ if(details == null) {
+ return;
+ }
+
+ HostRoleStatus cachedStatus = details.getTasks().get(component);
+
+ if(lastTaskStatus == null || cachedStatus != lastTaskStatus ) {
AuditEvent taskEvent = TaskStatusAuditEvent.builder()
.withTaskId(String.valueOf(commandEntity.getTaskId()))
.withHostName(commandEntity.getHostName())
+ .withUserName(details.getUserName())
.withOperation(commandEntity.getRoleCommand().toString() + " " + commandEntity.getRole().toString())
.withDetails(commandEntity.getCommandDetail())
.withStatus(commandEntity.getStatus().toString())
@@ -886,7 +927,125 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
.build();
auditLogger.log(taskEvent);
- temporaryTaskStatusCache.put(commandEntity.getTaskId(), commandEntity.getStatus());
+ }
+ }
+
+ /**
+ * The purpose of this nested class is to store details about the request: lastStatus and the list of tasks
+ */
+ private static class RequestDetails {
+ /**
+ * Last summary status of the request
+ */
+ HostRoleStatus lastStatus = null;
+
+ /**
+ * The number of tasks that can be found in the request
+ */
+ int numberOfTasks = 0;
+
+ /**
+ * The user who issued the request
+ */
+ String userName;
+
+ /**
+ * Component and the status of the belonging task
+ * Size of this container might be less than {@link RequestDetails#numberOfTasks}
+ */
+ Map<Component, HostRoleStatus> tasks = new HashMap<>();
+
+ public HostRoleStatus getLastStatus() {
+ return lastStatus;
+ }
+
+ public void setLastStatus(HostRoleStatus lastStatus) {
+ this.lastStatus = lastStatus;
+ }
+
+ public int getNumberOfTasks() {
+ return numberOfTasks;
+ }
+
+ public void setNumberOfTasks(int numberOfTasks) {
+ this.numberOfTasks = numberOfTasks;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public Map<Component, HostRoleStatus> getTasks() {
+ return tasks;
+ }
+
+ /**
+ * Returns the list of statuses from {@link RequestDetails#tasks}
+ * @return
+ */
+ public Collection<HostRoleStatus> getTaskStatuses() {
+ return getTasks().values();
+ }
+
+ /**
+ * This nested class is the key for the {@link RequestDetails#tasks} map
+ */
+ static class Component {
+ /**
+ * Component name
+ */
+ private final Role role;
+ /**
+ * Host name
+ */
+ private final String hostName;
+ Component(Role role, String hostName) {
+ this.role = role;
+ this.hostName = hostName;
+ }
+
+ public Role getRole() {
+ return role;
+ }
+
+ public String getHostName() {
+ return hostName;
+ }
+
+ /**
+ * Hash code generation
+ * @return
+ */
+ @Override
+ public final int hashCode() {
+ int hash = 7;
+ String roleStr = role == null ? "null" : role.toString();
+ String hostNameStr = hostName == null ? "null" : hostName;
+ String str = roleStr.concat(hostNameStr);
+ for (int i = 0; i < str.length(); i++) {
+ hash = hash*31 + str.charAt(i);
+ }
+ return hash;
+ }
+
+ /**
+ * Two components are equal if their component name and host name are the same
+ * @param other
+ * @return
+ */
+ @Override
+ public final boolean equals(final Object other) {
+ if(other instanceof Component) {
+ Component comp = (Component) other;
+ return Objects.equals(comp.role, role) && Objects.equals(comp.hostName, hostName);
+ }
+
+ return false;
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseService.java
index 2e5b920..b7156bf 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseService.java
@@ -117,7 +117,10 @@ public abstract class BaseService {
headers, requestBody, uriInfo, requestType, resource);
result = request.process();
- requestAuditLogger.log(request, result);
+ // if it is not OK, then it is logged below
+ if(ResultStatus.STATUS.OK.equals(result.getStatus().getStatus())) {
+ requestAuditLogger.log(request, result);
+ }
}
if(requestBodySet.isEmpty() || !ResultStatus.STATUS.OK.equals(result.getStatus().getStatus())) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/api/services/LogoutService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/LogoutService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/LogoutService.java
index 3b449ca..02403f9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/LogoutService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/LogoutService.java
@@ -57,6 +57,9 @@ public class LogoutService {
* @param servletRequest
*/
private void auditLog(HttpServletRequest servletRequest) {
+ if(!auditLogger.isEnabled()) {
+ return;
+ }
LogoutAuditEvent logoutEvent = LogoutAuditEvent.builder()
.withTimestamp(System.currentTimeMillis())
.withRemoteIp(RequestUtils.getRemoteAddress(servletRequest))
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/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 1cfb740..ea6524f 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
@@ -44,7 +44,13 @@ public class AuditLoggerDefaultImpl implements AuditLogger {
*/
private final boolean isEnabled;
- private ThreadLocal<DateFormat> dateFormatThreadLocal = new ThreadLocal<>();
+ private ThreadLocal<DateFormat> dateFormatThreadLocal = new ThreadLocal<DateFormat>(){
+ @Override
+ protected DateFormat initialValue() {
+ //2016-03-11T10:42:36.376Z
+ return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
+ }
+ };
@Inject
public AuditLoggerDefaultImpl(Configuration configuration) {
@@ -61,11 +67,6 @@ public class AuditLoggerDefaultImpl implements AuditLogger {
return;
}
- if(dateFormatThreadLocal.get() == null) {
- //2016-03-11T10:42:36.376Z
- dateFormatThreadLocal.set(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX"));
- }
-
Date date = new Date(event.getTimestamp());
LOG.info("{}, {}", dateFormatThreadLocal.get().format(date), event.getAuditMessage());
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerModule.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerModule.java
index b20714b..1ab53a9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/AuditLoggerModule.java
@@ -18,41 +18,52 @@
package org.apache.ambari.server.audit;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.ambari.server.audit.request.eventcreator.RequestAuditEventCreator;
import org.apache.ambari.server.audit.request.RequestAuditLogger;
import org.apache.ambari.server.audit.request.RequestAuditLoggerImpl;
-import org.apache.ambari.server.audit.request.eventcreator.AlertGroupEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.AlertTargetEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.BlueprintEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.BlueprintExportEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.ComponentEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.ConfigurationChangeEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.CredentialEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.DefaultEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.GroupEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.HostEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.MemberEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.PrivilegeEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.RecommendationIgnoreEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.RepositoryEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.RepositoryVersionEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.RequestEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.ServiceConfigDownloadEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.ServiceEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.UnauthorizedEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.UpgradeEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.UpgradeItemEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.UserEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.ValidationIgnoreEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.ViewInstanceEventCreator;
-import org.apache.ambari.server.audit.request.eventcreator.ViewPrivilegeEventCreator;
+import org.apache.ambari.server.cleanup.ClasspathScannerUtils;
import com.google.inject.AbstractModule;
+import com.google.inject.Scopes;
import com.google.inject.multibindings.Multibinder;
import com.google.inject.name.Names;
public class AuditLoggerModule extends AbstractModule {
+ /**
+ * Selectors identifying objects to be bound.
+ *
+ * @return a list with interface and annotation types
+ */
+ protected List<Class> getSelectors() {
+ List<Class> selectorList = new ArrayList<>();
+ selectorList.add(RequestAuditEventCreator.class);
+ return selectorList;
+ }
+
+ /**
+ * Gets the list of types to be excluded from bindings.
+ *
+ * @return a list with types to be left out from dynamic bindings
+ */
+ protected List<Class> getExclusions() {
+ return Collections.emptyList();
+ }
+
+ /**
+ * Returns the package to be scanned for bindings of this module.
+ *
+ * @return the name of the package to be scanned
+ */
+ protected String getPackageToScan() {
+ return RequestAuditEventCreator.class.getPackage().getName();
+ }
+
@Override
protected void configure() {
bind(AuditLogger.class).to(AsyncAuditLogger.class);
@@ -61,34 +72,12 @@ public class AuditLoggerModule extends AbstractModule {
bind(AuditLogger.class).annotatedWith(Names.named(AsyncAuditLogger.InnerLogger)).to(AuditLoggerDefaultImpl.class);
// binding for audit event creators
- Multibinder<RequestAuditEventCreator> auditLogEventCreatorBinder = Multibinder.newSetBinder(binder(), RequestAuditEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(DefaultEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(ComponentEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(ServiceEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(UnauthorizedEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(ConfigurationChangeEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(UserEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(GroupEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(MemberEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(PrivilegeEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(BlueprintExportEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(ServiceConfigDownloadEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(BlueprintEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(ViewInstanceEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(ViewPrivilegeEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(RepositoryEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(RepositoryVersionEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(AlertGroupEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(AlertTargetEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(HostEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(UpgradeEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(UpgradeItemEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(RecommendationIgnoreEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(ValidationIgnoreEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(CredentialEventCreator.class);
- auditLogEventCreatorBinder.addBinding().to(RequestEventCreator.class);
+ Multibinder<RequestAuditEventCreator> multiBinder = Multibinder.newSetBinder(binder(), RequestAuditEventCreator.class);
+ Set<Class> bindingSet = ClasspathScannerUtils.findOnClassPath(getPackageToScan(), getExclusions(), getSelectors());
+ for (Class clazz : bindingSet) {
+ multiBinder.addBinding().to(clazz).in(Scopes.SINGLETON);
+ }
bind(RequestAuditLogger.class).to(RequestAuditLoggerImpl.class);
-
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/event/OperationStatusAuditEvent.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/event/OperationStatusAuditEvent.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/event/OperationStatusAuditEvent.java
index 319d772..fd0068e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/event/OperationStatusAuditEvent.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/event/OperationStatusAuditEvent.java
@@ -44,6 +44,11 @@ public class OperationStatusAuditEvent extends AbstractAuditEvent {
*/
private String operation;
+ /**
+ * Name of the logged in user who sent the request
+ */
+ private String userName;
+
private OperationStatusAuditEventBuilder() {
}
@@ -60,7 +65,9 @@ public class OperationStatusAuditEvent extends AbstractAuditEvent {
@Override
protected void buildAuditMessage(StringBuilder builder) {
builder
- .append("Operation(")
+ .append("User(")
+ .append(this.userName)
+ .append("), Operation(")
.append(this.operation)
.append("), Status(")
.append(this.status)
@@ -84,6 +91,11 @@ public class OperationStatusAuditEvent extends AbstractAuditEvent {
this.operation = operation;
return this;
}
+
+ public OperationStatusAuditEventBuilder withUserName(String userName) {
+ this.userName = userName;
+ return this;
+ }
}
private OperationStatusAuditEvent() {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/event/TaskStatusAuditEvent.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/event/TaskStatusAuditEvent.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/event/TaskStatusAuditEvent.java
index eaea058..1682e74 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/event/TaskStatusAuditEvent.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/event/TaskStatusAuditEvent.java
@@ -59,6 +59,11 @@ public class TaskStatusAuditEvent extends AbstractAuditEvent {
*/
private String details;
+ /**
+ * User name
+ */
+ private String userName;
+
private TaskStatusAuditEventBuilder() {
}
@@ -75,7 +80,9 @@ public class TaskStatusAuditEvent extends AbstractAuditEvent {
@Override
protected void buildAuditMessage(StringBuilder builder) {
builder
- .append("Operation(")
+ .append("User(")
+ .append(this.userName)
+ .append("), Operation(")
.append(this.operation);
if (details != null) {
@@ -124,6 +131,10 @@ public class TaskStatusAuditEvent extends AbstractAuditEvent {
this.details = details;
return this;
}
+ public TaskStatusAuditEventBuilder withUserName(String userName) {
+ this.userName = userName;
+ return this;
+ }
}
private TaskStatusAuditEvent() {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/MembershipChangeRequestAuditEvent.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/MembershipChangeRequestAuditEvent.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/MembershipChangeRequestAuditEvent.java
index 040934e..8bfe9cd 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/MembershipChangeRequestAuditEvent.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/MembershipChangeRequestAuditEvent.java
@@ -67,10 +67,10 @@ public class MembershipChangeRequestAuditEvent extends RequestAuditEvent {
if (userNameList.isEmpty()) {
builder.append("<empty>");
+ } else {
+ builder.append(StringUtils.join(userNameList, ", "));
}
- StringUtils.join(userNameList, ", ");
-
builder.append(")");
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/StartOperationRequestAuditEvent.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/StartOperationRequestAuditEvent.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/StartOperationRequestAuditEvent.java
index 66e37b8..eb92480 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/StartOperationRequestAuditEvent.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/event/request/StartOperationRequestAuditEvent.java
@@ -47,6 +47,11 @@ public class StartOperationRequestAuditEvent extends AbstractUserAuditEvent {
*/
private String operation;
+ /**
+ * Target host of the request
+ */
+ private String hostname;
+
private StartOperationAuditEventBuilder() {
}
@@ -62,8 +67,11 @@ public class StartOperationRequestAuditEvent extends AbstractUserAuditEvent {
builder
.append(", Operation(")
- .append(operation)
- .append("), RequestId(")
+ .append(operation);
+ if(hostname != null) {
+ builder.append("), Host name(").append(hostname);
+ }
+ builder.append("), RequestId(")
.append(requestId)
.append("), Status(")
.append(reasonOfFailure == null ? "Successfully queued" : "Failed to queue");
@@ -103,6 +111,11 @@ public class StartOperationRequestAuditEvent extends AbstractUserAuditEvent {
this.operation = operation;
return this;
}
+
+ public StartOperationAuditEventBuilder withHostname(String hostname) {
+ this.hostname = hostname;
+ return this;
+ }
}
private StartOperationRequestAuditEvent() {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditEventCreator.java
deleted file mode 100644
index ccb39de..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/RequestAuditEventCreator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.audit.request;
-
-import java.util.Set;
-
-import org.apache.ambari.server.api.services.Request;
-import org.apache.ambari.server.api.services.Result;
-import org.apache.ambari.server.api.services.ResultStatus;
-import org.apache.ambari.server.audit.event.AuditEvent;
-import org.apache.ambari.server.controller.spi.Resource;
-
-/**
- * This interface must be implemented by the plugins for the request audit logger
- * in order to make custom {@link AuditEvent}s based on {@link org.apache.ambari.server.api.services.Request.Type}s
- * and {@link org.apache.ambari.server.controller.spi.Resource.Type}
- */
-public interface RequestAuditEventCreator {
-
- /**
- * @return the set of {@link org.apache.ambari.server.api.services.Request.Type}s that are handled by this creator
- */
- Set<Request.Type> getRequestTypes();
-
- /**
- * @return the {@link org.apache.ambari.server.controller.spi.Resource.Type}s that is handled by this creator
- */
- Set<Resource.Type> getResourceTypes();
-
- /**
- * @return the {@link ResultStatus}es that is handled by this creator
- */
- Set<ResultStatus.STATUS> getResultStatuses();
-
- /**
- * Creates and {@link AuditEvent}
- * @param request HTTP request object
- * @param result HTTP result object
- * @return an {@link AuditEvent}
- */
- AuditEvent createAuditEvent(Request request, Result result);
-
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/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 56efd18..2cdedd9 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
@@ -26,6 +26,7 @@ import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.AuditLogger;
import org.apache.ambari.server.audit.event.AuditEvent;
+import org.apache.ambari.server.audit.request.eventcreator.RequestAuditEventCreator;
import org.apache.ambari.server.controller.spi.Resource;
import com.google.inject.Inject;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertGroupEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertGroupEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertGroupEventCreator.java
index 366dfff..30b7357 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertGroupEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertGroupEventCreator.java
@@ -18,8 +18,6 @@
package org.apache.ambari.server.audit.request.eventcreator;
-import java.util.Collections;
-import java.util.List;
import java.util.Set;
import org.apache.ambari.server.api.services.Request;
@@ -29,9 +27,8 @@ import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.AddAlertGroupRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.ChangeAlertGroupRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.DeleteAlertGroupRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.AlertGroupResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -90,9 +87,9 @@ public class AlertGroupEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withName(getName(request))
- .withDefinitionIds(getDefinitionIds(request))
- .withNotificationIds(getNotificationIds(request))
+ .withName(RequestAuditEventCreatorHelper.getNamedProperty(request, AlertGroupResourceProvider.ALERT_GROUP_NAME))
+ .withDefinitionIds(RequestAuditEventCreatorHelper.getNamedPropertyList(request, AlertGroupResourceProvider.ALERT_GROUP_DEFINITIONS))
+ .withNotificationIds(RequestAuditEventCreatorHelper.getNamedPropertyList(request, AlertGroupResourceProvider.ALERT_GROUP_TARGETS))
.build();
case PUT:
return ChangeAlertGroupRequestAuditEvent.builder()
@@ -101,9 +98,9 @@ public class AlertGroupEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withName(getName(request))
- .withDefinitionIds(getDefinitionIds(request))
- .withNotificationIds(getNotificationIds(request))
+ .withName(RequestAuditEventCreatorHelper.getNamedProperty(request, AlertGroupResourceProvider.ALERT_GROUP_NAME))
+ .withDefinitionIds(RequestAuditEventCreatorHelper.getNamedPropertyList(request, AlertGroupResourceProvider.ALERT_GROUP_DEFINITIONS))
+ .withNotificationIds(RequestAuditEventCreatorHelper.getNamedPropertyList(request, AlertGroupResourceProvider.ALERT_GROUP_TARGETS))
.build();
case DELETE:
return DeleteAlertGroupRequestAuditEvent.builder()
@@ -118,46 +115,4 @@ public class AlertGroupEventCreator implements RequestAuditEventCreator {
return null;
}
}
-
- /**
- * Returns the alert group name from the request
- * @param request
- * @return
- */
- private String getName(Request request) {
- if (!request.getBody().getNamedPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getNamedPropertySets().iterator().next().getProperties().get(PropertyHelper.getPropertyId("AlertGroup", "name")));
- }
- return null;
- }
-
- /**
- * Returns definition ids from the request
- * @param request
- * @return
- */
- private List<String> getDefinitionIds(Request request) {
- if (!request.getBody().getNamedPropertySets().isEmpty()) {
- List<String> list = (List<String>) request.getBody().getNamedPropertySets().iterator().next().getProperties().get(PropertyHelper.getPropertyId("AlertGroup", "definitions"));
- if (list != null) {
- return list;
- }
- }
- return Collections.emptyList();
- }
-
- /**
- * Returns notification ids from the request
- * @param request
- * @return
- */
- private List<String> getNotificationIds(Request request) {
- if (!request.getBody().getNamedPropertySets().isEmpty()) {
- List<String> list = (List<String>) request.getBody().getNamedPropertySets().iterator().next().getProperties().get(PropertyHelper.getPropertyId("AlertGroup", "targets"));
- if (list != null) {
- return list;
- }
- }
- return Collections.emptyList();
- }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertTargetEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertTargetEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertTargetEventCreator.java
index abad559..26a856b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertTargetEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/AlertTargetEventCreator.java
@@ -18,8 +18,6 @@
package org.apache.ambari.server.audit.request.eventcreator;
-import java.util.Collections;
-import java.util.List;
import java.util.Set;
import org.apache.ambari.server.api.services.Request;
@@ -29,9 +27,12 @@ import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.AddAlertTargetRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.ChangeAlertTargetRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.DeleteAlertTargetRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.AlertTargetResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.apache.ambari.server.notifications.dispatchers.EmailDispatcher;
+import org.apache.ambari.server.state.services.AlertNoticeDispatchService;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.User;
import com.google.common.collect.ImmutableSet;
@@ -90,13 +91,13 @@ public class AlertTargetEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withName(getProperty(request, "name"))
- .withDescription(getProperty(request, "description"))
- .withAlertStates(getPropertyList(request, "alert_states"))
- .withGroupIds(getPropertyList(request, "groups"))
- .withNotificationType(getProperty(request, "notification_type"))
- .withEmailFrom(getProperty(request, "properties/mail.smtp.from"))
- .withEmailRecipients(getPropertyList(request, "properties/ambari.dispatch.recipients"))
+ .withName(RequestAuditEventCreatorHelper.getProperty(request, AlertTargetResourceProvider.ALERT_TARGET_NAME))
+ .withDescription(RequestAuditEventCreatorHelper.getProperty(request, AlertTargetResourceProvider.ALERT_TARGET_DESCRIPTION))
+ .withAlertStates(RequestAuditEventCreatorHelper.getNamedPropertyList(request, AlertTargetResourceProvider.ALERT_TARGET_STATES))
+ .withGroupIds(RequestAuditEventCreatorHelper.getNamedPropertyList(request, AlertTargetResourceProvider.ALERT_TARGET_GROUPS))
+ .withNotificationType(RequestAuditEventCreatorHelper.getProperty(request, AlertTargetResourceProvider.ALERT_TARGET_NOTIFICATION_TYPE))
+ .withEmailFrom(RequestAuditEventCreatorHelper.getProperty(request, AlertTargetResourceProvider.ALERT_TARGET_PROPERTIES + "/" + EmailDispatcher.JAVAMAIL_FROM_PROPERTY))
+ .withEmailRecipients(RequestAuditEventCreatorHelper.getNamedPropertyList(request, AlertTargetResourceProvider.ALERT_TARGET_PROPERTIES + "/" + AlertNoticeDispatchService.AMBARI_DISPATCH_RECIPIENTS))
.build();
case PUT:
return ChangeAlertTargetRequestAuditEvent.builder()
@@ -105,13 +106,13 @@ public class AlertTargetEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withName(getProperty(request, "name"))
- .withDescription(getProperty(request, "description"))
- .withAlertStates(getPropertyList(request, "alert_states"))
- .withGroupIds(getPropertyList(request, "groups"))
- .withNotificationType(getProperty(request, "notification_type"))
- .withEmailFrom(getProperty(request, "properties/mail.smtp.from"))
- .withEmailRecipients(getPropertyList(request, "properties/ambari.dispatch.recipients"))
+ .withName(RequestAuditEventCreatorHelper.getProperty(request, AlertTargetResourceProvider.ALERT_TARGET_NAME))
+ .withDescription(RequestAuditEventCreatorHelper.getProperty(request, AlertTargetResourceProvider.ALERT_TARGET_DESCRIPTION))
+ .withAlertStates(RequestAuditEventCreatorHelper.getNamedPropertyList(request, AlertTargetResourceProvider.ALERT_TARGET_STATES))
+ .withGroupIds(RequestAuditEventCreatorHelper.getNamedPropertyList(request, AlertTargetResourceProvider.ALERT_TARGET_GROUPS))
+ .withNotificationType(RequestAuditEventCreatorHelper.getProperty(request, AlertTargetResourceProvider.ALERT_TARGET_NOTIFICATION_TYPE))
+ .withEmailFrom(RequestAuditEventCreatorHelper.getProperty(request, AlertTargetResourceProvider.ALERT_TARGET_PROPERTIES + "/" + EmailDispatcher.JAVAMAIL_FROM_PROPERTY))
+ .withEmailRecipients(RequestAuditEventCreatorHelper.getNamedPropertyList(request, AlertTargetResourceProvider.ALERT_TARGET_PROPERTIES + "/" + AlertNoticeDispatchService.AMBARI_DISPATCH_RECIPIENTS))
.build();
case DELETE:
return DeleteAlertTargetRequestAuditEvent.builder()
@@ -126,33 +127,4 @@ public class AlertTargetEventCreator implements RequestAuditEventCreator {
return null;
}
}
-
- /**
- * Returns a property list from the request, named by the parameter propertyName
- * @param request
- * @param propertyName
- * @return
- */
- private List<String> getPropertyList(Request request, String propertyName) {
- if (!request.getBody().getNamedPropertySets().isEmpty()) {
- List<String> list = (List<String>) request.getBody().getNamedPropertySets().iterator().next().getProperties().get(PropertyHelper.getPropertyId("AlertTarget", propertyName));
- if (list != null) {
- return list;
- }
- }
- return Collections.emptyList();
- }
-
- /**
- * Returns a property from the request, named by the parameter propertyName
- * @param request
- * @param propertyName
- * @return
- */
- private String getProperty(Request request, String propertyName) {
- if (!request.getBody().getPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getPropertySets().iterator().next().get(PropertyHelper.getPropertyId("AlertTarget", propertyName)));
- }
- return null;
- }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintEventCreator.java
index a91a9c1..c7351ac 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintEventCreator.java
@@ -26,7 +26,6 @@ import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.AddBlueprintRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.DeleteBlueprintRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
import org.apache.ambari.server.controller.spi.Resource;
import com.google.common.collect.ImmutableSet;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintExportEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintExportEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintExportEventCreator.java
index 85379d8..fdca748 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintExportEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/BlueprintExportEventCreator.java
@@ -25,7 +25,6 @@ import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.BlueprintExportRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
import org.apache.ambari.server.controller.spi.Resource;
import com.google.common.collect.ImmutableSet;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ComponentEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ComponentEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ComponentEventCreator.java
index 870a797..8c65a35 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ComponentEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ComponentEventCreator.java
@@ -26,10 +26,9 @@ import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.StartOperationRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.HostComponentResourceProvider;
import org.apache.ambari.server.controller.internal.RequestOperationLevel;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -92,6 +91,7 @@ public class ComponentEventCreator implements RequestAuditEventCreator {
.withOperation(operation)
.withRemoteIp(request.getRemoteAddress())
.withTimestamp(System.currentTimeMillis())
+ .withHostname(RequestAuditEventCreatorHelper.getProperty(request, HostComponentResourceProvider.HOST_COMPONENT_HOST_NAME_PROPERTY_ID))
.withRequestId(String.valueOf(requestId));
if (result.getStatus().isErrorState()) {
@@ -112,15 +112,15 @@ public class ComponentEventCreator implements RequestAuditEventCreator {
return "Delete component " + request.getResource().getKeyValueMap().get(Resource.Type.HostComponent);
}
- if (request.getBody().getRequestInfoProperties().containsKey(RequestOperationLevel.OPERATION_LEVEL_ID)) {
+ if (request.getBody().getRequestInfoProperties() != null && request.getBody().getRequestInfoProperties().containsKey(RequestOperationLevel.OPERATION_LEVEL_ID)) {
String operation = "";
switch (request.getBody().getRequestInfoProperties().get(RequestOperationLevel.OPERATION_LEVEL_ID)) {
case "CLUSTER":
for (Map<String, Object> map : request.getBody().getPropertySets()) {
- if (map.containsKey(PropertyHelper.getPropertyId("HostRoles", "cluster_name"))) {
- operation = String.valueOf(map.get(PropertyHelper.getPropertyId("HostRoles", "state"))) + ": all services"
+ if (map.containsKey(HostComponentResourceProvider.HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID)) {
+ operation = String.valueOf(map.get(HostComponentResourceProvider.HOST_COMPONENT_STATE_PROPERTY_ID)) + ": all services"
+ " on all hosts"
- + (request.getBody().getQueryString().length() > 0 ? " that matches " + request.getBody().getQueryString() : "")
+ + (request.getBody().getQueryString() != null && request.getBody().getQueryString().length() > 0 ? " that matches " + request.getBody().getQueryString() : "")
+ " (" + request.getBody().getRequestInfoProperties().get(RequestOperationLevel.OPERATION_CLUSTER_ID) + ")";
break;
}
@@ -128,10 +128,10 @@ public class ComponentEventCreator implements RequestAuditEventCreator {
break;
case "HOST":
for (Map<String, Object> map : request.getBody().getPropertySets()) {
- if (map.containsKey(PropertyHelper.getPropertyId("HostRoles", "cluster_name"))) {
+ if (map.containsKey(HostComponentResourceProvider.HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID)) {
String query = request.getBody().getRequestInfoProperties().get("query");
- operation = String.valueOf(map.get(PropertyHelper.getPropertyId("HostRoles", "state"))) + ": " + query.substring(query.indexOf("(") + 1, query.length() - 1)
- + " on " + request.getBody().getRequestInfoProperties().get("operation_level/host_names")
+ operation = String.valueOf(map.get(HostComponentResourceProvider.HOST_COMPONENT_STATE_PROPERTY_ID)) + ": " + query.substring(query.indexOf("(") + 1, query.length() - 1)
+ + " on " + request.getBody().getRequestInfoProperties().get(RequestOperationLevel.OPERATION_HOST_NAME)
+ " (" + request.getBody().getRequestInfoProperties().get(RequestOperationLevel.OPERATION_CLUSTER_ID) + ")";
break;
}
@@ -139,10 +139,10 @@ public class ComponentEventCreator implements RequestAuditEventCreator {
break;
case "HOST_COMPONENT":
for (Map<String, Object> map : request.getBody().getPropertySets()) {
- if (map.containsKey(PropertyHelper.getPropertyId("HostRoles", "component_name"))) {
- operation = String.valueOf(map.get(PropertyHelper.getPropertyId("HostRoles", "state"))) + ": " + String.valueOf(map.get(PropertyHelper.getPropertyId("HostRoles", "component_name")))
+ if (map.containsKey(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID)) {
+ operation = String.valueOf(map.get(HostComponentResourceProvider.HOST_COMPONENT_STATE_PROPERTY_ID)) + ": " + String.valueOf(map.get(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID))
+ "/" + request.getBody().getRequestInfoProperties().get(RequestOperationLevel.OPERATION_SERVICE_ID)
- + " on " + request.getBody().getRequestInfoProperties().get("operation_level/host_name")
+ + " on " + request.getBody().getRequestInfoProperties().get(RequestOperationLevel.OPERATION_HOST_NAME)
+ " (" + request.getBody().getRequestInfoProperties().get(RequestOperationLevel.OPERATION_CLUSTER_ID) + ")";
break;
}
@@ -153,8 +153,8 @@ public class ComponentEventCreator implements RequestAuditEventCreator {
}
for (Map<String, Object> map : request.getBody().getPropertySets()) {
- if (map.containsKey(PropertyHelper.getPropertyId("HostRoles", "maintenance_state"))) {
- return "Turn " + map.get(PropertyHelper.getPropertyId("HostRoles", "maintenance_state")) + " Maintenance Mode for " + map.get(PropertyHelper.getPropertyId("HostRoles", "component_name"));
+ if (map.containsKey(HostComponentResourceProvider.HOST_COMPONENT_MAINTENANCE_STATE_PROPERTY_ID)) {
+ return "Turn " + map.get(HostComponentResourceProvider.HOST_COMPONENT_MAINTENANCE_STATE_PROPERTY_ID) + " Maintenance Mode for " + map.get(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID);
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ConfigurationChangeEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ConfigurationChangeEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ConfigurationChangeEventCreator.java
index b671138..139f6f6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ConfigurationChangeEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/ConfigurationChangeEventCreator.java
@@ -27,9 +27,9 @@ import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.ClusterNameChangeRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.ConfigurationChangeRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.ClusterResourceProvider;
+import org.apache.ambari.server.controller.internal.ServiceConfigVersionResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -82,8 +82,8 @@ public class ConfigurationChangeEventCreator implements RequestAuditEventCreator
if (!request.getBody().getPropertySets().isEmpty()) {
Map<String, Object> map = request.getBody().getPropertySets().iterator().next();
- if (map.size() == 1 && map.containsKey(PropertyHelper.getPropertyId("Clusters", "cluster_name"))) {
- String newName = String.valueOf(map.get(PropertyHelper.getPropertyId("Clusters", "cluster_name")));
+ if (map.size() == 1 && map.containsKey(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID)) {
+ String newName = String.valueOf(map.get(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID));
String oldName = request.getResource().getKeyValueMap().get(Resource.Type.Cluster);
return ClusterNameChangeRequestAuditEvent.builder()
.withTimestamp(System.currentTimeMillis())
@@ -115,7 +115,7 @@ public class ConfigurationChangeEventCreator implements RequestAuditEventCreator
*/
private String getServiceConfigVersion(Result result) {
Map<String, Object> map = getServiceConfigMap(result);
- return map == null ? null : String.valueOf(map.get("service_config_version"));
+ return map == null ? null : String.valueOf(map.get(ServiceConfigVersionResourceProvider.SERVICE_CONFIG_VERSION_PROPERTY_ID));
}
/**
@@ -125,7 +125,7 @@ public class ConfigurationChangeEventCreator implements RequestAuditEventCreator
*/
private String getServiceConfigVersionNote(Result result) {
Map<String, Object> map = getServiceConfigMap(result);
- return map == null ? null : String.valueOf(map.get("service_config_version_note"));
+ return map == null ? null : String.valueOf(map.get(ServiceConfigVersionResourceProvider.SERVICE_CONFIG_VERSION_NOTE_PROPERTY_ID));
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/CredentialEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/CredentialEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/CredentialEventCreator.java
index 0647553..aca6885 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/CredentialEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/CredentialEventCreator.java
@@ -25,9 +25,8 @@ import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.AddCredentialRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.CredentialResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -84,24 +83,11 @@ public class CredentialEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withClusterName(getProperty(request, "cluster_name"))
- .withType(getProperty(request, "type"))
- .withAlias(getProperty(request, "alias"))
- .withPrincipal(getProperty(request, "principal"))
+ .withClusterName(RequestAuditEventCreatorHelper.getProperty(request, CredentialResourceProvider.CREDENTIAL_CLUSTER_NAME_PROPERTY_ID))
+ .withType(RequestAuditEventCreatorHelper.getProperty(request, CredentialResourceProvider.CREDENTIAL_TYPE_PROPERTY_ID))
+ .withAlias(RequestAuditEventCreatorHelper.getProperty(request, CredentialResourceProvider.CREDENTIAL_ALIAS_PROPERTY_ID))
+ .withPrincipal(RequestAuditEventCreatorHelper.getProperty(request, CredentialResourceProvider.CREDENTIAL_PRINCIPAL_PROPERTY_ID))
.build();
}
-
- /**
- * Returns a property from the resquest
- * @param request
- * @param propertyName
- * @return
- */
- private String getProperty(Request request, String propertyName) {
- if (!request.getBody().getPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getPropertySets().iterator().next().get(PropertyHelper.getPropertyId("Credential", propertyName)));
- }
- return null;
- }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/DefaultEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/DefaultEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/DefaultEventCreator.java
index feda291..3ca2241 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/DefaultEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/DefaultEventCreator.java
@@ -26,7 +26,6 @@ import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.request.RequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
import org.apache.ambari.server.audit.request.RequestAuditLogger;
import org.apache.ambari.server.controller.spi.Resource;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/GroupEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/GroupEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/GroupEventCreator.java
index 30fef98..335df46 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/GroupEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/GroupEventCreator.java
@@ -26,9 +26,8 @@ import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.CreateGroupRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.DeleteGroupRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.GroupResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -87,7 +86,7 @@ public class GroupEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withGroupName(getGroupName(request))
+ .withGroupName(RequestAuditEventCreatorHelper.getProperty(request, GroupResourceProvider.GROUP_GROUPNAME_PROPERTY_ID))
.build();
case DELETE:
return DeleteGroupRequestAuditEvent.builder()
@@ -103,17 +102,4 @@ public class GroupEventCreator implements RequestAuditEventCreator {
}
return null;
}
-
- /**
- * Returns group name from request
- * @param request
- * @return
- */
- private String getGroupName(Request request) {
- if (!request.getBody().getPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getPropertySets().iterator().next().get(PropertyHelper.getPropertyId("Groups", "group_name")));
- }
- return null;
- }
-
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/HostEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/HostEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/HostEventCreator.java
index 7bc0133..7c27d19 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/HostEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/HostEventCreator.java
@@ -28,9 +28,9 @@ import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.AddComponentToHostRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.AddHostRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.DeleteHostRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.HostComponentResourceProvider;
+import org.apache.ambari.server.controller.internal.HostResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -99,7 +99,7 @@ public class HostEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withHostName(getHostName(request))
+ .withHostName(RequestAuditEventCreatorHelper.getNamedProperty(request, HostResourceProvider.HOST_NAME_PROPERTY_ID))
.build();
case QUERY_POST:
return AddComponentToHostRequestAuditEvent.builder()
@@ -117,18 +117,6 @@ public class HostEventCreator implements RequestAuditEventCreator {
}
/**
- * Returns hostname from the request
- * @param request
- * @return
- */
- private String getHostName(Request request) {
- if (!request.getBody().getNamedPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getNamedPropertySets().iterator().next().getProperties().get(PropertyHelper.getPropertyId("Hosts", "host_name")));
- }
- return null;
- }
-
- /**
* Returns component name from the request
* @param request
* @return
@@ -137,7 +125,7 @@ public class HostEventCreator implements RequestAuditEventCreator {
if (!request.getBody().getNamedPropertySets().isEmpty()) {
Set<Map<String, String>> set = (Set<Map<String, String>>) request.getBody().getNamedPropertySets().iterator().next().getProperties().get("host_components");
if (set != null && !set.isEmpty()) {
- return set.iterator().next().get(PropertyHelper.getPropertyId("HostRoles", "component_name"));
+ return set.iterator().next().get(HostComponentResourceProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID);
}
}
return null;
@@ -149,7 +137,7 @@ public class HostEventCreator implements RequestAuditEventCreator {
* @return
*/
private String getHostNameFromQuery(Request request) {
- final String key = PropertyHelper.getPropertyId("Hosts", "host_name");
+ final String key = HostResourceProvider.HOST_NAME_PROPERTY_ID;
if (request.getBody().getQueryString().contains(key)) {
String q = request.getBody().getQueryString();
int startIndex = q.indexOf(key) + key.length() + 1;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/MemberEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/MemberEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/MemberEventCreator.java
index f0158f5..d10991f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/MemberEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/MemberEventCreator.java
@@ -18,9 +18,6 @@
package org.apache.ambari.server.audit.request.eventcreator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
import java.util.Set;
import org.apache.ambari.server.api.services.Request;
@@ -30,9 +27,8 @@ import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.AddUserToGroupRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.MembershipChangeRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.RemoveUserFromGroupRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.MemberResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -111,8 +107,8 @@ public class MemberEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withGroupName(getGroupNameForPut(request))
- .withUserNameList(getUsers(request))
+ .withGroupName(RequestAuditEventCreatorHelper.getProperty(request, MemberResourceProvider.MEMBER_GROUP_NAME_PROPERTY_ID))
+ .withUserNameList(RequestAuditEventCreatorHelper.getPropertyList(request, MemberResourceProvider.MEMBER_USER_NAME_PROPERTY_ID))
.build();
default:
return null;
@@ -120,34 +116,6 @@ public class MemberEventCreator implements RequestAuditEventCreator {
}
/**
- * Returns users from the request
- * @param request
- * @return
- */
- private List<String> getUsers(Request request) {
- List<String> users = new LinkedList<String>();
-
- for (Map<String, Object> propertyMap : request.getBody().getPropertySets()) {
- String userName = String.valueOf(propertyMap.get(PropertyHelper.getPropertyId("MemberInfo", "user_name")));
- users.add(userName);
- }
- return users;
- }
-
- /**
- * Returns target group name from the request. This is called when PUT request type is used.
- * @param request
- * @return
- */
- private String getGroupNameForPut(Request request) {
-
- for (Map<String, Object> propertyMap : request.getBody().getPropertySets()) {
- return String.valueOf(propertyMap.get(PropertyHelper.getPropertyId("MemberInfo", "group_name")));
- }
- return null;
- }
-
- /**
* Returns username from the request
* @param request
* @return
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/PrivilegeEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/PrivilegeEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/PrivilegeEventCreator.java
index 11168f1..cd14dd1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/PrivilegeEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/PrivilegeEventCreator.java
@@ -30,9 +30,11 @@ import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.ClusterPrivilegeChangeRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.PrivilegeChangeRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.PrivilegeResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
+import org.apache.ambari.server.orm.entities.PrincipalTypeEntity;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.User;
import com.google.common.collect.ImmutableSet;
@@ -83,8 +85,8 @@ public class PrivilegeEventCreator implements RequestAuditEventCreator {
@Override
public AuditEvent createAuditEvent(Request request, Result result) {
- Map<String, List<String>> users = getEntities(request, "USER");
- Map<String, List<String>> groups = getEntities(request, "GROUP");
+ Map<String, List<String>> users = getEntities(request, PrincipalTypeEntity.USER_PRINCIPAL_TYPE_NAME);
+ Map<String, List<String>> groups = getEntities(request, PrincipalTypeEntity.GROUP_PRINCIPAL_TYPE_NAME);
switch (request.getRequestType()) {
case PUT:
@@ -125,10 +127,10 @@ public class PrivilegeEventCreator implements RequestAuditEventCreator {
Map<String, List<String>> entities = new HashMap<String, List<String>>();
for (Map<String, Object> propertyMap : request.getBody().getPropertySets()) {
- String ptype = String.valueOf(propertyMap.get(PropertyHelper.getPropertyId("PrivilegeInfo", "principal_type")));
+ String ptype = String.valueOf(propertyMap.get(PrivilegeResourceProvider.PRINCIPAL_TYPE_PROPERTY_ID));
if (type.equals(ptype)) {
- String role = String.valueOf(propertyMap.get(PropertyHelper.getPropertyId("PrivilegeInfo", "permission_name")));
- String name = String.valueOf(propertyMap.get(PropertyHelper.getPropertyId("PrivilegeInfo", "principal_name")));
+ String role = String.valueOf(propertyMap.get(PrivilegeResourceProvider.PERMISSION_NAME_PROPERTY_ID));
+ String name = String.valueOf(propertyMap.get(PrivilegeResourceProvider.PRINCIPAL_NAME_PROPERTY_ID));
if (!entities.containsKey(role)) {
entities.put(role, new LinkedList<String>());
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RecommendationIgnoreEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RecommendationIgnoreEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RecommendationIgnoreEventCreator.java
index 6b7bb2b..d41177e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RecommendationIgnoreEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RecommendationIgnoreEventCreator.java
@@ -24,7 +24,6 @@ import org.apache.ambari.server.api.services.Request;
import org.apache.ambari.server.api.services.Result;
import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
import org.apache.ambari.server.controller.spi.Resource;
import com.google.common.collect.ImmutableSet;
http://git-wip-us.apache.org/repos/asf/ambari/blob/6320d589/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryEventCreator.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryEventCreator.java b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryEventCreator.java
index ca3bac4..aeb9320 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryEventCreator.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/audit/request/eventcreator/RepositoryEventCreator.java
@@ -26,9 +26,8 @@ import org.apache.ambari.server.api.services.ResultStatus;
import org.apache.ambari.server.audit.event.AuditEvent;
import org.apache.ambari.server.audit.event.request.AddRepositoryRequestAuditEvent;
import org.apache.ambari.server.audit.event.request.UpdateRepositoryRequestAuditEvent;
-import org.apache.ambari.server.audit.request.RequestAuditEventCreator;
+import org.apache.ambari.server.controller.internal.RepositoryResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
import com.google.common.collect.ImmutableSet;
@@ -87,11 +86,11 @@ public class RepositoryEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withRepo(getProperty(request, PropertyHelper.getPropertyId("Repositories", "repo_id")))
- .withStackName(getProperty(request, PropertyHelper.getPropertyId("Repositories", "stack_name")))
- .withStackVersion(getProperty(request, PropertyHelper.getPropertyId("Repositories", "stack_version")))
- .withOsType(getProperty(request, PropertyHelper.getPropertyId("Repositories", "os_type")))
- .withBaseUrl(getProperty(request, PropertyHelper.getPropertyId("Repositories", "base_url")))
+ .withRepo(RequestAuditEventCreatorHelper.getProperty(request, RepositoryResourceProvider.REPOSITORY_REPO_ID_PROPERTY_ID))
+ .withStackName(RequestAuditEventCreatorHelper.getProperty(request, RepositoryResourceProvider.REPOSITORY_STACK_NAME_PROPERTY_ID))
+ .withStackVersion(RequestAuditEventCreatorHelper.getProperty(request, RepositoryResourceProvider.REPOSITORY_STACK_VERSION_PROPERTY_ID))
+ .withOsType(RequestAuditEventCreatorHelper.getProperty(request, RepositoryResourceProvider.REPOSITORY_OS_TYPE_PROPERTY_ID))
+ .withBaseUrl(RequestAuditEventCreatorHelper.getProperty(request, RepositoryResourceProvider.REPOSITORY_BASE_URL_PROPERTY_ID))
.build();
case PUT:
return UpdateRepositoryRequestAuditEvent.builder()
@@ -100,28 +99,14 @@ public class RepositoryEventCreator implements RequestAuditEventCreator {
.withResultStatus(result.getStatus())
.withUrl(request.getURI())
.withRemoteIp(request.getRemoteAddress())
- .withRepo(getProperty(request, PropertyHelper.getPropertyId("Repositories", "repo_id")))
- .withStackName(getProperty(request, PropertyHelper.getPropertyId("Repositories", "stack_name")))
- .withStackVersion(getProperty(request, PropertyHelper.getPropertyId("Repositories", "stack_version")))
- .withOsType(getProperty(request, PropertyHelper.getPropertyId("Repositories", "os_type")))
- .withBaseUrl(getProperty(request, PropertyHelper.getPropertyId("Repositories", "base_url")))
+ .withRepo(RequestAuditEventCreatorHelper.getProperty(request, RepositoryResourceProvider.REPOSITORY_REPO_ID_PROPERTY_ID))
+ .withStackName(RequestAuditEventCreatorHelper.getProperty(request, RepositoryResourceProvider.REPOSITORY_STACK_NAME_PROPERTY_ID))
+ .withStackVersion(RequestAuditEventCreatorHelper.getProperty(request, RepositoryResourceProvider.REPOSITORY_STACK_VERSION_PROPERTY_ID))
+ .withOsType(RequestAuditEventCreatorHelper.getProperty(request, RepositoryResourceProvider.REPOSITORY_OS_TYPE_PROPERTY_ID))
+ .withBaseUrl(RequestAuditEventCreatorHelper.getProperty(request, RepositoryResourceProvider.REPOSITORY_BASE_URL_PROPERTY_ID))
.build();
default:
return null;
}
}
-
- /**
- * Returns a property from the request based on the propertyId parameter
- * @param request
- * @param properyId
- * @return
- */
- private String getProperty(Request request, String properyId) {
- if (!request.getBody().getPropertySets().isEmpty()) {
- return String.valueOf(request.getBody().getPropertySets().iterator().next().get(properyId));
- }
- return null;
- }
-
}