You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by dm...@apache.org on 2015/01/19 18:13:11 UTC

ambari git commit: AMBARI-9120. Parallel package installation under SLES misbehaves (dlysnichenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk 20250f473 -> ea6c4ecaf


AMBARI-9120. Parallel package installation under SLES misbehaves (dlysnichenko)


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

Branch: refs/heads/trunk
Commit: ea6c4ecaf7e7d7f0cb0beeed889b8192ded2254a
Parents: 20250f4
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Mon Jan 19 19:11:25 2015 +0200
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Mon Jan 19 19:11:25 2015 +0200

----------------------------------------------------------------------
 .../ClusterStackVersionResourceProvider.java    |  2 +-
 .../HostStackVersionResourceProvider.java       |  2 +-
 .../DistributeRepositoriesActionListener.java   |  5 +-
 .../custom_actions/scripts/install_packages.py  | 19 +++++++-
 .../custom_actions/TestInstallPackages.py       | 50 ++++++++++++++++++--
 5 files changed, 69 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/ea6c4eca/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
index a33930d..6d503e2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
@@ -88,7 +88,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
   protected static final String CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID   = PropertyHelper.getPropertyId("ClusterStackVersions", "repository_version");
 
   protected static final String INSTALL_PACKAGES_ACTION = "install_packages";
-  protected static final String INSTALL_PACKAGES_FULL_NAME = "Distribute repositories/install packages";
+  protected static final String INSTALL_PACKAGES_FULL_NAME = "Install version";
 
   @SuppressWarnings("serial")
   private static Set<String> pkPropertyIds = new HashSet<String>() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea6c4eca/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
index 51cf340..b36c6e9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProvider.java
@@ -86,7 +86,7 @@ public class HostStackVersionResourceProvider extends AbstractControllerResource
   protected static final String HOST_STACK_VERSION_REPO_VERSION_PROPERTY_ID    = PropertyHelper.getPropertyId("HostStackVersions", "repository_version");
 
   protected static final String INSTALL_PACKAGES_ACTION = "install_packages";
-  protected static final String INSTALL_PACKAGES_FULL_NAME = "Distribute repositories/install packages";
+  protected static final String INSTALL_PACKAGES_FULL_NAME = "Install version";
 
 
   @SuppressWarnings("serial")

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea6c4eca/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
index da6e680..feca260 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
@@ -169,9 +169,8 @@ public class DistributeRepositoriesActionListener {
         }
       } else {
         LOG.error(
-                String.format("Can not transition host stack version state from %s to %s for" +
-                                "host %s",
-                        hostVersion.getState(), newHostState, event.getHostname()));
+                "Can not transition host stack version state from {} to {} for " +
+                                "host {}", hostVersion.getState(), newHostState, event.getHostname());
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea6c4eca/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py b/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py
index 83c8037..32732f1 100644
--- a/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py
+++ b/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py
@@ -22,6 +22,7 @@ Ambari Agent
 
 import json
 import sys
+import re
 import traceback
 from resource_management import *
 from resource_management.libraries.functions.list_ambari_managed_repos import list_ambari_managed_repos
@@ -85,7 +86,8 @@ class InstallPackages(Script):
         packages_installed_before = [package[0] for package in packages_installed_before]
         packages_were_checked = True
         for package in package_list:
-          Package(package['name'], use_repos=list(current_repo_files) if OSCheck.is_ubuntu_family() else current_repositories)
+          name = self.format_package_name(package['name'], repository_version)
+          Package(name, use_repos=list(current_repo_files) if OSCheck.is_ubuntu_family() else current_repositories)
         package_install_result = True
       except Exception, err:
         print "Can not install packages."
@@ -145,5 +147,20 @@ class InstallPackages(Script):
     )
     return repo['repoName'], file_name
 
+  def format_package_name(self, package_name, repo_id):
+    """
+    This method overcomes problems at SLES SP3. Zypper here behaves differently
+    than at SP1, and refuses to install packages by mask if there is any installed package that
+    matches this mask.
+    So we preppend concrete HDP version to mask under Suse
+    """
+    if OSCheck.is_suse_family() and '*' in package_name:
+      mask_version = re.search(r'((_\d+)*(_)?\*)', package_name).group(0)
+      formatted_version = '_' + repo_id.replace('.', '_').replace('-', '_') + '*'
+      return package_name.replace(mask_version, formatted_version)
+    else:
+      return package_name
+
+
 if __name__ == "__main__":
   InstallPackages().execute()

http://git-wip-us.apache.org/repos/asf/ambari/blob/ea6c4eca/ambari-server/src/test/python/custom_actions/TestInstallPackages.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/custom_actions/TestInstallPackages.py b/ambari-server/src/test/python/custom_actions/TestInstallPackages.py
index 0ad56c8..a3e18fd 100644
--- a/ambari-server/src/test/python/custom_actions/TestInstallPackages.py
+++ b/ambari-server/src/test/python/custom_actions/TestInstallPackages.py
@@ -45,7 +45,7 @@ class TestInstallPackages(RMFTestCase):
                        command="actionexecute",
                        config_file="install_packages_config.json",
                        target=RMFTestCase.TARGET_CUSTOM_ACTIONS,
-                       os_type=('Suse', '11', 'Final'),
+                       os_type=('Redhat', '6.4', 'Final'),
     )
     self.assertTrue(put_structured_out.called)
     self.assertEquals(put_structured_out.call_args[0][0],
@@ -91,7 +91,7 @@ class TestInstallPackages(RMFTestCase):
                        command="actionexecute",
                        config_file="install_packages_config.json",
                        target=RMFTestCase.TARGET_CUSTOM_ACTIONS,
-                       os_type=('Suse', '11', 'Final'),
+                       os_type=('Redhat', '6.4', 'Final'),
     )
     self.assertTrue(put_structured_out.called)
     self.assertEquals(put_structured_out.call_args[0][0],
@@ -154,7 +154,7 @@ class TestInstallPackages(RMFTestCase):
                       command="actionexecute",
                       config_file="install_packages_config.json",
                       target=RMFTestCase.TARGET_CUSTOM_ACTIONS,
-                      os_type=('Suse', '11', 'Final'))
+                      os_type=('Redhat', '6.4', 'Final'))
 
     self.assertTrue(put_structured_out.called)
     self.assertEquals(put_structured_out.call_args[0][0],
@@ -185,3 +185,47 @@ class TestInstallPackages(RMFTestCase):
     self.assertResourceCalled('Package', 'snappy_fake_pkg', action=["remove"])
     self.assertNoMoreResources()
 
+
+  @patch("resource_management.libraries.script.Script.put_structured_out")
+  @patch("resource_management.libraries.functions.packages_analyzer.allInstalledPackages",
+         new=MagicMock(side_effect = _add_packages))
+  def test_format_package_name(self, put_structured_out):
+    self.executeScript("scripts/install_packages.py",
+                       classname="InstallPackages",
+                       command="actionexecute",
+                       config_file="install_packages_config.json",
+                       target=RMFTestCase.TARGET_CUSTOM_ACTIONS,
+                       os_type=('Suse', '11', 'Final'),
+                       )
+    self.assertTrue(put_structured_out.called)
+    self.assertEquals(put_structured_out.call_args[0][0],
+                      {'package_installation_result': 'SUCCESS',
+                       'installed_repository_version': u'2.2.0.1-885',
+                       'ambari_repositories': []})
+    self.assertResourceCalled('Repository', 'HDP-UTILS-2.2.0.1-885',
+                              base_url=u'http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0',
+                              action=['create'],
+                              components=[u'HDP-UTILS', 'main'],
+                              repo_template='repo_suse_rhel.j2',
+                              repo_file_name=u'HDP-2.2.0.1-885',
+                              mirror_list=None,
+                              append_to_file=False,
+                              )
+    self.assertResourceCalled('Repository', 'HDP-2.2.0.1-885',
+                              base_url=u'http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0',
+                              action=['create'],
+                              components=[u'HDP', 'main'],
+                              repo_template='repo_suse_rhel.j2',
+                              repo_file_name=u'HDP-2.2.0.1-885',
+                              mirror_list=None,
+                              append_to_file=True,
+                              )
+    self.assertResourceCalled('Package', 'hadoop_2_2_0_1_885*', use_repos=['base', 'HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'])
+    self.assertResourceCalled('Package', 'snappy', use_repos=['base', 'HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'])
+    self.assertResourceCalled('Package', 'snappy-devel', use_repos=['base', 'HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'])
+    self.assertResourceCalled('Package', 'lzo', use_repos=['base', 'HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'])
+    self.assertResourceCalled('Package', 'hadooplzo_2_2_0_1_885*', use_repos=['base', 'HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'])
+    self.assertResourceCalled('Package', 'hadoop_2_2_0_1_885*-libhdfs', use_repos=['base', 'HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'])
+    self.assertResourceCalled('Package', 'ambari-log4j', use_repos=['base', 'HDP-UTILS-2.2.0.1-885', 'HDP-2.2.0.1-885'])
+    self.assertNoMoreResources()
+