From a8f2eaded8486e6107020363acb48c4593ad1047 Mon Sep 17 00:00:00 2001
From: Ian Wienand <iwienand@redhat.com>
Date: Thu, 23 Mar 2017 09:31:37 +1100
Subject: [PATCH] Capture output in _exec_sudo

The stdout of the script is captured, so anything coming out from
these commands needs to be captured.  Move to check_process and show
the output as part of an error log in failure case.

Change-Id: I1150375cdc479d4f19b8ddeb49a824ab16fdf831
---
 diskimage_builder/block_device/level1/partitioning.py | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/diskimage_builder/block_device/level1/partitioning.py b/diskimage_builder/block_device/level1/partitioning.py
index ea875b4ef..28f2a688e 100644
--- a/diskimage_builder/block_device/level1/partitioning.py
+++ b/diskimage_builder/block_device/level1/partitioning.py
@@ -155,11 +155,13 @@ class Partitioning(object):
         sudo_cmd = ["sudo"]
         sudo_cmd.extend(cmd)
         logger.info("Calling [%s]" % " ".join(sudo_cmd))
-        subp = subprocess.Popen(sudo_cmd)
-        rval = subp.wait()
-        if rval != 0:
+        # note we supress output, as it is captured
+        try:
+            subprocess.check_output(sudo_cmd, stderr=subprocess.STDOUT)
+        except subprocess.CalledProcessError as e:
             logger.error("Calling [%s] failed with [%s]" %
-                         (" ".join(sudo_cmd), rval))
+                         (e.cmd, e.returncode))
+            logger.error(e.output)
             logger.error("Trying to continue")
 
     def _all_part_devices_exist(self, expected_part_devices):