Repository: ambari Updated Branches: refs/heads/trunk e3a50d946 -> dc85e67d7
http://git-wip-us.apache.org/repos/asf/ambari/blob/dc85e67d/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/service_advisor.py ---------------------------------------------------------------------- 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 fc49824..6b29dbc 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 @@ -122,24 +122,19 @@ class LogSearchServiceAdvisor(service_advisor.ServiceAdvisor): logSearchServerHosts = self.getComponentHostNames(services, "LOGSEARCH", "LOGSEARCH_SERVER") # if there is no Log Search server on the cluster, i.e. there is an external server if logSearchServerHosts is None or len(logSearchServerHosts) == 0: - # hide logsearch specific attributes, except for a few which are used by the logfeeders too + # hide logsearch specific attributes for key in services['configurations']['logsearch-env']['properties']: putLogSearchEnvAttribute(key, 'visible', 'false') for key in services['configurations']['logsearch-properties']['properties']: - if key not in ['logsearch.collection.service.logs.numshards', 'logsearch.collection.audit.logs.numshards', - 'logsearch.solr.collection.service.logs', 'logsearch.solr.collection.audit.logs', - 'logsearch.service.logs.split.interval.mins', 'logsearch.audit.logs.split.interval.mins']: - putLogSearchAttribute(key, 'visible', 'false') + putLogSearchAttribute(key, 'visible', 'false') for key in services['configurations']['logsearch-audit_logs-solrconfig']['properties']: self.putPropertyAttribute(configurations, "logsearch-audit_logs-solrconfig")(key, 'visible', 'false') for key in services['configurations']['logsearch-service_logs-solrconfig']['properties']: self.putPropertyAttribute(configurations, "logsearch-service_logs-solrconfig")(key, 'visible', 'false') for key in services['configurations']['logsearch-log4j']['properties']: self.putPropertyAttribute(configurations, "logsearch-log4j")(key, 'visible', 'false') - - # in the abscence of a server we can't provide a good estimation for the number of shards - putLogSearchProperty("logsearch.collection.service.logs.numshards", 2) - putLogSearchProperty("logsearch.collection.audit.logs.numshards", 2) + for key in services['configurations']['logsearch-admin-json']['properties']: + self.putPropertyAttribute(configurations, "logsearch-admin-json")(key, 'visible', 'false') # if there is a Log Search server on the cluster else: infraSolrHosts = self.getComponentHostNames(services, "AMBARI_INFRA", "INFRA_SOLR") @@ -161,17 +156,17 @@ class LogSearchServiceAdvisor(service_advisor.ServiceAdvisor): 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) + # 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) + 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) kerberos_authentication_enabled = self.isSecurityEnabled(services) # if there is no kerberos enabled hide kerberor related properties http://git-wip-us.apache.org/repos/asf/ambari/blob/dc85e67d/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog300Test.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog300Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog300Test.java index d7bdf75..a7417d4 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog300Test.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog300Test.java @@ -331,9 +331,9 @@ public class UpgradeCatalog300Test { Map<String, String> expectedLogFeederLog4j = ImmutableMap.of( "content", "<!DOCTYPE log4j:configuration SYSTEM \"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd\">"); - Config mockLogFeederLog4j = easyMockSupport.createNiceMock(Config.class); - expect(cluster.getDesiredConfigByType("logfeeder-log4j")).andReturn(mockLogFeederLog4j).atLeastOnce(); - expect(mockLogFeederLog4j.getProperties()).andReturn(oldLogFeederLog4j).anyTimes(); + Config logFeederLog4jConf = easyMockSupport.createNiceMock(Config.class); + expect(cluster.getDesiredConfigByType("logfeeder-log4j")).andReturn(logFeederLog4jConf).atLeastOnce(); + expect(logFeederLog4jConf.getProperties()).andReturn(oldLogFeederLog4j).anyTimes(); Capture<Map<String, String>> logFeederLog4jCapture = EasyMock.newCapture(); expect(controller.createConfig(anyObject(Cluster.class), anyObject(StackId.class), anyString(), capture(logFeederLog4jCapture), anyString(), EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once(); @@ -344,45 +344,75 @@ public class UpgradeCatalog300Test { Map<String, String> expectedLogSearchLog4j = ImmutableMap.of( "content", "<!DOCTYPE log4j:configuration SYSTEM \"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd\">"); - Config mockLogSearchLog4j = easyMockSupport.createNiceMock(Config.class); - expect(cluster.getDesiredConfigByType("logsearch-log4j")).andReturn(mockLogSearchLog4j).atLeastOnce(); - expect(mockLogSearchLog4j.getProperties()).andReturn(oldLogSearchLog4j).anyTimes(); + Config logSearchLog4jConf = easyMockSupport.createNiceMock(Config.class); + expect(cluster.getDesiredConfigByType("logsearch-log4j")).andReturn(logSearchLog4jConf).atLeastOnce(); + expect(logSearchLog4jConf.getProperties()).andReturn(oldLogSearchLog4j).anyTimes(); Capture<Map<String, String>> logSearchLog4jCapture = EasyMock.newCapture(); expect(controller.createConfig(anyObject(Cluster.class), anyObject(StackId.class), anyString(), capture(logSearchLog4jCapture), anyString(), EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once(); Map<String, String> oldLogSearchServiceLogsConf = ImmutableMap.of( - "content", "<before/><requestHandler name=\"/admin/\" class=\"solr.admin.AdminHandlers\" /><after/>"); + "content", "<before/><requestHandler name=\"/admin/\" class=\"solr.admin.AdminHandlers\" /><after/>"); Map<String, String> expectedLogSearchServiceLogsConf = ImmutableMap.of( - "content", "<before/><after/>"); + "content", "<before/><after/>"); - Config confLogSearchServiceLogsConf = easyMockSupport.createNiceMock(Config.class); - expect(cluster.getDesiredConfigByType("logsearch-service_logs-solrconfig")).andReturn(confLogSearchServiceLogsConf).atLeastOnce(); - expect(confLogSearchServiceLogsConf.getProperties()).andReturn(oldLogSearchServiceLogsConf).anyTimes(); + Config logSearchServiceLogsConf = easyMockSupport.createNiceMock(Config.class); + expect(cluster.getDesiredConfigByType("logsearch-service_logs-solrconfig")).andReturn(logSearchServiceLogsConf).atLeastOnce(); + expect(logSearchServiceLogsConf.getProperties()).andReturn(oldLogSearchServiceLogsConf).anyTimes(); Capture<Map<String, String>> logSearchServiceLogsConfCapture = EasyMock.newCapture(); expect(controller.createConfig(anyObject(Cluster.class), anyObject(StackId.class), anyString(), capture(logSearchServiceLogsConfCapture), anyString(), - EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once(); + EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once(); Map<String, String> oldLogSearchAuditLogsConf = ImmutableMap.of( - "content", "<before/><requestHandler name=\"/admin/\" class=\"solr.admin.AdminHandlers\" /><after/>"); + "content", "<before/><requestHandler name=\"/admin/\" class=\"solr.admin.AdminHandlers\" /><after/>"); Map<String, String> expectedLogSearchAuditLogsConf = ImmutableMap.of( - "content", "<before/><after/>"); + "content", "<before/><after/>"); - Config confLogSearchAuditLogsConf = easyMockSupport.createNiceMock(Config.class); - expect(cluster.getDesiredConfigByType("logsearch-audit_logs-solrconfig")).andReturn(confLogSearchAuditLogsConf).atLeastOnce(); - expect(confLogSearchAuditLogsConf.getProperties()).andReturn(oldLogSearchAuditLogsConf).anyTimes(); + Config logSearchAuditLogsConf = easyMockSupport.createNiceMock(Config.class); + expect(cluster.getDesiredConfigByType("logsearch-audit_logs-solrconfig")).andReturn(logSearchAuditLogsConf).atLeastOnce(); + expect(logSearchAuditLogsConf.getProperties()).andReturn(oldLogSearchAuditLogsConf).anyTimes(); Capture<Map<String, String>> logSearchAuditLogsConfCapture = EasyMock.newCapture(); expect(controller.createConfig(anyObject(Cluster.class), anyObject(StackId.class), anyString(), capture(logSearchAuditLogsConfCapture), anyString(), - EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once(); + EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once(); + + Map<String, String> oldLogFeederOutputConf = ImmutableMap.of( + "content", + " \"zk_connect_string\":\"{{logsearch_solr_zk_quorum}}{{logsearch_solr_zk_znode}}\",\n" + + " \"collection\":\"{{logsearch_solr_collection_service_logs}}\",\n" + + " \"number_of_shards\": \"{{logsearch_collection_service_logs_numshards}}\",\n" + + " \"splits_interval_mins\": \"{{logsearch_service_logs_split_interval_mins}}\",\n" + + "\n" + + " \"zk_connect_string\":\"{{logsearch_solr_zk_quorum}}{{logsearch_solr_zk_znode}}\",\n" + + " \"collection\":\"{{logsearch_solr_collection_audit_logs}}\",\n" + + " \"number_of_shards\": \"{{logsearch_collection_audit_logs_numshards}}\",\n" + + " \"splits_interval_mins\": \"{{logsearch_audit_logs_split_interval_mins}}\",\n" + ); + + Map<String, String> expectedLogFeederOutputConf = ImmutableMap.of( + "content", + " \"zk_connect_string\":\"{{logsearch_solr_zk_quorum}}{{logsearch_solr_zk_znode}}\",\n" + + " \"type\": \"service\",\n" + + "\n" + + " \"zk_connect_string\":\"{{logsearch_solr_zk_quorum}}{{logsearch_solr_zk_znode}}\",\n" + + " \"type\": \"audit\",\n" + ); + + Config logFeederOutputConf = easyMockSupport.createNiceMock(Config.class); + expect(cluster.getDesiredConfigByType("logfeeder-output-config")).andReturn(logFeederOutputConf).atLeastOnce(); + expect(logFeederOutputConf.getProperties()).andReturn(oldLogFeederOutputConf).anyTimes(); + Capture<Map<String, String>> logFeederOutputConfCapture = EasyMock.newCapture(); + expect(controller.createConfig(anyObject(Cluster.class), anyObject(StackId.class), anyString(), capture(logFeederOutputConfCapture), anyString(), + EasyMock.<Map<String, Map<String, String>>>anyObject())).andReturn(config).once(); replay(clusters, cluster); replay(controller, injector2); replay(confSomethingElse1, confSomethingElse2, confLogSearchConf1, confLogSearchConf2); replay(logSearchPropertiesConf, logFeederPropertiesConf); - replay(mockLogFeederLog4j, mockLogSearchLog4j); - replay(confLogSearchServiceLogsConf, confLogSearchAuditLogsConf); + replay(logFeederLog4jConf, logSearchLog4jConf); + replay(logSearchServiceLogsConf, logSearchAuditLogsConf); + replay(logFeederOutputConf); new UpgradeCatalog300(injector2).updateLogSearchConfigs(); easyMockSupport.verifyAll(); @@ -409,5 +439,8 @@ public class UpgradeCatalog300Test { Map<String, String> updatedAuditLogsConf = logSearchAuditLogsConfCapture.getValue(); assertTrue(Maps.difference(expectedLogSearchAuditLogsConf, updatedAuditLogsConf).areEqual()); + + Map<String, String> updatedLogFeederOutputConf = logFeederOutputConfCapture.getValue(); + assertTrue(Maps.difference(expectedLogFeederOutputConf, updatedLogFeederOutputConf).areEqual()); } }