You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ol...@apache.org on 2018/09/14 12:28:51 UTC
[ambari] branch trunk updated: AMBARI-24640. Log Search: support to
remove suffixes from field names. (#2321)
This is an automated email from the ASF dual-hosted git repository.
oleewere pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push:
new 8add52c AMBARI-24640. Log Search: support to remove suffixes from field names. (#2321)
8add52c is described below
commit 8add52c94b204eba6931a379602ff39c94cd9592
Author: Olivér Szabó <ol...@gmail.com>
AuthorDate: Fri Sep 14 14:28:46 2018 +0200
AMBARI-24640. Log Search: support to remove suffixes from field names. (#2321)
---
.../logsearch/common/LabelFallbackHandler.java | 20 +++++++----
.../logsearch/common/LogSearchConstants.java | 4 ++-
.../ambari/logsearch/conf/UIMappingConfig.java | 41 ++++++++++++++++++++--
.../ambari/logsearch/manager/AuditLogsManager.java | 5 +--
.../logsearch/manager/ServiceLogsManager.java | 3 +-
.../logsearch/common/LabelFallbackHandlerTest.java | 26 +++++++++++---
6 files changed, 82 insertions(+), 17 deletions(-)
diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/common/LabelFallbackHandler.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/common/LabelFallbackHandler.java
index 5549343..4fff372 100644
--- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/common/LabelFallbackHandler.java
+++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/common/LabelFallbackHandler.java
@@ -46,9 +46,9 @@ public class LabelFallbackHandler {
}
public String fallbackIfRequired(String field, String label, boolean replaceUnderscore,
- boolean replaceUppercaseInWord, boolean capitalizeAll, List<String> prefixesToRemove) {
+ boolean replaceUppercaseInWord, boolean capitalizeAll, List<String> prefixesToRemove, List<String> suffixesToRemove) {
if (isEnabled() && StringUtils.isBlank(label)) {
- return fallback(field,replaceUnderscore, replaceUppercaseInWord, capitalizeAll, prefixesToRemove);
+ return fallback(field,replaceUnderscore, replaceUppercaseInWord, capitalizeAll, prefixesToRemove, suffixesToRemove);
}
return label;
}
@@ -66,16 +66,24 @@ public class LabelFallbackHandler {
return result;
}
- public String fallback(String field, boolean replaceUnderscore, boolean replaceUppercaseInWord, boolean capitalizeAll, List<String> prefixesToRemove) {
- String fieldWithoutPrefix = null;
+ public String fallback(String field, boolean replaceUnderscore, boolean replaceUppercaseInWord, boolean capitalizeAll,
+ List<String> prefixesToRemove, List<String> suffixesToRemove) {
+ String fieldWithoutPrefixAndSuffix = null;
if (!CollectionUtils.isEmpty(prefixesToRemove)) {
for (String prefix : prefixesToRemove) {
if (StringUtils.isNotBlank(field) && field.startsWith(prefix)) {
- fieldWithoutPrefix = field.substring(prefix.length());
+ fieldWithoutPrefixAndSuffix = field.substring(prefix.length());
}
}
}
- return fallback(fieldWithoutPrefix != null ? fieldWithoutPrefix : field, replaceUnderscore, replaceUppercaseInWord, capitalizeAll);
+ if (!CollectionUtils.isEmpty(suffixesToRemove)) {
+ for (String suffix : suffixesToRemove) {
+ if (StringUtils.isNotBlank(field) && field.endsWith(suffix)) {
+ fieldWithoutPrefixAndSuffix = field.substring(0, field.length() - suffix.length());
+ }
+ }
+ }
+ return fallback(fieldWithoutPrefixAndSuffix != null ? fieldWithoutPrefixAndSuffix : field, replaceUnderscore, replaceUppercaseInWord, capitalizeAll);
}
private String deUnderScore(String input) {
diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/common/LogSearchConstants.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/common/LogSearchConstants.java
index 8cc43d5..7db839f 100644
--- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/common/LogSearchConstants.java
+++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/common/LogSearchConstants.java
@@ -72,7 +72,8 @@ public class LogSearchConstants {
public static final String SERVICE_FIELD_VISIBLE_DEFAULTS = "log_message,level,logtime,type";
public static final String SERVICE_FIELD_EXCLUDES_DEFAULTS = "id,tags,text,message,seq_num,case_id,bundle_id,rowtype,event_count";
public static final String SERVICE_FIELD_FILTERABLE_EXLUDE_DEFAULTS = "";
- public static final String SERVICE_FIELD_FALLBACK_PREFIX_DEFAULTS = "ws_,sdi_";
+ public static final String SERVICE_FIELD_FALLBACK_PREFIX_DEFAULTS = "ws_,sdi_,std_";
+ public static final String SERVICE_FIELD_FALLBACK_SUFFIX_DEFAULTS = "_i,_l,_s,_b";
// audit field / component label defaults
public static final String AUDIT_COMPONENT_LABELS_DEFAULTS = "ambari:Ambari,hdfs:Hdfs,RangerAudit:Ranger";
@@ -86,6 +87,7 @@ public class LogSearchConstants {
public static final String AUDIT_FIELD_FILTERABLE_EXCLUDES_DEFAULTS = "";
public static final String AUDIT_FIELD_FILTERABLE_EXCLUDES_COMMON_DEFAULTS = "";
public static final String AUDIT_FIELD_FALLBACK_PREFIX_DEFAULTS = "ws_,std_";
+ public static final String AUDIT_FIELD_FALLBACK_SUFFIX_DEFAULTS = "_i,_l,_s,_b";
//Facet Constant
public static final String FACET_FIELD = "facet.field";
diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/UIMappingConfig.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/UIMappingConfig.java
index 57abe16..1fb9a51 100644
--- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/UIMappingConfig.java
+++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/UIMappingConfig.java
@@ -18,7 +18,6 @@
*/
package org.apache.ambari.logsearch.conf;
-import org.apache.ambari.logsearch.common.LogSearchConstants;
import org.apache.ambari.logsearch.config.api.LogSearchPropertyDescription;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@@ -35,6 +34,7 @@ import static org.apache.ambari.logsearch.common.LogSearchConstants.AUDIT_FIELD_
import static org.apache.ambari.logsearch.common.LogSearchConstants.AUDIT_FIELD_EXCLUDES_COMMON_DEFAULTS;
import static org.apache.ambari.logsearch.common.LogSearchConstants.AUDIT_FIELD_EXCLUDES_DEFAULTS;
import static org.apache.ambari.logsearch.common.LogSearchConstants.AUDIT_FIELD_FALLBACK_PREFIX_DEFAULTS;
+import static org.apache.ambari.logsearch.common.LogSearchConstants.AUDIT_FIELD_FALLBACK_SUFFIX_DEFAULTS;
import static org.apache.ambari.logsearch.common.LogSearchConstants.AUDIT_FIELD_FILTERABLE_EXCLUDES_COMMON_DEFAULTS;
import static org.apache.ambari.logsearch.common.LogSearchConstants.AUDIT_FIELD_FILTERABLE_EXCLUDES_DEFAULTS;
import static org.apache.ambari.logsearch.common.LogSearchConstants.AUDIT_FIELD_LABELS_DEFAULTS;
@@ -42,6 +42,7 @@ import static org.apache.ambari.logsearch.common.LogSearchConstants.AUDIT_FIELD_
import static org.apache.ambari.logsearch.common.LogSearchConstants.AUDIT_FIELD_VISIBLE_DEFAULTS;
import static org.apache.ambari.logsearch.common.LogSearchConstants.LOGSEARCH_PROPERTIES_FILE;
import static org.apache.ambari.logsearch.common.LogSearchConstants.SERVICE_FIELD_FALLBACK_PREFIX_DEFAULTS;
+import static org.apache.ambari.logsearch.common.LogSearchConstants.SERVICE_FIELD_FALLBACK_SUFFIX_DEFAULTS;
import static org.apache.ambari.logsearch.common.LogSearchConstants.SERVICE_FIELD_FILTERABLE_EXLUDE_DEFAULTS;
import static org.apache.ambari.logsearch.common.LogSearchConstants.SERVICE_GROUP_LABELS_DEFAULTS;
import static org.apache.ambari.logsearch.common.LogSearchConstants.SERVICE_COMPONENT_LABELS_DEFAULTS;
@@ -222,7 +223,7 @@ public class UIMappingConfig {
)
private List<String> serviceFieldFallbackPrefixes;
- @Value("#{propertiesSplitter.parseList('${logsearch.web.labels.service_logs.field.fallback.prefixes:" + AUDIT_FIELD_FALLBACK_PREFIX_DEFAULTS + "}')}")
+ @Value("#{propertiesSplitter.parseList('${logsearch.web.labels.audit_logs.field.fallback.prefixes:" + AUDIT_FIELD_FALLBACK_PREFIX_DEFAULTS + "}')}")
@LogSearchPropertyDescription(
name = "logsearch.web.labels.service_logs.field.fallback.prefixes",
description = "List of prefixes that should be removed during fallback of audit field labels.",
@@ -232,6 +233,26 @@ public class UIMappingConfig {
)
private List<String> auditFieldFallbackPrefixes;
+ @Value("#{propertiesSplitter.parseList('${logsearch.web.labels.service_logs.field.fallback.suffixes:" + SERVICE_FIELD_FALLBACK_PREFIX_DEFAULTS +"}')}")
+ @LogSearchPropertyDescription(
+ name = "logsearch.web.labels.service_logs.field.fallback.suffixes",
+ description = "List of suffixes that should be removed during fallback of service field labels.",
+ examples = {"_i,_l,_s,_b"},
+ defaultValue = SERVICE_FIELD_FALLBACK_SUFFIX_DEFAULTS,
+ sources = {LOGSEARCH_PROPERTIES_FILE}
+ )
+ private List<String> serviceFieldFallbackSuffixes;
+
+ @Value("#{propertiesSplitter.parseList('${logsearch.web.labels.audit_logs.field.fallback.suffixes:" + AUDIT_FIELD_FALLBACK_PREFIX_DEFAULTS + "}')}")
+ @LogSearchPropertyDescription(
+ name = "logsearch.web.labels.service_logs.field.fallback.suffixes",
+ description = "List of suffixes that should be removed during fallback of audit field labels.",
+ examples = {"_i,_l,_s,_b"},
+ defaultValue = AUDIT_FIELD_FALLBACK_SUFFIX_DEFAULTS,
+ sources = {LOGSEARCH_PROPERTIES_FILE}
+ )
+ private List<String> auditFieldFallbackSuffixes;
+
private final Map<String, Map<String, String>> mergedAuditFieldLabelMap = new HashMap<>();
private final Map<String, List<String>> mergedAuditFieldVisibleMap = new HashMap<>();
@@ -368,6 +389,22 @@ public class UIMappingConfig {
this.serviceFieldFilterableExcludesList = serviceFieldFilterableExcludesList;
}
+ public List<String> getServiceFieldFallbackSuffixes() {
+ return serviceFieldFallbackSuffixes;
+ }
+
+ public void setServiceFieldFallbackSuffixes(List<String> serviceFieldFallbackSuffixes) {
+ this.serviceFieldFallbackSuffixes = serviceFieldFallbackSuffixes;
+ }
+
+ public List<String> getAuditFieldFallbackSuffixes() {
+ return auditFieldFallbackSuffixes;
+ }
+
+ public void setAuditFieldFallbackSuffixes(List<String> auditFieldFallbackSuffixes) {
+ this.auditFieldFallbackSuffixes = auditFieldFallbackSuffixes;
+ }
+
public Map<String, List<String>> getMergedAuditFieldVisibleMap() {
return mergedAuditFieldVisibleMap;
}
diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/manager/AuditLogsManager.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/manager/AuditLogsManager.java
index 121550c..97bda3a 100644
--- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/manager/AuditLogsManager.java
+++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/manager/AuditLogsManager.java
@@ -178,7 +178,8 @@ public class AuditLogsManager extends ManagerBase<AuditLogData, AuditLogResponse
String fieldLabel = fieldLabelMap.get(componentName) != null ? fieldLabelMap.get(componentName).get(field): null;
String fallbackedFieldLabel = labelFallbackHandler.fallbackIfRequired(field, fieldLabel,
true, true, true,
- uiMappingConfig.getAuditFieldFallbackPrefixes());
+ uiMappingConfig.getAuditFieldFallbackPrefixes(),
+ uiMappingConfig.getAuditFieldFallbackSuffixes());
Boolean excludeFromFilter = fieldFilterableExcludeMap.get(componentName) != null && fieldFilterableExcludeMap.get(componentName).contains(field);
Boolean visible = fieldVisibleeMap.get(componentName) != null && fieldVisibleeMap.get(componentName).contains(field);
@@ -196,7 +197,7 @@ public class AuditLogsManager extends ManagerBase<AuditLogData, AuditLogResponse
Boolean excludeFromFilter = commonFieldFilterableExcludeList.contains(field);
String fallbackedFieldLabel = labelFallbackHandler.fallbackIfRequired(field, fieldLabel,
true, true, true,
- uiMappingConfig.getAuditFieldFallbackPrefixes());
+ uiMappingConfig.getAuditFieldFallbackPrefixes(), uiMappingConfig.getAuditFieldFallbackSuffixes());
defaults.add(new FieldMetadata(field, fallbackedFieldLabel, !excludeFromFilter, visible));
}
}
diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/manager/ServiceLogsManager.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/manager/ServiceLogsManager.java
index f7e5289..3658257 100644
--- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/manager/ServiceLogsManager.java
+++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/manager/ServiceLogsManager.java
@@ -432,7 +432,8 @@ public class ServiceLogsManager extends ManagerBase<ServiceLogData, ServiceLogRe
labelFallbackHandler.fallbackIfRequired(
e.getKey(), uiMappingConfig.getServiceFieldLabels().get(e.getKey()),
true, false, true,
- uiMappingConfig.getServiceFieldFallbackPrefixes()),
+ uiMappingConfig.getServiceFieldFallbackPrefixes(),
+ uiMappingConfig.getServiceFieldFallbackSuffixes()),
!uiMappingConfig.getServiceFieldFilterableExcludesList().contains(e.getKey()),
uiMappingConfig.getServiceFieldVisibleList().contains(e.getKey())))
.collect(Collectors.toList());
diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/common/LabelFallbackHandlerTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/common/LabelFallbackHandlerTest.java
index e765f96..981a537 100644
--- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/common/LabelFallbackHandlerTest.java
+++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/common/LabelFallbackHandlerTest.java
@@ -43,7 +43,7 @@ public class LabelFallbackHandlerTest {
// GIVEN
String testInput = "my_field";
// WHEN
- String result = underTest.fallbackIfRequired(testInput, "spec label", true, false, true, null);
+ String result = underTest.fallbackIfRequired(testInput, "spec label", true, false, true, null, null);
// THEN
assertEquals("spec label", result);
}
@@ -109,11 +109,27 @@ public class LabelFallbackHandlerTest {
@Test
public void testFallbackWithRemovingPrefixes() {
// GIVEN
- String testInput = "ws_request_id";
+ String testInput1 = "ws_request_id";
+ String testInput2 = "std_request_username";
// WHEN
- String result = underTest.fallback(testInput, true, true, true, Arrays.asList("ws_", "std_"));
+ String result1 = underTest.fallback(testInput1, true, true, true, Arrays.asList("ws_", "std_"), null);
+ String result2 = underTest.fallback(testInput2, true, true, true, Arrays.asList("ws_", "std_"), null);
// THEN
- assertEquals("Request Id", result);
+ assertEquals("Request Id", result1);
+ assertEquals("Request Username", result2);
+ }
+
+ @Test
+ public void testFallbackWithRemovingSuffixes() {
+ // GIVEN
+ String testInput1 = "request_id_i";
+ String testInput2 = "request_username_s";
+ // WHEN
+ String result1 = underTest.fallback(testInput1, true, true, true, null, Arrays.asList("_i", "_s"));
+ String result2 = underTest.fallback(testInput2, true, true, true, null, Arrays.asList("_i", "_s"));
+ // THEN
+ assertEquals("Request Id", result1);
+ assertEquals("Request Username", result2);
}
@Test
@@ -121,7 +137,7 @@ public class LabelFallbackHandlerTest {
// GIVEN
String testInput = "request_id";
// WHEN
- String result = underTest.fallback(testInput, true, true, true, Arrays.asList("ws_", "std_"));
+ String result = underTest.fallback(testInput, true, true, true, Arrays.asList("ws_", "std_"), null);
// THEN
assertEquals("Request Id", result);
}