summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2011-08-22 23:21:35 -0400
committerScott Moser <smoser@ubuntu.com>2011-08-22 23:21:35 -0400
commita3373fb60aac7f3fee9ec28afebc0e55d28d5438 (patch)
treebf101eb0ace7c33862b0095411c740ac7b71e5f6
parent0b2656d39db427311266cee5b2ee013de2e56225 (diff)
downloadvyos-cloud-init-a3373fb60aac7f3fee9ec28afebc0e55d28d5438.tar.gz
vyos-cloud-init-a3373fb60aac7f3fee9ec28afebc0e55d28d5438.zip
util.subp: do not attach stdin cloud-init's stdin to subprocesses (LP: 831505)
Fix issue where 'isatty' would return true for apt-add-repository. It would get stdin which was attached to a terminal (/dev/console) and would thus hang when running during boot. This was done by changing all users of util.subp to have None input unless input was given. In that case, the input will be the string passed in. LP: #831505
-rw-r--r--ChangeLog5
-rw-r--r--cloudinit/CloudConfig/cc_apt_update_upgrade.py2
-rw-r--r--cloudinit/util.py6
3 files changed, 8 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index d494221c..75a19aba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -38,6 +38,11 @@
* boothooks will now run more than once as they were intended (and as bootcmd
commands do)
* cloud-config and user-scripts will be updated from user data every boot
+ - Fix issue where 'isatty' would return true for apt-add-repository.
+ apt-add-repository would get stdin which was attached to a terminal
+ (/dev/console) and would thus hang when running during boot. (LP: 831505)
+ This was done by changing all users of util.subp to have None input unless specified
+
0.6.1:
- fix bug in fixing permission on /var/log/cloud-init.log (LP: #704509)
- improve comment strings in rsyslog file tools/21-cloudinit.conf
diff --git a/cloudinit/CloudConfig/cc_apt_update_upgrade.py b/cloudinit/CloudConfig/cc_apt_update_upgrade.py
index 41c34bc3..495b8522 100644
--- a/cloudinit/CloudConfig/cc_apt_update_upgrade.py
+++ b/cloudinit/CloudConfig/cc_apt_update_upgrade.py
@@ -127,7 +127,7 @@ def add_sources(srclist, searchList={ }):
source=ent['source']
if source.startswith("ppa:"):
- try: util.subp(["add-apt-repository",source], "/dev/null")
+ try: util.subp(["add-apt-repository",source])
except:
elst.append([source, "add-apt-repository failed"])
continue
diff --git a/cloudinit/util.py b/cloudinit/util.py
index 5058e1d4..bdc1fce2 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -141,10 +141,8 @@ def runparts(dirp, skip_no_exist=True):
return
def subp(args, input=None):
- s_in = None
- if input is not None:
- s_in = subprocess.PIPE
- sp = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=s_in)
+ sp = subprocess.Popen(args, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE, stdin=subprocess.PIPE)
out,err = sp.communicate(input)
if sp.returncode is not 0:
raise subprocess.CalledProcessError(sp.returncode,args, (out,err))