Browse Source

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

Andrew Onishuk 10 years ago
parent
commit
1b017b7cd4

+ 3 - 3
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_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'"
                                 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")
   @patch.object(shell, "call")

+ 8 - 3
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):
     if not self._check_existence(name):
       cmd = INSTALL_CMD % (name)
       cmd = INSTALL_CMD % (name)
       Logger.info("Installing package %s ('%s')" % (name, cmd))
       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
       # apt-get update wasn't done too long
       if code:
       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))
         Logger.info("Retrying to install package %s" % (name))
         shell.checked_call(cmd)
         shell.checked_call(cmd)
     else:
     else: