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 2016/09/13 10:41:57 UTC
[40/51] [abbrv] ambari git commit: AMBARI-18310. Refactor logsearch
portal side code (oleewere)
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/configsets/audit_logs/conf/managed-schema
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/configsets/audit_logs/conf/managed-schema b/ambari-logsearch/ambari-logsearch-portal/src/main/configsets/audit_logs/conf/managed-schema
index f58652c..f77bec0 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/configsets/audit_logs/conf/managed-schema
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/configsets/audit_logs/conf/managed-schema
@@ -106,7 +106,6 @@
<field name="file" type="key_lower_case" multiValued="false"/>
<field name="log_message" type="key_lower_case" multiValued="false" omitNorms="false"/>
<field name="logfile_line_number" type="tint" omitNorms="false"/>
- <!-- <field name="message" type="text_std_token_lower_case" indexed="true" stored="true"/> -->
<field name="message_md5" type="string" multiValued="false"/>
<field name="type" type="key_lower_case" multiValued="false"/>
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/configsets/hadoop_logs/conf/managed-schema
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/configsets/hadoop_logs/conf/managed-schema b/ambari-logsearch/ambari-logsearch-portal/src/main/configsets/hadoop_logs/conf/managed-schema
index 3b4cf19..c6f498b 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/configsets/hadoop_logs/conf/managed-schema
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/configsets/hadoop_logs/conf/managed-schema
@@ -101,7 +101,6 @@
<field name="logger_name" type="key_lower_case" multiValued="false"/>
<field name="logtime" type="tdate" multiValued="false" docValues="true"/>
<field name="logtype" type="key_lower_case" multiValued="false"/>
- <!-- <field name="message" type="text_std_token_lower_case" indexed="true" stored="true"/> -->
<field name="message_md5" type="string" multiValued="false"/>
<field name="method" type="key_lower_case" multiValued="false" omitNorms="false"/>
<field name="path" type="key_lower_case" multiValued="false"/>
@@ -117,28 +116,5 @@
<dynamicField name='key_*' type="key_lower_case" multiValued="false" stored="false"/>
<dynamicField name="ws_*" type="text_ws" multiValued="false" omitNorms="false" stored="false"/>
<copyField source="log_message" dest="key_log_message"/>
- <!-- <copyField source="log_message" dest="ws_log_message"/> -->
-
- <!-- Copy Fields-->
- <!-- ngram fields -->
- <!-- Whenever using a copy field provide following structure "ngram_"<OriginalFieldName> -->
-<!-- Commenting till we test properly. Now it is not used and it is taking unnecessary cpu, memory and disk space
- <copyField source="bundle_id" dest="ngram_bundle_id"/>
- <copyField source="case_id" dest="ngram_case_id"/>
- <copyField source="cluster" dest="ngram_cluster"/>
- <copyField source="file" dest="ngram_file"/>
- <copyField source="host" dest="ngram_host"/>
- <copyField source="level" dest="ngram_level"/>
- <copyField source="log_message" dest="ngram_log_message"/>
- <copyField source="logger_name" dest="ngram_logger_name"/>
- <copyField source="logtype" dest="ngram_logtype"/>
- <copyField source="method" dest="ngram_method"/>
- <copyField source="path" dest="ngram_path"/>
- <copyField source="thread_name" dest="ngram_thread_name"/>
- <copyField source="type" dest="ngram_type"/>
-
--->
-
-
</schema>
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/README.md
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/README.md b/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/README.md
deleted file mode 100644
index 3cc4915..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-<!--
-{% comment %}
-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.
-{% endcomment %}
--->
-
-This folder contains scripts to configure and run SolrCloud for development.
-
-This helps in seting up SolrCloud using embedded zookeeper.
-
-##Setup Solr Collections
-```./update_config.sh <path to solr install folder>
-```
-
-
-##Run Solr
-```./restart_solr.sh
-```
-
-##Delete collections
-```./reset_collections.sh
-```
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/reset_collections.sh
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/reset_collections.sh b/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/reset_collections.sh
deleted file mode 100755
index 7c742c0..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/reset_collections.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-# 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.
-
-# This script is used to delete all the documents in Solr
-host_port=localhost:8983
-if [ $# -eq 1 ]; then
- host_port=$1
-fi
-set -x
-curl http://${host_port}/solr/hadoop_logs/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8'
-curl http://${host_port}/solr/hadoop_logs/update --data '<commit/>' -H 'Content-type:text/xml; charset=utf-8'
-
-curl http://${host_port}/solr/audit_logs/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8'
-curl http://${host_port}/solr/audit_logs/update --data '<commit/>' -H 'Content-type:text/xml; charset=utf-8'
-
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/restart_solr.sh
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/restart_solr.sh b/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/restart_solr.sh
deleted file mode 100755
index bd436bb..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/restart_solr.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/bash
-# 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.
-
-
-function usage {
- echo "Usage: $0 <Solr Install Folder>"
-}
-
-if [ $# -ne 1 ]; then
- usage
- exit 1
-fi
-
-SOLR_INSTALL=$1
-if [ -x $SOLR_INSTALL/bin/solr ]; then
- SOLR_BIN=$SOLR_INSTALL/bin/solr
-else
- echo "ERROR: Invalid Solr install folder $SOLR_INSTALL"
- usage
- exit 1
-fi
-
-set -x
-$SOLR_BIN restart -c
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/update_config.sh
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/update_config.sh b/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/update_config.sh
deleted file mode 100755
index 93e3496..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/dev/solrcloud/update_config.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash
-# 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.
-
-function usage {
- echo "Usage: $0 <Solr Install Folder> [zk_hosts]"
-}
-
-if [ $# -lt 1 ]; then
- usage
- exit 1
-fi
-
-curr_dir=`pwd`
-cd `dirname $0`; script_dir=`pwd`; cd $curr_dir
-
-SOLR_INSTALL=$1
-if [ -x $SOLR_INSTALL/server/scripts/cloud-scripts/zkcli.sh ]; then
- ZK_CLI=$SOLR_INSTALL/server/scripts/cloud-scripts/zkcli.sh
-else
- echo "ERROR: Invalid Solr install folder $SOLR_INSTALL"
- usage
- exit 1
-fi
-
-zk_hosts="localhost:9983"
-if [ $# -eq 2 ]; then
- zk_hosts=$2
-fi
-
-
-CONFIGSET_FOLDER=$script_dir/../../configsets
-
-set -x
-$ZK_CLI -zkhost $zk_hosts -cmd upconfig -confdir $CONFIGSET_FOLDER/audit_logs/conf -confname audit_logs
-$ZK_CLI -zkhost $zk_hosts -cmd upconfig -confdir $CONFIGSET_FOLDER/hadoop_logs/conf -confname hadoop_logs
-$ZK_CLI -zkhost $zk_hosts -cmd upconfig -confdir $CONFIGSET_FOLDER/history/conf -confname history
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/LogSearch.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/LogSearch.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/LogSearch.java
index 15355a1..27b943a 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/LogSearch.java
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/LogSearch.java
@@ -92,7 +92,6 @@ public class LogSearch {
logger.debug(server.dump());
logger
.debug("==============================================================================");
- ConfigHelper.initializeApplicationConfig();
server.join();
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/ConfigHelper.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/ConfigHelper.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/ConfigHelper.java
index edb4ffa..a3a71ea 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/ConfigHelper.java
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/ConfigHelper.java
@@ -25,48 +25,18 @@ import java.util.List;
import java.util.Map;
import org.apache.ambari.logsearch.dao.SolrDaoBase;
-import org.apache.ambari.logsearch.manager.MgrBase;
+import org.apache.ambari.logsearch.manager.ManagerBase;
import org.apache.commons.lang.ArrayUtils;
import org.apache.log4j.Logger;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;
public class ConfigHelper {
- private static final Logger logger = Logger.getLogger(MgrBase.class);
-
- public static HashMap<String, String> serviceLogsColumnMapping = new HashMap<String, String>();
- public static HashMap<String, String> auditLogsColumnMapping = new HashMap<String, String>();
+ private static final Logger logger = Logger.getLogger(ManagerBase.class);
private ConfigHelper() {
throw new UnsupportedOperationException();
}
-
- public static void initializeApplicationConfig() {
- String serviceLogsColumnMappingArray[] = PropertiesHelper.getPropertyStringList("logsearch.solr.service.logs.column.mapping");
- String auditLogsColumnMappingArray[] = PropertiesHelper.getPropertyStringList("logsearch.solr.audit.logs.column.mapping");
-
- // Initializing column mapping for Service Logs
- intializeUISolrColumnMapping(serviceLogsColumnMappingArray, serviceLogsColumnMapping);
-
- // Initializing column mapping for Audit Logs
- intializeUISolrColumnMapping(auditLogsColumnMappingArray, auditLogsColumnMapping);
- }
-
- private static void intializeUISolrColumnMapping(String columnMappingArray[], HashMap<String, String> columnMappingMap) {
-
- if (columnMappingArray != null && columnMappingArray.length > 0) {
- for (String columnMapping : columnMappingArray) {
- String mapping[] = columnMapping.split(":");
- if (mapping.length > 1) {
- String solrField = mapping[0];
- String uiField = mapping[1];
-
- columnMappingMap.put(solrField + LogSearchConstants.SOLR_SUFFIX, uiField);
- columnMappingMap.put(uiField + LogSearchConstants.UI_SUFFIX, solrField);
- }
- }
- }
- }
public static void extractSchemaFieldsName(String responseString, HashMap<String, String> schemaFieldsNameMap,
HashMap<String, String> schemaFieldTypeMap) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/ExternalServerClient.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/ExternalServerClient.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/ExternalServerClient.java
index 5235fab..edc78d1 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/ExternalServerClient.java
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/ExternalServerClient.java
@@ -22,11 +22,13 @@ import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
+import javax.inject.Inject;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
+import org.apache.ambari.logsearch.conf.AuthConfig;
import org.apache.ambari.logsearch.web.security.LogsearchAbstractAuthenticationProvider;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
@@ -41,6 +43,7 @@ import org.springframework.stereotype.Component;
*/
@Component
public class ExternalServerClient {
+
private static Logger LOG = Logger.getLogger(ExternalServerClient.class);
private static final ThreadLocal<JerseyClient> localJerseyClient = new ThreadLocal<JerseyClient>(){
@Override
@@ -48,15 +51,11 @@ public class ExternalServerClient {
return JerseyClientBuilder.createClient();
}
};
- private String hostURL = "http://host:ip";// default
- private boolean enableLog = false;// default
- @PostConstruct
- public void initialization() {
- hostURL = PropertiesHelper.getProperty(
- LogsearchAbstractAuthenticationProvider.AUTH_METHOD_PROP_START_WITH
- + "external_auth.host_url", hostURL);
- }
+ @Inject
+ private AuthConfig authConfig;
+
+ private boolean enableLog = false;// default
/**
* Send GET request to an external server
@@ -65,7 +64,7 @@ public class ExternalServerClient {
public Object sendGETRequest(String url, Class klass, MultivaluedMap<String, String> queryParam,
String username, String password)
throws Exception {
- url = hostURL + url;
+ url = authConfig.getExternalAuthHostUrl() + url;
JerseyClient client = localJerseyClient.get();
HttpAuthenticationFeature authFeature = HttpAuthenticationFeature.basicBuilder().build();
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/LogSearchConstants.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/LogSearchConstants.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/LogSearchConstants.java
index 142b29b..36ecb81 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/LogSearchConstants.java
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/LogSearchConstants.java
@@ -118,6 +118,60 @@ public class LogSearchConstants {
public static final String FACET_RANGE_GAP = "facet.range.gap";
public static final String FACET_GROUP = "group";
public static final String FACET_GROUP_MAIN = "group.main";
- public static final String FACET_GROUP_FIELD = "group.field";
-
+ public static final String FACET_GROUP_FIELD = "group.field";
+
+ // Request params
+ public static final String REQUEST_PARAM_QUERY = "q";
+ public static final String REQUEST_PARAM_XAXIS = "xAxis";
+ public static final String REQUEST_PARAM_YAXIS = "yAxis";
+ public static final String REQUEST_PARAM_STACK_BY = "stackBy";
+ public static final String REQUEST_PARAM_UNIT = "unit";
+ public static final String REQUEST_PARAM_BUNDLE_ID = "bundle_id";
+ public static final String REQUEST_PARAM_START_INDEX = "startIndex";
+ public static final String REQUEST_PARAM_PAGE = "page";
+ public static final String REQUEST_PARAM_PAGE_SIZE = "pageSize";
+ public static final String REQUEST_PARAM_SORT_BY = "sortBy";
+ public static final String REQUEST_PARAM_SORT_TYPE = "sortType";
+ public static final String REQUEST_PARAM_START_TIME = "start_time";
+ public static final String REQUEST_PARAM_END_TIME = "end_time";
+ public static final String REQUEST_PARAM_FROM = "from";
+ public static final String REQUEST_PARAM_TO = "to";
+ public static final String REQUEST_PARAM_FIELD = "field";
+ public static final String REQUEST_PARAM_FORMAT = "format";
+ public static final String REQUEST_PARAM_LAST_PAGE = "lastPage";
+ public static final String REQUEST_PARAM_LOG_TYPE = "logType";
+ public static final String REQUEST_PARAM_COMPONENT = "component";
+ public static final String REQUEST_PARAM_HOST = "host";
+ public static final String REQUEST_PARAM_TAIL_SIZE = "tailSize";
+ public static final String REQUEST_PARAM_COLUMN_QUERY = "columnQuery";
+ public static final String REQUEST_PARAM_I_MESSAGE = "iMessage";
+ public static final String REQUEST_PARAM_G_E_MESSAGE = "gEMessage";
+ public static final String REQUEST_PARAM_MUST_BE = "mustBe";
+ public static final String REQUEST_PARAM_MUST_NOT = "mustNot";
+ public static final String REQUEST_PARAM_INCLUDE_QUERY = "includeQuery";
+ public static final String REQUEST_PARAM_EXCLUDE_QUERY = "excludeQuery";
+ public static final String REQUEST_PARAM_ID = "id";
+ public static final String REQUEST_PARAM_SCROLL_TYPE = "scrollType";
+ public static final String REQUEST_PARAM_NUMBER_ROWS = "numberRows";
+ public static final String REQUEST_PARAM_HOST_LOG_FILE = "host";
+ public static final String REQUEST_PARAM_COMPONENT_LOG_FILE = "component";
+ public static final String REQUEST_PARAM_LEVEL = "level";
+ public static final String REQUEST_PARAM_ADVANCED_SEARCH = "advancedSearch";
+ public static final String REQUEST_PARAM_TREE_PARAMS = "treeParams";
+ public static final String REQUEST_PARAM_E_MESSAGE = "eMessage";
+ public static final String REQUEST_PARAM_G_MUST_NOT = "gMustNot";
+ public static final String REQUEST_PARAM_HOST_NAME = "host_name";
+ public static final String REQUEST_PARAM_COMPONENT_NAME = "component_name";
+ public static final String REQUEST_PARAM_FILE_NAME = "file_name";
+ public static final String REQUEST_PARAM_DATE_RANGE_LABEL = "dateRangeLabel";
+ public static final String REQUEST_PARAM_KEYWORD = "find";
+ public static final String REQUEST_PARAM_SOURCE_LOG_ID = "sourceLogId";
+ public static final String REQUEST_PARAM_KEYWORD_TYPE = "keywordType";
+ public static final String REQUEST_PARAM_TOKEN = "token";
+ public static final String REQUEST_PARAM_USER_ID = "userId";
+ public static final String REQUEST_PARAM_FILTER_NAME = "filterName";
+ public static final String REQUEST_PARAM_ROW_TYPE = "rowType";
+ public static final String REQUEST_PARAM_UTC_OFFSET = "utcOffset";
+
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/Marker.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/Marker.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/Marker.java
new file mode 100644
index 0000000..3e088ba
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/Marker.java
@@ -0,0 +1,29 @@
+/*
+ * 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.logsearch.common;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Marker {
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/PropertyMapper.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/PropertyMapper.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/PropertyMapper.java
new file mode 100644
index 0000000..90e2114
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/PropertyMapper.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.logsearch.common;
+
+import com.google.common.base.Splitter;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Component("propertyMapper")
+public class PropertyMapper {
+
+ public Map<String, String> map(String property) {
+ return this.map(property, ",");
+ }
+
+ public List<String> list(String property) {
+ return this.list(property, ",");
+ }
+
+ public Map<String, String> solrUiMap(String property) { return this.solrUiMap(property, ","); }
+
+ private List<String> list(String property, String splitter) {
+ return Splitter.on(splitter).omitEmptyStrings().trimResults().splitToList(property);
+ }
+
+ private Map<String, String> map(String property, String splitter) {
+ return Splitter.on(splitter).omitEmptyStrings().trimResults().withKeyValueSeparator(":").split(property);
+ }
+
+ private Map<String, String> solrUiMap(String property, String splitter) {
+ Map<String, String> result = new HashMap<>();
+ Map<String, String> map = this.map(property, splitter);
+ for (Map.Entry<String, String> propEntry : map.entrySet()) {
+ result.put(propEntry.getKey() + LogSearchConstants.SOLR_SUFFIX, propEntry.getValue());
+ result.put(propEntry.getValue() + LogSearchConstants.UI_SUFFIX, propEntry.getKey());
+ }
+ return result;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/SearchCriteria.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/SearchCriteria.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/SearchCriteria.java
deleted file mode 100644
index 6b74144..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/common/SearchCriteria.java
+++ /dev/null
@@ -1,304 +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.logsearch.common;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.lang.StringEscapeUtils;
-
-public class SearchCriteria {
- private int startIndex = 0;
- private int maxRows = Integer.MAX_VALUE;
- private String sortBy = null;
- private String sortType = null;
- private int page = 0;
-
- private String globalStartTime = null;
- private String globalEndTime = null;
-
- private boolean getCount = true;
- private boolean isDistinct = false;
- private HashMap<String, Object> paramList = new HashMap<String, Object>();
- final private Set<String> nullParamList = new HashSet<String>();
- final private Set<String> notNullParamList = new HashSet<String>();
-
- private Map<String, Object> urlParamMap = new HashMap<String, Object>();
-
- public SearchCriteria(HttpServletRequest request) {
- try {
- if (request.getParameter("startIndex") != null && (!request.getParameter("startIndex").isEmpty())) {
- this.startIndex = new Integer(request.getParameter("startIndex"));
- }
- if (request.getParameter("page") != null && (!request.getParameter("page").isEmpty())) {
- this.page = new Integer(request.getParameter("page"));
- }
- if (request.getParameter("pageSize") != null && (!request.getParameter("pageSize").isEmpty())) {
- this.maxRows = new Integer(request.getParameter("pageSize"));
- } else {
- this.maxRows = PropertiesHelper.getIntProperty("db.maxResults", 50);
- }
- } catch (NumberFormatException e) {
- // do nothing
- }
-
- // Sort fields
- if (request.getParameter("sortBy") != null && (!request.getParameter("sortBy").isEmpty())) {
- this.sortBy = "" + request.getParameter("sortBy");
- }
- if (request.getParameter("sortType") != null && (!request.getParameter("sortType").isEmpty())) {
- this.sortType = "" + request.getParameter("sortType");
- }
-
- // url params
- if (request.getParameter("start_time") != null && (!request.getParameter("start_time").isEmpty())) {
- this.globalStartTime = "" + request.getParameter("start_time");
- this.urlParamMap.put("globalStartTime", request.getParameter("start_time"));
- }
- if (request.getParameter("end_time") != null && (!request.getParameter("end_time").isEmpty())) {
- this.globalEndTime = "" + request.getParameter("end_time");
- this.urlParamMap.put("globalEndTime", request.getParameter("end_time"));
- }
- }
-
- public SearchCriteria() {
- // Auto-generated constructor stub
- }
-
- /**
- * @return the startIndex
- */
- public int getStartIndex() {
- return startIndex;
- }
-
- /**
- * @param startIndex the startIndex to set
- */
- public void setStartIndex(int startIndex) {
- this.startIndex = startIndex;
- }
-
- /**
- * @return the maxRows
- */
- public int getMaxRows() {
- return maxRows;
- }
-
- /**
- * @param maxRows the maxRows to set
- */
- public void setMaxRows(int maxRows) {
- this.maxRows = maxRows;
- }
-
- /**
- * @return the sortType
- */
-
- public String getSortType() {
- return sortType;
- }
-
- /**
- * @param sortType the sortType to set
- */
-
- public boolean isGetCount() {
- return getCount;
- }
-
- public void setGetCount(boolean getCount) {
- this.getCount = getCount;
- }
-
- /**
- * @return the paramList
- */
- public HashMap<String, Object> getParamList() {
- return paramList;
- }
-
- /**
- * @param paramList the paramList to set
- */
- public void setParamList(HashMap<String, Object> paramList) {
- this.paramList = paramList;
- }
-
- /**
- * @param request
- */
- public void addRequiredServiceLogsParams(HttpServletRequest request) {
- this.addParam("advanceSearch", StringEscapeUtils.unescapeXml(request.getParameter("advanceSearch")));
- this.addParam("q", request.getParameter("q"));
- this.addParam("treeParams", StringEscapeUtils.unescapeHtml(request.getParameter("treeParams")));
- this.addParam("level", request.getParameter("level"));
- this.addParam("gMustNot", request.getParameter("gMustNot"));
- this.addParam("from", request.getParameter("from"));
- this.addParam("to", request.getParameter("to"));
- this.addParam("selectComp", request.getParameter("mustBe"));
- this.addParam("unselectComp", request.getParameter("mustNot"));
- this.addParam("iMessage", StringEscapeUtils.unescapeXml(request.getParameter("iMessage")));
- this.addParam("gEMessage", StringEscapeUtils.unescapeXml(request.getParameter("gEMessage")));
- this.addParam("eMessage", StringEscapeUtils.unescapeXml(request.getParameter("eMessage")));
- this.addParam(LogSearchConstants.BUNDLE_ID, request.getParameter(LogSearchConstants.BUNDLE_ID));
- this.addParam("host_name", request.getParameter("host_name"));
- this.addParam("component_name", request.getParameter("component_name"));
- this.addParam("file_name", request.getParameter("file_name"));
- this.addParam("startDate", request.getParameter("start_time"));
- this.addParam("endDate", request.getParameter("end_time"));
- this.addParam("excludeQuery", StringEscapeUtils.unescapeXml(request.getParameter("excludeQuery")));
- this.addParam("includeQuery", StringEscapeUtils.unescapeXml(request.getParameter("includeQuery")));
- }
-
- /**
- * @param request
- */
- public void addRequiredAuditLogsParams(HttpServletRequest request) {
- this.addParam("q", request.getParameter("q"));
- this.addParam("columnQuery", StringEscapeUtils.unescapeXml(request.getParameter("columnQuery")));
- this.addParam("iMessage", StringEscapeUtils.unescapeXml(request.getParameter("iMessage")));
- this.addParam("gEMessage", StringEscapeUtils.unescapeXml(request.getParameter("gEMessage")));
- this.addParam("eMessage", StringEscapeUtils.unescapeXml(request.getParameter("eMessage")));
- this.addParam("includeString", request.getParameter("mustBe"));
- this.addParam("unselectComp", request.getParameter("mustNot"));
- this.addParam("excludeQuery", StringEscapeUtils.unescapeXml(request.getParameter("excludeQuery")));
- this.addParam("includeQuery", StringEscapeUtils.unescapeXml(request.getParameter("includeQuery")));
- this.addParam("startTime", request.getParameter("from"));
- this.addParam("endTime", request.getParameter("to"));
- }
-
- /**
- * @param string
- * @param caId
- */
- public void addParam(String name, Object value) {
- String solrValue = PropertiesHelper.getProperty(name);
- if (solrValue == null || solrValue.isEmpty()) {
- paramList.put(name, value);
- } else {
- try {
- String propertyFieldMappings[] = solrValue.split(",");
- HashMap<String, String> propertyFieldValue = new HashMap<String, String>();
- for (String temp : propertyFieldMappings) {
- String arrayValue[] = temp.split(":");
- propertyFieldValue.put(arrayValue[0].toLowerCase(Locale.ENGLISH), arrayValue[1].toLowerCase(Locale.ENGLISH));
- }
- String originalValue = propertyFieldValue.get(value.toString().toLowerCase(Locale.ENGLISH));
- if (originalValue != null && !originalValue.isEmpty())
- paramList.put(name, originalValue);
-
- } catch (Exception e) {
- //do nothing
- }
- }
- }
-
- public void setNullParam(String name) {
- nullParamList.add(name);
- }
-
- public void setNotNullParam(String name) {
- notNullParamList.add(name);
- }
-
- public Object getParamValue(String name) {
- return paramList.get(name);
- }
-
- /**
- * @return the nullParamList
- */
- public Set<String> getNullParamList() {
- return nullParamList;
- }
-
- /**
- * @return the notNullParamList
- */
- public Set<String> getNotNullParamList() {
- return notNullParamList;
- }
-
- /**
- * @return the isDistinct
- */
- public boolean isDistinct() {
- return isDistinct;
- }
-
- public String getSortBy() {
- return sortBy;
- }
-
- public void setSortBy(String sortBy) {
- this.sortBy = sortBy;
- }
-
- public void setSortType(String sortType) {
- this.sortType = sortType;
- }
-
- /**
- * @param isDistinct the isDistinct to set
- */
- public void setDistinct(boolean isDistinct) {
- this.isDistinct = isDistinct;
- }
-
- public int getPage() {
- return page;
- }
-
- public void setPage(int page) {
- this.page = page;
- }
-
- public String getGlobalStartTime() {
- return globalStartTime;
- }
-
- public void setGlobalStartTime(String globalStartTime) {
- this.globalStartTime = globalStartTime;
- }
-
- public String getGlobalEndTime() {
- return globalEndTime;
- }
-
- public void setGlobalEndTime(String globalEndTime) {
- this.globalEndTime = globalEndTime;
- }
-
- public Map<String, Object> getUrlParamMap() {
- return urlParamMap;
- }
-
- public void setUrlParamMap(Map<String, Object> urlParamMap) {
- this.urlParamMap = urlParamMap;
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/ApiDocConfig.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/ApiDocConfig.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/ApiDocConfig.java
new file mode 100644
index 0000000..0ddad65
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/ApiDocConfig.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.logsearch.conf;
+
+import io.swagger.jaxrs.config.BeanConfig;
+import io.swagger.jaxrs.listing.ApiListingResource;
+import io.swagger.jaxrs.listing.SwaggerSerializers;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+@Configuration
+public class ApiDocConfig {
+
+ @Bean
+ public ApiListingResource apiListingResource() {
+ return new ApiListingResource();
+ }
+
+ @Bean
+ public SwaggerSerializers swaggerSerializers() {
+ return new SwaggerSerializers();
+ }
+
+ @Bean
+ public BeanConfig swaggerConfig() throws UnknownHostException {
+ BeanConfig beanConfig = new BeanConfig();
+ beanConfig.setSchemes(new String[]{"http", "https"});
+ beanConfig.setHost(InetAddress.getLocalHost().getHostAddress() + ":61888"); // TODO: port from property
+ beanConfig.setBasePath("/api/v1");
+ beanConfig.setTitle("Log Search REST API");
+ beanConfig.setDescription("Log aggregation, analysis, and visualization.");
+ beanConfig.setLicense("Apache 2.0");
+ beanConfig.setLicenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html");
+ beanConfig.setScan(true);
+ beanConfig.setVersion("1.0.0");
+ beanConfig.setResourcePackage("org.apache.ambari.logsearch.rest");
+ return beanConfig;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/ApplicationConfig.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/ApplicationConfig.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/ApplicationConfig.java
new file mode 100644
index 0000000..72ea942
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/ApplicationConfig.java
@@ -0,0 +1,84 @@
+/*
+ * 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.logsearch.conf;
+
+import org.apache.ambari.logsearch.query.converter.AnyGraphRequestConverter;
+import org.apache.ambari.logsearch.query.converter.AuditBarGraphRequestConverter;
+import org.apache.ambari.logsearch.query.converter.AuditLogRequestConverter;
+import org.apache.ambari.logsearch.query.converter.BaseAuditLogRequestConverter;
+import org.apache.ambari.logsearch.query.converter.BaseServiceLogRequestConverter;
+import org.apache.ambari.logsearch.query.converter.FieldAuditLogRequestConverter;
+import org.apache.ambari.logsearch.query.converter.FieldBarGraphRequestConverter;
+import org.apache.ambari.logsearch.query.converter.ServiceAnyGraphRequestConverter;
+import org.apache.ambari.logsearch.query.converter.ServiceExtremeDatesRequestConverter;
+import org.apache.ambari.logsearch.query.converter.ServiceGraphRequestConverter;
+import org.apache.ambari.logsearch.query.converter.ServiceLogExportRequestConverter;
+import org.apache.ambari.logsearch.query.converter.ServiceLogFileRequestConverter;
+import org.apache.ambari.logsearch.query.converter.ServiceLogRequestConverter;
+import org.apache.ambari.logsearch.query.converter.ServiceLogTruncatedRequestConverter;
+import org.apache.ambari.logsearch.query.converter.SimpleQueryRequestConverter;
+import org.apache.ambari.logsearch.query.converter.UserExportRequestConverter;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.ImportResource;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.support.ConversionServiceFactoryBean;
+import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
+import org.springframework.core.convert.converter.Converter;
+
+import java.util.HashSet;
+import java.util.Set;
+
+@Configuration
+@ComponentScan("org.apache.ambari.logsearch")
+@PropertySource(value = {"classpath:default.properties", "classpath:logsearch.properties"})
+@ImportResource("META-INF/security-applicationContext.xml")
+public class ApplicationConfig {
+
+ @Bean
+ public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
+ return new PropertySourcesPlaceholderConfigurer();
+ }
+
+ @Bean(name="conversionService")
+ public ConversionServiceFactoryBean conversionServiceFactoryBean() {
+ ConversionServiceFactoryBean conversionServiceFactoryBean = new ConversionServiceFactoryBean();
+ Set<Converter> converters = new HashSet<>();
+ converters.add(new AnyGraphRequestConverter());
+ converters.add(new AuditBarGraphRequestConverter());
+ converters.add(new AuditLogRequestConverter());
+ converters.add(new BaseAuditLogRequestConverter());
+ converters.add(new BaseServiceLogRequestConverter());
+ converters.add(new FieldAuditLogRequestConverter());
+ converters.add(new FieldBarGraphRequestConverter());
+ converters.add(new SimpleQueryRequestConverter());
+ converters.add(new UserExportRequestConverter());
+ converters.add(new ServiceAnyGraphRequestConverter());
+ converters.add(new ServiceExtremeDatesRequestConverter());
+ converters.add(new ServiceGraphRequestConverter());
+ converters.add(new ServiceLogExportRequestConverter());
+ converters.add(new ServiceLogFileRequestConverter());
+ converters.add(new ServiceLogRequestConverter());
+ converters.add(new ServiceLogTruncatedRequestConverter());
+ conversionServiceFactoryBean.setConverters(converters);
+ return conversionServiceFactoryBean;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/AuthConfig.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/AuthConfig.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/AuthConfig.java
new file mode 100644
index 0000000..3398a83
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/AuthConfig.java
@@ -0,0 +1,87 @@
+/*
+ * 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.logsearch.conf;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class AuthConfig {
+
+ @Value("${logsearch.auth.file.enable:true}")
+ boolean authFileEnabled;
+ @Value("${logsearch.auth.ldap.enable:false}")
+ boolean authLdapEnabled;
+ @Value("${logsearch.auth.simple.enable:false}")
+ boolean authSimpleEnabled;
+ @Value("${logsearch.auth.external_auth.host_url:'http://ip:port'}")
+ private String externalAuthHostUrl;
+ @Value("${logsearch.auth.login_url:/api/v1/users/$USERNAME/privileges?fields=*}")
+ private String externalAuthLoginUrl;
+ @Value("${logsearch.login.credentials.file:user_pass.json}")
+ private String credentialsFile;
+
+ public boolean isAuthFileEnabled() {
+ return authFileEnabled;
+ }
+
+ public void setAuthFileEnabled(boolean authFileEnabled) {
+ this.authFileEnabled = authFileEnabled;
+ }
+
+ public boolean isAuthLdapEnabled() {
+ return authLdapEnabled;
+ }
+
+ public void setAuthLdapEnabled(boolean authLdapEnabled) {
+ this.authLdapEnabled = authLdapEnabled;
+ }
+
+ public boolean isAuthSimpleEnabled() {
+ return authSimpleEnabled;
+ }
+
+ public void setAuthSimpleEnabled(boolean authSimpleEnabled) {
+ this.authSimpleEnabled = authSimpleEnabled;
+ }
+
+ public String getCredentialsFile() {
+ return credentialsFile;
+ }
+
+ public void setCredentialsFile(String credentialsFile) {
+ this.credentialsFile = credentialsFile;
+ }
+
+ public String getExternalAuthHostUrl() {
+ return externalAuthHostUrl;
+ }
+
+ public void setExternalAuthHostUrl(String externalAuthHostUrl) {
+ this.externalAuthHostUrl = externalAuthHostUrl;
+ }
+
+ public String getExternalAuthLoginUrl() {
+ return externalAuthLoginUrl;
+ }
+
+ public void setExternalAuthLoginUrl(String externalAuthLoginUrl) {
+ this.externalAuthLoginUrl = externalAuthLoginUrl;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrAuditLogConfig.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrAuditLogConfig.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrAuditLogConfig.java
new file mode 100644
index 0000000..ae4dca9
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrAuditLogConfig.java
@@ -0,0 +1,181 @@
+/*
+ * 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.logsearch.conf;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+import java.util.Map;
+
+@Configuration
+public class SolrAuditLogConfig implements SolrConfig, SolrColumnConfig {
+
+ @Value("${logsearch.solr.audit.logs.url:}")
+ private String solrUrl;
+
+ @Value("${logsearch.solr.audit.logs.zk_connect_string:}")
+ private String zkConnectString;
+
+ @Value("${logsearch.solr.collection.audit.logs:audit_logs}")
+ private String collection;
+
+ @Value("${logsearch.ranger.audit.logs.collection.name:}")
+ private String rangerCollection;
+
+ @Value("${logsearch.solr.audit.logs.config.name:audit_logs}")
+ private String configName;
+
+ @Value("${logsearch.solr.audit.logs.alias.name:audit_logs_alias}")
+ private String aliasNameIn;
+
+ @Value("${logsearch.audit.logs.split.interval.mins:none}")
+ private String splitInterval;
+
+ @Value("${logsearch.collection.audit.logs.numshards:1}")
+ private Integer numberOfShards;
+
+ @Value("${logsearch.collection.audit.logs.replication.factor:1}")
+ private Integer replicationFactor;
+
+ @Value("#{propertyMapper.map('${logsearch.solr.audit.logs.column.mapping}')}")
+ private Map<String, String> columnMapping;
+
+ @Value("#{propertyMapper.list('${logsearch.solr.audit.logs.exclude.columnlist}')}")
+ private List<String> excludeColumnList;
+
+ @Value("#{propertyMapper.solrUiMap('${logsearch.solr.audit.logs.column.mapping}')}")
+ private Map<String, String> solrAndUiColumns;
+
+ @Override
+ public String getSolrUrl() {
+ return solrUrl;
+ }
+
+ @Override
+ public void setSolrUrl(String solrUrl) {
+ this.solrUrl = solrUrl;
+ }
+
+ @Override
+ public String getCollection() {
+ return collection;
+ }
+
+ @Override
+ public void setCollection(String collection) {
+ this.collection = collection;
+ }
+
+ @Override
+ public String getZkConnectString() {
+ return zkConnectString;
+ }
+
+ @Override
+ public void setZkConnectString(String zkConnectString) {
+ this.zkConnectString = zkConnectString;
+ }
+
+ @Override
+ public String getConfigName() {
+ return configName;
+ }
+
+ @Override
+ public void setConfigName(String configName) {
+ this.configName = configName;
+ }
+
+ @Override
+ public Integer getNumberOfShards() {
+ return numberOfShards;
+ }
+
+ @Override
+ public void setNumberOfShards(Integer numberOfShards) {
+ this.numberOfShards = numberOfShards;
+ }
+
+ @Override
+ public Integer getReplicationFactor() {
+ return replicationFactor;
+ }
+
+ @Override
+ public void setReplicationFactor(Integer replicationFactor) {
+ this.replicationFactor = replicationFactor;
+ }
+
+ @Override
+ public String getSplitInterval() {
+ return splitInterval;
+ }
+
+ @Override
+ public void setSplitInterval(String splitInterval) {
+ this.splitInterval = splitInterval;
+ }
+
+ @Override
+ public List<String> getExcludeColumnList() {
+ return excludeColumnList;
+ }
+
+ @Override
+ public void setExcludeColumnList(List<String> excludeColumnList) {
+ this.excludeColumnList = excludeColumnList;
+ }
+
+ @Override
+ public Map<String, String> getColumnMapping() {
+ return columnMapping;
+ }
+
+ @Override
+ public void setColumnMapping(Map<String, String> columnMappings) {
+ this.columnMapping = columnMappings;
+ }
+
+ @Override
+ public Map<String, String> getSolrAndUiColumns() {
+ return solrAndUiColumns;
+ }
+
+ @Override
+ public void setSolrAndUiColumns(Map<String, String> solrAndUiColumns) {
+ this.solrAndUiColumns = solrAndUiColumns;
+ }
+
+ public String getRangerCollection() {
+ return rangerCollection;
+ }
+
+ public void setRangerCollection(String rangerCollection) {
+ this.rangerCollection = rangerCollection;
+ }
+
+ public String getAliasNameIn() {
+ return aliasNameIn;
+ }
+
+ public void setAliasNameIn(String aliasNameIn) {
+ this.aliasNameIn = aliasNameIn;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrColumnConfig.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrColumnConfig.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrColumnConfig.java
new file mode 100644
index 0000000..a12b2ce
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrColumnConfig.java
@@ -0,0 +1,36 @@
+/*
+ * 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.logsearch.conf;
+
+import java.util.List;
+import java.util.Map;
+
+public interface SolrColumnConfig {
+ Map<String, String> getColumnMapping();
+
+ void setColumnMapping(Map<String, String> columnMapping);
+
+ List<String> getExcludeColumnList();
+
+ void setExcludeColumnList(List<String> excludeColumnList);
+
+ Map<String, String> getSolrAndUiColumns();
+
+ void setSolrAndUiColumns(Map<String, String> solrAndUiColumns);
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrConfig.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrConfig.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrConfig.java
new file mode 100644
index 0000000..cfbe097
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrConfig.java
@@ -0,0 +1,50 @@
+/*
+ * 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.logsearch.conf;
+
+public interface SolrConfig {
+ String getSolrUrl();
+
+ void setSolrUrl(String solrUrl);
+
+ String getZkConnectString();
+
+ void setZkConnectString(String zkConnectString);
+
+ String getCollection();
+
+ void setCollection(String collection);
+
+ String getConfigName();
+
+ void setConfigName(String configName);
+
+ Integer getNumberOfShards();
+
+ void setNumberOfShards(Integer numberOfShards);
+
+ Integer getReplicationFactor();
+
+ void setReplicationFactor(Integer replicationFactor);
+
+ String getSplitInterval();
+
+ void setSplitInterval(String splitInterval);
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrConnectionConfig.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrConnectionConfig.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrConnectionConfig.java
new file mode 100644
index 0000000..b3dceea
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrConnectionConfig.java
@@ -0,0 +1,49 @@
+/*
+ * 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.logsearch.conf;
+
+import org.springframework.beans.factory.annotation.Value;
+
+public abstract class SolrConnectionConfig implements SolrConfig {
+ @Value("${logsearch.solr.url:}")
+ private String solrUrl;
+
+ @Value("${logsearch.solr.zk_connect_string:}")
+ private String zkConnectString;
+
+ @Override
+ public String getSolrUrl() {
+ return solrUrl;
+ }
+
+ @Override
+ public void setSolrUrl(String solrUrl) {
+ this.solrUrl = solrUrl;
+ }
+
+ @Override
+ public String getZkConnectString() {
+ return zkConnectString;
+ }
+
+ @Override
+ public void setZkConnectString(String zkConnectString) {
+ this.zkConnectString = zkConnectString;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrKerberosConfig.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrKerberosConfig.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrKerberosConfig.java
new file mode 100644
index 0000000..7cf79b0
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrKerberosConfig.java
@@ -0,0 +1,48 @@
+/*
+ * 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.logsearch.conf;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class SolrKerberosConfig {
+
+ @Value("${logsearch.solr.jaas.file:/usr/lib/ambari-logsearch-portal/logsearch_solr_jaas.conf}")
+ private String jaasFile;
+
+ @Value("${logsearch.solr.kerberos.enable:false}")
+ private boolean enabled;
+
+ public String getJaasFile() {
+ return jaasFile;
+ }
+
+ public void setJaasFile(String jaasFile) {
+ this.jaasFile = jaasFile;
+ }
+
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public void setEnabled(boolean enabled) {
+ this.enabled = enabled;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrServiceLogConfig.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrServiceLogConfig.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrServiceLogConfig.java
new file mode 100644
index 0000000..e768402
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrServiceLogConfig.java
@@ -0,0 +1,144 @@
+/*
+ * 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.logsearch.conf;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+import java.util.Map;
+
+@Configuration
+public class SolrServiceLogConfig extends SolrConnectionConfig implements SolrColumnConfig {
+
+ @Value("${logsearch.solr.collection.service.logs:hadoop_logs}")
+ private String collection;
+
+ @Value("${logsearch.service.logs.split.interval.mins:none}")
+ private String splitInterval;
+
+ @Value("${logsearch.solr.service.logs.config.name:hadoop_logs}")
+ private String configName;
+
+ @Value("${logsearch.collection.service.logs.numshards:1}")
+ private Integer numberOfShards;
+
+ @Value("${logsearch.collection.service.logs.replication.factor:1}")
+ private Integer replicationFactor;
+
+ @Value("#{propertyMapper.list('${logsearch.service.logs.fields}')}")
+ private List<String> fields;
+
+ @Value("#{propertyMapper.map('${logsearch.solr.audit.logs.column.mapping}')}")
+ private Map<String, String> columnMapping;
+
+ @Value("#{propertyMapper.list('${logsearch.solr.audit.logs.exclude.columnlist}')}")
+ private List<String> excludeColumnList;
+
+ @Value("#{propertyMapper.solrUiMap('${logsearch.solr.audit.logs.column.mapping}}')}")
+ private Map<String, String> solrAndUiColumns;
+
+ @Override
+ public String getCollection() {
+ return collection;
+ }
+
+ @Override
+ public void setCollection(String collection) {
+ this.collection = collection;
+ }
+
+ @Override
+ public String getSplitInterval() {
+ return splitInterval;
+ }
+
+ @Override
+ public void setSplitInterval(String splitInterval) {
+ this.splitInterval = splitInterval;
+ }
+
+ @Override
+ public String getConfigName() {
+ return configName;
+ }
+
+ @Override
+ public void setConfigName(String configName) {
+ this.configName = configName;
+ }
+
+ @Override
+ public Integer getNumberOfShards() {
+ return numberOfShards;
+ }
+
+ @Override
+ public void setNumberOfShards(Integer numberOfShards) {
+ this.numberOfShards = numberOfShards;
+ }
+
+ @Override
+ public Integer getReplicationFactor() {
+ return replicationFactor;
+ }
+
+ @Override
+ public void setReplicationFactor(Integer replicationFactor) {
+ this.replicationFactor = replicationFactor;
+ }
+
+ @Override
+ public Map<String, String> getColumnMapping() {
+ return columnMapping;
+ }
+
+ @Override
+ public void setColumnMapping(Map<String, String> columnMapping) {
+ this.columnMapping = columnMapping;
+ }
+
+ @Override
+ public List<String> getExcludeColumnList() {
+ return excludeColumnList;
+ }
+
+ @Override
+ public void setExcludeColumnList(List<String> excludeColumnList) {
+ this.excludeColumnList = excludeColumnList;
+ }
+
+ @Override
+ public Map<String, String> getSolrAndUiColumns() {
+ return solrAndUiColumns;
+ }
+
+ @Override
+ public void setSolrAndUiColumns(Map<String, String> solrAndUiColumns) {
+ this.solrAndUiColumns = solrAndUiColumns;
+ }
+
+ public List<String> getFields() {
+ return fields;
+ }
+
+ public void setFields(List<String> fields) {
+ this.fields = fields;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrUserConfig.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrUserConfig.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrUserConfig.java
new file mode 100644
index 0000000..8ae630a
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/conf/SolrUserConfig.java
@@ -0,0 +1,104 @@
+/*
+ * 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.logsearch.conf;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+@Configuration
+public class SolrUserConfig extends SolrConnectionConfig {
+
+ @Value("${logsearch.solr.collection.history:history}")
+ private String collection;
+
+ @Value("${logsearch.history.split.interval.mins:none}")
+ private String splitInterval;
+
+ @Value("${logsearch.solr.history.config.name:history}")
+ private String configName;
+
+ @Value("${logsearch.collection.history.numshards:1}")
+ private Integer numberOfShards;
+
+ @Value("${logsearch.collection.history.replication.factor:2}")
+ private Integer replicationFactor;
+
+ @Value("#{'${logsearch.logfeeder.include.default.level:FATAL,ERROR,WARN,INFO,DEBUG,TRACE,UNKNOWN}'.split(',')}")
+ private List<String> logLevels;
+
+ @Override
+ public String getCollection() {
+ return collection;
+ }
+
+ @Override
+ public void setCollection(String collection) {
+ this.collection = collection;
+ }
+
+ @Override
+ public String getSplitInterval() {
+ return splitInterval;
+ }
+
+ @Override
+ public void setSplitInterval(String splitInterval) {
+ this.splitInterval = splitInterval;
+ }
+
+ @Override
+ public String getConfigName() {
+ return configName;
+ }
+
+ @Override
+ public void setConfigName(String configName) {
+ this.configName = configName;
+ }
+
+ @Override
+ public Integer getNumberOfShards() {
+ return numberOfShards;
+ }
+
+ @Override
+ public void setNumberOfShards(Integer numberOfShards) {
+ this.numberOfShards = numberOfShards;
+ }
+
+ @Override
+ public Integer getReplicationFactor() {
+ return replicationFactor;
+ }
+
+ @Override
+ public void setReplicationFactor(Integer replicationFactor) {
+ this.replicationFactor = replicationFactor;
+ }
+
+ public List<String> getLogLevels() {
+ return logLevels;
+ }
+
+ public void setLogLevels(List<String> logLevels) {
+ this.logLevels = logLevels;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/AuditSolrDao.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/AuditSolrDao.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/AuditSolrDao.java
index 64aa776..4f5e734 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/AuditSolrDao.java
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/AuditSolrDao.java
@@ -23,9 +23,11 @@ import java.util.Arrays;
import java.util.Collection;
import javax.annotation.PostConstruct;
+import javax.inject.Inject;
import org.apache.ambari.logsearch.common.PropertiesHelper;
-import org.apache.ambari.logsearch.manager.MgrBase.LogType;
+import org.apache.ambari.logsearch.conf.SolrAuditLogConfig;
+import org.apache.ambari.logsearch.manager.ManagerBase.LogType;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
@@ -33,23 +35,26 @@ import org.springframework.stereotype.Component;
@Component
public class AuditSolrDao extends SolrDaoBase {
- static private Logger logger = Logger.getLogger(AuditSolrDao.class);
-
+ private static final Logger logger = Logger.getLogger(AuditSolrDao.class);
+
+ @Inject
+ private SolrAuditLogConfig solrAuditLogConfig;
+
public AuditSolrDao() {
super(LogType.AUDIT);
}
@PostConstruct
public void postConstructor() {
- String solrUrl = PropertiesHelper.getProperty("logsearch.solr.audit.logs.url");
- String zkConnectString = PropertiesHelper.getProperty("logsearch.solr.audit.logs.zk_connect_string");
- String collection = PropertiesHelper.getProperty("logsearch.solr.collection.audit.logs", "audit_logs");
- String aliasNameIn = PropertiesHelper.getProperty("logsearch.solr.audit.logs.alias.name", "audit_logs_alias");
- String rangerAuditCollection = PropertiesHelper.getProperty("logsearch.ranger.audit.logs.collection.name");
- String splitInterval = PropertiesHelper.getProperty("logsearch.audit.logs.split.interval.mins", "none");
- String configName = PropertiesHelper.getProperty("logsearch.solr.audit.logs.config.name", "audit_logs");
- int numberOfShards = PropertiesHelper.getIntProperty("logsearch.collection.audit.logs.numshards", 1);
- int replicationFactor = PropertiesHelper.getIntProperty("logsearch.collection.audit.logs.replication.factor", 1);
+ String solrUrl = solrAuditLogConfig.getSolrUrl();
+ String zkConnectString = solrAuditLogConfig.getZkConnectString();
+ String collection = solrAuditLogConfig.getCollection();
+ String aliasNameIn = solrAuditLogConfig.getAliasNameIn();
+ String rangerAuditCollection = solrAuditLogConfig.getRangerCollection();
+ String splitInterval = solrAuditLogConfig.getSplitInterval();
+ String configName = solrAuditLogConfig.getConfigName();
+ int numberOfShards = solrAuditLogConfig.getNumberOfShards();
+ int replicationFactor = solrAuditLogConfig.getReplicationFactor();
try {
connectToSolr(solrUrl, zkConnectString, collection);
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/ServiceLogsSolrDao.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/ServiceLogsSolrDao.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/ServiceLogsSolrDao.java
index 6e2bb4b..e338b7c 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/ServiceLogsSolrDao.java
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/ServiceLogsSolrDao.java
@@ -20,9 +20,11 @@
package org.apache.ambari.logsearch.dao;
import javax.annotation.PostConstruct;
+import javax.inject.Inject;
import org.apache.ambari.logsearch.common.PropertiesHelper;
-import org.apache.ambari.logsearch.manager.MgrBase.LogType;
+import org.apache.ambari.logsearch.conf.SolrServiceLogConfig;
+import org.apache.ambari.logsearch.manager.ManagerBase.LogType;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
@@ -30,6 +32,9 @@ import org.springframework.stereotype.Component;
public class ServiceLogsSolrDao extends SolrDaoBase {
private static final Logger logger = Logger.getLogger(ServiceLogsSolrDao.class);
+
+ @Inject
+ private SolrServiceLogConfig solrServiceLogConfig;
public ServiceLogsSolrDao() {
super(LogType.SERVICE);
@@ -38,13 +43,13 @@ public class ServiceLogsSolrDao extends SolrDaoBase {
@PostConstruct
public void postConstructor() {
logger.info("postConstructor() called.");
- String solrUrl = PropertiesHelper.getProperty("logsearch.solr.url");
- String zkConnectString = PropertiesHelper.getProperty("logsearch.solr.zk_connect_string");
- String collection = PropertiesHelper.getProperty("logsearch.solr.collection.service.logs", "hadoop_logs");
- String splitInterval = PropertiesHelper.getProperty("logsearch.service.logs.split.interval.mins", "none");
- String configName = PropertiesHelper.getProperty("logsearch.solr.service.logs.config.name", "hadoop_logs");
- int numberOfShards = PropertiesHelper.getIntProperty("logsearch.collection.service.logs.numshards", 1);
- int replicationFactor = PropertiesHelper.getIntProperty("logsearch.collection.service.logs.replication.factor", 1);
+ String solrUrl = solrServiceLogConfig.getSolrUrl();
+ String zkConnectString = solrServiceLogConfig.getZkConnectString();
+ String collection = solrServiceLogConfig.getCollection();
+ String splitInterval = solrServiceLogConfig.getSplitInterval();
+ String configName = solrServiceLogConfig.getConfigName();
+ int numberOfShards = solrServiceLogConfig.getNumberOfShards();
+ int replicationFactor = solrServiceLogConfig.getReplicationFactor();
try {
connectToSolr(solrUrl, zkConnectString, collection);
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/SolrDaoBase.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/SolrDaoBase.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/SolrDaoBase.java
index 8cdb6eb..b325171 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/SolrDaoBase.java
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/SolrDaoBase.java
@@ -30,7 +30,9 @@ import org.apache.ambari.logsearch.common.ConfigHelper;
import org.apache.ambari.logsearch.common.LogSearchContext;
import org.apache.ambari.logsearch.common.MessageEnums;
import org.apache.ambari.logsearch.common.PropertiesHelper;
-import org.apache.ambari.logsearch.manager.MgrBase.LogType;
+import org.apache.ambari.logsearch.conf.SolrKerberosConfig;
+import org.apache.ambari.logsearch.conf.SolrUserConfig;
+import org.apache.ambari.logsearch.manager.ManagerBase.LogType;
import org.apache.ambari.logsearch.util.RESTErrorUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
@@ -58,6 +60,8 @@ import org.apache.solr.common.util.NamedList;
import com.google.common.annotations.VisibleForTesting;
+import javax.inject.Inject;
+
public abstract class SolrDaoBase {
private static final Logger logger = Logger.getLogger(SolrDaoBase.class);
private static final Logger logPerformance = Logger.getLogger("org.apache.ambari.logsearch.performance");
@@ -85,6 +89,11 @@ public abstract class SolrDaoBase {
private String solrDetail = "";
private boolean populateFieldsThreadActive = false;
+
+ @Inject
+ private SolrKerberosConfig solrKerberosConfig;
+ @Inject
+ private SolrUserConfig solrUserConfig;
protected SolrDaoBase(LogType logType) {
this.logType = logType;
@@ -461,8 +470,8 @@ public abstract class SolrDaoBase {
}
private void setupSecurity() {
- String jaasFile = PropertiesHelper.getProperty("logsearch.solr.jaas.file", "/etc/security/keytabs/logsearch_solr.service.keytab");
- boolean securityEnabled = PropertiesHelper.getBooleanProperty("logsearch.solr.kerberos.enable", false);
+ String jaasFile = solrKerberosConfig.getJaasFile();
+ boolean securityEnabled = solrKerberosConfig.isEnabled();
if (securityEnabled) {
System.setProperty("java.security.auth.login.config", jaasFile);
HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());
@@ -512,12 +521,12 @@ public abstract class SolrDaoBase {
SolrRequest<SchemaResponse> request = new SchemaRequest();
request.setMethod(METHOD.GET);
request.setPath("/schema");
- String historyCollection = PropertiesHelper.getProperty("logsearch.solr.collection.history","history");
+ String historyCollection = solrUserConfig.getCollection();
if (solrClient != null && !collectionName.equals(historyCollection)) {
NamedList<Object> namedList = null;
try {
namedList = solrClient.request(request);
- logger.info("populateSchemaFields() collection=" + collectionName + ", fields=" + namedList);
+ logger.debug("populateSchemaFields() collection=" + collectionName + ", fields=" + namedList);
} catch (SolrException | SolrServerException | IOException e) {
logger.error("Error occured while popuplating field. collection=" + collectionName, e);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/UserConfigSolrDao.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/UserConfigSolrDao.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/UserConfigSolrDao.java
index 026c78f..a9fb8d2 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/UserConfigSolrDao.java
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/UserConfigSolrDao.java
@@ -21,15 +21,17 @@ package org.apache.ambari.logsearch.dao;
import java.io.File;
import java.io.IOException;
-import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Scanner;
import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.apache.ambari.logsearch.conf.SolrUserConfig;
import org.apache.ambari.logsearch.view.VLogfeederFilterWrapper;
import org.apache.ambari.logsearch.common.LogSearchConstants;
-import org.apache.ambari.logsearch.common.PropertiesHelper;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.QueryResponse;
@@ -42,7 +44,7 @@ import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import com.google.gson.JsonParseException;
-import org.apache.ambari.logsearch.manager.MgrBase.LogType;
+import org.apache.ambari.logsearch.manager.ManagerBase.LogType;
import org.apache.ambari.logsearch.util.JSONUtil;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
@@ -52,7 +54,9 @@ import org.springframework.util.CollectionUtils;
public class UserConfigSolrDao extends SolrDaoBase {
private static final Logger logger = Logger.getLogger(UserConfigSolrDao.class);
- private static final String DEFAULT_LEVELS = "FATAL,ERROR,WARN,INFO,DEBUG,TRACE";
+
+ @Inject
+ private SolrUserConfig solrUserConfig;
public UserConfigSolrDao() {
super(LogType.SERVICE);
@@ -60,13 +64,13 @@ public class UserConfigSolrDao extends SolrDaoBase {
@PostConstruct
public void postConstructor() {
- String solrUrl = PropertiesHelper.getProperty("logsearch.solr.url");
- String zkConnectString = PropertiesHelper.getProperty("logsearch.solr.zk_connect_string");
- String collection = PropertiesHelper.getProperty("logsearch.solr.collection.history", "history");
- String configName = PropertiesHelper.getProperty("logsearch.solr.history.config.name", "history");
- int replicationFactor = PropertiesHelper.getIntProperty("logsearch.collection.history.replication.factor", 2);
- String splitInterval = "none";
- int numberOfShards = 1;
+ String solrUrl = solrUserConfig.getSolrUrl();
+ String zkConnectString = solrUserConfig.getZkConnectString();
+ String collection = solrUserConfig.getCollection();
+ String configName = solrUserConfig.getConfigName();
+ int replicationFactor = solrUserConfig.getReplicationFactor();
+ String splitInterval = solrUserConfig.getSplitInterval();
+ int numberOfShards = solrUserConfig.getNumberOfShards();
try {
connectToSolr(solrUrl, zkConnectString, collection);
@@ -117,14 +121,14 @@ public class UserConfigSolrDao extends SolrDaoBase {
if (!CollectionUtils.isEmpty(documentList)) {
SolrDocument configDoc = documentList.get(0);
String configJson = JSONUtil.objToJson(configDoc);
- HashMap<String, Object> configMap = (HashMap<String, Object>) JSONUtil.jsonToMapObject(configJson);
+ HashMap<String, Object> configMap = JSONUtil.jsonToMapObject(configJson);
String json = (String) configMap.get(LogSearchConstants.VALUES);
logfeederFilterWrapper = (VLogfeederFilterWrapper) JSONUtil.jsonToObj(json, VLogfeederFilterWrapper.class);
logfeederFilterWrapper.setId("" + configDoc.get(LogSearchConstants.ID));
} else {
- String logfeederDefaultLevels = PropertiesHelper.getProperty("logsearch.logfeeder.include.default.level", DEFAULT_LEVELS);
- JSONArray levelJsonArray = new JSONArray(Arrays.asList(logfeederDefaultLevels.split(",")));
+ List<String> logfeederDefaultLevels = solrUserConfig.getLogLevels();
+ JSONArray levelJsonArray = new JSONArray(logfeederDefaultLevels);
String hadoopServiceString = getHadoopServiceConfigJSON();
String key = null;
http://git-wip-us.apache.org/repos/asf/ambari/blob/bda3a1eb/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/UserDao.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/UserDao.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/UserDao.java
index 39f0e25..a04dee4 100644
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/UserDao.java
+++ b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/dao/UserDao.java
@@ -24,8 +24,9 @@ import java.util.Arrays;
import java.util.HashMap;
import javax.annotation.PostConstruct;
+import javax.inject.Inject;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.ambari.logsearch.conf.AuthConfig;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.stereotype.Repository;
import org.apache.ambari.logsearch.common.PropertiesHelper;
@@ -50,9 +51,12 @@ public class UserDao {
private static final String ENC_PASSWORD = "en_password";
private static final String NAME = "name";
- @Autowired
+ @Inject
private LogsearchFileAuthenticationProvider fileAuthenticationProvider;
+ @Inject
+ private AuthConfig authConfig;
+
private ArrayList<HashMap<String, String>> userList = null;
@SuppressWarnings("unchecked")
@@ -60,7 +64,7 @@ public class UserDao {
public void initialization() {
if (fileAuthenticationProvider.isEnable()) {
try {
- String userPassJsonFileName = PropertiesHelper.getProperty("logsearch.login.credentials.file");
+ String userPassJsonFileName = authConfig.getCredentialsFile();
logger.info("USER PASS JSON file NAME:" + userPassJsonFileName);
File jsonFile = FileUtil.getFileFromClasspath(userPassJsonFileName);
if (jsonFile == null || !jsonFile.exists()) {