Repository: ambari
Updated Branches:
  refs/heads/trunk 84c3e7f06 -> 41aa24740


AMBARI-16381. Support LOGSEARCH starting HDP-2.2 (Miklos Gergely via oleewere)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3861add9
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3861add9
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3861add9

Branch: refs/heads/trunk
Commit: 3861add9b8ceaceb94d019dfcf97db43da2567ac
Parents: 84c3e7f
Author: oleewere <oleew...@gmail.com>
Authored: Wed May 11 15:44:27 2016 +0200
Committer: oleewere <oleew...@gmail.com>
Committed: Wed May 11 15:44:27 2016 +0200

----------------------------------------------------------------------
 .../server/controller/StackVersionResponse.java | 12 ++---
 .../ambari/server/stack/ComponentModule.java    | 56 +++++++++++++++-----
 .../server/stack/ConfigurationDirectory.java    |  4 +-
 .../ambari/server/stack/ConfigurationInfo.java  |  8 +--
 .../server/stack/ConfigurationModule.java       | 18 +++----
 .../stack/QuickLinksConfigurationModule.java    |  8 +--
 .../ambari/server/stack/ServiceDirectory.java   |  2 +-
 .../ambari/server/stack/ServiceModule.java      | 23 +++++---
 .../ambari/server/stack/StackDirectory.java     |  4 +-
 .../ambari/server/stack/StackManager.java       |  2 +-
 .../apache/ambari/server/stack/StackModule.java | 40 +++++++-------
 .../apache/ambari/server/stack/ThemeModule.java |  8 +--
 .../apache/ambari/server/stack/Validable.java   |  4 +-
 .../apache/ambari/server/state/ServiceInfo.java | 12 ++---
 .../apache/ambari/server/state/StackInfo.java   |  8 +--
 .../server/state/stack/ConfigurationXml.java    |  9 ++--
 .../server/state/stack/RepositoryXml.java       |  8 +--
 .../server/state/stack/ServiceMetainfoXml.java  |  8 +--
 .../server/state/stack/StackMetainfoXml.java    |  8 +--
 .../HDP/2.2/services/LOGSEARCH/metainfo.xml     | 26 +++++++++
 .../services/LOGSEARCH/role_command_order.json  |  8 +++
 .../stacks/HDP/2.2/services/stack_advisor.py    | 27 +++++++++-
 .../HDP/2.3.ECS/services/HBASE/metainfo.xml     |  6 ---
 .../HDP/2.3.ECS/services/YARN/metainfo.xml      | 30 -----------
 .../HDP/2.3/services/LOGSEARCH/metainfo.xml     | 26 ---------
 .../services/LOGSEARCH/role_command_order.json  |  8 ---
 .../stacks/HDP/2.3/services/stack_advisor.py    | 27 +---------
 .../stacks/HDP/2.5/services/ATLAS/metainfo.xml  |  6 ---
 .../stacks/HDP/2.5/services/HIVE/metainfo.xml   |  6 ---
 .../ambari/server/stack/ServiceModuleTest.java  |  2 +-
 30 files changed, 202 insertions(+), 212 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/controller/StackVersionResponse.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackVersionResponse.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackVersionResponse.java
index b14826a..53414e7 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/StackVersionResponse.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/StackVersionResponse.java
@@ -76,7 +76,7 @@ public class StackVersionResponse implements Validable{
                               Map<String, Map<String, Map<String, String>>> 
configTypes,
                               File stackKerberosDescriptorFile,
                               Collection<File> serviceKerberosDescriptorFiles,
-                              Set<String> upgradePacks, boolean valid, 
Collection errorSet, String minJdk, String maxJdk) {
+                              Set<String> upgradePacks, boolean valid, 
Collection<String> errorSet, String minJdk, String maxJdk) {
     setStackVersion(stackVersion);
     setMinUpgradeVersion(minUpgradeVersion);
     setActive(active);
@@ -86,7 +86,7 @@ public class StackVersionResponse implements Validable{
     setServiceKerberosDescriptorFiles(serviceKerberosDescriptorFiles);
     setUpgradePacks(upgradePacks);
     setValid(valid);
-    setErrors(errorSet);
+    addErrors(errorSet);
     setMinJdk(minJdk);
     setMaxJdk(maxJdk);
   }
@@ -104,18 +104,18 @@ public class StackVersionResponse implements Validable{
   private Set<String> errorSet = new HashSet<String>();
   
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   }   
 
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
   }  
   
   public String getStackName() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
index 7a76684..65da145 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ComponentModule.java
@@ -21,6 +21,9 @@ package org.apache.ambari.server.stack;
 import org.apache.ambari.server.state.ComponentInfo;
 import org.apache.ambari.server.state.CustomCommandDefinition;
 import org.apache.ambari.server.state.DependencyInfo;
+import org.apache.ambari.server.state.LogDefinition;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
 
 import java.util.Collection;
 import java.util.HashSet;
@@ -43,7 +46,8 @@ public class ComponentModule extends 
BaseModule<ComponentModule, ComponentInfo>
    */
   protected boolean valid = true;
 
-          
+  private Set<String> errorSet = new HashSet<String>();
+
   /**
    * Constructor.
    *
@@ -59,7 +63,7 @@ public class ComponentModule extends 
BaseModule<ComponentModule, ComponentInfo>
       ComponentInfo parentInfo = parent.getModuleInfo();
       if (!parent.isValid()) {
         setValid(false);
-        setErrors(parent.getErrors());
+        addErrors(parent.getErrors());
       }
 
       if (componentInfo.getCommandScript() == null) {
@@ -85,7 +89,7 @@ public class ComponentModule extends 
BaseModule<ComponentModule, ComponentInfo>
       }
       componentInfo.setVersionAdvertised(parentInfo.isVersionAdvertised());
 
-      if(componentInfo.getDecommissionAllowed() == null) {
+      if (componentInfo.getDecommissionAllowed() == null) {
         
componentInfo.setDecommissionAllowed(parentInfo.getDecommissionAllowed());
       }
 
@@ -95,11 +99,11 @@ public class ComponentModule extends 
BaseModule<ComponentModule, ComponentInfo>
 
       componentInfo.setRecoveryEnabled(parentInfo.isRecoveryEnabled());
 
-      if(componentInfo.getBulkCommandDefinition() == null){
+      if (componentInfo.getBulkCommandDefinition() == null){
         componentInfo.setBulkCommands(parentInfo.getBulkCommandDefinition());
       }
 
-      if(componentInfo.getReassignAllowed() == null) {
+      if (componentInfo.getReassignAllowed() == null) {
         componentInfo.setReassignAllowed(parentInfo.getReassignAllowed());
       }
 
@@ -108,6 +112,8 @@ public class ComponentModule extends 
BaseModule<ComponentModule, ComponentInfo>
 
       mergeCustomCommands(parentInfo.getCustomCommands(),
               componentInfo.getCustomCommands());
+
+      mergeLogs(parentInfo.getLogs(), componentInfo.getLogs());
     }
   }
 
@@ -177,6 +183,29 @@ public class ComponentModule extends 
BaseModule<ComponentModule, ComponentInfo>
     }
   }
 
+  /**
+   * Merge logs.
+   * Child logs override a parent log of the same log id.
+   *
+   * @param parentLogs  parent logs
+   * @param childLogs   child logs
+   */
+  //todo: currently there is no way to remove an inherited log
+  private void mergeLogs(List<LogDefinition> parentLogs, List<LogDefinition> 
childLogs) {
+    Collection<String> existingLogIds = new HashSet<String>();
+
+    for (LogDefinition childLog : childLogs) {
+      existingLogIds.add(childLog.getLogId());
+    }
+    if (parentLogs != null) {
+      for (LogDefinition parentLog : parentLogs) {
+        if (! existingLogIds.contains(parentLog.getLogId())) {
+          childLogs.add(parentLog);
+        }
+      }
+    }
+  }
+
   @Override
   public boolean isValid() {
     return valid;
@@ -187,20 +216,23 @@ public class ComponentModule extends 
BaseModule<ComponentModule, ComponentInfo>
     this.valid = valid;
   }
 
-  private Set<String> errorSet = new HashSet<String>();
-  
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   }
   
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
-  }  
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
+  }
+
+  @Override
+  public String toString() {
+    return ToStringBuilder.reflectionToString(this, 
ToStringStyle.MULTI_LINE_STYLE);
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationDirectory.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationDirectory.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationDirectory.java
index f40f19e..44cdf2b 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationDirectory.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationDirectory.java
@@ -114,11 +114,11 @@ public class ConfigurationDirectory extends 
StackDefinitionDirectory {
             }
             config = new ConfigurationXml();
             config.setValid(false);
-            config.setErrors(error);
+            config.addError(error);
             ConfigurationInfo configInfo = new 
ConfigurationInfo(parseProperties(config,
                 configFile.getName()), parseAttributes(config));
             configInfo.setValid(false);
-            configInfo.setErrors(error);
+            configInfo.addError(error);
             ConfigurationModule module = new ConfigurationModule(configType, 
configInfo);
             configurationModules.put(configType, module);
           }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationInfo.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationInfo.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationInfo.java
index d00b135..dcb1c99 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationInfo.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationInfo.java
@@ -132,18 +132,18 @@ public class ConfigurationInfo implements Validable{
   private Set<String> errorSet = new HashSet<String>();
   
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   }   
 
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
   }  
   
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationModule.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationModule.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationModule.java
index 70f2547..de5147d 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationModule.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ConfigurationModule.java
@@ -57,12 +57,12 @@ public class ConfigurationModule extends 
BaseModule<ConfigurationModule, Configu
   private Set<String> errorSet = new HashSet<String>();
   
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   }   
   
@@ -77,7 +77,7 @@ public class ConfigurationModule extends 
BaseModule<ConfigurationModule, Configu
     this.info = info;
     if (info != null && !info.isValid()){
       setValid(info.isValid());
-      setErrors(info.getErrors());
+      addErrors(info.getErrors());
     }
   }
 
@@ -89,10 +89,10 @@ public class ConfigurationModule extends 
BaseModule<ConfigurationModule, Configu
         if (!parent.isValid() || !parent.info.isValid()) {
           setValid(false);
           info.setValid(false);
-          setErrors(parent.getErrors());
-          setErrors(parent.info.getErrors());
-          info.setErrors(parent.getErrors());
-          info.setErrors(parent.info.getErrors());
+          addErrors(parent.getErrors());
+          addErrors(parent.info.getErrors());
+          info.addErrors(parent.getErrors());
+          info.addErrors(parent.info.getErrors());
         }
       }
 
@@ -213,7 +213,7 @@ public class ConfigurationModule extends 
BaseModule<ConfigurationModule, Configu
   }
 
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
   }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/QuickLinksConfigurationModule.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/QuickLinksConfigurationModule.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/QuickLinksConfigurationModule.java
index f5e670d..84da70e 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/QuickLinksConfigurationModule.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/QuickLinksConfigurationModule.java
@@ -73,7 +73,7 @@ public class QuickLinksConfigurationModule extends 
BaseModule<QuickLinksConfigur
         String errorMessage = String.format("Unable to parse quicklinks 
configuration file %s", quickLinksConfigurationFile.getAbsolutePath());
         LOG.error(errorMessage,  e);
         setValid(false);
-        setErrors(errorMessage);
+        addError(errorMessage);
       }
     }
   }
@@ -123,13 +123,13 @@ public class QuickLinksConfigurationModule extends 
BaseModule<QuickLinksConfigur
   }
 
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errors.add(error);
   }
 
   @Override
-  public void setErrors(Collection<String> error) {
-    errors.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    errors.addAll(errors);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
index a29725b..8a7b42b 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceDirectory.java
@@ -241,7 +241,7 @@ public abstract class ServiceDirectory extends 
StackDefinitionDirectory {
       metaInfoXml = new ServiceMetainfoXml();
       metaInfoXml.setValid(false);
       String msg = String.format("Unable to parse service metainfo.xml file 
'%s' ", f.getAbsolutePath());
-      metaInfoXml.setErrors(msg);
+      metaInfoXml.addError(msg);
       LOG.warn(msg, e);
       
metaInfoXml.setSchemaVersion(getAbsolutePath().replace(f.getParentFile().getParentFile().getParent()+File.separator,
 ""));
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceModule.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceModule.java 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceModule.java
index 89f74e1..f781574 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceModule.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ServiceModule.java
@@ -19,7 +19,6 @@
 package org.apache.ambari.server.stack;
 
 import com.google.common.base.Function;
-import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
@@ -35,6 +34,8 @@ import org.apache.ambari.server.state.ServiceInfo;
 import org.apache.ambari.server.state.ServicePropertyInfo;
 import org.apache.ambari.server.state.ThemeInfo;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
 
 import javax.annotation.Nullable;
 
@@ -364,8 +365,8 @@ public class ServiceModule extends 
BaseModule<ServiceModule, ServiceInfo> implem
           if (isValid()){
             setValid(config.isValid() && info.isValid());
             if (!isValid()){
-              setErrors(config.getErrors());
-              setErrors(info.getErrors());
+              addErrors(config.getErrors());
+              addErrors(info.getErrors());
             }
           }
           serviceInfo.getProperties().addAll(info.getProperties());
@@ -594,25 +595,31 @@ public class ServiceModule extends 
BaseModule<ServiceModule, ServiceInfo> implem
   private Set<String> errorSet = new HashSet<String>();
 
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   }
 
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
   }
 
 
   private void validateServiceInfo() {
     if (!serviceInfo.isValid()) {
       setValid(false);
-      setErrors(serviceInfo.getErrors());
+      addErrors(serviceInfo.getErrors());
     }
   }
+  
+
+  @Override
+  public String toString() {
+    return ToStringBuilder.reflectionToString(this, 
ToStringStyle.MULTI_LINE_STYLE);
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
index c552e41..13d5047 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDirectory.java
@@ -339,7 +339,7 @@ public class StackDirectory extends 
StackDefinitionDirectory {
           repoFile.setValid(false);
           String msg = "Unable to parse repo file at location: " +
                        repositoryFile.getAbsolutePath();
-          repoFile.setErrors(msg);
+          repoFile.addError(msg);
           LOG.warn(msg);
         }
       }
@@ -375,7 +375,7 @@ public class StackDirectory extends 
StackDefinitionDirectory {
         metaInfoXml.setValid(false);
         String msg = "Unable to parse stack metainfo.xml file at location: " +
                      stackMetaInfoFile.getAbsolutePath();
-        metaInfoXml.setErrors(msg);
+        metaInfoXml.addError(msg);
         LOG.warn(msg);
       }
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java
index 2a5e75b..8a352bd 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java
@@ -311,7 +311,7 @@ public class StackManager {
             } else {
               ServiceModule serviceModule = new ServiceModule(stackContext, 
new ServiceInfo(), serviceDirectory, true);
               serviceModule.setValid(false);
-              serviceModule.setErrors(metaInfoXml.getErrors());
+              serviceModule.addErrors(metaInfoXml.getErrors());
               commonServiceModules.put(metaInfoXml.getSchemaVersion(), 
serviceModule);
               metaInfoXml.setSchemaVersion(null);
             }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
index 7674a2b..6129ec0 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
@@ -333,16 +333,16 @@ public class StackModule extends BaseModule<StackModule, 
StackInfo> implements V
       stackInfo.setValid(false);
       String error = "The service '" + serviceInfo.getName() + "' in stack '" 
+ stackInfo.getName() + ":"
           + stackInfo.getVersion() + "' extends a non-existent service: '" + 
parent + "'";
-      setErrors(error);
-      stackInfo.setErrors(error);
+      addError(error);
+      stackInfo.addError(error);
     } else {
       if (baseService.isValid()) {
         service.resolveExplicit(baseService, allStacks, commonServices);
       } else {
         setValid(false);
         stackInfo.setValid(false);
-        setErrors(baseService.getErrors());
-        stackInfo.setErrors(baseService.getErrors());
+        addErrors(baseService.getErrors());
+        stackInfo.addErrors(baseService.getErrors());
       }
     }
   }
@@ -408,7 +408,7 @@ public class StackModule extends BaseModule<StackModule, 
StackInfo> implements V
     if (smx != null) {
       if (!smx.isValid()) {
         stackInfo.setValid(false);
-        stackInfo.setErrors(smx.getErrors());
+        stackInfo.addErrors(smx.getErrors());
       }
       stackInfo.setMinJdk(smx.getMinJdk());
       stackInfo.setMaxJdk(smx.getMaxJdk());
@@ -431,13 +431,13 @@ public class StackModule extends BaseModule<StackModule, 
StackInfo> implements V
       RepositoryXml rxml = stackDirectory.getRepoFile();
       if (rxml != null && !rxml.isValid()) {
         stackInfo.setValid(false);
-        stackInfo.setErrors(rxml.getErrors());
+        stackInfo.addErrors(rxml.getErrors());
       }
       // Read the service and available configs for this stack
       populateServices();
       if (!stackInfo.isValid()) {
         setValid(false);
-        setErrors(stackInfo.getErrors());
+        addErrors(stackInfo.getErrors());
       }
 
       //todo: shouldn't blindly catch Exception, re-evaluate this.
@@ -446,8 +446,8 @@ public class StackModule extends BaseModule<StackModule, 
StackInfo> implements V
           stackInfo.getName() + "-" + stackInfo.getVersion();
       setValid(false);
       stackInfo.setValid(false);
-      setErrors(error);
-      stackInfo.setErrors(error);
+      addError(error);
+      stackInfo.addError(error);
       LOG.error(error);
     }
   }
@@ -474,8 +474,8 @@ public class StackModule extends BaseModule<StackModule, 
StackInfo> implements V
     if (!metaInfoXml.isValid()){
       stackInfo.setValid(metaInfoXml.isValid());
       setValid(metaInfoXml.isValid());
-      stackInfo.setErrors(metaInfoXml.getErrors());
-      setErrors(metaInfoXml.getErrors());
+      stackInfo.addErrors(metaInfoXml.getErrors());
+      addErrors(metaInfoXml.getErrors());
       return;
     }
     List<ServiceInfo> serviceInfos = metaInfoXml.getServices();
@@ -486,8 +486,8 @@ public class StackModule extends BaseModule<StackModule, 
StackInfo> implements V
       if (!serviceModule.isValid()){
         stackInfo.setValid(false);
         setValid(false);
-        stackInfo.setErrors(serviceModule.getErrors());
-        setErrors(serviceModule.getErrors());
+        stackInfo.addErrors(serviceModule.getErrors());
+        addErrors(serviceModule.getErrors());
       }
     }
     addServices(serviceModules);
@@ -505,7 +505,7 @@ public class StackModule extends BaseModule<StackModule, 
StackInfo> implements V
       for (ConfigurationModule config : 
configDirectory.getConfigurationModules()) {
         if (stackInfo.isValid()){
           stackInfo.setValid(config.isValid());
-          stackInfo.setErrors(config.getErrors());
+          stackInfo.addErrors(config.getErrors());
         }
         
stackInfo.getProperties().addAll(config.getModuleInfo().getProperties());
         stackInfo.setConfigTypeAttributes(config.getConfigType(), 
config.getModuleInfo().getAttributes());
@@ -556,8 +556,8 @@ public class StackModule extends BaseModule<StackModule, 
StackInfo> implements V
     if (!stackToBeResolved.isValid() || (stackToBeResolved.getModuleInfo() != 
null && !stackToBeResolved.getModuleInfo().isValid())) {
       setValid(stackToBeResolved.isValid());
       stackInfo.setValid(stackToBeResolved.stackInfo.isValid());
-      setErrors(stackToBeResolved.getErrors());
-      stackInfo.setErrors(stackToBeResolved.getErrors());
+      addErrors(stackToBeResolved.getErrors());
+      stackInfo.addErrors(stackToBeResolved.getErrors());
     }
   }
 
@@ -721,18 +721,18 @@ public class StackModule extends BaseModule<StackModule, 
StackInfo> implements V
   private Set<String> errorSet = new HashSet<String>();
 
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   }
 
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/ThemeModule.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ThemeModule.java 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ThemeModule.java
index 85ce252..d8f50c6 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/ThemeModule.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/ThemeModule.java
@@ -72,7 +72,7 @@ public class ThemeModule extends BaseModule<ThemeModule, 
ThemeInfo> implements V
       } catch (IOException e) {
         LOG.error("Unable to parse theme file ", e);
         setValid(false);
-        setErrors("Unable to parse theme file " + themeFile);
+        addError("Unable to parse theme file " + themeFile);
       }
     }
   }
@@ -122,13 +122,13 @@ public class ThemeModule extends BaseModule<ThemeModule, 
ThemeInfo> implements V
   }
 
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errors.add(error);
   }
 
   @Override
-  public void setErrors(Collection<String> error) {
-    errors.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    errors.addAll(errors);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/stack/Validable.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/stack/Validable.java 
b/ambari-server/src/main/java/org/apache/ambari/server/stack/Validable.java
index 6b75eda..0a557b4 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/Validable.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/Validable.java
@@ -38,9 +38,9 @@ public interface Validable {
    */
   public void setValid(boolean valid);
   
-  public void setErrors(String error);
+  public void addError(String error);
   
-  public void setErrors(Collection<String> error);
+  public void addErrors(Collection<String> errors);
   
   public Collection<String> getErrors();
   

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java
index a250b89..43cefb9 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceInfo.java
@@ -179,18 +179,18 @@ public class ServiceInfo implements Validable{
   private Set<String> errorSet = new HashSet<String>();
 
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   }
 
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
   }
   /**
    * Internal list of os-specific details (loaded from xml). Added at schema 
ver 2
@@ -921,7 +921,7 @@ public String getVersion() {
     for (String propertyName: servicePropsByName.keySet()) {
       if (servicePropsByName.get(propertyName).size() > 1) {
         setValid(false);
-        setErrors("Duplicate service property with name '" + propertyName + "' 
found in " + getName() + ":" + getVersion() + " service definition !");
+        addError("Duplicate service property with name '" + propertyName + "' 
found in " + getName() + ":" + getVersion() + " service definition !");
       }
     }
 
@@ -933,7 +933,7 @@ public String getVersion() {
 
       if (primaryLogs > 1) {
         setValid(false);
-        setErrors("More than one primary log exists for the component " + 
component.getName());
+        addError("More than one primary log exists for the component " + 
component.getName());
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java 
b/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
index ad4c8b4..9fb6106 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
@@ -108,18 +108,18 @@ public class StackInfo implements Comparable<StackInfo>, 
Validable{
   private Set<String> errorSet = new HashSet<String>();
 
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   }
 
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
   }
 
   public String getName() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/state/stack/ConfigurationXml.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/ConfigurationXml.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/ConfigurationXml.java
index ca33601..4e0b769 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/ConfigurationXml.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/ConfigurationXml.java
@@ -26,7 +26,6 @@ import java.util.Map;
 import java.util.Set;
 
 import javax.xml.bind.annotation.XmlAnyAttribute;
-import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
@@ -72,18 +71,18 @@ public class ConfigurationXml implements Validable{
   private Set<String> errorSet = new HashSet<String>();
   
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   }   
  
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
   }  
   
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/state/stack/RepositoryXml.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/RepositoryXml.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/RepositoryXml.java
index f57b936..69eb39d 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/RepositoryXml.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/RepositoryXml.java
@@ -70,18 +70,18 @@ public class RepositoryXml implements Validable{
   private Set<String> errorSet = new HashSet<String>();
 
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   }
 
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/state/stack/ServiceMetainfoXml.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/ServiceMetainfoXml.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/ServiceMetainfoXml.java
index 56dac8a..418c389 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/ServiceMetainfoXml.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/ServiceMetainfoXml.java
@@ -66,18 +66,18 @@ public class ServiceMetainfoXml implements Validable{
   private Set<String> errorSet = new HashSet<String>();
   
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   } 
 
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
   }  
   
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/java/org/apache/ambari/server/state/stack/StackMetainfoXml.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/StackMetainfoXml.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/StackMetainfoXml.java
index 5f202ba..b91fc8b 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/StackMetainfoXml.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/StackMetainfoXml.java
@@ -79,18 +79,18 @@ public class StackMetainfoXml implements Validable{
   private Set<String> errorSet = new HashSet<String>();
   
   @Override
-  public void setErrors(String error) {
+  public void addError(String error) {
     errorSet.add(error);
   }
 
   @Override
-  public Collection getErrors() {
+  public Collection<String> getErrors() {
     return errorSet;
   }   
 
   @Override
-  public void setErrors(Collection error) {
-    this.errorSet.addAll(error);
+  public void addErrors(Collection<String> errors) {
+    this.errorSet.addAll(errors);
   }
   
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/resources/stacks/HDP/2.2/services/LOGSEARCH/metainfo.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.2/services/LOGSEARCH/metainfo.xml
 
b/ambari-server/src/main/resources/stacks/HDP/2.2/services/LOGSEARCH/metainfo.xml
new file mode 100644
index 0000000..df697dc
--- /dev/null
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.2/services/LOGSEARCH/metainfo.xml
@@ -0,0 +1,26 @@
+<?xml version="1.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.
+-->
+<metainfo>
+  <schemaVersion>2.0</schemaVersion>
+  <services>
+    <service>
+      <name>LOGSEARCH</name>
+      <extends>common-services/LOGSEARCH/0.5.0</extends>
+    </service>
+  </services>
+</metainfo>

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/resources/stacks/HDP/2.2/services/LOGSEARCH/role_command_order.json
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.2/services/LOGSEARCH/role_command_order.json
 
b/ambari-server/src/main/resources/stacks/HDP/2.2/services/LOGSEARCH/role_command_order.json
new file mode 100755
index 0000000..4e6c6cd
--- /dev/null
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.2/services/LOGSEARCH/role_command_order.json
@@ -0,0 +1,8 @@
+{
+  "general_deps" : {
+    "_comment" : "dependencies for logsearch",
+    "LOGSEARCH_SOLR-START" : ["ZOOKEEPER_SERVER-START"],
+    "LOGSEARCH_SERVER-START": ["LOGSEARCH_SOLR-START"],
+    "LOGSEARCH_LOGFEEDER-START": ["LOGSEARCH_SOLR-START", 
"LOGSEARCH_SERVER-START"]
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py 
b/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
index 61fc1f0..03e8150 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/stack_advisor.py
@@ -40,7 +40,8 @@ class HDP22StackAdvisor(HDP21StackAdvisor):
       "YARN": self.recommendYARNConfigurations,
       "STORM": self.recommendStormConfigurations,
       "KNOX": self.recommendKnoxConfigurations,
-      "RANGER": self.recommendRangerConfigurations
+      "RANGER": self.recommendRangerConfigurations,
+      "LOGSEARCH" : self.recommendLogsearchConfigurations
     }
     parentRecommendConfDict.update(childRecommendConfDict)
     return parentRecommendConfDict
@@ -944,6 +945,30 @@ class HDP22StackAdvisor(HDP21StackAdvisor):
     self.mergeValidators(parentValidators, childValidators)
     return parentValidators
 
+  def recommendLogsearchConfigurations(self, configurations, clusterData, 
services, hosts):
+    putLogsearchProperty = self.putProperty(configurations, 
"logsearch-properties", services)
+    logsearchSolrHosts = self.getComponentHostNames(services, "LOGSEARCH", 
"LOGSEARCH_SOLR")
+
+    if logsearchSolrHosts is not None and len(logsearchSolrHosts) > 0 \
+      and "logsearch-properties" in services["configurations"]:
+      recommendedMinShards = len(logsearchSolrHosts)
+      recommendedShards = 2 * len(logsearchSolrHosts)
+      recommendedMaxShards = 3 * len(logsearchSolrHosts)
+      # recommend number of shard
+      putLogsearchAttribute = self.putPropertyAttribute(configurations, 
"logsearch-properties")
+      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
+      replicationReccomendFloat = math.log(len(logsearchSolrHosts), 5)
+      recommendedReplicationFactor = int(1 + 
math.floor(replicationReccomendFloat))
+      
putLogsearchProperty("logsearch.collection.service.logs.replication.factor", 
recommendedReplicationFactor)
+      
putLogsearchProperty("logsearch.collection.audit.logs.replication.factor", 
recommendedReplicationFactor)
+
   def validateTezConfigurations(self, properties, recommendedDefaults, 
configurations, services, hosts):
     validationItems = [ {"config-name": 'tez.am.resource.memory.mb', "item": 
self.validatorLessThenDefaultValue(properties, recommendedDefaults, 
'tez.am.resource.memory.mb')},
                         {"config-name": 'tez.task.resource.memory.mb', "item": 
self.validatorLessThenDefaultValue(properties, recommendedDefaults, 
'tez.task.resource.memory.mb')},

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/HBASE/metainfo.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/HBASE/metainfo.xml
 
b/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/HBASE/metainfo.xml
index f45a44a..16fb847 100644
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/HBASE/metainfo.xml
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/HBASE/metainfo.xml
@@ -29,12 +29,6 @@
           <cardinality>1+</cardinality>
           <versionAdvertised>true</versionAdvertised>
           <timelineAppid>HBASE</timelineAppid>
-          <logs>
-            <log>
-              <logId>hbase_master</logId>
-              <primary>true</primary>
-            </log>
-          </logs>
           <dependencies>
             <dependency>
               <name>ECS/ECS_CLIENT</name>

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/YARN/metainfo.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/YARN/metainfo.xml
 
b/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/YARN/metainfo.xml
index 556a6cc..d487a27 100644
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/YARN/metainfo.xml
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/YARN/metainfo.xml
@@ -34,12 +34,6 @@
           <category>SLAVE</category>
           <cardinality>1+</cardinality>
           <versionAdvertised>true</versionAdvertised>
-          <logs>
-            <log>
-              <logId>yarn_nodemanager</logId>
-              <primary>true</primary>
-            </log>
-          </logs>
           <dependencies>
             <dependency>
               <name>ECS/ECS_CLIENT</name>
@@ -62,12 +56,6 @@
           <displayName>App Timeline Server</displayName>
           <category>MASTER</category>
           <cardinality>0-1</cardinality>
-          <logs>
-            <log>
-              <logId>yarn_timelineserver</logId>
-              <primary>true</primary>
-            </log>
-          </logs>
           <dependencies>
             <dependency>
               <name>ECS/ECS_CLIENT</name>
@@ -82,18 +70,6 @@
           <name>RESOURCEMANAGER</name>
           <category>MASTER</category>
           <cardinality>1-2</cardinality>
-          <logs>
-            <log>
-              <logId>yarn_resourcemanager</logId>
-              <primary>true</primary>
-            </log>
-            <log>
-              <logId>yarn_historyserver</logId>
-            </log>
-            <log>
-              <logId>yarn_jobsummary</logId>
-            </log>
-          </logs>
           <dependencies>
             <dependency>
                <name>TEZ/TEZ_CLIENT</name>
@@ -131,12 +107,6 @@
             <enabled>true</enabled>
             <co-locate>YARN/RESOURCEMANAGER</co-locate>
           </auto-deploy>
-          <logs>
-            <log>
-              <logId>mapred_historyserver</logId>
-              <primary>true</primary>
-            </log>
-          </logs>
           <dependencies>
             <dependency>
               <name>ECS/ECS_CLIENT</name>

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/resources/stacks/HDP/2.3/services/LOGSEARCH/metainfo.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.3/services/LOGSEARCH/metainfo.xml
 
b/ambari-server/src/main/resources/stacks/HDP/2.3/services/LOGSEARCH/metainfo.xml
deleted file mode 100644
index df697dc..0000000
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.3/services/LOGSEARCH/metainfo.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.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.
--->
-<metainfo>
-  <schemaVersion>2.0</schemaVersion>
-  <services>
-    <service>
-      <name>LOGSEARCH</name>
-      <extends>common-services/LOGSEARCH/0.5.0</extends>
-    </service>
-  </services>
-</metainfo>

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/resources/stacks/HDP/2.3/services/LOGSEARCH/role_command_order.json
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.3/services/LOGSEARCH/role_command_order.json
 
b/ambari-server/src/main/resources/stacks/HDP/2.3/services/LOGSEARCH/role_command_order.json
deleted file mode 100755
index 4e6c6cd..0000000
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.3/services/LOGSEARCH/role_command_order.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "general_deps" : {
-    "_comment" : "dependencies for logsearch",
-    "LOGSEARCH_SOLR-START" : ["ZOOKEEPER_SERVER-START"],
-    "LOGSEARCH_SERVER-START": ["LOGSEARCH_SOLR-START"],
-    "LOGSEARCH_LOGFEEDER-START": ["LOGSEARCH_SOLR-START", 
"LOGSEARCH_SERVER-START"]
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py 
b/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
index 36d6e9f..188479e 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/services/stack_advisor.py
@@ -72,8 +72,7 @@ class HDP23StackAdvisor(HDP22StackAdvisor):
       "RANGER_KMS": self.recommendRangerKMSConfigurations,
       "FALCON": self.recommendFalconConfigurations,
       "STORM": self.recommendStormConfigurations,
-      "SQOOP": self.recommendSqoopConfigurations,
-      "LOGSEARCH" : self.recommendLogsearchConfigurations
+      "SQOOP": self.recommendSqoopConfigurations
     }
     parentRecommendConfDict.update(childRecommendConfDict)
     return parentRecommendConfDict
@@ -684,30 +683,6 @@ class HDP23StackAdvisor(HDP22StackAdvisor):
         application_services_value = " "
     putFalconStartupProperty(application_services_property, 
application_services_value)
 
-  def recommendLogsearchConfigurations(self, configurations, clusterData, 
services, hosts):
-    putLogsearchProperty = self.putProperty(configurations, 
"logsearch-properties", services)
-    logsearchSolrHosts = self.getComponentHostNames(services, "LOGSEARCH", 
"LOGSEARCH_SOLR")
-
-    if logsearchSolrHosts is not None and len(logsearchSolrHosts) > 0 \
-      and "logsearch-properties" in services["configurations"]:
-      recommendedMinShards = len(logsearchSolrHosts)
-      recommendedShards = 2 * len(logsearchSolrHosts)
-      recommendedMaxShards = 3 * len(logsearchSolrHosts)
-      # recommend number of shard
-      putLogsearchAttribute = self.putPropertyAttribute(configurations, 
"logsearch-properties")
-      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
-      replicationReccomendFloat = math.log(len(logsearchSolrHosts), 5)
-      recommendedReplicationFactor = int(1 + 
math.floor(replicationReccomendFloat))
-      
putLogsearchProperty("logsearch.collection.service.logs.replication.factor", 
recommendedReplicationFactor)
-      
putLogsearchProperty("logsearch.collection.audit.logs.replication.factor", 
recommendedReplicationFactor)
-
   def getServiceConfigurationValidators(self):
     parentValidators = super(HDP23StackAdvisor, 
self).getServiceConfigurationValidators()
     childValidators = {

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/metainfo.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/metainfo.xml 
b/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/metainfo.xml
index c787b40..15daeea 100644
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/metainfo.xml
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.5/services/ATLAS/metainfo.xml
@@ -30,12 +30,6 @@
             <fileName>atlas-application.properties</fileName>
             <dictionaryName>application-properties</dictionaryName>
           </configFile>
-          <logs>
-            <log>
-              <logId>atlas_app</logId>
-              <primary>true</primary>
-            </log>
-          </logs>
          </component>
 
         <component>

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml 
b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
index 8c18f1a..09791e4 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/metainfo.xml
@@ -91,12 +91,6 @@
             <script>scripts/hive_server_interactive.py</script>
             <scriptType>PYTHON</scriptType>
           </commandScript>
-          <logs>
-            <log>
-              <logId>hive_hiveserver2</logId>
-              <primary>true</primary>
-            </log>
-          </logs>
           <customCommands>
             <customCommand>
               <name>RESTART_LLAP</name>

http://git-wip-us.apache.org/repos/asf/ambari/blob/3861add9/ambari-server/src/test/java/org/apache/ambari/server/stack/ServiceModuleTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/stack/ServiceModuleTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/stack/ServiceModuleTest.java
index 962758d..c9bcf60 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/stack/ServiceModuleTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/stack/ServiceModuleTest.java
@@ -955,7 +955,7 @@ public class ServiceModuleTest {
     serviceInfo.setName("TEST_SERVICE");
     serviceInfo.setVersion("1.0.0");
     serviceInfo.setValid(false);
-    serviceInfo.setErrors("Test error message");
+    serviceInfo.addError("Test error message");
 
 
     // When

Reply via email to