Repository: ambari
Updated Branches:
  refs/heads/trunk fb57e05a5 -> 7c277169f


AMBARI-5570. MySQL Server install failed during deployment, suse11.(vbrodetskyi)


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

Branch: refs/heads/trunk
Commit: 7c277169fe158222f1856e931a3a0a030dd0b318
Parents: fb57e05
Author: Vitaly Brodetskyi <[email protected]>
Authored: Fri Apr 25 16:57:30 2014 +0300
Committer: Vitaly Brodetskyi <[email protected]>
Committed: Fri Apr 25 16:57:30 2014 +0300

----------------------------------------------------------------------
 .../AmbariManagementControllerImpl.java         | 20 +++++++++++++++++---
 .../apache/ambari/server/state/ServiceInfo.java |  6 +-----
 .../ambari/server/state/ServiceOsSpecific.java  | 10 ++++++++++
 3 files changed, 28 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/7c277169/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index 978ffaf..de3db69 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -1307,9 +1307,13 @@ public class AmbariManagementControllerImpl implements 
AmbariManagementControlle
     if (serviceInfo.getOsSpecifics().containsKey(AmbariMetaInfo.ANY_OS)) {
       anyOs = serviceInfo.getOsSpecifics().get(AmbariMetaInfo.ANY_OS);
     }
-    ServiceOsSpecific hostOs = null;
-    if (serviceInfo.getOsSpecifics().containsKey(osFamily)) {
-      hostOs = serviceInfo.getOsSpecifics().get(osFamily);
+    ServiceOsSpecific hostOs = new ServiceOsSpecific(osFamily);
+    List<ServiceOsSpecific> foundedOSSpecifics = 
getOSSpecificsByFamily(serviceInfo.getOsSpecifics(), osFamily);
+    if (!foundedOSSpecifics.isEmpty()) {
+      for (ServiceOsSpecific osSpecific : foundedOSSpecifics) {
+        hostOs.addPackages(osSpecific.getPackages());
+      }
+      serviceInfo.getOsSpecifics().get(osFamily);
       // Choose repo that is relevant for host
       ServiceOsSpecific.Repo serviceRepo = hostOs.getRepo();
       if (serviceRepo != null) {
@@ -1349,6 +1353,16 @@ public class AmbariManagementControllerImpl implements 
AmbariManagementControlle
     }
   }
 
+  private List<ServiceOsSpecific> getOSSpecificsByFamily(Map<String, 
ServiceOsSpecific> osSpecifics, String osFamily) {
+    List<ServiceOsSpecific> foundedOSSpecifics = new 
ArrayList<ServiceOsSpecific>();
+    for (Entry<String, ServiceOsSpecific> osSpecific : osSpecifics.entrySet()) 
{
+      if (osSpecific.getKey().indexOf(osFamily) != -1) {
+        foundedOSSpecifics.add(osSpecific.getValue());
+      }
+    }
+    return foundedOSSpecifics;
+  }
+
   private ActionExecutionContext getActionExecutionContext
       (ExecuteActionRequest actionRequest) throws AmbariException {
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/7c277169/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 6020481..8710fec 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
@@ -66,8 +66,6 @@ public class ServiceInfo {
   private File metricsFile = null;
   @XmlTransient
   private Map<String, Map<String, List<MetricDefinition>>> metrics = null;
-  
-  private static final String OS_SEPARATOR = ",";
 
 
   /**
@@ -316,9 +314,7 @@ public class ServiceInfo {
                   new TreeMap<String, ServiceOsSpecific>();
           if (serviceOsSpecifics != null) {
             for (ServiceOsSpecific osSpecific : serviceOsSpecifics) {
-              for(String 
osFamily:osSpecific.getOsFamily().split(OS_SEPARATOR)) {
-                tmpMap.put(osFamily.trim(), osSpecific);
-              }
+              tmpMap.put(osSpecific.getOsFamily(), osSpecific);
             }
           }
           serviceOsSpecificsMap = tmpMap;

http://git-wip-us.apache.org/repos/asf/ambari/blob/7c277169/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceOsSpecific.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceOsSpecific.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceOsSpecific.java
index aebf9e7..e317ece 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceOsSpecific.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceOsSpecific.java
@@ -32,6 +32,12 @@ public class ServiceOsSpecific {
   private String osFamily;
   private Repo repo;
 
+  public ServiceOsSpecific() {
+  }
+
+  public ServiceOsSpecific(String osFamily) {
+    this.osFamily = osFamily;
+  }
 
   @XmlElementWrapper(name="packages")
   @XmlElements(@XmlElement(name="package"))
@@ -52,6 +58,10 @@ public class ServiceOsSpecific {
     return packages;
   }
 
+  public void addPackages(List<Package> packages) {
+    this.packages.addAll(packages);
+  }
+
   /**
    * The <code>repo</code> tag. It has different set of fields compared to
    * <link>org.apache.ambari.server.state.RepositoryInfo</link>,

Reply via email to