lp:~smoser/cloud-init/base64-mimetype-lp874342

Created by Scott Moser and last modified
Get this branch:
bzr branch lp:~smoser/cloud-init/base64-mimetype-lp874342
Only Scott Moser can upload to this branch. If you are Scott Moser please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Scott Moser
Project:
cloud-init
Status:
Merged

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 AAAAE2VjZHNhLXNoYTItbmlzdH......STI= root@h
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYRIQe6m......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

This addresses bugs
  * LP: #890501
  * LP: #871966

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.

489. By Scott Moser

update changelog for DataSourceEc2 changes

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.

487. By Scott Moser

cloudinit/DataSourceEc2: use util.is_resolvable_url

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
This branch contains Public information 
Everyone can see this information.

Subscribers