This is an automated email from the ASF dual-hosted git repository.

oleewere pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 9c908b5  AMBARI-24024 - Logsearch: service advisor does not set 
recommended number of shards (#1457)
9c908b5 is described below

commit 9c908b528bece876e8fb291fda2585fdcb20e24b
Author: kasakrisz <[email protected]>
AuthorDate: Tue Jun 5 12:45:34 2018 +0200

    AMBARI-24024 - Logsearch: service advisor does not set recommended number 
of shards (#1457)
---
 .../LOGSEARCH/0.5.0/service_advisor.py             |  38 ++-----
 .../LOGSEARCH/test_service_advisor.py              | 123 +++++++++++++++------
 2 files changed, 100 insertions(+), 61 deletions(-)

diff --git 
a/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/service_advisor.py
 
b/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/service_advisor.py
index 059f593..2e4acca 100644
--- 
a/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/service_advisor.py
+++ 
b/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/service_advisor.py
@@ -21,13 +21,6 @@ limitations under the License.
 import imp
 import os
 import traceback
-import re
-import socket
-import fnmatch
-import math
-
-
-from resource_management.core.logger import Logger
 
 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
 STACKS_DIR = os.path.join(SCRIPT_DIR, '../../../stacks/')
@@ -140,34 +133,25 @@ class 
LogSearchServiceAdvisor(service_advisor.ServiceAdvisor):
       infraSolrHosts = self.getComponentHostNames(services, 
"AMBARI_INFRA_SOLR", "INFRA_SOLR")
       # if there is AMBARI_INFRA, calculate the min/max shards and 
recommendations based on the number of infra solr hosts
       if infraSolrHosts is not None and len(infraSolrHosts) > 0 and 
"logsearch-properties" in services["configurations"]:
-        replicationReccomendFloat = math.log(len(infraSolrHosts), 5)
-        recommendedReplicationFactor = int(1 + 
math.floor(replicationReccomendFloat))
-        
         recommendedMinShards = len(infraSolrHosts)
         recommendedShards = 2 * len(infraSolrHosts)
-        recommendedMaxShards = max(3 * len(infraSolrHosts), 5)
-      # if there is no AMBARI_INFRA (i.e. external solr is used), use default 
values for min/max shards and recommendations
+        recommendedMaxShards = 10 * len(infraSolrHosts)
       else:
-        recommendedReplicationFactor = 2
-        
+        # if there is no AMBARI_INFRA (i.e. external solr is used), use 
default values for min/max shards and recommendations
         recommendedMinShards = 1
         recommendedShards = 1
         recommendedMaxShards = 100
-        
         putLogSearchCommonEnvProperty('logsearch_use_external_solr', 'true')
         
-        # recommend number of shard
-        putLogSearchAttribute('logsearch.collection.service.logs.numshards', 
'minimum', recommendedMinShards)
-        putLogSearchAttribute('logsearch.collection.service.logs.numshards', 
'maximum', recommendedMaxShards)
-        putLogSearchProperty("logsearch.collection.service.logs.numshards", 
recommendedShards)
-      
-        putLogSearchAttribute('logsearch.collection.audit.logs.numshards', 
'minimum', recommendedMinShards)
-        putLogSearchAttribute('logsearch.collection.audit.logs.numshards', 
'maximum', recommendedMaxShards)
-        putLogSearchProperty("logsearch.collection.audit.logs.numshards", 
recommendedShards)
-        # recommend replication factor
-        
putLogSearchProperty("logsearch.collection.service.logs.replication.factor", 
recommendedReplicationFactor)
-        
putLogSearchProperty("logsearch.collection.audit.logs.replication.factor", 
recommendedReplicationFactor)
-      
+      # recommend number of shard
+      putLogSearchAttribute('logsearch.collection.service.logs.numshards', 
'minimum', recommendedMinShards)
+      putLogSearchAttribute('logsearch.collection.service.logs.numshards', 
'maximum', recommendedMaxShards)
+      putLogSearchProperty("logsearch.collection.service.logs.numshards", 
recommendedShards)
+
+      putLogSearchAttribute('logsearch.collection.audit.logs.numshards', 
'minimum', recommendedMinShards)
+      putLogSearchAttribute('logsearch.collection.audit.logs.numshards', 
'maximum', recommendedMaxShards)
+      putLogSearchProperty("logsearch.collection.audit.logs.numshards", 
recommendedShards)
+
     kerberos_authentication_enabled = self.isSecurityEnabled(services)
     # if there is no kerberos enabled hide kerberor related properties
     if not kerberos_authentication_enabled:
diff --git 
a/ambari-server/src/test/python/common-services/LOGSEARCH/test_service_advisor.py
 
b/ambari-server/src/test/python/common-services/LOGSEARCH/test_service_advisor.py
index 37b02f4..c3a79a0 100644
--- 
a/ambari-server/src/test/python/common-services/LOGSEARCH/test_service_advisor.py
+++ 
b/ambari-server/src/test/python/common-services/LOGSEARCH/test_service_advisor.py
@@ -17,12 +17,9 @@ limitations under the License.
 """
 
 import imp
-import json
 import os
 from unittest import TestCase
 
-from mock.mock import patch, MagicMock
-
 
 class TestLOGSEARCH050ServiceAdvisor(TestCase):
 
@@ -41,27 +38,46 @@ class TestLOGSEARCH050ServiceAdvisor(TestCase):
   with open(logserch050ServiceAdvisorPath, 'rb') as fp:
     service_advisor_impl = imp.load_module('service_advisor_impl', fp, 
logserch050ServiceAdvisorPath, ('.py', 'rb', imp.PY_SOURCE))
 
+  configurations = {
+    "logsearch-properties": {
+    }
+  }
+
+  clusterData = {
+    "cpu": 4,
+    "mapMemory": 3000,
+    "amMemory": 2000,
+    "reduceMemory": 2056,
+    "containers": 3,
+    "ramPerContainer": 256
+  }
+
+  hosts = {
+    "items" : [
+      {
+        "href" : "/api/v1/hosts/c6401.ambari.apache.org",
+        "Hosts" : {
+          "cpu_count" : 1,
+          "host_name" : "c6401.ambari.apache.org",
+          "os_arch" : "x86_64",
+          "os_type" : "centos6",
+          "ph_cpu_count" : 1,
+          "public_host_name" : "c6401.ambari.apache.org",
+          "rack_info" : "/default-rack",
+          "total_mem" : 1922680
+        }
+      }
+    ]
+  }
+
   def setUp(self):
     serviceAdvisorClass = getattr(self.service_advisor_impl, 
'LogSearchServiceAdvisor')
     self.serviceAdvisor = serviceAdvisorClass()
 
   def test_recommendLogsearchConfiguration(self):
-    configurations = {
-      "logsearch-properties": {
-      }
-    }
-
-    clusterData = {
-      "cpu": 4,
-      "mapMemory": 3000,
-      "amMemory": 2000,
-      "reduceMemory": 2056,
-      "containers": 3,
-      "ramPerContainer": 256
-    }
     expected = {
       'logsearch-properties': {
-        'properties': {}
+        'properties': {'logsearch.collection.service.logs.numshards': '4', 
'logsearch.collection.audit.logs.numshards': '4'}, 'property_attributes': 
{'logsearch.collection.service.logs.numshards': {'minimum': '2', 'maximum': 
'20'}, 'logsearch.collection.audit.logs.numshards': {'minimum': '2', 'maximum': 
'20'}}
       },
       'logfeeder-env': {
         'property_attributes': {
@@ -123,25 +139,64 @@ class TestLOGSEARCH050ServiceAdvisor(TestCase):
 
     }
 
-    hosts = {
-      "items" : [
-        {
-          "href" : "/api/v1/hosts/c6401.ambari.apache.org",
-          "Hosts" : {
-            "cpu_count" : 1,
-            "host_name" : "c6401.ambari.apache.org",
-            "os_arch" : "x86_64",
-            "os_type" : "centos6",
-            "ph_cpu_count" : 1,
-            "public_host_name" : "c6401.ambari.apache.org",
-            "rack_info" : "/default-rack",
-            "total_mem" : 1922680
+    def return_c6401_hostname(services, service_name, component_name):
+      return ["c6401.ambari.apache.org", "c6402.ambari.apache.org"]
+    self.serviceAdvisor.getComponentHostNames = return_c6401_hostname
+    
self.serviceAdvisor.getServiceConfigurationRecommendations(self.configurations, 
self.clusterData, services, self.hosts)
+    self.assertEquals(self.configurations, expected)
+
+  def test_recommendLogsearchConfigurationWhenSolrIsExternal(self):
+    expected = {
+      'logsearch-properties': {
+        'properties': {
+          'logsearch.collection.service.logs.numshards': '1',
+          'logsearch.collection.audit.logs.numshards': '1'
+        },
+        'property_attributes': {
+          'logsearch.collection.service.logs.numshards': {'minimum': '1', 
'maximum': '100'},
+          'logsearch.collection.audit.logs.numshards': {'minimum': '1', 
'maximum': '100'}
+        }
+      },
+      'logsearch-env': {
+        'property_attributes': {
+          'logsearch_external_solr_kerberos_principal': {'visible': 'false'},
+          'logsearch_external_solr_kerberos_keytab': {'visible': 'false'}
+        }
+      },
+      'logfeeder-env': {
+        'property_attributes': {
+          'logfeeder_external_solr_kerberos_keytab': {'visible': 'false'},
+          'logfeeder_external_solr_kerberos_principal': {'visible': 'false'}
+        }
+      },
+      'logsearch-common-env': {
+        'properties': {
+          'logsearch_use_external_solr': 'true',
+          'logsearch_external_solr_kerberos_enabled': 'false'
+        },
+        'property_attributes': {
+          'logsearch_external_solr_kerberos_enabled': {'visible': 'false'}
+        }
+      }
+    }
+    services = {
+      "services": [],
+      "configurations": {
+        "logsearch-properties": {
+          "properties": {
+            "logsearch.collection.numshards" : "5",
+            "logsearch.collection.replication.factor": "0"
           }
         }
-      ]
+      },
+      "changed-configurations": [ ]
+
     }
     def return_c6401_hostname(services, service_name, component_name):
-      return ["c6401.ambari.apache.org"]
+      if service_name == "LOGSEARCH" and component_name == "LOGSEARCH_SERVER":
+        return ["c6401.ambari.apache.org"]
+      else:
+        return []
     self.serviceAdvisor.getComponentHostNames = return_c6401_hostname
-    self.serviceAdvisor.getServiceConfigurationRecommendations(configurations, 
clusterData, services, hosts)
-    self.assertEquals(configurations, expected)
+    
self.serviceAdvisor.getServiceConfigurationRecommendations(self.configurations, 
self.clusterData, services, self.hosts)
+    self.assertEquals(self.configurations, expected)

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to