Support for sr[0-9]+ short device names.
Make which fields are redacted come from a field array.
Fix the password locking logic.

Instead of only not locking when system is present
the logic should handle the correct case when lock
password is set and system is not present.
fix redaction of password field in log (LP: #1096417)

We were trying to avoid the user's password being written to the log, but that
was looking for the wrong option.
fix 'lock_password' for cloud-config user setup

This simiplifies the logic, by just making it independent of 'system'.
DataSourceCloudStack: fallback to default route if no virtual router found

Changes in revision 753 broke cloud-init on ubuntu, as it has a different
dhclient directory than Fedora where the change was developed and tested.

This change does 2 things:
 * searches multiple directories (including /var/lib/dhcp) for the lease
   files.
 * adds a fallback to the old code path of choosing the default route
   as the virtual router if there were no virtual routers found in the
   lease files.
Allow 'sr0' to be specified as a device for mounts

Previously cloud-config to get a '/dev/sr0' entry written to /etc/fstab
would have had to have the full /dev/sr0.  This change allows cloud-config
to reference it without the '/dev/' prefix.  Like:
 | mounts:
 |  - [ sr0, /media/sr0 ]
Add a context manager function in test helpers.

This function can be used to ensure that mocker objects 
are restored and verified during usage if exceptions are 
thrown while the mock object is being used.

Ensure it is used in the config drive test when multiple
mock objects are being created and restored.
tests: Add a context manager function in test helpers.

This function can be used to ensure that mocker objects 
are restored and verified during usage if exceptions are 
thrown while the mock object is being used.

Ensure it is used in the config drive test when multiple
mock objects are being created and restored.
Add a HACKING file

Adding a HACKING file based upon a message from smoser on the mailing
list from 12/12/2012.
add support for operating system families

often it is convenient to classify a distro as being part of an
operating system family. for instance, file templates may be
identical for both debian and ubuntu, but to support this under
the current templating code, one would need multiple templates for the
same code.

similarly, configuration handlers often fall into the same bucket: the
configuraton is known to work/has been tested on a particular family
of operating systems. right now this is handled with a declaration
like:

distros = ['fedora', 'rhel']

this fix seeks to address both of these issues. it allows for the
simplification of the above line to:

osfamilies = ['redhat']

and provides a mechanism for operating system family templates.
cleanup a pep8 failure

accidentally removed a line between two functions.
Fix broken cc_update_etc_hosts (LP: #1100036)

Right now, all distros but ubuntu will fail to manage /etc/hosts. This
is due to the fact that the templates are named:
- hosts.ubuntu.tmpl
- hosts.redhat.tmpl

The config handler is specifically looking for a template with the
given distro name.

This change addresses this issue and is contingent upon support of
'osfamilies' as implemented in LP: #1100029
(lp:~craigtracey/cloud-init/osfamilies)
DataSourceConfigDrive: consider CD rom as valid config-drive source.

previously, there was an attempt in the config drive source to limit
the source device to a "full block device" rather than a partition.

This was done by a simplistic approach of checking that the last 
character of the name was not a number.  That was filtering out
CD-rom devices (sr0).

Now, we have a bit more sophisticated approach to that same problem.
We filter out block devices that have a 'partition' entry in
/sys/class/block/DEVICE_NAME/partition .
Adding a resolv.conf configuration module (LP: #1100434)

Managing resolv.conf can be quite handy when running in an environment
where you would like to control DNS resolution, despite being provided
DNS server information by DHCP. This module will allow one to define the
structure of their resolv.conf and write it PER_ONCE.

Right now this makes the most sense on RedHat, and therefore, has defined
'distros' as such.
Fixing missing argument to get_cfg_option_bool

Forgot to pass cfg to this function, and thus this would have never
worked.
Adjust how the legacy user: XYZ config alters the normalized user list

Previously if a legacy user: XYZ entry was found, XYZ would not automatically
be promoted to the default user but would instead just be added on as a new
entry to the normalized user list. It appears the behavior that is wanted is
for the XYZ entry to be added on as the default user (thus overriding a distro
provided default user), which better matches how the code previous worked.
Merge the old user style with the distro provided config.

When the old user: style entry is found, don't forget that
we need to use the distro settings that are provided but
override the name with the new name, this is now accomplished
by merging them together in the correct order (using the standard
cloud-init merging algo).
Add support for operating system families

Often it is convenient to classify a distro as being part of an
operating system family. for instance, file templates may be
identical for both debian and ubuntu, but to support this under
the current templating code, one would need multiple templates for the
same code.

Similarly, configuration handlers often fall into the same bucket: the
configuraton is known to work/has been tested on a particular family
of operating systems. right now this is handled with a declaration
like:

distros = ['fedora', 'rhel']

This fix seeks to address both of these issues. it allows for the
simplification of the above line to:

osfamilies = ['redhat']

It also provides a mechanism for operating system family templates.
Add in a tool to help make mime multipart messages.