From: guohliu Date: Tue, 23 Jul 2013 10:08:03 +0000 (+0800) Subject: Fix loguserdata output to file issue X-Git-Tag: 2014.1~328^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=dc416551760b042ede6f844537c394316743073d;p=openstack-build%2Fheat-build.git Fix loguserdata output to file issue Fixes bug #1191685 Change-Id: I2a02b490e45c3cb838243b9dad62cc52b609b336 --- diff --git a/heat/cloudinit/loguserdata.py b/heat/cloudinit/loguserdata.py index e55e31d9..eb9797a3 100755 --- a/heat/cloudinit/loguserdata.py +++ b/heat/cloudinit/loguserdata.py @@ -35,14 +35,15 @@ def call(args): def write(self, data): LOG.info(data) - def __getattr__(self, attr): - return getattr(sys.stdout, attr) - LOG.info('%s\n' % ' '.join(args)) try: ls = LogStream() - p = subprocess.Popen(args, stdout=ls, stderr=ls) - p.wait() + p = subprocess.Popen(args, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + data = p.communicate() + if data: + for x in data: + ls.write(x) except OSError as ex: if ex.errno == errno.ENOEXEC: LOG.error('Userdata empty or not executable: %s\n' % str(ex)) diff --git a/heat/tests/test_loguserdata.py b/heat/tests/test_loguserdata.py index 29986308..3de508f1 100644 --- a/heat/tests/test_loguserdata.py +++ b/heat/tests/test_loguserdata.py @@ -34,6 +34,9 @@ class FakePOpen(): def wait(self): pass + def communicate(self, input=None): + pass + class LoguserdataTest(HeatTestCase):