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>,
