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 2017/03/29 13:57:33 UTC
[25/67] [abbrv] ambari git commit: AMBARI-20528. Rename Log Search
Portal module to Log Search Server (oleewere)
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/doc/DocConstants.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/doc/DocConstants.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/doc/DocConstants.java
deleted file mode 100644
index 984e834..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/doc/DocConstants.java
+++ /dev/null
@@ -1,125 +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.doc;
-
-public class DocConstants {
-
- public class CommonDescriptions {
- public static final String X_AXIS_D = "The column which can be value for x-axis in graph formation";
- public static final String Y_AXIS_D = "The column which can be value for y-axis in graph formation";
- public static final String STACK_BY_D = "The graph property for stacking the plot";
- public static final String EXCLUDE_QUERY_D = "Exclude the values in query result e.g.: [{message:*timeout*}]";
- public static final String INCLUDE_QUERY_D = "Include the values in query result e.g.: [{message:*exception*}]";
- public static final String MUST_BE_D = "Include the components, comma separated values";
- public static final String MUST_NOT_D = "Exclude the components, comma separated values";
- public static final String FROM_D = "Date range param, start date";
- public static final String TO_D = "Date range param, end date";
- public static final String START_TIME_D = "Date range param which is suportted from browser url";
- public static final String END_TIME_D = "Date range param which is supported from browser url";
- public static final String START_INDEX_D = "Start index of the queried result";
- public static final String SORT_TYPE_D = "Type of sorting (osc, desc)";
- public static final String SORT_BY_D = "Sorting the results based on this field";
- public static final String PAGE_D = "Number of pages for the results";
- public static final String PAGE_SIZE_D = "Page size of the results";
- public static final String UNIT_D = "Aggregate the data with time gap as unit i.e 1MINUTE";
- public static final String QUERY_D = "not required";
- public static final String I_MESSAGE_D = "Include query which will query against message column";
- public static final String E_MESSAGE_D = "Exclude query which will query against message column";
- public static final String IS_LAST_PAGE_D = "Show last page (true/false)";
- public static final String FIELD_D = "Get values for particular field";
- public static final String FORMAT_D = "File Export format, can be 'txt' or 'json'";
- public static final String TOP = "Number that defines how many top element you would like to see.";
- }
-
- public class AuditOperationDescriptions {
- public static final String GET_AUDIT_SCHEMA_FIELD_LIST_OD = "Get list of schema fields in audit collection";
- public static final String GET_AUDIT_LOGS_OD = "Get the list of logs details";
- public static final String PURGE_AUDIT_LOGS_OD = "Purge service logs based by criteria";
- public static final String GET_AUDIT_COMPONENTS_OD = "Get the list of audit components currently active or having data in Solr";
- public static final String GET_AUDIT_LINE_GRAPH_DATA_OD = "Get the data required for line graph";
- public static final String GET_TOP_AUDIT_RESOURCES_OD = "Get the top audit resource count (grouped by type)";
- public static final String EXPORT_USER_TALBE_TO_TEXT_FILE_OD = "Export the tables shown on Audit tab";
- public static final String GET_SERVICE_LOAD_OD = "The graph for showing the top users accessing the services";
- }
-
- public class ServiceDescriptions {
- public static final String LEVEL_D = "filter for log level";
- public static final String BUNDLE_ID = "filter for host";
- public static final String CLUSTER_D = "filter for clusters (comma separated list)";
- public static final String FILE_NAME_D = "File name filter which is supported from browser url";
- public static final String HOST_NAME_D = "Host name filter which is supported from browser url";
- public static final String COMPONENT_NAME_D = "Component name filter which is supported from browser url";
- public static final String FIND_D = "Finding particular text on subsequent pages in case of table view with pagination";
- public static final String ID_D = "Log id value for traversing to that particular record with that log id";
- public static final String KEYWORD_TYPE_D = "Serching the find param value in previous or next in paginated table";
- public static final String TOKEN_D = "unique number used along with FIND_D. The request can be canceled using this token";
- public static final String SOURCE_LOG_ID_D = "fetch the record set having that log Id";
- public static final String NUMBER_ROWS_D = "Getting rows after particular log entry - used in 'Preview' option";
- public static final String SCROLL_TYPE_D = "Used in 'Preview' feature for getting records 'after' or 'before'";
- public static final String UTC_OFFSET_D = "timezone offset";
- public static final String HOST_PARAMS_D = "filter for hosts";
- }
-
- public class ServiceOperationDescriptions {
- public static final String SEARCH_LOGS_OD = "Searching logs entry";
- public static final String PURGE_LOGS_OD = "Purge service logs based by criteria";
- public static final String GET_HOSTS_OD = "Get the list of service hosts currently active or having data in Solr";
- public static final String GET_COMPONENTS_OD = "Get the list of service components currently active or having data in Solr";
- public static final String GET_AGGREGATED_INFO_OD = "not required";
- public static final String GET_LOG_LEVELS_COUNT_OD = "Get Log levels with their counts";
- public static final String GET_COMPONENTS_COUNT_OD = "Get components with their counts";
- public static final String GET_HOSTS_COUNT_OD = "Get hosts with their counts";
- public static final String GET_TREE_EXTENSION_OD = "Get host and compoenets hierarchy with log counts";
- public static final String GET_HISTOGRAM_DATA_OD = "Get data for histogram";
- public static final String EXPORT_TO_TEXT_FILE_OD = "Export the table data in file";
- public static final String GET_COMPONENT_LIST_WITH_LEVEL_COUNT_OD = "Get components with log level distribution count";
- public static final String GET_ANY_GRAPH_COUNT_DATA_OD = "Get the data generic enough to use for graph plots (yAzis is always count)";
- public static final String GET_HOST_LIST_BY_COMPONENT_OD = "Get host list of components";
- public static final String GET_SERVICE_LOGS_SCHEMA_FIELD_NAME_OD = "Get service logs schema fields";
- public static final String GET_HADOOP_SERVICE_CONFIG_JSON_OD = "Get the json having meta data of services supported by logsearch";
- public static final String GET_AFTER_BEFORE_LOGS_OD = "Preview feature data";
- public static final String REQUEST_CANCEL = "Cancel an ongoing solr request";
- public static final String GET_HOST_LOGFILES_OD = "Get the log files of the components of a host";
- }
-
- public class PublicOperationDescriptions {
- public static final String OBTAIN_GENERAL_CONFIG_OD = "Obtain general config";
- }
-
- public class UserConfigDescriptions {
- public static final String FILTER_NAME_D = "The saved query as filter in Solr, search is sopprted by this param";
- public static final String ROW_TYPE_D = "Row type is solr to identify as filter query";
- }
-
- public class UserConfigOperationDescriptions {
- public static final String SAVE_USER_CONFIG_OD = "Save user config";
- public static final String DELETE_USER_CONFIG_OD = "Delete user config";
- public static final String GET_USER_CONFIG_OD = "Get user config";
- public static final String GET_USER_FILTER_OD = "Get user filter";
- public static final String UPDATE_USER_FILTER_OD = "Update user filter";
- public static final String GET_ALL_USER_NAMES_OD = "Get all user names";
- }
-
- public class StatusOperationDescriptions {
- public static final String STATUS_OD = "Get statuses for collections (not health state - show true if something already done)";
- public static final String SERVICE_LOGS_STATUS_OD = "Get statuses for service log collection (not health state - show true if something already done)";
- public static final String AUDIT_LOGS_STATUS_OD = "Get statuses for collections (not health state - show true if something already done)";
- public static final String USER_CONFIG_STATUS_OD = "Get statuses for userconfig collection (not health state - show true if something already done)";
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ACLHandler.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ACLHandler.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ACLHandler.java
deleted file mode 100644
index fde176f..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ACLHandler.java
+++ /dev/null
@@ -1,97 +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.handler;
-
-import org.apache.ambari.logsearch.conf.SolrPropsConfig;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.common.cloud.SolrZooKeeper;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.data.ACL;
-import org.apache.zookeeper.data.Stat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-public class ACLHandler implements SolrZkRequestHandler<Boolean> {
-
- private static final Logger LOG = LoggerFactory.getLogger(ACLHandler.class);
-
- @Override
- public Boolean handle(CloudSolrClient solrClient, SolrPropsConfig solrPropsConfig) throws Exception {
- List<ACL> aclsToSetList = solrPropsConfig.getZkAcls();
- if (CollectionUtils.isNotEmpty(aclsToSetList)) {
- LOG.info("Setting acls for '{}' collection...", solrPropsConfig.getCollection());
- SolrZkClient zkClient = solrClient.getZkStateReader().getZkClient();
- SolrZooKeeper solrZooKeeper = zkClient.getSolrZooKeeper();
- String collectionPath = String.format("/collections/%s", solrPropsConfig.getCollection());
- String configsPath = String.format("/configs/%s", solrPropsConfig.getConfigName());
- List<ACL> collectionAcls = solrZooKeeper.getACL(collectionPath, new Stat());
- if (isRefreshAclsNeeded(aclsToSetList, collectionAcls)) {
- LOG.info("Acls differs for {}, update acls.", collectionPath);
- setRecursivelyOn(solrZooKeeper, collectionPath, aclsToSetList);
- }
- List<ACL> configsAcls = solrZooKeeper.getACL(configsPath, new Stat());
- if (isRefreshAclsNeeded(aclsToSetList, configsAcls)) {
- LOG.info("Acls differs for {}, update acls.", configsPath);
- setRecursivelyOn(solrZooKeeper, configsPath, aclsToSetList);
- }
- }
- return true;
- }
-
- private boolean isRefreshAclsNeeded(List<ACL> acls, List<ACL> newAcls) {
- boolean result = false;
- if (acls != null) {
- if (acls.size() != newAcls.size()) {
- return true;
- }
- result = aclDiffers(acls, newAcls);
- if (!result) {
- result = aclDiffers(newAcls, acls);
- }
- }
- return result;
- }
-
- private boolean aclDiffers(List<ACL> aclList1, List<ACL> aclList2) {
- for (ACL acl : aclList1) {
- for (ACL newAcl : aclList2) {
- if (acl.getId() != null && acl.getId().getId().equals(newAcl.getId().getId())
- && acl.getPerms() != newAcl.getPerms()) {
- LOG.info("ACL for '{}' differs: '{}' on znode, should be '{}'",
- acl.getId().getId(), acl.getPerms(), newAcl.getPerms());
- return true;
- }
- }
- }
- return false;
- }
-
- private void setRecursivelyOn(SolrZooKeeper solrZooKeeper, String node, List<ACL> acls)
- throws KeeperException, InterruptedException {
- solrZooKeeper.setACL(node, acls, -1);
- for (String child : solrZooKeeper.getChildren(node, null)) {
- String path = node.endsWith("/") ? node + child : node + "/" + child;
- setRecursivelyOn(solrZooKeeper, path, acls);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/CreateCollectionHandler.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/CreateCollectionHandler.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/CreateCollectionHandler.java
deleted file mode 100644
index 752a1e1..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/CreateCollectionHandler.java
+++ /dev/null
@@ -1,222 +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.handler;
-
-import org.apache.ambari.logsearch.conf.SolrPropsConfig;
-import org.apache.commons.lang.StringUtils;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.impl.HttpClientUtil;
-import org.apache.solr.client.solrj.request.CollectionAdminRequest;
-import org.apache.solr.client.solrj.response.CollectionAdminResponse;
-import org.apache.solr.common.cloud.Replica;
-import org.apache.solr.common.cloud.Slice;
-import org.apache.solr.common.cloud.ZkStateReader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.ws.rs.core.Response;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-
-import static org.apache.ambari.logsearch.solr.SolrConstants.CommonLogConstants.ROUTER_FIELD;
-
-public class CreateCollectionHandler implements SolrZkRequestHandler<Boolean> {
-
- private static final Logger LOG = LoggerFactory.getLogger(CreateCollectionHandler.class);
-
- private static final String MODIFY_COLLECTION_QUERY = "/admin/collections?action=MODIFYCOLLECTION&collection=%s&%s=%d";
- private static final String MAX_SHARDS_PER_NODE = "maxShardsPerNode";
-
- private List<String> allCollectionList;
-
- public CreateCollectionHandler(List<String> allCollectionList) {
- this.allCollectionList = allCollectionList;
- }
-
- @Override
- public Boolean handle(CloudSolrClient solrClient, SolrPropsConfig solrPropsConfig) throws Exception {
- boolean result;
- if (solrPropsConfig.getSplitInterval().equalsIgnoreCase("none")) {
- result = createCollection(solrClient, solrPropsConfig, this.allCollectionList);
- } else {
- result = setupCollectionsWithImplicitRouting(solrClient, solrPropsConfig, this.allCollectionList);
- }
- return result;
- }
-
- private boolean setupCollectionsWithImplicitRouting(CloudSolrClient solrClient, SolrPropsConfig solrPropsConfig, List<String> allCollectionList)
- throws Exception {
- LOG.info("setupCollectionsWithImplicitRouting(). collectionName=" + solrPropsConfig.getCollection()
- + ", numberOfShards=" + solrPropsConfig.getNumberOfShards());
-
- // Default is true, because if the collection and shard is already there, then it will return true
- boolean returnValue = true;
-
- List<String> shardsList = new ArrayList<String>();
- for (int i = 0; i < solrPropsConfig.getNumberOfShards(); i++) {
- shardsList.add("shard" + i);
- }
- String shardsListStr = StringUtils.join(shardsList, ',');
-
- // Check if collection is already in zookeeper
- if (!allCollectionList.contains(solrPropsConfig.getCollection())) {
- LOG.info("Creating collection " + solrPropsConfig.getCollection() + ", shardsList=" + shardsList);
- CollectionAdminRequest.Create collectionCreateRequest = new CollectionAdminRequest.Create();
- collectionCreateRequest.setCollectionName(solrPropsConfig.getCollection());
- collectionCreateRequest.setRouterName("implicit");
- collectionCreateRequest.setShards(shardsListStr);
- collectionCreateRequest.setNumShards(solrPropsConfig.getNumberOfShards());
- collectionCreateRequest.setReplicationFactor(solrPropsConfig.getReplicationFactor());
- collectionCreateRequest.setConfigName(solrPropsConfig.getConfigName());
- collectionCreateRequest.setRouterField(ROUTER_FIELD);
- collectionCreateRequest.setMaxShardsPerNode(solrPropsConfig.getReplicationFactor() * solrPropsConfig.getNumberOfShards());
-
- CollectionAdminResponse createResponse = collectionCreateRequest.process(solrClient);
- if (createResponse.getStatus() != 0) {
- returnValue = false;
- LOG.error("Error creating collection. collectionName=" + solrPropsConfig.getCollection()
- + ", shardsList=" + shardsList +", response=" + createResponse);
- } else {
- LOG.info("Created collection " + solrPropsConfig.getCollection() + ", shardsList=" + shardsList);
- }
- } else {
- LOG.info("Collection " + solrPropsConfig.getCollection() + " is already there. Will check whether it has the required shards");
- Collection<Slice> slices = getSlices(solrClient, solrPropsConfig);
- Collection<String> existingShards = getShards(slices, solrPropsConfig);
- if (existingShards.size() < shardsList.size()) {
- try {
- updateMaximumNumberOfShardsPerCore(slices, solrPropsConfig);
- } catch (Throwable t) {
- returnValue = false;
- LOG.error(String.format("Exception during updating collection (%s)", t));
- }
- }
- for (String shard : shardsList) {
- if (!existingShards.contains(shard)) {
- try {
- LOG.info("Going to add Shard " + shard + " to collection " + solrPropsConfig.getCollection());
- CollectionAdminRequest.CreateShard createShardRequest = new CollectionAdminRequest.CreateShard();
- createShardRequest.setCollectionName(solrPropsConfig.getCollection());
- createShardRequest.setShardName(shard);
- CollectionAdminResponse response = createShardRequest.process(solrClient);
- if (response.getStatus() != 0) {
- LOG.error("Error creating shard " + shard + " in collection " + solrPropsConfig.getCollection() + ", response=" + response);
- returnValue = false;
- break;
- } else {
- LOG.info("Successfully created shard " + shard + " in collection " + solrPropsConfig.getCollection());
- }
- } catch (Throwable t) {
- LOG.error("Error creating shard " + shard + " in collection " + solrPropsConfig.getCollection(), t);
- returnValue = false;
- break;
- }
- }
- }
- }
- return returnValue;
- }
-
- private boolean createCollection(CloudSolrClient solrClient, SolrPropsConfig solrPropsConfig, List<String> allCollectionList) throws SolrServerException, IOException {
-
- if (allCollectionList.contains(solrPropsConfig.getCollection())) {
- LOG.info("Collection " + solrPropsConfig.getCollection() + " is already there. Won't create it");
- return true;
- }
-
- LOG.info("Creating collection " + solrPropsConfig.getCollection() + ", numberOfShards=" + solrPropsConfig.getNumberOfShards() +
- ", replicationFactor=" + solrPropsConfig.getReplicationFactor());
-
- CollectionAdminRequest.Create collectionCreateRequest = new CollectionAdminRequest.Create();
- collectionCreateRequest.setCollectionName(solrPropsConfig.getCollection());
- collectionCreateRequest.setNumShards(solrPropsConfig.getNumberOfShards());
- collectionCreateRequest.setReplicationFactor(solrPropsConfig.getReplicationFactor());
- collectionCreateRequest.setConfigName(solrPropsConfig.getConfigName());
- collectionCreateRequest.setMaxShardsPerNode(calculateMaxShardsPerNode(solrPropsConfig));
- CollectionAdminResponse createResponse = collectionCreateRequest.process(solrClient);
- if (createResponse.getStatus() != 0) {
- LOG.error("Error creating collection. collectionName=" + solrPropsConfig.getCollection() + ", response=" + createResponse);
- return false;
- } else {
- LOG.info("Created collection " + solrPropsConfig.getCollection() + ", numberOfShards=" + solrPropsConfig.getNumberOfShards() +
- ", replicationFactor=" + solrPropsConfig.getReplicationFactor());
- return true;
- }
- }
-
- private void updateMaximumNumberOfShardsPerCore(Collection<Slice> slices, SolrPropsConfig solrPropsConfig) throws IOException {
- String baseUrl = getRandomBaseUrl(slices);
- if (baseUrl != null) {
- CloseableHttpClient httpClient = HttpClientUtil.createClient(null);
- HttpGet request = new HttpGet(baseUrl + String.format(MODIFY_COLLECTION_QUERY,
- solrPropsConfig.getCollection(), MAX_SHARDS_PER_NODE, calculateMaxShardsPerNode(solrPropsConfig)));
- HttpResponse response = httpClient.execute(request);
- if (response.getStatusLine().getStatusCode() != Response.Status.OK.getStatusCode()) {
- throw new IllegalStateException(String.format("Cannot update collection (%s) - increase max number of nodes per core", solrPropsConfig.getCollection()));
- }
- } else {
- throw new IllegalStateException(String.format("Cannot get any core url for updating collection (%s)", solrPropsConfig.getCollection()));
- }
- }
-
- private Collection<Slice> getSlices(CloudSolrClient solrClient, SolrPropsConfig solrPropsConfig) {
- ZkStateReader reader = solrClient.getZkStateReader();
- return reader.getClusterState().getSlices(solrPropsConfig.getCollection());
- }
-
- private Collection<String> getShards(Collection<Slice> slices, SolrPropsConfig solrPropsConfig) {
- Collection<String> list = new HashSet<>();
- for (Slice slice : slices) {
- for (Replica replica : slice.getReplicas()) {
- LOG.info("colName=" + solrPropsConfig.getCollection() + ", slice.name=" + slice.getName() + ", slice.state=" + slice.getState() +
- ", replica.core=" + replica.getStr("core") + ", replica.state=" + replica.getStr("state"));
- list.add(slice.getName());
- }
- }
- return list;
- }
-
- private String getRandomBaseUrl(Collection<Slice> slices) {
- String coreUrl = null;
- if (slices != null) {
- for (Slice slice : slices) {
- if (!slice.getReplicas().isEmpty()) {
- Replica replica = slice.getReplicas().iterator().next();
- coreUrl = replica.getStr("base_url");
- if (coreUrl != null) {
- break;
- }
- }
- }
- }
- return coreUrl;
- }
-
- private Integer calculateMaxShardsPerNode(SolrPropsConfig solrPropsConfig) {
- return solrPropsConfig.getReplicationFactor() * solrPropsConfig.getNumberOfShards();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ListCollectionHandler.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ListCollectionHandler.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ListCollectionHandler.java
deleted file mode 100644
index 124ce40..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ListCollectionHandler.java
+++ /dev/null
@@ -1,51 +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.handler;
-
-import org.apache.ambari.logsearch.conf.SolrPropsConfig;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.request.CollectionAdminRequest;
-import org.apache.solr.client.solrj.response.CollectionAdminResponse;
-import org.apache.solr.common.SolrException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ListCollectionHandler implements SolrZkRequestHandler<List<String>> {
-
- private static final Logger LOG = LoggerFactory.getLogger(ListCollectionHandler.class);
-
- @Override
- public List<String> handle(CloudSolrClient solrClient, SolrPropsConfig solrPropsConfig) throws Exception {
- try {
- CollectionAdminRequest.List colListReq = new CollectionAdminRequest.List();
- CollectionAdminResponse response = colListReq.process(solrClient);
- if (response.getStatus() != 0) {
- LOG.error("Error getting collection list from solr. response=" + response);
- return null;
- }
- return (List<String>) response.getResponse().get("collections");
- } catch (SolrException e) {
- LOG.error("getCollections() operation failed", e);
- return new ArrayList<>();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ReloadCollectionHandler.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ReloadCollectionHandler.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ReloadCollectionHandler.java
deleted file mode 100644
index 52f3366..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/ReloadCollectionHandler.java
+++ /dev/null
@@ -1,45 +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.handler;
-
-import org.apache.ambari.logsearch.conf.SolrPropsConfig;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.request.CollectionAdminRequest;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ReloadCollectionHandler implements SolrZkRequestHandler<Boolean> {
-
- private static final Logger LOG = LoggerFactory.getLogger(ReloadCollectionHandler.class);
-
- @Override
- public Boolean handle(CloudSolrClient solrClient, SolrPropsConfig solrPropsConfig) throws Exception {
- boolean result = false;
- try {
- LOG.info("Reload collection - '{}'", solrPropsConfig.getCollection());
- CollectionAdminRequest.Reload reloadCollectionRequest = new CollectionAdminRequest.Reload();
- reloadCollectionRequest.setCollectionName(solrPropsConfig.getCollection());
- reloadCollectionRequest.process(solrClient);
- result = true;
- } catch (Exception e) {
- LOG.error(String.format("Reload collection ('%s') failed.", solrPropsConfig.getCollection()), e);
- }
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/SolrZkRequestHandler.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/SolrZkRequestHandler.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/SolrZkRequestHandler.java
deleted file mode 100644
index 85ae6cb..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/SolrZkRequestHandler.java
+++ /dev/null
@@ -1,26 +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.handler;
-
-import org.apache.ambari.logsearch.conf.SolrPropsConfig;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-
-interface SolrZkRequestHandler<T> {
- T handle(CloudSolrClient solrClient, SolrPropsConfig solrPropsConfig) throws Exception;
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/UploadConfigurationHandler.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/UploadConfigurationHandler.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/UploadConfigurationHandler.java
deleted file mode 100644
index 27a6705..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/handler/UploadConfigurationHandler.java
+++ /dev/null
@@ -1,151 +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.handler;
-
-import org.apache.ambari.logsearch.conf.SolrPropsConfig;
-import org.apache.commons.configuration.XMLConfiguration;
-import org.apache.commons.io.FileUtils;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.common.cloud.ZkConfigManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.FileSystems;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-public class UploadConfigurationHandler implements SolrZkRequestHandler<Boolean> {
-
- private static final Logger LOG = LoggerFactory.getLogger(UploadConfigurationHandler.class);
-
- private static final String SCHEMA_FILE = "managed-schema";
- private static final String SOLR_CONFIG_FILE = "solrconfig.xml";
- private static final String FIELD_NAME_PATH = "field[@name]";
- private static final String FIELD_TYPE_NAME_PATH = "fieldType[@name]";
- private static final String DYNAMIC_FIELD_NAME_PATH = "dynamicField[@name]";
-
- private File configSetFolder;
-
- public UploadConfigurationHandler(File configSetFolder) {
- this.configSetFolder = configSetFolder;
- }
-
- @Override
- public Boolean handle(CloudSolrClient solrClient, SolrPropsConfig solrPropsConfig) throws Exception {
- boolean reloadCollectionNeeded = false;
- String separator = FileSystems.getDefault().getSeparator();
- String downloadFolderLocation = String.format("%s%s%s%s%s", System.getProperty("java.io.tmpdir"), separator,
- UUID.randomUUID().toString(), separator, solrPropsConfig.getConfigName());
- solrClient.connect();
- SolrZkClient zkClient = solrClient.getZkStateReader().getZkClient();
- File tmpDir = new File(downloadFolderLocation);
- try {
- ZkConfigManager zkConfigManager = new ZkConfigManager(zkClient);
- boolean configExists = zkConfigManager.configExists(solrPropsConfig.getConfigName());
- if (configExists) {
- LOG.info("Config set exists for '{}' collection. Refreshing it if needed...", solrPropsConfig.getCollection());
- if (!tmpDir.mkdirs()) {
- LOG.error("Cannot create directories for '{}'", tmpDir.getAbsolutePath());
- }
- zkConfigManager.downloadConfigDir(solrPropsConfig.getConfigName(), Paths.get(downloadFolderLocation));
- File[] listOfFiles = configSetFolder.listFiles();
- if (listOfFiles != null) {
- for (File file : listOfFiles) {
- if (file.getName().equals(SOLR_CONFIG_FILE) && !FileUtils.contentEquals(file, new File(String.format("%s%s%s", downloadFolderLocation, separator, file.getName())))) {
- LOG.info("Solr config file differs ('{}'), upload config set to zookeeper", file.getName());
- zkConfigManager.uploadConfigDir(configSetFolder.toPath(), solrPropsConfig.getConfigName());
- reloadCollectionNeeded = true;
- break;
- }
- if (file.getName().equals(SCHEMA_FILE) && localSchemaFileHasMoreFields(file, new File(String.format("%s%s%s", downloadFolderLocation, separator, file.getName())))) {
- LOG.info("Solr schema file differs ('{}'), upload config set to zookeeper", file.getName());
- zkConfigManager.uploadConfigDir(configSetFolder.toPath(), solrPropsConfig.getConfigName());
- reloadCollectionNeeded = true;
- break;
- }
- }
- }
- } else {
- LOG.info("Config set does not exist for '{}' collection. Uploading it to zookeeper...", solrPropsConfig.getCollection());
- File[] listOfFiles = configSetFolder.listFiles();
- if (listOfFiles != null) {
- zkConfigManager.uploadConfigDir(configSetFolder.toPath(), solrPropsConfig.getConfigName());
- }
- }
- } catch (Exception e) {
- throw new RuntimeException(String.format("Cannot upload configurations to zk. (collection: %s, config set folder: %s)",
- solrPropsConfig.getCollection(), solrPropsConfig.getConfigSetFolder()), e);
- } finally {
- if (tmpDir.exists()) {
- try {
- FileUtils.deleteDirectory(tmpDir);
- } catch (IOException e){
- LOG.error("Cannot delete temp directory.", e);
- }
- }
- }
- return reloadCollectionNeeded;
- }
-
- private boolean localSchemaFileHasMoreFields(File localFile, File downloadedFile) {
- try {
- XMLConfiguration localFileXml = new XMLConfiguration(localFile);
- XMLConfiguration downloadedFileXml = new XMLConfiguration(downloadedFile);
-
- List<String> localFieldNames = (ArrayList<String>) localFileXml.getProperty(FIELD_NAME_PATH);
- List<String> localFieldTypes = (ArrayList<String>) localFileXml.getProperty(FIELD_TYPE_NAME_PATH);
- List<String> localDynamicFields = (ArrayList<String>) localFileXml.getProperty(DYNAMIC_FIELD_NAME_PATH);
-
- List<String> fieldNames = (ArrayList<String>) downloadedFileXml.getProperty(FIELD_NAME_PATH);
- List<String> fieldTypes = (ArrayList<String>) downloadedFileXml.getProperty(FIELD_TYPE_NAME_PATH);
- List<String> dynamicFields = (ArrayList<String>) downloadedFileXml.getProperty(DYNAMIC_FIELD_NAME_PATH);
-
- boolean fieldNameHasDiff = hasMoreFields(localFieldNames, fieldNames, FIELD_NAME_PATH);
- boolean fieldTypeHasDiff = hasMoreFields(localFieldTypes, fieldTypes, FIELD_TYPE_NAME_PATH);
- boolean dynamicFieldNameHasDiff = hasMoreFields(localDynamicFields, dynamicFields, DYNAMIC_FIELD_NAME_PATH);
-
- return fieldNameHasDiff || fieldTypeHasDiff || dynamicFieldNameHasDiff;
- } catch (Exception e) {
- throw new RuntimeException("Exception during schema xml parsing.", e);
- }
- }
-
- private boolean hasMoreFields(List<String> localFields, List<String> fields, String tag) {
- boolean result = false;
- if (localFields != null) {
- if (fields == null) {
- result = true;
- } else {
- localFields.removeAll(fields);
- if (!localFields.isEmpty()) {
- result = true;
- }
- }
- }
- if (result) {
- LOG.info("Found new fields or field types in local schema file.: {} ({})", localFields.toString(), tag);
- }
- return result;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/AuditLogsManager.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/AuditLogsManager.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/AuditLogsManager.java
deleted file mode 100644
index 49465d5..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/AuditLogsManager.java
+++ /dev/null
@@ -1,223 +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.manager;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-
-import org.apache.ambari.logsearch.common.LogType;
-import org.apache.ambari.logsearch.common.MessageEnums;
-import org.apache.ambari.logsearch.common.StatusMessage;
-import org.apache.ambari.logsearch.dao.AuditSolrDao;
-import org.apache.ambari.logsearch.dao.SolrSchemaFieldDao;
-import org.apache.ambari.logsearch.model.request.impl.AuditBarGraphRequest;
-import org.apache.ambari.logsearch.model.request.impl.AuditComponentRequest;
-import org.apache.ambari.logsearch.model.request.impl.AuditLogRequest;
-import org.apache.ambari.logsearch.model.request.impl.AuditServiceLoadRequest;
-import org.apache.ambari.logsearch.model.request.impl.FieldAuditLogRequest;
-import org.apache.ambari.logsearch.model.request.impl.UserExportRequest;
-import org.apache.ambari.logsearch.model.response.AuditLogResponse;
-import org.apache.ambari.logsearch.model.response.BarGraphDataListResponse;
-import org.apache.ambari.logsearch.model.response.GroupListResponse;
-import org.apache.ambari.logsearch.model.response.LogData;
-import org.apache.ambari.logsearch.solr.ResponseDataGenerator;
-import org.apache.ambari.logsearch.solr.SolrConstants;
-import org.apache.ambari.logsearch.solr.model.SolrAuditLogData;
-import org.apache.ambari.logsearch.solr.model.SolrComponentTypeLogData;
-import org.apache.ambari.logsearch.util.DownloadUtil;
-import org.apache.ambari.logsearch.util.RESTErrorUtil;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.ambari.logsearch.common.VResponse;
-import org.apache.log4j.Logger;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.response.FacetField.Count;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.springframework.core.convert.ConversionService;
-import org.springframework.data.solr.core.query.SimpleFacetQuery;
-import org.springframework.data.solr.core.query.SimpleQuery;
-
-import static org.apache.ambari.logsearch.solr.SolrConstants.AuditLogConstants.AUDIT_COMPONENT;
-
-@Named
-public class AuditLogsManager extends ManagerBase<SolrAuditLogData, AuditLogResponse> {
- private static final Logger logger = Logger.getLogger(AuditLogsManager.class);
-
- private static final String AUDIT_LOG_TEMPLATE = "audit_log_txt.ftl";
-
- @Inject
- private AuditSolrDao auditSolrDao;
- @Inject
- private ResponseDataGenerator responseDataGenerator;
- @Inject
- private ConversionService conversionService;
- @Inject
- private Configuration freemarkerConfiguration;
- @Inject
- private SolrSchemaFieldDao solrSchemaFieldDao;
-
- public AuditLogResponse getLogs(AuditLogRequest request) {
- String event = "/audit/logs";
- SimpleQuery solrQuery = conversionService.convert(request, SimpleQuery.class);
- if (request.isLastPage()) {
- return getLastPage(auditSolrDao, solrQuery, event);
- } else {
- AuditLogResponse response = getLogAsPaginationProvided(solrQuery, auditSolrDao, event);
- if (response.getTotalCount() > 0 && CollectionUtils.isEmpty(response.getLogList())) {
- request.setLastPage(true);
- solrQuery = conversionService.convert(request, SimpleQuery.class);
- AuditLogResponse lastResponse = getLastPage(auditSolrDao, solrQuery, event);
- if (lastResponse != null){
- response = lastResponse;
- }
- }
- return response;
- }
- }
-
- private List<LogData> getComponents(AuditComponentRequest request) {
- SimpleFacetQuery facetQuery = conversionService.convert(request, SimpleFacetQuery.class);
- List<LogData> docList = new ArrayList<>();
- QueryResponse queryResponse = auditSolrDao.process(facetQuery);
- List<Count> componentsCount = responseDataGenerator.generateCount(queryResponse);
-
- for (Count component : componentsCount) {
- SolrComponentTypeLogData logData = new SolrComponentTypeLogData();
- logData.setType(component.getName());
- docList.add(logData);
- }
- return docList;
- }
-
- public GroupListResponse getAuditComponents(AuditComponentRequest request) {
- GroupListResponse componentResponse = new GroupListResponse();
- List<LogData> docList = getComponents(request);
- componentResponse.setGroupList(docList);
- return componentResponse;
- }
-
- public BarGraphDataListResponse getAuditBarGraphData(AuditBarGraphRequest request) {
- SolrQuery solrQuery = conversionService.convert(request, SolrQuery.class);
- QueryResponse response = auditSolrDao.process(solrQuery);
- return responseDataGenerator.generateBarGraphDataResponseWithRanges(response, SolrConstants.AuditLogConstants.AUDIT_COMPONENT, true);
- }
-
- public BarGraphDataListResponse topResources(FieldAuditLogRequest request) {
- SimpleFacetQuery facetQuery = conversionService.convert(request, SimpleFacetQuery.class);
- QueryResponse queryResponse = auditSolrDao.process(facetQuery);
- return responseDataGenerator.generateSecondLevelBarGraphDataResponse(queryResponse, 0);
- }
-
- public String getAuditLogsSchemaFieldsName() {
- return convertObjToString(solrSchemaFieldDao.getSchemaFieldNameMap(LogType.AUDIT));
- }
-
- public BarGraphDataListResponse getServiceLoad(AuditServiceLoadRequest request) {
- SimpleFacetQuery facetQuery = conversionService.convert(request, SimpleFacetQuery.class);
- QueryResponse response = auditSolrDao.process(facetQuery);
- return responseDataGenerator.generateBarGraphFromFieldFacet(response, AUDIT_COMPONENT);
- }
-
- public Response export(UserExportRequest request) throws TemplateException {
- String startTime = request.getFrom();
- String endTime = request.getTo();
- SimpleFacetQuery facetQuery = conversionService.convert(request, SimpleFacetQuery.class);
-
- startTime = startTime == null ? "" : startTime;
- endTime = endTime == null ? "" : "_" + endTime;
-
- String dataFormat = request.getFormat();
-
- FileOutputStream fis = null;
- try {
- QueryResponse queryResponse = auditSolrDao.process(facetQuery);
- if (queryResponse == null) {
- VResponse response = new VResponse();
- response.setMsgDesc("Query was not able to execute " + facetQuery);
- throw RESTErrorUtil.createRESTException(response);
- }
- BarGraphDataListResponse vBarUserDataList = responseDataGenerator.generateSecondLevelBarGraphDataResponse(queryResponse, 0);
- BarGraphDataListResponse vBarResourceDataList = responseDataGenerator.generateSecondLevelBarGraphDataResponse(queryResponse, 1);
- String data = "";
- if ("text".equals(dataFormat)) {
- StringWriter stringWriter = new StringWriter();
- Template template = freemarkerConfiguration.getTemplate(AUDIT_LOG_TEMPLATE);
- Map<String, Object> models = new HashMap<>();
- DownloadUtil.fillUserResourcesModel(models, vBarUserDataList, vBarResourceDataList);
- template.process(models, stringWriter);
- data = stringWriter.toString();
-
- } else {
- data = "{" + convertObjToString(vBarUserDataList) + "," + convertObjToString(vBarResourceDataList) + "}";
- dataFormat = "json";
- }
- String fileName = "Users_Resource" + startTime + endTime + ".";
- File file = File.createTempFile(fileName, dataFormat);
- fis = new FileOutputStream(file);
- fis.write(data.getBytes());
- return Response
- .ok(file, MediaType.APPLICATION_OCTET_STREAM)
- .header("Content-Disposition", "attachment;filename=" + fileName + dataFormat)
- .build();
-
- } catch (IOException e) {
- logger.error("Error during download file (audit log) " + e);
- throw RESTErrorUtil.createRESTException(MessageEnums.SOLR_ERROR.getMessage().getMessage(), MessageEnums.ERROR_SYSTEM);
- } finally {
- if (fis != null) {
- try {
- fis.close();
- } catch (IOException e) {
- }
- }
- }
- }
-
- @Override
- protected List<SolrAuditLogData> convertToSolrBeans(QueryResponse response) {
- return response.getBeans(SolrAuditLogData.class);
- }
-
- @Override
- protected AuditLogResponse createLogSearchResponse() {
- return new AuditLogResponse();
- }
-
- public StatusMessage deleteLogs(AuditLogRequest request) {
- SimpleQuery solrQuery = conversionService.convert(request, SimpleQuery.class);
- UpdateResponse updateResponse = auditSolrDao.deleteByQuery(solrQuery, "/audit/logs");
- return new StatusMessage(updateResponse.getStatus());
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/JsonManagerBase.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/JsonManagerBase.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/JsonManagerBase.java
deleted file mode 100644
index 94191e0..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/JsonManagerBase.java
+++ /dev/null
@@ -1,69 +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.manager;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParseException;
-import com.google.gson.JsonPrimitive;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-
-import java.util.Date;
-
-public class JsonManagerBase {
-
- private JsonSerializer<Date> jsonDateSerialiazer = null;
- private JsonDeserializer<Date> jsonDateDeserialiazer = null;
-
- public JsonManagerBase() {
- jsonDateSerialiazer = new JsonSerializer<Date>() {
-
- @Override
- public JsonElement serialize(Date paramT, java.lang.reflect.Type paramType, JsonSerializationContext paramJsonSerializationContext) {
- return paramT == null ? null : new JsonPrimitive(paramT.getTime());
- }
- };
-
- jsonDateDeserialiazer = new JsonDeserializer<Date>() {
-
- @Override
- public Date deserialize(JsonElement json, java.lang.reflect.Type typeOfT, JsonDeserializationContext context)
- throws JsonParseException {
- return json == null ? null : new Date(json.getAsLong());
- }
-
- };
- }
-
- protected String convertObjToString(Object obj) {
- if (obj == null) {
- return "";
- }
-
- Gson gson = new GsonBuilder()
- .registerTypeAdapter(Date.class, jsonDateSerialiazer)
- .registerTypeAdapter(Date.class, jsonDateDeserialiazer).create();
-
- return gson.toJson(obj);
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/ManagerBase.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/ManagerBase.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/ManagerBase.java
deleted file mode 100644
index 6b40cb5..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/ManagerBase.java
+++ /dev/null
@@ -1,95 +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.manager;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.ambari.logsearch.model.response.LogData;
-import org.apache.ambari.logsearch.model.response.LogSearchResponse;
-import org.apache.ambari.logsearch.dao.SolrDaoBase;
-import org.apache.log4j.Logger;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.common.SolrDocumentList;
-import org.springframework.data.solr.core.DefaultQueryParser;
-import org.springframework.data.solr.core.query.SimpleQuery;
-import org.springframework.data.solr.core.query.SolrDataQuery;
-
-public abstract class ManagerBase<LOG_DATA_TYPE extends LogData, SEARCH_RESPONSE extends LogSearchResponse> extends JsonManagerBase {
- private static final Logger logger = Logger.getLogger(ManagerBase.class);
-
- public ManagerBase() {
- super();
- }
-
- protected SEARCH_RESPONSE getLastPage(SolrDaoBase solrDoaBase, SimpleQuery lastPageQuery, String event) {
- int maxRows = lastPageQuery.getRows();
- SEARCH_RESPONSE logResponse = getLogAsPaginationProvided(lastPageQuery, solrDoaBase, event);
- Long totalLogs = logResponse.getTotalCount();
- int startIndex = (int)(totalLogs - totalLogs % maxRows);
- int numberOfLogsOnLastPage = (int)(totalLogs - startIndex);
- logResponse.setStartIndex(startIndex);
- logResponse.setTotalCount(totalLogs);
- logResponse.setPageSize(maxRows);
- List<LOG_DATA_TYPE> docList = logResponse.getLogList();
- List<LOG_DATA_TYPE> lastPageDocList = new ArrayList<>();
- logResponse.setLogList(lastPageDocList);
- int cnt = 0;
- for (LOG_DATA_TYPE doc : docList) {
- if (cnt < numberOfLogsOnLastPage) {
- lastPageDocList.add(doc);
- }
- cnt++;
- }
- Collections.reverse(lastPageDocList);
- return logResponse;
- }
-
- protected SEARCH_RESPONSE getLogAsPaginationProvided(SolrDataQuery solrQuery, SolrDaoBase solrDaoBase, String event) {
- SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(solrQuery);
- return getLogAsPaginationProvided(query, solrDaoBase, event);
- }
-
-
- protected SEARCH_RESPONSE getLogAsPaginationProvided(SolrQuery solrQuery, SolrDaoBase solrDaoBase, String event) {
- QueryResponse response = solrDaoBase.process(solrQuery, event);
- SEARCH_RESPONSE logResponse = createLogSearchResponse();
- SolrDocumentList docList = response.getResults();
- logResponse.setTotalCount(docList.getNumFound());
- List<LOG_DATA_TYPE> serviceLogDataList = convertToSolrBeans(response);
- if (!docList.isEmpty()) {
- logResponse.setLogList(serviceLogDataList);
- logResponse.setStartIndex((int) docList.getStart());
- Integer rowNumber = solrQuery.getRows();
- if (rowNumber == null) {
- logger.error("No RowNumber was set in solrQuery");
- return createLogSearchResponse();
- }
- logResponse.setPageSize(rowNumber);
- }
- return logResponse;
- }
-
- protected abstract List<LOG_DATA_TYPE> convertToSolrBeans(QueryResponse response);
-
- protected abstract SEARCH_RESPONSE createLogSearchResponse();
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b0f1e340/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/PublicManager.java
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/PublicManager.java b/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/PublicManager.java
deleted file mode 100644
index cbab651..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/PublicManager.java
+++ /dev/null
@@ -1,48 +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.manager;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.ambari.logsearch.conf.AuthPropsConfig;
-import org.apache.ambari.logsearch.model.response.NameValueData;
-import org.apache.ambari.logsearch.model.response.NameValueDataListResponse;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-@Named
-public class PublicManager extends JsonManagerBase {
-
- @Inject
- private AuthPropsConfig authPropsConfig;
-
- public String getGeneralConfig() {
- NameValueDataListResponse nameValueList = new NameValueDataListResponse();
- List<NameValueData> nameValues = new ArrayList<>();
- NameValueData nameValue = new NameValueData();
- nameValue.setName("simpleAuth");
- nameValue.setValue("" + authPropsConfig.isAuthSimpleEnabled());
- nameValues.add(nameValue);
- nameValueList.setvNameValues(nameValues);
- return convertObjToString(nameValueList);
- }
-}