]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Fix loguserdata output to file issue
authorguohliu <guohliu@cn.ibm.com>
Tue, 23 Jul 2013 10:08:03 +0000 (18:08 +0800)
committerguohliu <guohliu@cn.ibm.com>
Tue, 23 Jul 2013 10:49:04 +0000 (18:49 +0800)
Fixes bug #1191685

Change-Id: I2a02b490e45c3cb838243b9dad62cc52b609b336

heat/cloudinit/loguserdata.py
heat/tests/test_loguserdata.py

index e55e31d9d9b79ca491013291e17ee652cde1dd6d..eb9797a3d96f78611039f86fd8f2078c275d9ee0 100755 (executable)
@@ -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))
index 299863085480f241cb7e2ec6e0c1001750a69b5e..3de508f143a035fbcedc37a0c3d31ac21d955466 100644 (file)
@@ -34,6 +34,9 @@ class FakePOpen():
     def wait(self):
         pass
 
+    def communicate(self, input=None):
+        pass
+
 
 class LoguserdataTest(HeatTestCase):