Merge "requirements: remove ordereddict" into feature/zuulv3
diff --git a/README.rst b/README.rst
index c55f7b3..16e7385 100644
--- a/README.rst
+++ b/README.rst
@@ -134,6 +134,16 @@
   is too cryptic.  In your own work, feel free to leave TODOv3 notes
   if a change would otherwise become too large or unweildy.
 
+Python Version Support
+----------------------
+
+Zuul v3 requires Python 3. It does not support Python 2.
+
+As Ansible is used for the execution of jobs, it's important to note that
+while Ansible does support Python 3, not all of Ansible's modules do. Zuul
+currently sets ``ansible_python_interpreter`` to python2 so that remote
+content will be executed with Python2.
+
 Roadmap
 -------
 
diff --git a/zuul/ansible/callback/zuul_stream.py b/zuul/ansible/callback/zuul_stream.py
index 47e648e..e3d1e14 100644
--- a/zuul/ansible/callback/zuul_stream.py
+++ b/zuul/ansible/callback/zuul_stream.py
@@ -164,7 +164,7 @@
 
             hosts = self._get_task_hosts(task)
             for host in hosts:
-                if host in ('locahost', '127.0.0.1'):
+                if host in ('localhost', '127.0.0.1'):
                     # Don't try to stream from localhost
                     continue
                 ip = play_vars[host].get(
@@ -199,10 +199,10 @@
             self._stop_streamers()
         if result._task.action in ('command', 'shell'):
             stdout_lines = zuul_filter_result(result._result)
-        if is_localhost:
-            for line in stdout_lines:
-                ts, ln = (x.strip() for x in line.split(' | ', 1))
-                self._log("localhost | %s " % ln, ts=ts)
+            if is_localhost:
+                for line in stdout_lines:
+                    ts, ln = (x.strip() for x in line.split(' | ', 1))
+                    self._log("localhost | %s " % ln, ts=ts)
 
     def v2_runner_on_failed(self, result, ignore_errors=False):
         self._process_result_for_localhost(result)
diff --git a/zuul/driver/bubblewrap/__init__.py b/zuul/driver/bubblewrap/__init__.py
index e3a9866..5ec7acb 100644
--- a/zuul/driver/bubblewrap/__init__.py
+++ b/zuul/driver/bubblewrap/__init__.py
@@ -125,6 +125,7 @@
             ['{}'.format(x).encode('utf8') for x in passwd])
         (passwd_r, passwd_w) = os.pipe()
         os.write(passwd_w, passwd_bytes)
+        os.write(passwd_w, b'\n')
         os.close(passwd_w)
 
         gid = os.getgid()
@@ -133,6 +134,7 @@
             ['{}'.format(x).encode('utf8') for x in group])
         group_r, group_w = os.pipe()
         os.write(group_w, group_bytes)
+        os.write(group_w, b'\n')
         os.close(group_w)
 
         kwargs = dict(kwargs)  # Don't update passed in dict