AMBARI-7058. Improve logging on Ubuntu on package install failure. (aonishuk)


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

Branch: refs/heads/branch-alerts-dev
Commit: 1b017b7cd4b4f8fbd89beaf7b1adf8bf9eaac3a2
Parents: 6b7e796
Author: Andrew Onishuk <[email protected]>
Authored: Thu Aug 28 18:05:09 2014 +0300
Committer: Andrew Onishuk <[email protected]>
Committed: Thu Aug 28 18:05:09 2014 +0300

----------------------------------------------------------------------
 .../python/resource_management/TestPackageResource.py    |  6 +++---
 .../resource_management/core/providers/package/apt.py    | 11 ++++++++---
 2 files changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/1b017b7c/ambari-agent/src/test/python/resource_management/TestPackageResource.py
----------------------------------------------------------------------
diff --git 
a/ambari-agent/src/test/python/resource_management/TestPackageResource.py 
b/ambari-agent/src/test/python/resource_management/TestPackageResource.py
index d36c543..1628322 100644
--- a/ambari-agent/src/test/python/resource_management/TestPackageResource.py
+++ b/ambari-agent/src/test/python/resource_management/TestPackageResource.py
@@ -36,11 +36,11 @@ class TestPackageResource(TestCase):
       )
     call_mock.assert_has_calls([call("dpkg --get-selections some_package | 
grep -v deinstall"),
                                 call("DEBIAN_FRONTEND=noninteractive 
/usr/bin/apt-get -q -o Dpkg::Options::='--force-confdef'"
-                                      " --allow-unauthenticated --assume-yes 
install some_package")
+                                      " --allow-unauthenticated --assume-yes 
install some_package"),
+                                call("apt-get update -qq")
                               ])
     
-    shell_mock.assert_has_calls([call("apt-get update -qq"),
-                                call("DEBIAN_FRONTEND=noninteractive 
/usr/bin/apt-get -q -o Dpkg::Options::='--force-confdef' 
--allow-unauthenticated --assume-yes install some_package")
+    shell_mock.assert_has_calls([call("DEBIAN_FRONTEND=noninteractive 
/usr/bin/apt-get -q -o Dpkg::Options::='--force-confdef' 
--allow-unauthenticated --assume-yes install some_package")
                               ])
   
   @patch.object(shell, "call")

http://git-wip-us.apache.org/repos/asf/ambari/blob/1b017b7c/ambari-common/src/main/python/resource_management/core/providers/package/apt.py
----------------------------------------------------------------------
diff --git 
a/ambari-common/src/main/python/resource_management/core/providers/package/apt.py
 
b/ambari-common/src/main/python/resource_management/core/providers/package/apt.py
index 4c6e2dd..f001f14 100644
--- 
a/ambari-common/src/main/python/resource_management/core/providers/package/apt.py
+++ 
b/ambari-common/src/main/python/resource_management/core/providers/package/apt.py
@@ -33,12 +33,17 @@ class AptProvider(PackageProvider):
     if not self._check_existence(name):
       cmd = INSTALL_CMD % (name)
       Logger.info("Installing package %s ('%s')" % (name, cmd))
-      code = shell.call(cmd)[0]
+      code, out = shell.call(cmd)
       
       # apt-get update wasn't done too long
       if code:
-        Logger.info("Failed to install package %s. Executing `apt-get update`" 
% (name))
-        shell.checked_call(REPO_UPDATE_CMD)
+        Logger.info("Execution of '%s' returned %d. %s" % (cmd, code, out))
+        Logger.info("Failed to install package %s. Executing `%s`" % (name, 
REPO_UPDATE_CMD))
+        code, out = shell.call(REPO_UPDATE_CMD)
+        
+        if code:
+          Logger.info("Execution of '%s' returned %d. %s" % (REPO_UPDATE_CMD, 
code, out))
+          
         Logger.info("Retrying to install package %s" % (name))
         shell.checked_call(cmd)
     else:

Reply via email to