lp:~smoser/cloud-init/base64-mimetype-lp874342
- Get this branch:
- bzr branch lp:~smoser/cloud-init/base64-mimetype-lp874342
Branch merges
Related bugs
Bug #874342: non text mime type payloads can be double base64 encoded | Medium | Fix Released |
Related blueprints
Branch information
Recent revisions
- 496. By Scott Moser
-
fix issue with part-handlers and base64 encoding (LP: #874342)
Previously,
* if content came into cloud-init for processing came in via a multipart
mime file, and was already base64 encoded, it would get base64 encoded
again before being handed to a part-handler.
* if it came in via a '#include'd file then it would not be encoded at
all.This drops the internal 'parts' array, that was just converted to and then
from. Instead, we keep MIME format throughout and keep headers along
the way.That means that a message that comes in with 'Content-
Transfer- Encoding'
set to 'base64' will be decoded before being handed to a part-handler.It also reduces the chance of failure due to content appearing to be an
actual email. Previously if content contained colon separated fields, it
might be read as headers (email.message_ from_string( open("/ etc/passwd" ,"r"))
would come back as all headers, no payload)The weak point right now is that '#include'd data cannot have mime types
associated with it (unless it is a mime formatted content). I had hoped
to read user headers and possibly set 'Content-Type' from that. - 495. By Scott Moser
-
debian.trunk/ transition to dh_python2 from pycentral
This is the same 2 changes that were made to cloud-init under LP: #904248
- 494. By Scott Moser
-
add INSTANCE_ID to env of bootcmd, add cloud-init-per
the environment varible INSTANCE_ID is set when invoking boothooks from
multi-part input. However, previously that was not the case for things
run via bootcmd.This adds cloud-init-per, which makes it easy for user in bootcmd or
boothook to do something per 'instance', 'always', or 'once'.The functionality in cloud-init-per mostly duplicated what was in
cloud-init-run-module. That supported "modules", but it is unlikely
that it was used for anything other than "execute". So, cloud-init-per
now replaces cloud-init-run-module and provides legacy support for
the 'execute' path. - 493. By Scott Moser
-
output public ssh host keys to console on boot (LP: #893400)
Currently cloud-init writes something like this to console output:
ec2: ############## ####### ####### ####### ####### ####### ####### #####
ec2: -----BEGIN SSH HOST KEY FINGERPRINTS-----
ec2: 2048 78:ae:f3:91:04:6f: 8d:ee:ef: e1:2d:72: 83:6a:d0: 82 root@h (RSA)
ec2: 1024 d3:b6:32:64:22:d4: 43:05:f9: 25:b4:f3: 65:4e:e2: 51 root@h (DSA)
ec2: -----END SSH HOST KEY FINGERPRINTS-----
ec2: ############## ####### ####### ####### ####### ####### ####### ##### the key fingerprints are useful for humans to read, but not so useful
for machines, as you cannot populate a KnownHostsFile (~/.ssh/known_hosts)
from the data there.This change adds output like:
-----BEGIN SSH HOST KEY KEYS-----
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXN oYTItbmlzdH. .....STI= root@h
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ DYRIQe6m. .....tWF3 root@h
-----END SSH HOST KEY KEYS-----Those lines can easily be grabbed and appended to a known_hosts file.
- 492. By Scott Moser
-
fix missing import for use of close_stdin
revision 490 missed some required imports.
- 491. By Scott Moser
-
revert default handling of /etc/hosts to 0.6.1 style (Ubuntu 11.04)
The default management of /etc/hosts in 0.6.2 (Ubuntu 11.10)
was problematic for a couple different uses, and represented a change
in what was present in previous releases.This changes the default behavior back to the way it was in 11.04/0.6.1.
It makes 'manage_etc_hosts' in cloud-config more than just a boolean.
It can now have 3 values:* False (default): do not update /etc/hosts ever
* "localhost": manage /etc/hosts' 127.0.1.1 entry (the way it was done
in 11.10/0.6.2)
* True (or "template"): manage /etc/hosts via template file - 490. By Scott Moser
-
make stdin read from /dev/null for all cloud-init programs (LP: #903993)
the cloud-init programs are never intended to run interactively.
Some programs were being run via subprocess, and would notice that their
input was attached to a terminal (/dev/console). As a result, they
they would try to prompt the user for input (apt-add-repository) This change simply re-opens standard input as /dev/null so any
subprocesses will not end up blocking on input. - 488. By Scott Moser
-
make DataSourceEc2 more resilliant to slow metadata service (LP: #894279)
This increases the timeout for a metadata request to something that should
be easily satisfiable (50 seconds). But hopefully does so while still keeping
the case of no-metadata service in mind.Previously, there was a small timeout and many retries (30) would be done.
Now,
- larger timeout (50 seconds) by default
- retry until a given "max_wait" is reached (120 seconds default)The end result is that if we're hitting the timeout, there will only end up
being a couple attempts made. But if the requests are coming back quickly
then we'll still make several attempts.There is one EC2DataSource config change, now 'retries' is not used, but rather
'max_wait' to indicate generally how long it should try to find a metadata
service.
Branch metadata
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)
- Stacked on:
- lp:~cloud-init-dev/cloud-init/trunk