← Back to team overview

cloud-init-dev team mailing list archive

[Merge] ~smoser/cloud-init:fix/1784713-ksh-does-not-have-local into cloud-init:master

 

Scott Moser has proposed merging ~smoser/cloud-init:fix/1784713-ksh-does-not-have-local into cloud-init:master.

Commit message:
Use typeset or local in profile.d scripts.

Bash and most other "bourne-like" shells allow declaring function
local variables via 'local'.  ksh does not.  Instead of using 'local'
always, use 'typeset' when the KSH_VERSION variable is present in
environment.

LP: #1784713

Requested reviews:
  cloud-init commiters (cloud-init-dev)
Related bugs:
  Bug #1784685 in cloud-init: "Oracle: cloud-init openstack local detection too strict for oracle cloud"
  https://bugs.launchpad.net/cloud-init/+bug/1784685
  Bug #1784713 in cloud-init (Ubuntu): "cloud-init profile.d files use bash-specific builtin "local""
  https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1784713

For more details, see:
https://code.launchpad.net/~smoser/cloud-init/+git/cloud-init/+merge/352010

see commit message
-- 
Your team cloud-init commiters is requested to review the proposed merge of ~smoser/cloud-init:fix/1784713-ksh-does-not-have-local into cloud-init:master.
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..3db12bd
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,30 @@
+=== General Info ===
+Packaging branches for the Ubuntu development release are maintained in
+upstream git under ubuntu/devel branch.
+
+   git clone git://git.launchpad.net/cloud-init -b ubuntu/devel
+
+Stable release branches are also available in ubuntu/<codename>
+   $ git clone git://git.launchpad.net/cloud-init
+   $ cd cloud-init
+   $ git branch -r
+   origin/HEAD -> origin/master
+   origin/master
+   origin/ubuntu/devel
+   origin/ubuntu/precise
+   origin/ubuntu/trusty
+   origin/ubuntu/xenial
+
+Patches in debian/patches are stored un-applied.
+
+== New snapshot ==
+Upstream maintains a script to handle new upstream snapshots at:
+  https://github.com/cloud-init/qa-scripts/
+Its usage is like:
+ new-upstream-snapshot master
+
+== Cherry Pick ==
+To cherry pick an upstream commit:
+ ./debian/cherry-pick <hash>
+
+That will add a patch to debian/patches/ and debian/patches/series.
diff --git a/debian/apport-launcher.py b/debian/apport-launcher.py
new file mode 100644
index 0000000..30fea31
--- /dev/null
+++ b/debian/apport-launcher.py
@@ -0,0 +1,6 @@
+'''Wrapper for cloudinit apport interface'''
+
+from cloudinit.apport import add_info as cloudinit_add_info
+
+def add_info(report, ui):
+    return cloudinit_add_info(report, ui)
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..f468b59
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,3339 @@
+cloud-init (18.3-9-g2e62cb8a-0ubuntu1~16.04.2) xenial-proposed; urgency=medium
+
+  * cherry-pick 3cee0bf8: oracle: fix detect_openstack to report True on
+    (LP: #1784685)
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Tue, 31 Jul 2018 13:57:21 -0600
+
+cloud-init (18.3-9-g2e62cb8a-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * New upstream snapshot. (LP: #1777912)
+    - docs: note in rtd about avoiding /tmp when writing files
+    - ubuntu,centos,debian: get_linux_distro to align with platform.dist
+    - Fix boothook docs on environment variable name (INSTANCE_I ->
+      INSTANCE_ID) [Marc Tamsky]
+    - update_metadata: a datasource can support network re-config every boot
+    - tests: drop salt-minion integration test
+    - Retry on failed import of gpg receive keys.
+    - tools: Fix run-container when neither source or binary package requested.
+    - docs: Fix a small spelling error. [Oz N Tiram]
+    - tox: use simplestreams from git repository rather than bzr.
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Mon, 09 Jul 2018 15:34:52 -0600
+
+cloud-init (18.3-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/rules: update version.version_string to contain packaged version.
+    (LP: #1770712)
+  * debian/patches/openstack-no-network-config.patch
+    add patch to ignore Openstack network_config from network_data.json by
+    default
+  * Refresh patches against upstream:
+    + azure-use-walinux-agent.patch
+    + ds-identify-behavior-xenial.patch
+  * New upstream release. (LP: #1777912)
+    - release 18.3
+    - docs: represent sudo:false in docs for user_groups config module
+    - Explicitly prevent `sudo` access for user module [Jacob Bednarz]
+    - lxd: Delete default network and detach device if lxd-init created them.
+    - openstack: avoid unneeded metadata probe on non-openstack platforms
+    - stages: fix tracebacks if a module stage is undefined or empty
+      [Robert Schweikert]
+    - Be more safe on string/bytes when writing multipart user-data to disk.
+    - Fix get_proc_env for pids that have non-utf8 content in environment.
+    - tests: fix salt_minion integration test on bionic and later
+    - tests: provide human-readable integration test summary when --verbose
+    - tests: skip chrony integration tests on lxd running artful or older
+    - test: add optional --preserve-instance arg to integraiton tests
+    - netplan: fix mtu if provided by network config for all rendered types
+    - tests: remove pip install workarounds for pylxd, take upstream fix.
+    - subp: support combine_capture argument.
+    - tests: ordered tox dependencies for pylxd install
+    - util: add get_linux_distro function to replace platform.dist
+      [Robert Schweikert]
+    - pyflakes: fix unused variable references identified by pyflakes 2.0.0.
+    - - Do not use the systemd_prefix macro, not available in this environment
+      [Robert Schweikert]
+    - doc: Add config info to ec2, openstack and cloudstack datasource docs
+    - Enable SmartOS network metadata to work with netplan via per-subnet
+      routes [Dan McDonald]
+    - openstack: Allow discovery in init-local using dhclient in a sandbox.
+    - tests: Avoid using https in httpretty, improve HttPretty test case.
+    - yaml_load/schema: Add invalid line and column nums to error message
+    - Azure: Ignore NTFS mount errors when checking ephemeral drive
+      [Paul Meyer]
+    - packages/brpm: Get proper dependencies for cmdline distro.
+    - packages: Make rpm spec files patch in package version like in debs.
+    - tools/run-container: replace tools/run-centos with more generic.
+    - Update version.version_string to contain packaged version.
+    - cc_mounts: Do not add devices to fstab that are already present.
+      [Lars Kellogg-Stedman]
+    - ds-identify: ensure that we have certain tokens in PATH.
+    - tests: enable Ubuntu Cosmic in integration tests [Joshua Powers]
+    - read_file_or_url: move to url_helper, fix bug in its FileResponse.
+    - cloud_tests: help pylint
+    - flake8: fix flake8 errors in previous commit.
+    - typos: Fix spelling mistakes in cc_mounts.py log messages [Stephen Ford]
+    - tests: restructure SSH and initial connections [Joshua Powers]
+    - ds-identify: recognize container-other as a container, test SmartOS.
+    - cloud-config.service: run After snap.seeded.service.
+    - tests: do not rely on host /proc/cmdline in test_net.py
+      [Lars Kellogg-Stedman]
+    - ds-identify: Remove dupe call to is_ds_enabled, improve debug message.
+    - SmartOS: fix get_interfaces for nics that do not have addr_assign_type.
+    - tests: fix package and ca_cert cloud_tests on bionic
+    - ds-identify: make shellcheck 0.4.6 happy with ds-identify.
+    - pycodestyle: Fix deprecated string literals, move away from flake8.
+    - azure: Add reported ready marker file. [Joshua Chan]
+    - tools: Support adding a release suffix through packages/bddeb.
+    - FreeBSD: Invoke growfs on ufs filesystems such that it does not prompt.
+      [Harm Weites]
+    - tools: Re-use the orig tarball in packages/bddeb if it is around.
+    - netinfo: fix netdev_pformat when a nic does not have an address assigned.
+    - collect-logs: add -v flag, write to stderr, limit journal to single boot.
+    - IBMCloud: Disable config-drive and nocloud only if IBMCloud is enabled.
+    - Add reporting events and log_time around early source of blocking time
+    - IBMCloud: recognize provisioning environment during debug boots.
+    - net: detect unstable network names and trigger a settle if needed
+    - IBMCloud: improve documentation in datasource.
+    - sysconfig: dhcp6 subnet type should not imply dhcpv4 [Vitaly Kuznetsov]
+    - packages/debian/control.in: add missing dependency on iproute2.
+    - DataSourceSmartOS: add locking of serial device. [Mike Gerdts]
+    - DataSourceSmartOS: sdc:hostname is ignored [Mike Gerdts]
+    - DataSourceSmartOS: list() should always return a list [Mike Gerdts]
+    - schema: in validation, raise ImportError if strict but no jsonschema.
+    - set_passwords: Add newline to end of sshd config, only restart if
+      updated.
+    - pylint: pay attention to unused variable warnings.
+    - doc: Add documentation for AliYun datasource. [Junjie Wang]
+    - Schema: do not warn on duplicate items in commands.
+    - net: Depend on iproute2's ip instead of net-tools ifconfig or route
+    - DataSourceSmartOS: fix hang when metadata service is down [Mike Gerdts]
+    - DataSourceSmartOS: change default fs on ephemeral disk from ext3 to
+      ext4. [Mike Gerdts]
+    - pycodestyle: Fix invalid escape sequences in string literals.
+    - Implement bash completion script for cloud-init command line
+    - tools: Fix make-tarball cli tool usage for development
+    - renderer: support unicode in render_from_file.
+    - Implement ntp client spec with auto support for distro selection
+    - Apport: add Brightbox, IBM, LXD, and OpenTelekomCloud to list of clouds.
+    - tests: fix ec2 integration network metadata validation
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Thu, 21 Jun 2018 14:32:29 -0600
+
+cloud-init (18.2-4-g05926e48-0ubuntu1~16.04.2) xenial-proposed; urgency=medium
+
+  * cherry-pick 6ef92c98: IBMCloud: recognize provisioning environment
+    during debug (LP: #1767166)
+  * cherry-pick 11172924: IBMCloud: Disable config-drive and nocloud
+    only if IBMCloud (LP: #1766401)
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Mon, 30 Apr 2018 15:52:05 -0600
+
+cloud-init (18.2-4-g05926e48-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/new-upstream-snapshot: Remove script, now maintained elsewhere.
+  * New upstream snapshot. (LP: #1759406)
+    - tests: fix integration tests to support lxd 3.0 release
+    - correct documentation to match correct attribute name usage.
+      [Dominic Schlegel]
+    - cc_resizefs, util: handle no /dev/zfs
+    - doc: Fix links in OpenStack datasource documentation. [Dominic Schlegel]
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Tue, 03 Apr 2018 17:01:55 -0600
+
+cloud-init (18.2-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * Drop the following cherry picks in debian/patches. They are now
+    incorporated now incorporated in the upstream source:
+    + cpick-40e7738-GCE-fix-reading-of-user-data-that-is-not-base64-encoded
+  * Refresh patches against upstream:
+    + azure-use-walinux-agent.patch
+    + ds-identify-behavior-xenial.patch
+  * New upstream release. (LP: #1759406)
+    - release 18.2
+    - Hetzner: Exit early if dmi system-manufacturer is not Hetzner.
+    - Add missing dependency on isc-dhcp-client to trunk ubuntu packaging.
+    - FreeBSD: resizefs module now able to handle zfs/zpool. [Dominic Schlegel]
+    - cc_puppet: Revert regression of puppet creating ssl and ssl_cert dirs
+    - Enable IBMCloud datasource in settings.py.
+    - IBMCloud: Initial IBM Cloud datasource.
+    - tests: remove jsonschema from xenial tox environment.
+    - tests: Fix newly added schema unit tests to skip if no jsonschema.
+    - ec2: Adjust ec2 datasource after exception_cb change.
+    - Reduce AzurePreprovisioning HTTP timeouts. [Douglas Jordan]
+    - Revert the logic of exception_cb in read_url. [Kurt Garloff]
+    - ubuntu-advantage: Add new config module to support ubuntu-advantage-tools
+    - Handle global dns entries in netplan
+    - Identify OpenTelekomCloud Xen as OpenStack DS. [Kurt Garloff]
+    - datasources: fix DataSource subclass get_hostname method signature
+    - OpenNebula: Update network to return v2 config rather than ENI.
+      [Akihiko Ota]
+    - Add Hetzner Cloud DataSource
+    - net: recognize iscsi root cases without ip= on kernel command line.
+    - tests: fix flakes warning for unused variable
+    - tests: patch leaked stderr messages from snap unit tests
+    - cc_snap: Add new module to install and configure snapd and snap packages.
+    - tests: Make pylint happy and fix python2.6 uses of assertRaisesRegex.
+    - netplan: render bridge port-priority values
+    - util: Fix subp regression. Allow specifying subp command as a string.
+    - doc: fix all warnings issued by 'tox -e doc'
+    - FreeBSD: Set hostname to FQDN. [Dominic Schlegel]
+    - tests: fix run_tree and bddeb
+    - tests: Fix some warnings in tests that popped up with newer python.
+    - set_hostname: When present in metadata, set it before network bringup.
+    - tests: Centralize and re-use skipTest based on json schema presense.
+    - This commit fixes get_hostname on the AzureDataSource. [Douglas Jordan]
+    - shellify: raise TypeError on bad input.
+    - Make salt minion module work on FreeBSD. [Dominic Schlegel]
+    - Simplify some comparisions. [Rémy Léone]
+    - Change some list creation and population to literal. [Rémy Léone]
+    - GCE: fix reading of user-data that is not base64 encoded.
+    - doc: fix chef install from apt packages example in RTD.
+    - Implement puppet 4 support [Romanos Skiadas]
+    - subp: Fix subp usage with non-ascii characters when no system locale.
+    - salt: configure grains in grains file rather than in minion config.
+      [Daniel Wallace]
+    - release 18.1
+    - OVF: Fix VMware support for 64-bit platforms. [Sankar Tanguturi]
+    - ds-identify: Fix searching for iso9660 OVF cdroms.
+    - SUSE: Fix groups used for ownership of cloud-init.log [Robert Schweikert]
+    - ds-identify: check /writable/system-data/ for nocloud seed.
+    - tests: run nosetests in cloudinit/ directory, fix py26 fallout.
+    - tools: run-centos: git clone rather than tar.
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Wed, 28 Mar 2018 12:32:23 -0600
+
+cloud-init (17.2-35-gf576b2a2-0ubuntu1~16.04.2) xenial-proposed; urgency=medium
+
+  * cherry-pick 40e7738: GCE: fix reading of user-data that is not
+    base64 encoded. (LP: #1752711)
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Thu, 01 Mar 2018 16:05:39 -0700
+
+cloud-init (17.2-35-gf576b2a2-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * New upstream snapshot. (LP: #1747059)
+    - tests: add support for logs with lxd from snap and future lxd 3.
+    - EC2: Fix get_instance_id called against cached datasource pickle.
+    - cli: fix cloud-init status to report running when before result.json
+    - net: accept network-config in netplan format for renaming interfaces
+    - Fix ssh keys validation in ssh_util [Tatiana Kholkina]
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Mon, 12 Feb 2018 10:18:13 -0700
+
+cloud-init (17.2-30-gf7deaf15-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/patches/ds-identify-behavior-xenial.patch: refresh patch.
+  * debian/grub-legacy-ec2.install: install post(inst|rm) files correctly.
+    [Simon Deziel] (LP: #1581416)
+  * New upstream snapshot (LP: #1747059)
+    - docs: Update RTD content for cloud-init subcommands.
+    - OVF: Extend well-known labels to include OVFENV.
+    - Fix potential cases of uninitialized variables.
+    - tests: Collect script output as binary, collect systemd journal, fix lxd.
+    - HACKING.rst: mention setting user name and email via git config.
+    - Azure VM Preprovisioning support. [Douglas Jordan]
+    - tools/read-version: Fix read-version when in a git worktree.
+    - docs: Fix typos in docs and one debug message. [Florian Grignon]
+    - btrfs: support resizing if root is mounted ro.
+      [Robert Schweikert]
+    - OpenNebula: Improve network configuration support.
+      [Akihiko Ota]
+    - tests: Fix EC2 Platform to return console output as bytes.
+    - tests: Fix attempted use of /run in a test case.
+    - GCE: Improvements and changes to ssh key behavior for default user.
+      [Max Illfelder]
+    - subp: make ProcessExecutionError have expected types in stderr, stdout.
+    - tests: when querying ntp server, do not do dns resolution.
+    - Recognize uppercase vfat disk labels [James Penick]
+    - tests: remove zesty as supported OS to test
+    - Do not log warning on config files that represent None.
+    - tests: Use git hash pip dependency format for pylxd.
+    - tests: add integration requirements text file
+    - MAAS: add check_instance_id based off oauth tokens.
+    - tests: update apt sources list test
+    - tests: clean up image properties
+    - tests: rename test ssh keys to avoid appearance of leaking private keys.
+    - tests: Enable AWS EC2 Integration Testing
+    - cli: cloud-init clean handles symlinks
+    - SUSE: Add a basic test of network config rendering. [Robert Schweikert]
+    - Azure: Only bounce network when necessary.
+    - lint: Fix lints seen by pylint version 1.8.1.
+    - cli: Fix error in cloud-init modules --mode=init.
+    - release 17.2
+    - ds-identify: failure in NoCloud due to unset variable usage.
+    - tests: fix collect_console when not implemented
+    - ec2: Use instance-identity doc for region and instance-id
+      [Andrew Jorgensen]
+    - tests: remove leaked tmp files in config drive tests.
+    - setup.py: Do not include rendered files in SOURCES.txt
+    - SUSE: remove delta in systemd local template for SUSE [Robert Schweikert]
+    - tests: move to using tox 1.7.5
+    - OVF: improve ds-identify to support finding OVF iso transport.
+    - VMware: Support for user provided pre and post-customization scripts
+      [Maitreyee Saikia]
+    - citest: In NoCloudKVM provide keys via metadata not userdata.
+    - pylint: Update pylint to 1.7.1, run on tests/ and tools and fix
+      complaints.
+    - Datasources: Formalize DataSource get_data and related properties.
+    - cli: Add clean and status subcommands
+    - tests: consolidate platforms into specific dirs
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Fri, 02 Feb 2018 12:37:30 -0700
+
+cloud-init (17.1-46-g7acc9e68-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * New upstream snapshot.
+    - ec2: Fix sandboxed dhclient background process cleanup.
+      (LP: #1735331)
+    - tests: NoCloudKVMImage do not modify the original local cache image.
+    - tests: Enable bionic in integration tests. [Joshua Powers]
+    - tests: Use apt-get to install a deb so that depends get resolved.
+    - sysconfig: Correctly render dns and dns search info.
+      [Ryan McCabe]
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Fri, 01 Dec 2017 10:05:01 -0700
+
+cloud-init (17.1-41-g76243487-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/cloud-init.templates: Fix capitilazation in 'AliYun'
+    (LP: #1728186)
+  * New upstream snapshot (LP: #1733653)
+    - integration test: replace curtin test ppa with cloud-init test ppa.
+    - EC2: Fix bug using fallback_nic and metadata when restoring from cache.
+    - EC2: Kill dhclient process used in sandbox dhclient.
+    - ntp: fix configuration template rendering for openSUSE and SLES
+    - centos: Provide the failed #include url in error messages
+    - Catch UrlError when #include'ing URLs [Andrew Jorgensen]
+    - hosts: Fix openSUSE and SLES setup for /etc/hosts and clarify docs.
+      [Robert Schweikert]
+    - rh_subscription: Perform null checks for enabled and disabled repos.
+      [Dave Mulford]
+    - Improve warning message when a template is not found.
+      [Robert Schweikert]
+    - Replace the temporary i9n.brickies.net with i9n.cloud-init.io.
+    - Azure: don't generate network configuration for SRIOV devices
+    - tests: address some minor feedback missed in last merge.
+    - tests: integration test cleanup and full pass of nocloud-kvm.
+    - Gentoo: chmod +x on all files in sysvinit/gentoo/
+      [Carlos Konstanski]
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Tue, 21 Nov 2017 11:45:23 -0700
+
+cloud-init (17.1-27-geb292c18-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * New upstream snapshot.
+    - EC2: Limit network config to fallback nic, fix local-ipv4 only
+      instances. (LP: #1728152)
+    - Gentoo: Use "rc-service" rather than "service". [Carlos Konstanski]
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Tue, 31 Oct 2017 13:10:51 -0600
+
+cloud-init (17.1-25-g17a15f9e-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * New upstream snapshot.
+    - resizefs: Fix regression when system booted with root=PARTUUID=
+      (LP: #1725067)
+    - tools: make yum package installation more reliable
+    - citest: fix remaining warnings raised by integration tests.
+    - citest: show the class actual class name in results.
+    - ntp: fix config module schema to allow empty ntp config
+      (LP: #1724951)
+    - tools: disable fastestmirror if using proxy [Joshua Powers]
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Mon, 23 Oct 2017 14:54:05 -0600
+
+cloud-init (17.1-18-gd4f70470-0ubuntu1~16.04.2) xenial-proposed; urgency=medium
+
+  * cherry-pick 41152f1: schema: Log debug instead of warning when
+    jsonschema is absent (LP: #1724354)
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Wed, 18 Oct 2017 15:11:25 -0600
+
+cloud-init (17.1-18-gd4f70470-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * drop the following cherry picks, now incorporated in snapshot.
+    + debian/patches/cpick-a2f8ce9c-Do-not-provide-systemd-fsck-drop...
+  * debian/copyright: dep5 updates, reorganize, add Apache 2.0 license.
+    (LP: #1718681)
+  * debian/control: drop dependency on python3-prettytable
+  * debian/rules: install rsyslog file with 0644 mode instead of 0755.
+  * debian/rules, debian/apport-launcher.py: add an apport hook. (LP: #1607345)
+  * New upstream snapshot. (LP: #1721847)
+    - simpletable: Fix get_string method to return table-formatted string
+    - net: Handle bridge stp values of 0 and convert to boolean type
+      [Chad Smith]
+    - tools: Give specific --abbrev=8 to "git describe"
+    - network: bridge_stp value not always correct [Ryan Harper]
+    - tests: re-enable tox with nocloud-kvm support [Joshua Powers]
+    - systemd: remove limit on tasks created by cloud-init-final.service.
+      [Robert Schweikert]
+    - suse: Support addition of zypper repos via cloud-config.
+      [Robert Schweikert]
+    - tests: Combine integration configs and testcases [Joshua Powers]
+    - Azure, CloudStack: Support reading dhcp options from systemd-networkd.
+      [Dimitri John Ledkov]
+    - packages/debian/copyright: remove mention of boto and MIT license
+    - systemd: only mention Before=apt-daily.service on debian based distros.
+      [Robert Schweikert]
+    - Add missing simpletable and simpletable tests for failed merge
+      [Chad Smith]
+    - Remove prettytable dependency, introduce simpletable [Andrew Jorgensen]
+    - debian/copyright: dep5 updates, reorganize, add Apache 2.0 license.
+      [Joshua Powers]
+    - tests: remove dependency on shlex [Joshua Powers]
+    - AltCloud: Trust PATH for udevadm and modprobe.
+    - DataSourceOVF: use util.find_devs_with(TYPE=iso9660)
+      [Ryan Harper]
+    - tests: remove a temp file used in bootcmd tests.
+    - release 17.1
+    - doc: document GCE datasource. [Arnd Hannemann]
+    - suse: updates to templates to support openSUSE and SLES.
+      [Robert Schweikert]
+    - suse: Copy sysvinit files from redhat with slight changes.
+      [Robert Schweikert]
+    - docs: fix sphinx module schema documentation [Chad Smith]
+    - tests: Add cloudinit package to all test targets [Chad Smith]
+    - Makefile: No longer look for yaml files in obsolete ./bin/.
+    - tests: fix ds-identify unit tests to set EC2_STRICT_ID_DEFAULT.
+    - ec2: Fix maybe_perform_dhcp_discovery to use /var/tmp as a tmpdir
+      [Chad Smith]
+    - Azure: wait longer for SSH pub keys to arrive.
+      [Paul Meyer]
+    - GCE: Fix usage of user-data.
+    - cmdline: add collect-logs subcommand. [Chad Smith]
+    - CloudStack: consider dhclient lease files named with a hyphen.
+    - resizefs: Drop check for read-only device file, do not warn on
+      overlayroot. [Chad Smith]
+    - tests: Enable the NoCloud KVM platform [Joshua Powers]
+    - resizefs: pass mount point to xfs_growfs [Dusty Mabe]
+    - vmware: Enable nics before sending the SUCCESS event. [Sankar Tanguturi]
+    - cloud-config modules: honor distros definitions in each module
+      [Chad Smith]
+    - chef: Add option to pin chef omnibus install version
+      [Ethan Apodaca]
+    - tests: execute: support command as string [Joshua Powers]
+    - schema and docs: Add jsonschema to resizefs and bootcmd modules
+      [Chad Smith]
+    - tools: Add xkvm script, wrapper around qemu-system [Joshua Powers]
+    - vmware customization: return network config format
+      [Sankar Tanguturi]
+    - Ec2: only attempt to operate at local mode on known platforms.
+    - Use /run/cloud-init for tempfile operations.
+    - ds-identify: Make OpenStack return maybe on arch other than intel.
+    - tests: mock missed openstack metadata uri network_data.json
+      [Chad Smith]
+    - relocate tests/unittests/helpers.py to cloudinit/tests
+      [Lars Kellogg-Stedman]
+    - tox: add nose timer output [Joshua Powers]
+    - upstart: do not package upstart jobs, drop ubuntu-init-switch module.
+    - tests: Stop leaking calls through unmocked metadata addresses
+      [Chad Smith]
+    - distro: allow distro to specify a default locale [Ryan Harper]
+    - tests: fix two recently added tests for sles distro.
+    - url_helper: dynamically import oauthlib import from inside oauth_headers
+      [Chad Smith]
+    - tox: make xenial environment run with python3.6
+    - suse: Add support for openSUSE and return SLES to a working state.
+      [Robert Schweikert]
+    - GCE: Add a main to the GCE Datasource.
+    - ec2: Add IPv6 dhcp support to Ec2DataSource. [Chad Smith]
+    - url_helper: fail gracefully if oauthlib is not available
+      [Lars Kellogg-Stedman]
+    - cloud-init analyze: fix issues running under python 2. [Andrew Jorgensen]
+    - Configure logging module to always use UTC time.
+      [Ryan Harper]
+    - Log a helpful message if a user script does not include shebang.
+      [Andrew Jorgensen]
+    - cli: Fix command line parsing of coniditionally loaded subcommands.
+      [Chad Smith]
+    - doc: Explain error behavior in user data include file format.
+      [Jason Butz]
+    - cc_landscape & cc_puppet: Fix six.StringIO use in writing configs
+      [Chad Smith]
+    - schema cli: Add schema subcommand to cloud-init cli and cc_runcmd schema
+      [Chad Smith]
+    - Debian: Remove non-free repositories from apt sources template.
+      [Joonas Kylmälä]
+    - tools: Add tooling for basic cloud-init performance analysis.
+      [Chad Smith]
+    - network: add v2 passthrough and fix parsing v2 config with bonds/bridge
+      params [Ryan Harper]
+    - doc: update capabilities with features available, link doc reference,
+      cli example [Ryan Harper]
+    - vcloud directory: Guest Customization support for passwords
+      [Maitreyee Saikia]
+    - ec2: Allow Ec2 to run in init-local using dhclient in a sandbox.
+      [Chad Smith]
+    - cc_ntp: fallback on timesyncd configuration if ntp is not installable
+      [Ryan Harper]
+    - net: Reduce duplicate code. Have get_interfaces_by_mac use
+      get_interfaces.
+    - tests: Fix build tree integration tests [Joshua Powers]
+    - sysconfig: Dont repeat header when rendering resolv.conf
+      [Ryan Harper]
+    - archlinux: Fix bug with empty dns, do not render 'lo' devices.
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Tue, 10 Oct 2017 14:13:24 -0600
+
+cloud-init (0.7.9-233-ge586fe35-0ubuntu1~16.04.2) xenial-proposed; urgency=medium
+
+  * cherry-pick a2f8ce9c: Do not provide systemd-fsck drop-in which
+    could cause systemd ordering loops (LP: #1717477).
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 15 Sep 2017 15:23:38 -0400
+
+cloud-init (0.7.9-233-ge586fe35-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/cloud-init.templates: enable Scaleway cloud.
+  * debian/cloud-init.templates: enable Aliyun cloud.
+  * drop the following cherry picks, now incorporated in snapshot.
+    + debian/patches/cpick-5fb49bac-azure-identify-platform...
+    + debian/patches/cpick-003c6678-net-remove-systemd-link...
+    + debian/patches/cpick-1cd4323b-azure-remove-accidental...
+    + debian/patches/cpick-ebc9ecbc-Azure-Add-network-config...
+    + debian/patches/cpick-11121fe4-systemd-make-cloud-final...
+  * debian/patches/stable-release-no-jsonschema-dep.patch:
+    add patch to remove optional dependency on jsonschema.
+  * New upstream snapshot.
+    - cloudinit.net: add initialize_network_device function and tests
+      [Chad Smith]
+    - makefile: fix ci-deps-ubuntu target [Chad Smith]
+    - tests: adjust locale integration test to parse default locale.
+    - tests: remove 'yakkety' from releases as it is EOL.
+    - centos: do not package systemd-fsck drop-in.
+    - systemd: make systemd-fsck run after cloud-init.service (LP: #1691489)
+    - tests: Add initial tests for EC2 and improve a docstring.
+    - locale: Do not re-run locale-gen if provided locale is system default.
+    - archlinux: fix set hostname usage of write_file. [Joshua Powers]
+    - sysconfig: support subnet type of 'manual'.
+    - tools/run-centos: make running with no argument show help.
+    - Drop rand_str() usage in DNS redirection detection
+      [Bob Aman] (LP: #1088611)
+    - sysconfig: use MACADDR on bonds/bridges to configure mac_address
+      [Ryan Harper]
+    - net: eni route rendering missed ipv6 default route config
+      [Ryan Harper] (LP: #1701097)
+    - sysconfig: enable mtu set per subnet, including ipv6 mtu
+      [Ryan Harper]
+    - sysconfig: handle manual type subnets [Ryan Harper]
+    - sysconfig: fix ipv6 gateway routes [Ryan Harper]
+    - sysconfig: fix rendering of bond, bridge and vlan types.
+      [Ryan Harper]
+    - Templatize systemd unit files for cross distro deltas. [Ryan Harper]
+    - sysconfig: ipv6 and default gateway fixes. [Ryan Harper]
+    - net: fix renaming of nics to support mac addresses written in upper
+      case. (LP: #1705147)
+    - tests: fixes for issues uncovered when moving to python 3.6.
+    - sysconfig: include GATEWAY value if set in subnet
+      [Ryan Harper]
+    - Scaleway: add datasource with user and vendor data for Scaleway.
+      [Julien Castets]
+    - Support comments in content read by load_shell_content.
+    - cloudinitlocal fail to run during boot [Hongjiang Zhang]
+    - doc: fix disk setup example table_type options [Sandor Zeestraten]
+    - tools: Fix exception handling. [Joonas Kylmälä]
+    - tests: fix usage of mock in GCE test.
+    - test_gce: Fix invalid mock of platform_reports_gce to return False
+      [Chad Smith]
+    - test: fix incorrect keyid for apt repository.  [Joshua Powers]
+    - tests: Update version of pylxd [Joshua Powers]
+    - write_files: Remove log from helper function signatures.
+      [Andrew Jorgensen]
+    - doc: document the cmdline options to NoCloud [Brian Candler]
+    - read_dmi_data: always return None when inside a container. (LP: #1701325)
+    - requirements.txt: remove trailing white space.
+    - Tests: Simplify the check on ssh-import-id [Joshua Powers]
+    - tests: update ntp tests after sntp added [Joshua Powers]
+    - FreeBSD: Make freebsd a variant, fix unittests and
+      tools/build-on-freebsd.
+    - FreeBSD: fix test failure
+    - FreeBSD: replace ifdown/ifup with "ifconfig down" and "ifconfig up".
+      [Hongjiang Zhang]
+    - FreeBSD: fix cdrom mounting failure if /mnt/cdrom/secure did not exist.
+      [Hongjiang Zhang]
+    - main: Don't use templater to format the welcome message
+      [Andrew Jorgensen]
+    - docs: Automatically generate module docs form schema if present.
+      [Chad Smith]
+    - debian: fix path comment in /etc/hosts template. [Jens Sandmann]
+    - suse: add hostname and fully qualified domain to template.
+      [Jens Sandmann]
+    - write_file(s): Print permissions as octal, not decimal [Andrew Jorgensen]
+    - ci deps: Add --test-distro to read-dependencies to install all deps
+      [Chad Smith]
+    - tools/run-centos: cleanups and move to using read-dependencies
+    - pkg build ci: Add make ci-deps-<distro> target to install pkgs
+      [Chad Smith]
+    - selinux: Allow restorecon to be non-fatal. [Ryan Harper]
+    - net: Allow netinfo subprocesses to return 0 or 1 due to selinux.
+      [Ryan Harper]
+    - net: Allow for NetworkManager configuration [Ryan McCabe]
+    - Use distro release version to determine if we use systemd in redhat spec
+      [Ryan Harper]
+    - net: normalize data in network_state object
+    - Integration Testing: tox env, pyxld 2.2.3, and revamp framework
+      [Wesley Wiedenmeier]
+    - Chef: Update omnibus url to chef.io, minor doc changes. [JJ Asghar]
+    - tools: add centos scripts to build and test [Joshua Powers]
+    - Drop cheetah python module as it is not needed by trunk [Ryan Harper]
+    - rhel/centos spec cleanups.
+    - cloud.cfg: move to a template.  setup.py changes along the way.
+    - Makefile: add deb-src and srpm targets. use PYVER more places.
+    - makefile: fix python 2/3 detection in the Makefile [Chad Smith]
+    - snap: Removing snapcraft plug line [Joshua Powers]
+    - RHEL/CentOS: Fix default routes for IPv4/IPv6 configuration.
+      [Andreas Karis]
+    - test: Fix pyflakes complaint of unused import. [Joshua Powers]
+    - NoCloud: support seed of nocloud from smbios information
+      [Vladimir Pouzanov] (LP: #1691772)
+    - net: when selecting a network device, use natural sort order
+      [Marc-Aurèle Brothier]
+    - fix typos and remove whitespace in various docs [Stephan Telling]
+    - systemd: Fix typo in comment in cloud-init.target. [Chen-Han Hsiao]
+    - Tests: Skip jsonschema related unit tests when dependency is absent.
+      [Chad Smith]
+    - tools/net-convert.py: support old cloudinit versions by using kwargs.
+    - ntp: Add schema definition and passive schema validation.
+      [Chad Smith] (LP: #1692916)
+    - Fix eni rendering for bridge params that require repeated key for
+      values. [Ryan Harper] (LP: #1706752)
+    - AliYun: Enable platform identification and enable by default.
+      [Junjie Wang] (LP: #1638931)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 31 Jul 2017 16:36:16 -0400
+
+cloud-init (0.7.9-153-g16a7302f-0ubuntu1~16.04.2) xenial-proposed; urgency=medium
+
+  * debian/patches/ds-identify-behavior-xenial.patch: refresh patch.
+  * cherry-pick 5fb49bac: azure: identify platform by well known value
+    in chassis asset (LP: #1693939)
+  * cherry-pick 003c6678: net: remove systemd link file writing from eni
+    renderer
+  * cherry-pick 1cd4323b: azure: remove accidental duplicate line in
+    merge.
+  * cherry-pick ebc9ecbc: Azure: Add network-config, Refactor net layer
+    to handle duplicate macs. (LP: #1690430)
+  * cherry-pick 11121fe4: systemd: make cloud-final.service run before
+    apt daily (LP: #1693361)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 28 Jun 2017 17:17:18 -0400
+
+cloud-init (0.7.9-153-g16a7302f-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * New upstream snapshot.
+    - net: fix reading and rendering addresses in cidr format.
+      [Dimitri John Ledkov] (LP: #1689346, #1684349)
+    - disk_setup: udev settle before attempting partitioning or fs creation.
+      (LP: #1692093)
+    - GCE: Update the attribute used to find instance SSH keys.
+      [Daniel Watkins] (LP: #1693582)
+    - nplan: For bonds, allow dashed or underscore names of keys.
+      [Dimitri John Ledkov] (LP: #1690480)
+    - tests: python2.6: fix unit tests usage of assertNone and format.
+    - tests: update docstring on test_configured_list_with_none
+    - fix tools/ds-identify to not write None twice.
+    - tox/build: do not package depend on style requirements.
+    - tests: ntp: Restructure cc_ntp unit tests. [Chad Smith]
+    - flake8: move the pinned version of flake8 up to 3.3.0
+    - tests: Apply workaround for snapd bug in test case. [Joshua Powers]
+    - RHEL/CentOS: Fix dual stack IPv4/IPv6 configuration.  [Andreas Karis]
+    - disk_setup: fix several issues with gpt disk partitions. (LP: #1692087)
+    - function spelling & docstring update [Joshua Powers]
+    - tests: Fix unittest bug in ntp tests. [Joshua Powers]
+    - tox: move pylint target to 1.7.1
+    - Fix get_interfaces_by_mac for empty macs (LP: #1692028)
+    - DigitalOcean: remove routes except for the public interface.
+      [Ben Howard] (LP: #1681531.)
+    - netplan: pass macaddress, when specified, for vlans
+      [Dimitri John Ledkov] (LP: #1690388)
+    - doc: various improvements for the docs on cc_users_groups.
+      [Felix Dreissig]
+    - cc_ntp: write template before installing and add service restart
+      [Ryan Harper] (LP: #1645644)
+    - tests: fix cloudstack unit tests to avoid accessing
+      /var/lib/NetworkManager [Lars Kellogg-Stedman]
+    - tests: fix hardcoded path to mkfs.ext4 [Joshua Powers] (LP: #1691517)
+    - Actually skip warnings when .skip file is present.
+      [Chris Brinker] (LP: #1691551)
+    - netplan: fix netplan render_network_state signature.
+      [Dimitri John Ledkov] (LP: #1685944)
+    - Azure: fix reformatting of ephemeral disks on resize to large types.
+      (LP: #1686514)
+    - make deb: Add devscripts dependency for make deb.
+      Cleanup packages/bddeb. [Chad Smith] (LP: #1685935)
+    - openstack: fix log message copy/paste typo in _get_url_settings
+      [Lars Kellogg-Stedman]
+    - unittests: fix unittests run on centos [Joshua Powers]
+    - Improve detection of snappy to include os-release and kernel cmdline.
+      (LP: #1689944)
+    - Add address to config entry generated by _klibc_to_config_entry.
+      [Julien Castets] (LP: #1691135)
+    - sysconfig: Raise ValueError when multiple default gateways are present.
+      [Chad Smith] (LP: #1687485)
+    - FreeBSD: improvements and fixes for use on Azure
+      [Hongjiang Zhang] (LP: #1636345)
+    - Add unit tests for ds-identify, fix Ec2 bug found.
+    - fs_setup: if cmd is specified, use shell interpretation.
+      [Paul Meyer] (LP: #1687712)
+    - doc: document network configuration defaults policy and formats.
+      [Ryan Harper]
+    - doc: Fix name of "uri" key in docs for "cc_apt_configure" module
+      [Felix Dreissig]
+    - tests: Enable artful in integration tests [Joshua Powers]
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 26 May 2017 15:58:48 -0400
+
+cloud-init (0.7.9-113-g513e99e0-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/update-grub-legacy-ec2: fix early exit failure no /etc/fstab
+    file. (LP: #1682160)
+  * New upstream snapshot.
+    - nova-lxd: read product_name from environment, not platform.
+      (LP: #1685810)
+    - Fix yum repo config where keys contain array values [Dylan Perry]
+    - template: Update debian backports template [Joshua Powers]
+    - rsyslog: replace ~ with stop [Joshua Powers] (LP: #1367899)
+    - Doc: add additional RTD examples [Joshua Powers]
+    - Fix growpart for some cases when booted with root=PARTUUID.
+      (LP: #1684869)
+    - pylint: update output style to parseable [Joshua Powers]
+    - pylint: fix all logging warnings [Joshua Powers]
+    - CloudStack: Add NetworkManager to list of supported DHCP lease dirs.
+      [Syed Mushtaq Ahmed]
+    - net: kernel lies about vlans not stealing mac addresses, when they do
+      [Dimitri John Ledkov] (LP: #1682871)
+    - ds-identify: Check correct path for "latest" config drive
+      [Daniel Watkins] (LP: #1673637)
+    - doc: Fix example for resolv.conf configuration.  [Jon Grimm]
+    - Fix examples that reference upstream chef repository.  [Jon Grimm]
+    - doc: correct grammar and improve clarity in merging documentation.
+      [David Tagatac]
+    - doc: Add missing doc link to snap-config module. [Ryan Harper]
+    - snap: allows for creating cloud-init snap [Joshua Powers]
+    - DigitalOcean: assign IPv4ll address to lowest indexed interface.
+      [Ben Howard] (LP: #1676908)
+    - DigitalOcean: configure all NICs presented in meta-data.
+      [Ben Howard] (LP: #1676908)
+    - Remove (and/or fix) URL shortener references [Jon Grimm]
+    - HACKING.rst: more info on filling out contributors agreement.
+    - util: teach write_file about copy_mode option
+      [Lars Kellogg-Stedman] (LP: #1644064)
+    - DigitalOcean: bind resolvers to loopback interface.
+      [Ben Howard] (LP: #1676908)
+    - tests: fix AltCloud tests to not rely on blkid (LP: #1636531)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 27 Apr 2017 12:51:04 -0400
+
+cloud-init (0.7.9-90-g61eb03fe-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/cloud-init.templates: add Bigstep to list of sources. (LP: #1676460)
+  * New upstream snapshot.
+    - OpenStack: add 'dvs' to the list of physical link types. (LP: #1674946)
+    - Fix bug that resulted in an attempt to rename bonds or vlans.
+      (LP: #1669860)
+    - tests: update OpenNebula and Digital Ocean to not rely on host
+      interfaces.
+    - net: in netplan renderer delete known image-builtin content.
+      (LP: #1675576)
+    - doc: correct grammar in capabilities.rst [David Tagatac]
+    - ds-identify: fix detecting of maas datasource. (LP: #1677710)
+    - netplan: remove debugging prints, add debug logging [Ryan Harper]
+    - ds-identify: do not write None twice to datasource_list.
+    - support resizing partition and rootfs on system booted without
+      initramfs.  [Steve Langasek] (LP: #1677376)
+    - apt_configure: run only when needed. (LP: #1675185)
+    - OpenStack: identify OpenStack by product 'OpenStack Compute'.
+      (LP: #1675349)
+    - GCE: Search GCE in ds-identify, consider serial number in check.
+      (LP: #1674861)
+    - Add support for setting hashed passwords [Tore S. Lonoy] (LP: #1570325)
+    - Fix filesystem creation when using "partition: auto"
+      [Jonathan Ballet] (LP: #1634678)
+    - ConfigDrive: support reading config drive data from /config-drive.
+      (LP: #1673411)
+    - ds-identify: fix detection of Bigstep datasource. (LP: #1674766)
+    - test: add running of pylint [Joshua Powers]
+    - ds-identify: fix bug where filename expansion was left on.
+    - advertise network config v2 support (NETWORK_CONFIG_V2) in features.
+    - Bigstep: fix bug when executing in python3. [root]
+    - Fix unit test when running in a system deployed with cloud-init.
+    - Bounce network interface for Azure when using the built-in path.
+      [Brent Baude] (LP: #1674685)
+    - cloudinit.net: add network config v2 parsing and rendering [Ryan Harper]
+    - net: Fix incorrect call to isfile [Joshua Powers] (LP: #1674317)
+    - net: add renderers for automatically selecting the renderer.
+    - doc: fix config drive doc with regard to unpartitioned disks.
+      (LP: #1673818)
+    - test: Adding integratiron test for password as list [Joshua Powers]
+    - render_network_state: switch arguments around, do not require target
+    - support 'loopback' as a device type.
+    - Integration Testing: improve testcase subclassing [Wesley Wiedenmeier]
+    - gitignore: adding doc/rtd_html [Joshua Powers]
+    - doc: add instructions for running integration tests via tox.
+      [Joshua Powers]
+    - test: avoid differences in 'date' output due to daylight savings.
+    - Fix chef config module in omnibus install. [Jeremy Melvin] (LP: #1583837)
+    - Add feature flags to cloudinit.version. [Wesley Wiedenmeier]
+    - tox: add a citest environment
+    - Support chpasswd/list being a list in addition to a string.
+      [Sergio Lystopad] (LP: #1665694)
+    - doc: Fix configuration example for cc_set_passwords module.
+      [Sergio Lystopad] (LP: #1665773)
+    - net: support both ipv4 and ipv6 gateways in sysconfig.
+      [Lars Kellogg-Stedman] (LP: #1669504)
+    - net: do not raise exception for > 3 nameservers
+      [Lars Kellogg-Stedman] (LP: #1670052)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 03 Apr 2017 11:52:56 -0400
+
+cloud-init (0.7.9-48-g1c795b9-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/rules: install Z99-cloudinit-warnings.sh to /etc/profile.d
+  * debian/patches/ds-identify-behavior-xenial.patch: adjust default
+    behavior of ds-identify for SRU (LP: #1669675, #1660385).
+  * New upstream snapshot.
+    - Support warning if the used datasource is not in ds-identify's list
+      (LP: #1669675).
+    - DatasourceEc2: add warning message when not on AWS. (LP: #1660385)
+    - Z99-cloudinit-warnings: Add profile.d script for showing warnings on
+    - Z99-cloud-locale-test.sh: convert tabs to spaces, remove unneccesary
+      execute bit in permissions.
+    - (RedHat) net: correct errors in cloudinit/net/sysconfig.py
+      [Lars Kellogg-Stedman]
+    - ec2_utils: fix MetadataLeafDecoder that returned bytes on empty
+    - Fix eni rendering of multiple IPs per interface [Ryan Harper]
+      (LP: #1657940)
+    - Add 3 ecdsa-sha2-nistp* ssh key types now that they are standardized
+      [Lars Kellogg-Stedman]
+    - EC2: Do not cache security credentials on disk [Andrew Jorgensen]
+      (LP: #1638312)
+    - OpenStack: Use timeout and retries from config in get_data.
+      [Lars Kellogg-Stedman] (LP: #1657130)
+    - Fixed Misc issues related to VMware customization. [Sankar Tanguturi]
+    - (RedHat) Use dnf instead of yum when available [Lars Kellogg-Stedman]
+    - Get early logging logged, including failures of cmdline url.
+    - test / doc / build environment changes
+      - Remove style checking during build and add latest style checks to
+        tox [Joshua Powers]
+      - code-style: make master pass pycodestyle (2.3.1) cleanly, currently
+        [Joshua Powers]
+      - Fix small typo and change iso-filename for consistency
+      - tools/mock-meta: support python2 or python3 and ipv6 in both.
+      - tests: remove executable bit on test_net, so it runs, and fix it.
+      - tests: No longer monkey patch httpretty for python 3.4.2
+      - reset httppretty for each test [Lars Kellogg-Stedman]
+      - build: fix running Make on a branch with tags other than master
+      - doc: Fix typos and clarify some aspects of the part-handler
+        [Erik M. Bray]
+      - doc: add some documentation on OpenStack datasource.
+      - Fix minor docs typo: perserve > preserve [Jeremy Bicha]
+      - validate-yaml: use python rather than explicitly python3
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 06 Mar 2017 16:34:10 -0500
+
+cloud-init (0.7.9-0ubuntu1~16.04.2) xenial-proposed; urgency=medium
+
+  * debian/update-grub-legacy-ec2: fix shell syntax error. (LP: #1662221)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 06 Feb 2017 16:18:28 -0500
+
+cloud-init (0.7.9-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/copyright: update License field to include Apache.
+  * debian/update-grub-legacy-ec2: fix to include kernels whose config
+    has CONFIG_XEN=y (LP: #1379080).
+  * debian/patches/azure-use-walinux-agent.patch: continue relying on
+    walinux agent in stable release.
+  * New upstream release.
+    - doc: adjust headers in tests documentation for consistency.
+    - pep8: fix issue found in zesty build with pycodestyle.
+    - integration test: initial commit of integration test framework
+      [Wesley Wiedenmeier]
+    - LICENSE: Allow dual licensing GPL-3 or Apache 2.0 [Jon Grimm]
+    - Fix config order of precedence, putting kernel command line over system.
+      [Wesley Wiedenmeier] (LP: #1582323)
+    - pep8: whitespace fix [Scott Moser]
+    - Update the list of valid ssh keys. [Michael Felt]
+    - network: add ENI unit test for statically rendered routes.
+    - set_hostname: avoid erroneously appending domain to fqdn
+      [Lars Kellogg-Stedman] (LP: #1647910)
+    - doc: change 'nobootwait' to 'nofail' in docs [Anhad Jai Singh]
+    - Replace an expired bit.ly link in code comment. [Joshua Harlow]
+    - user-groups: fix bug when groups was provided as string and had spaces
+      [Scott Moser] (LP: #1354694)
+    - when adding a user, strip whitespace from group list
+      [Lars Kellogg-Stedman] (LP: #1354694)
+    - fix decoding of utf-8 chars in yaml test
+    - Replace usage of sys_netdev_info with read_sys_net
+      [Joshua Harlow] (LP: #1625766)
+    - fix problems found in python2.6 test. [Joshua Harlow]
+    - Just use file logging by default [Joshua Harlow] (LP: #1643990)
+    - Improve formatting for ProcessExecutionError [Wesley Wiedenmeier]
+    - flake8: fix trailing white space
+    - Doc: various documentation fixes [Sean Bright]
+    - cloudinit/config/cc_rh_subscription.py: Remove repos before adding
+      [Brent Baude]
+    - packages/redhat: fix rpm spec file.
+    - main: set TZ in environment if not already set. [Ryan Harper]
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 20 Jan 2017 10:43:12 -0500
+
+cloud-init (0.7.8-49-g9e904bb-0ubuntu1~16.04.4) xenial; urgency=medium
+
+  * debian/update-grub-legacy-ec2:
+    - Correctly detect kernels ending in -aws as kernels that can boot on EC2
+      (LP: #1655934)
+
+ -- Daniel Watkins <daniel.watkins@xxxxxxxxxxxxx>  Thu, 12 Jan 2017 11:56:03 +0000
+
+cloud-init (0.7.8-49-g9e904bb-0ubuntu1~16.04.3) xenial-proposed; urgency=medium
+
+  * debian/cherry-pick: use git format-patch rather than git show
+  * cherry-pick a9d41de: CloudSigma: Fix bug where datasource was not
+    loaded in local (LP: #1648380)
+  * cherry-pick c9c9197: mounts: use mount -a again to accomplish mounts
+    (LP: #1647708)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 13 Dec 2016 16:02:50 -0500
+
+cloud-init (0.7.8-49-g9e904bb-0ubuntu1~16.04.2) xenial-proposed; urgency=medium
+
+  * cherry-pick 18203bf: disk_setup: Use sectors as unit when formatting
+    MBR disks with sfdisk. (LP: #1460715)
+  * cherry-pick 6e92c5f: net/cmdline: Consider ip= or ip6= on command
+    line not only ip= (LP: #1639930)
+  * cherry-pick 8c6878a: tests: fix assumptions that expected no eth0 in
+    system. (LP: #1644043)
+  * cherry-pick 2d2ec70: OpenStack: extend physical types to include
+    hyperv, hw_veb, vhost_user. (LP: #1642679)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 01 Dec 2016 16:57:39 -0500
+
+cloud-init (0.7.8-49-g9e904bb-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/cloud-init.postinst: update /etc/fstab on Azure to fix
+    future resize operations. (LP: #1611074)
+  * New upstream snapshot.
+    - Add activate_datasource, for datasource specific code paths.
+      (LP: #1611074)
+    - systemd: cloud-init-local use RequiresMountsFor=/var/lib/cloud
+      (LP: #1642062)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 18 Nov 2016 16:51:54 -0500
+
+cloud-init (0.7.8-47-gb6561a1-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/cloud-init.templates: enable DigitalOcean by default [Ben Howard]
+  * New upstream snapshot.
+    - systemd/cloud-init-local.service:
+      + replace 'Wants' and 'After' on local-fs.target with more granular
+        After=systemd-remount-fs.service and RequiresMountsFor=/var/lib
+        and Before=sysinit.target.
+        This is done run sufficiently early enough to update /etc/fstab.
+        (LP: #1611074)
+      + add Before=NetworkManager.service so that cloud-init can render
+        NetworkManager network config before it would apply them.
+    - systemd/cloud-init.service:
+      + add Before=sysinit.target and DefaultDependencies=no (LP: #1611074)
+      + drop Requires=networking.service to work where networking.service is
+        not needed.
+      + add Conflicts=shutdown.target
+      + drop unnecessary Wants=local-fs.target
+    - net: support reading ipv6 dhcp config from initramfs [LaMont Jones]
+      (LP: #1621615)
+    - dmidecode: Allow dmidecode to be used on aarch64, and only attempt
+      usage on x86, x86_64, and aarch64. [Robert Schweikert]
+    - disk-config: udev settle after partitioning in gpt format.
+      (LP: #1626243)
+    - Add support for snap create-user on Ubuntu Core images. [Ryan Harper]
+      (LP: #1619393)
+    - Fix sshd restarts for rhel distros. [Jim Gorz]
+    - Move user/group functions to new ug_util file [Joshua Harlow]
+    - update Gentoo initscripts to run in the correct order [Matthew Thode]
+    - MAAS: improve the debugging tool in datasource to consider
+      config provided on kernel cmdline.
+    - lxd: Update network config for LXD 2.3 [Stéphane Graber] (LP: #1640556)
+    - Decode unicode types in decode_binary [Robert Schweikert]
+    - Allow ephemeral drive to be unpartitioned [Paul Meyer]
+    - subp: add 'update_env' argument which allows for more easily adding
+      environment variables to a subprocess call.
+    - Adjust mounts and disk configuration for systemd. (LP: #1611074)
+    - DataSources:
+      + Ec2: protect against non-dictionary in block-device-mapping.
+      + AliYun: Add new datasource for Ali-Cloud ECS, that is
+        available but not enabled by default [kaihuan.pkh]
+      + DigitalOcean: use meta-data for network configuration and
+        enable data source by default. [Ben Howard]
+      + OpenNebula: replace parsing of 'ip' command with similar function
+        available in cloudinit.net.  This fixed unit tests when running
+        in environment with no networking.
+    - doc changes:
+      + Add documentation on stages of boot.
+      + make the RST files consistently formated and other improvements.
+      + fixed example to not overwrite /etc/hosts [Chris Glass]
+      + fix spelling / typos in ca_certs and scripts_vendor.
+      + improve HACKING.rst file
+      + Add documentation for logging features. [Wesley Wiedenmeier]
+      + Improve module documentation and doc cleanup. [Wesley Wiedenmeier]
+    - code style and unit test changes:
+      + pep8: fix style errors reported by pycodestyle 2.1.0
+      + pyflakes: fix issue with pyflakes 1.3 found in ubuntu zesty-proposed.
+      + Add coverage dependency to bddeb to fix package build.
+      + Add coverage collection to tox unit tests. [Joshua Powers]
+      + do not read system /etc/cloud/cloud.cfg.d (LP: #1635350)
+      + tests: silence the Cheetah UserWarning about NameMapper C version.
+      + Fix python2.6 things found running in centos 6.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 15 Nov 2016 17:29:12 -0500
+
+cloud-init (0.7.8-1-g3705bb5-0ubuntu1~16.04.3) xenial-proposed; urgency=medium
+
+  * ntp: move to run after apt configuration (LP: #1628337).
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 03 Oct 2016 12:22:26 -0400
+
+cloud-init (0.7.8-1-g3705bb5-0ubuntu1~16.04.2) xenial; urgency=medium
+
+  * Support IPv6 config coming from initramfs.  LP: #1621615.
+
+ -- LaMont Jones <lamont@xxxxxxxxxx>  Fri, 23 Sep 2016 20:54:40 -0600
+
+cloud-init (0.7.8-1-g3705bb5-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * New upstream release 0.7.8.
+  * New upstream snapshot.
+    - systemd: put cloud-init.target After multi-user.target (LP: #1623868)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 15 Sep 2016 09:57:27 -0400
+
+cloud-init (0.7.7-31-g65ace7b-0ubuntu1~16.04.2) xenial-proposed; urgency=medium
+
+  * debian/control: add Breaks of older versions of walinuxagent (LP: #1623570)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 14 Sep 2016 16:39:50 -0400
+
+cloud-init (0.7.7-31-g65ace7b-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/control: fix missing dependency on python3-serial,
+    and make SmartOS datasource work.
+  * debian/cloud-init.templates fix capitalisation in template so
+    dpkg-reconfigure works to select OpenStack. (LP: #1575727)
+  * d/README.source, d/control, d/new-upstream-snapshot, d/rules: sync
+    with yakkety for changes due to move to git.
+  * d/rules: change PYVER=python3 to PYVER=3 to adjust to upstream change.
+  * debian/rules, debian/cloud-init.install: remove install file
+    to ensure expected files are collected into cloud-init deb.
+    (LP: #1615745)
+  * debian/dirs: remove obsolete / unused file.
+  * upstream move from bzr to git.
+  * New upstream snapshot.
+    - Allow link type of null in network_data.json [Jon Grimm] (LP: #1621968)
+    - DataSourceOVF: fix user-data as base64 with python3 (LP: #1619394)
+    - remove obsolete .bzrignore
+    - systemd: Better support package and upgrade. (LP: #1576692, #1621336)
+    - tests: cleanup tempdirs in apt_source tests
+    - apt config conversion: treat empty string as not provided. (LP: #1621180)
+    - Fix typo in default keys for phone_home [Roland Sommer] (LP: #1607810)
+    - salt minion: update default pki directory for newer salt minion.
+      (LP: #1609899)
+    - bddeb: add --release flag to specify the release in changelog.
+    - apt-config: allow both old and new format to be present.
+      [Christian Ehrhardt] (LP: #1616831)
+    - python2.6: fix dict comprehension usage in _lsb_release. [Joshua Harlow]
+    - Add a module that can configure spacewalk. [Joshua Harlow]
+    - add install option for openrc [Matthew Thode]
+    - Generate a dummy bond name for OpenStack (LP: #1605749)
+    - network: fix get_interface_mac for bond slave, read_sys_net for ENOTDIR
+    - azure dhclient-hook cleanups
+    - Minor cleanups to atomic_helper and add unit tests.
+    - Fix Gentoo net config generation [Matthew Thode]
+    - distros: fix get_primary_arch method use of os.uname [Andrew Jorgensen]
+    - Apt: add new apt configuration format [Christian Ehrhardt]
+    - Get Azure endpoint server from DHCP client [Brent Baude]
+    - DigitalOcean: use the v1.json endpoint [Ben Howard]
+    - MAAS: add vendor-data support (LP: #1612313)
+    - Upgrade to a configobj package new enough to work [Joshua Harlow]
+    - ConfigDrive: recognize 'tap' as a link type. (LP: #1610784)
+    - NoCloud: fix bug providing network-interfaces via meta-data.
+      (LP: 1577982)
+    - Add distro tags on config modules that should have it [Joshua Harlow]
+    - ChangeLog: update changelog for previous commit.
+    - add ntp config module [Ryan Harper]
+    - SmartOS: more improvements for network configuration
+    - tools/read-version: update to address change in version
+    - make-tarball: older versions of git with --format=tar.
+    - read-version: do not attempt git-describe if no git.
+    - Newer requests have strong type validation [Joshua Harlow]
+    - For upstream snapshot versions do not modify git-describe output.
+    - adjust signal_handler for version changes.
+    - revert unintended change to ubuntu sources list
+    - drop modification of version during make-tarball, tools changes.
+    - adjust tools and version information.
+    - Update build tools to work with git [Lars Kellogg-Stedman]
+    - fix pep8 errors in mcollective unit tests
+    - mcollective: add tests, cleanups and bug fix when no config in /etc.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 12 Sep 2016 16:05:25 -0400
+
+cloud-init (0.7.7~bzr1256-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * New upstream snapshot.
+    - distros/debian.py: fix eni renderer to not render .link files
+    - fixes for execution in python2.6.
+    - ConfigDrive: fix writing of 'injected' files and legacy networking
+      (LP: #1602373)
+    - improvements to /etc/network/interfaces rendering including rendering
+      of 'lo' devices and sorting attributes within a interface section.
+    - fix mcollective module that was completely broken if using python3
+      (LP: #1597699)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 15 Jul 2016 13:27:04 -0400
+
+cloud-init (0.7.7~bzr1246-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * New upstream snapshot.
+    - fix restoring from a datasource that did not have dsmode (LP: #1596690)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 27 Jun 2016 16:31:37 -0400
+
+cloud-init (0.7.7~bzr1245-0ubuntu1~16.04.1) xenial-proposed; urgency=medium
+
+  * debian/new-upstream-snapshot: minor change supporting revision
+    passed in as an argument.
+  * debian/control: Build-Depends on python3-unittest2
+  * SRU Upstream to 16.04 (LP: #1595302).
+    - user_data: fix error when user-data is not utf-8 decodable
+    - write_files: if no permissions are provided, use the default without
+      logging a warning.
+    - do not write /etc/systemd/network/50-cloud-init-*.link files
+    - fix several potential errors identified by pylint.
+    - move 'main' into cloudinit/cmd/ for easier testing
+    - Remove trailing dot from GCE metadata URL [Phil Roche]
+    - Refactor cloudinit networking module to improve testing
+    - Change missing Cheetah log warning to debug [Andrew Jorgensen]
+    - network configuration improvements
+      - centrally handle 'dsmode' (DataSource mode) to be 'local' or 'net.
+      - support networking information being read on dreamcompute
+      - support reading and applying networking information on SmartOS
+      - improve reading networking from openstack network_data.json
+      - support for renaming devices in a container.
+      - remove blocking of udev rules
+    - Apt sources configuration improvements
+    - cloud-config specified on kernel command line will now override
+      system settings.
+    - fix timestamp in reporting events.
+    - Paths: fix instance path if datasource's id has a '/'.
+    - Config Drive: fix check_instance_id signature.
+    - cloudstack: Only use DHCPv4 lease files as a datasource
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 22 Jun 2016 16:06:49 -0400
+
+cloud-init (0.7.7~bzr1212-0ubuntu1) xenial; urgency=medium
+
+  * New upstream snapshot.
+    - fix iscsi root by not writing interface as 'auto' when networking
+      information comes from kernel command line (LP: #1568637)
+    - apply networking less often, when possible only on first
+      instance boot (LP: #1571004).
+    - no longer delete /etc/network/interfaces.d/eth0.cfg on
+      ubuntu (LP: #1563487)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 15 Apr 2016 16:25:43 -0400
+
+cloud-init (0.7.7~bzr1209-0ubuntu1) xenial; urgency=medium
+
+  * New upstream snapshot.
+    - fallback net config: do not consider devices starting with 
+      'veth' (LP: #1569064)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 14 Apr 2016 16:24:38 -0400
+
+cloud-init (0.7.7~bzr1208-0ubuntu1) xenial; urgency=medium
+
+  * New upstream snapshot.
+    - phone_home: allow usage of fqdn (LP: #1566824) [Ollie Armstrong]
+    - chef: straighten out validation_cert and validation_key (LP: #1568940)
+    - skip bridges when generating fallback networking (LP: #1569974)
+    - rh_subscription: only check subscription if configured (LP: #1536706)
+    - SmartOS, CloudSigma: fix error when dmi data is not availble
+      (LP: #1569469)
+    - DataSourceNoCloud: fix check_instance_id when upgraded (LP: #1568150)
+    - lxd: adds basic support for dpkg based lxd-bridge 
+      configuration. (LP: #1569018)
+    - centos: Ensure that a resolve conf object is written as a string.
+      (LP: #1479988)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 13 Apr 2016 13:19:03 -0400
+
+cloud-init (0.7.7~bzr1200-0ubuntu1) xenial; urgency=medium
+
+  * New upstream snapshot.
+    - fix adding of users when no group is specified (LP: #1562918)
+    - fix write_files with compressed content (LP: #1565638)
+    - systemd: do not specify After of obsolete syslog.target (LP: #1536964)
+    - chef: fix chef installation from gems (LP: #1553345)
+    - disk_setup: correctly send force to mkfs on block devices (LP: #1548772)
+    - locale: list unsupported environment settings in warning (LP: #1558069)
+    - fix NoCloud and other datasources if no datasource config (LP: #1514407)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 06 Apr 2016 13:07:27 -0400
+
+cloud-init (0.7.7~bzr1192-0ubuntu2) xenial; urgency=medium
+
+  [Logan Rosen]
+  * debian/cloud-init.postinst: fix shell syntax in upgrade (LP: #1564187)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 31 Mar 2016 10:09:09 -0400
+
+cloud-init (0.7.7~bzr1192-0ubuntu1) xenial; urgency=medium
+
+  * New upstream snapshot.
+    - Misc fixes for VMware Support.
+    - network config improvements:
+      - do not raise exception on non-debian if network config is found.
+      - apply network config in 'cloud-init --local' even if there is
+        no datasource found.
+      - do not write 70-persistent-net.rules only systemd .link files.
+    - improve how cloud-init-wait waits: remove the check and sleep
+      loop and replace it with 'udevadm settle'.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 29 Mar 2016 16:34:25 -0400
+
+cloud-init (0.7.7~bzr1189-0ubuntu1) xenial; urgency=medium
+
+  * d/control: adjust build dependency as python3-pyflakes in xenial
+    now provides python3 modules for pyflakes.
+  * d/cloud-init.install, d/control, d/dirs, d/grub-legacy-ec2.install:
+    run wrap-and-sort
+  * d/cloud-init.install: add lib/udev/ files.
+  * d/cloud-init.postinst: touch /var/lib/cloud/data/upgraded-network
+    if upgrading from version that did not have network support.
+  * New upstream snapshot.
+    * initial support for support network configuration in cloud-init --local
+    * do not rely on network metadata service on every boot for 
+      ConfigDrive Openstack Azure (LP: #1553815)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 24 Mar 2016 17:36:40 -0400
+
+cloud-init (0.7.7~bzr1182-0ubuntu1) xenial; urgency=medium
+
+  * New upstream snapshot.
+    * systemd changes enforcing intended ordering (cloud-init-local.service
+      before networking and cloud-init.service before it comes up).
+    * when reading dmidecode data, return found but unset value as "" rather
+      than failing to decode that value.
+    * add default user to 'lxd' group and create groups when necessary
+      (LP: #1539317)
+    * No longer run pollinate in seed_random (LP: #1554152)
+    * Enable BigStep data source.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 14 Mar 2016 09:58:56 -0400
+
+cloud-init (0.7.7~bzr1176-0ubuntu1) xenial; urgency=medium
+
+  * d/README.source, d/new-upstream-snapshot: simplify the README.source
+    with a script.
+  * d/rules: support DEB_BUILD_OPTIONS=nocheck and remove unused code.
+  * d/rules: make tests with python3
+  * d/control: add pep8 as a build depends
+  * d/cloud-init.preinst, d/cloud-init.postinst adjust upgrade path
+    to adjust systemd jobs that put cloud-init unit jobs directly
+    in multi-user.target.
+  * New upstream snapshot.
+    * Add Image Customization Parser for VMware vSphere Hypervisor Support.
+      Disabled by default. [Sankar Tanguturi]
+    * lxd: add initial support for setting up lxd using 'lxd init'
+    * Handle escaped quotes in WALinuxAgentShim.find_endpoint (LP: #1488891)
+    * timezone: use a symlink when updating /etc/localtime (LP: #1543025)
+    * enable more code testing in 'make check'
+    * Added Bigstep datasource [Daniel Watkins]
+    * Enable password changing via a hashed string [Alex Sirbu]
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 04 Mar 2016 15:44:02 -0500
+
+cloud-init (0.7.7~bzr1160-0ubuntu1) xenial; urgency=medium
+
+  * New upstream snapshot.
+    * SmartOS: Add support for Joyent LX-Brand Zones (LP: #1540965)
+    * systemd/power_state: fix power_state when cloud-final exited failure
+      (LP: #1449318)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 04 Feb 2016 17:22:36 -0500
+
+cloud-init (0.7.7~bzr1156-0ubuntu2) xenial; urgency=medium
+
+  * debian/cloud-init.postinst, systemd_detect_virt.patch: Call
+    systemd-detect-virt instead of the Ubuntu specific running-in-container
+    wrapper. (LP: #1539016)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx>  Thu, 28 Jan 2016 14:12:51 +0100
+
+cloud-init (0.7.7~bzr1156-0ubuntu1) xenial; urgency=medium
+
+  * New upstream snapshot.
+  * d/cloud-init.preinst: migrate Azure instance ID from old ID to stable
+    ID (LP: #1506187).
+
+ -- Ben Howard <ben.howard@xxxxxxxxxx>  Tue, 17 Nov 2015 11:59:49 -0700
+
+cloud-init (0.7.7~bzr1155-0ubuntu1) xenial; urgency=medium
+
+  * New upstream snapshot.
+    * cc_mounts: use 'nofail' rather than 'nobootwait' if system uses systemd.
+      (LP: #1514485).
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 10 Nov 2015 12:35:31 -0500
+
+cloud-init (0.7.7~bzr1154-0ubuntu1) xenial; urgency=medium
+
+  * New upstream snapshot.
+    * create the same /etc/apt/sources.list that is present in default server
+      ISO installs.  This change adds restricted, multiverse, and -backports
+      (LP: #1177432).
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 05 Nov 2015 12:10:00 -0500
+
+cloud-init (0.7.7~bzr1149-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    azure: support extracting SSH key values from ovf-env.xml (LP: #1506244)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 14 Oct 2015 20:38:45 -0400
+
+cloud-init (0.7.7~bzr1148-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * support configuring and installing the Ubuntu fan driver (LP: #1504604)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 09 Oct 2015 13:00:12 -0400
+
+cloud-init (0.7.7~bzr1147-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * MAAS: fix oauth when system clock is bad (LP: #1499869)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 29 Sep 2015 20:16:57 -0400
+
+cloud-init (0.7.7~bzr1146-0ubuntu2) wily; urgency=medium
+
+  * replace usage of python with python3 in postinst (LP: #1498493)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 22 Sep 2015 09:49:01 -0400
+
+cloud-init (0.7.7~bzr1146-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * make the webhook reporter post json data rather than
+      urlencoded data (LP: #1496960)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 17 Sep 2015 15:59:35 -0400
+
+cloud-init (0.7.7~bzr1145-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * fix default builtin config of snappy to set ssh_enabled=auto.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 15 Sep 2015 15:33:19 -0400
+
+cloud-init (0.7.7~bzr1144-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    [ Ben Howard ]
+    * snappy: enable ssh on snappy if ssh keys are provided or
+      password authentication is requested (LP: #1494816)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 11 Sep 2015 17:00:16 -0400
+
+cloud-init (0.7.7~bzr1143-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * NoCloud: fix consumption of vendor-data (LP: #1493453)
+    * power_state: support power change only on 'condition'
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 10 Sep 2015 16:20:44 -0400
+
+cloud-init (0.7.7~bzr1141-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * fix bug in cloud-init main preventing any usage.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 03 Sep 2015 11:36:37 -0400
+
+cloud-init (0.7.7~bzr1140-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * Handle symlink mount points in mount_cb (LP: #1490796).
+    * sync curtin reporting changes back to cloud-init.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 02 Sep 2015 16:50:54 -0400
+
+cloud-init (0.7.7~bzr1138-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * MAAS: fixes to data source and OauthUrlHelper (LP: #1488507)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 25 Aug 2015 15:28:06 -0400
+
+cloud-init (0.7.7~bzr1137-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * swap: use fallocate to create swapfile for speedup. (LP: #1482994)
+    * reporting: print handler fix.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 12 Aug 2015 12:54:51 -0400
+
+cloud-init (0.7.7~bzr1135-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * some stack traces fixed.
+    * improved rsyslog/syslog config format
+    * add reporting module for webhook or log reporting of events.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 07 Aug 2015 17:16:51 -0400
+
+cloud-init (0.7.7~bzr1127-0ubuntu1) wily; urgency=medium
+
+  [ Scott Moser ]
+  * d/README.source, debian/cherry-pick-rev: improve packaging tool
+
+  [ Daniel Watkins ]
+  * d/cloud-init.templates: Include SmartOS data source in the default list
+    and choices. (LP: #1398997)
+
+  [ Scott Moser ]
+  * New upstream snapshot.
+    * check for systemd using sd_booted symantics (LP: #1461201)
+    * fix importing of gpg keys in python3 (LP: #1463373)
+    * fix specification of devices to growpart (LP: #1465436)
+    * reliably detect and use Azure disks using udev rules (LP: #1411582)
+    * support selection of Ubuntu mirrors on GCE (LP: #1470890)
+    * ssh: generate ed25519 host keys if supported (LP: #1461242)
+    * test fixes and cleanups
+    * fix reading of availability-zone on GCE (LP: #1470880)
+    * fix cloudsigma datasource with python3 (LP: #1475215)
+    * fix rightscale user-data
+    * fix consumption of CloudStack passwords on newer CloudStack platforms
+      (LP: #1440263, #1464253)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 22 Jul 2015 17:06:18 -0400
+
+cloud-init (0.7.7~bzr1109-0ubuntu2) wily; urgency=medium
+
+  * d/control: cloud-init Recommends gdisk (LP: #1462521)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 05 Jun 2015 16:33:38 -0400
+
+cloud-init (0.7.7~bzr1109-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * Azure: Redact on-disk user password in /var/lib/ovf-env.xml
+      (LP: #1311827)
+    * EC2: be aware of eu-central-1 availability zone (LP: #1456684)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 28 May 2015 10:54:45 -0400
+
+cloud-init (0.7.7~bzr1106-0ubuntu1) wily; urgency=medium
+
+  * New upstream snapshot.
+    * Azure: remove strict dependency on walinux-agent, but still utilize
+      it for the time being.
+    * fix read_seeded that is used in seeding user-data and meta-data
+      from additional locations (LP: #1455233)
+    * fix bug preventing partitioning of disks in many cases. (LP: #1311463)
+    * Azure: do not override hostname if user has set it (LP: #1375252)
+    * Fix GCE datasource not handling per-instance SSH keys (LP: #1403617)
+    * Allow specifying of uid in user/group config.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 15 May 2015 17:04:19 -0400
+
+cloud-init (0.7.7~bzr1091-0ubuntu1) vivid; urgency=medium
+
+  * New upstream snapshot.
+    * fix processing of user-data in cloud-config-archive format (LP: #1445143)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 17 Apr 2015 12:04:16 -0400
+
+cloud-init (0.7.7~bzr1088-0ubuntu3) vivid; urgency=medium
+
+  * systemd/*.service: don't declare a Wants/Requires on network.target; this
+    is a passive target that should only be pulled in by implementors of the
+    networking service.  The requirement for network needs to be 
+    expressed as a dependency on network-online.target.  LP: #1440180.
+
+ -- Steve Langasek <steve.langasek@xxxxxxxxxx>  Thu, 09 Apr 2015 07:35:55 -0700
+
+cloud-init (0.7.7~bzr1088-0ubuntu2) vivid; urgency=medium
+
+  [ Didier Roche ]
+  * Don't start or restart cloud-init services on install and upgrade
+    (LP: #1438520)
+
+  [ Scott Moser ]
+  * d/control: Build-Depends on iproute2 (tests)
+  * d/control: Only Recommend (not both Depend and Recommend)
+    software-properties-common
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 03 Apr 2015 11:13:28 -0400
+
+cloud-init (0.7.7~bzr1088-0ubuntu1) vivid; urgency=medium
+
+  * New upstream snapshot.
+    * adjust cc_snappy for snappy install package with config. (LP: #1438836)
+      snappy install takes config as argument rather than '--config' flag.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 31 Mar 2015 14:21:48 -0400
+
+cloud-init (0.7.7~bzr1087-0ubuntu1) vivid; urgency=medium
+
+  * New upstream snapshot.
+    * SmartOS: update ds to use v2 metadata. (LP: #1436417) [Daniel Watkins]
+    * Fix NoCloud local datasource to only activate if told to do so.
+    * fix snappy package installation. (LP: #1437137)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 27 Mar 2015 17:09:34 -0400
+
+cloud-init (0.7.7~bzr1084-0ubuntu1) vivid; urgency=medium
+
+  * New upstream snapshot.
+    * systemd: update config and final to run even if init jobs fail
+      (LP: #1432758)
+    * emit_upstart: fix use of undeclared variable
+    * SmartOS: fixes for python3 reading from serial device.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 17 Mar 2015 16:48:42 -0400
+
+cloud-init (0.7.7~bzr1081-0ubuntu1) vivid; urgency=medium
+
+  * fix failure of configure due to postinst usage of iteritems with python3
+  * New upstream snapshot.
+    * better python3 handling of ignored binary mime parts
+    * DataSourceMAAS: fix usage of oauthlib and 'timestamp'
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 11 Mar 2015 13:52:04 -0400
+
+cloud-init (0.7.7~bzr1078-0ubuntu1) vivid; urgency=medium
+
+  * New upstream snapshot.
+    * run snappy module only on snappy (LP: #1428495)
+    * MAAS: adjust timestamp on oauthlib when needed (LP: #1427939)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 05 Mar 2015 15:22:53 -0500
+
+cloud-init (0.7.7~bzr1076-0ubuntu1) vivid; urgency=medium
+
+  * New upstream snapshot.
+    * test case fixes for http_pretty
+    * python2.6 fixes
+    * Convert dmidecode values to sysfs names before looking. (LP: #1427687)
+    * add snappy support (LP: #1428139)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 04 Mar 2015 17:13:55 -0500
+
+cloud-init (0.7.7~bzr1072-0ubuntu1) vivid; urgency=medium
+
+  * d/control: move software-properties-common to Recommends
+    this helps reduce snappy builds
+  * New upstream snapshot.
+    * fix MAAS datasource (LP: #1427263)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 03 Mar 2015 20:46:41 -0500
+
+cloud-init (0.7.7~bzr1067-0ubuntu1) vivid; urgency=medium
+
+  * New upstream snapshot.
+    * fix broken consumption of gzipped user-data (LP: #1424900)
+    * functional user-data on Azure again (LP: #1423972)
+    * CloudStack: support fetching password from virtual router (LP: #1422388)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 26 Feb 2015 14:19:16 -0500
+
+cloud-init (0.7.7~bzr1060-0ubuntu1) vivid; urgency=medium
+
+  * New upstream snapshot.
+    * Fix for ascii decode in DataSourceAzure (LP: #1422993).
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 20 Feb 2015 08:05:20 -0500
+
+cloud-init (0.7.7~bzr1059-0ubuntu1) vivid; urgency=medium
+
+  * New upstream snapshot.
+    * support for gpt partitioning, utilized in Azure [Daniel Watkins]
+    * fix bug in exception handling in mount_cb.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 13 Feb 2015 16:05:59 -0500
+
+cloud-init (0.7.7~bzr1055-0ubuntu1) vivid; urgency=medium
+
+  * New upstream snapshot.
+    * move to python3 (LP: #1247132)
+    * systemd: run cloud-init before systemd-user-sessions.service
+    * Use the GCE short hostname. (LP: #1383794)
+    * Enable user-data encoding support for GCE. (LP: #1404311)
+    * Update to use a newer and better OMNIBUS_URL
+    * Be more tolerant of 'ssh_authorized_keys' types
+    * Fix parse_ssh_config failing in ssh_util.py
+    * Increase the robustness/configurability of the chef module.
+    * retain trailing newline from template files when using
+      jinja2 (LP: #1355343)
+    * fix broken output handling (LP: #1387340)
+    * digital ocean datasource
+    * update url in config drive documentation
+    * freebsd: enable correct behavior on Ec2.
+    * freebsd: Use the proper virtio FreeBSD network interface name.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 11 Feb 2015 15:55:58 -0500
+
+cloud-init (0.7.6~bzr1022-0ubuntu1) utopic; urgency=medium
+
+  * New upstream snapshot.
+    * support for writing swap files per user config (disabled by default).
+    * fixes for freebsd support of config drive.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 01 Oct 2014 16:27:44 -0400
+
+cloud-init (0.7.6~bzr1020-0ubuntu1) utopic; urgency=medium
+
+  [ Ben Howard ]
+  * Fix for cloud-init misidentifying grub install device (LP: #1336855).
+
+  [ Scott Moser ]
+  * New upstream snapshot.
+    * cc_grub_dpkg: consider /dev/xvda as candidate for grub installation
+      (LP: #1336855)
+    * resizefs: fix backgrounding of resizefs (LP: #1338614) 
+    * cloud-init-blocknet: remove debug code
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 23 Sep 2014 14:20:09 -0400
+
+cloud-init (0.7.6~bzr1016-0ubuntu1) utopic; urgency=medium
+
+  * New upstream snapshot.
+    * upstart: block networking from coming up until after
+      cloud-init-local has run. (LP: #1368861)
+    * upstart: ensure /run mounted before cloud-init-local (LP: #1353008)
+    * log failures in route info.
+    * Openstack: do not search redundant urls for openstack datasource.
+      do not load urls just to check if they're present when crawling.
+    * ConfigDrive: fixes for better consumption of vendor-data
+    * resizefs: make sure target is writable before attempting
+      in order to avoid failures in containers. (LP: #1366891)
+    * freebsd fixes.
+    * ssh_authkey_fingerprints: correctly allow disabling (LP: #1340903)
+    * CloudStack: work around bug in metadata service (LP: #1356855)
+    * docs: fix doc about disk-setup 'table_type' (LP: #1313114)
+    * resolv.conf: fix rendering if options not provided (LP: #1328953)
+    * ensure keys exist before running ssh on systemd (LP: #1333920)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 12 Sep 2014 18:12:31 -0400
+
+cloud-init (0.7.6~bzr992-0ubuntu1) utopic; urgency=medium
+
+  * New upstream snapshot.
+    * ubuntu-init-switch: fixes and minor tweaks.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 31 Jul 2014 16:11:27 -0400
+
+cloud-init (0.7.6~bzr990-0ubuntu1) utopic; urgency=medium
+
+  * debian/README.source: get changelog from trunk when new snapshot
+  * New upstream snapshot.
+    * add ubuntu-init-switch module for testing systemd.
+    * do not put comments in /etc/timezone (LP: #1341710)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 31 Jul 2014 15:05:51 -0400
+
+cloud-init (0.7.6~bzr987-0ubuntu2) utopic; urgency=medium
+
+  * debian/control: drop build-depends on python-selinux as it is
+    not in main.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 25 Jul 2014 12:47:39 -0400
+
+cloud-init (0.7.6~bzr987-0ubuntu1) utopic; urgency=medium
+
+  * incorporate systemd and build system changes from trunk.
+  * New upstream snapshot.
+    * less noisy logs
+    * allow usage of jinja2 templates (LP: #1219223)
+    * test case cleanups
+    * change build system to be dh and pybuild
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 24 Jul 2014 19:55:30 -0400
+
+cloud-init (0.7.6~bzr976-0ubuntu1) utopic; urgency=medium
+
+  * debian/cloud-init.templates: fix choices so dpkg-reconfigure works as
+    expected (LP: #1325746)
+  * New upstream snapshot.
+    * tests: SmartOS test not depend on /dev/ttyS1 device node (LP: #1316597)
+    * poll ttyS1 only after check for 'cloudsigma' in dmidecode (LP: #1316475)
+    * cloudsigma: support vendor-data (LP: #1303986)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 03 Jun 2014 16:41:07 -0400
+
+cloud-init (0.7.5-0ubuntu1) trusty; urgency=medium
+
+  * New upstream release.
+    * support base64 encoded user-data in OpenNebula, required
+      to allow arbitrary content in user-data (LP: #1300941)
+    * pep8 and pylint fixes
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 01 Apr 2014 14:39:03 -0400
+
+cloud-init (0.7.5~bzr970-0ubuntu1) trusty; urgency=medium
+
+  * New upstream snapshot.
+    * fix NoCloud and seedfrom on the kernel command line (LP: #1295223)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 20 Mar 2014 12:35:58 -0400
+
+cloud-init (0.7.5~bzr969-0ubuntu1) trusty; urgency=medium
+
+  * New upstream snapshot.
+    * Azure: Reformat ephemeral disk if it got re-provisioned
+      by the cloud on any reboot (LP: #1292648)
+    * final_message: fix replacement of upper case keynames (LP: #1286164)
+    * seed_random: do not capture output.  Correctly provide
+      environment variable RANDOM_SEED_FILE to command.
+    * CloudSigma: support base64 encoded user-data
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 19 Mar 2014 14:04:34 -0400
+
+cloud-init (0.7.5~bzr964-0ubuntu1) trusty; urgency=medium
+
+  * New upstream snapshot.
+    * SmartOS, AltCloud: disable running on arm systems due to bug
+      (LP: #1243287, #1285686) [Oleg Strikov]
+    * Allow running a command to seed random, default is 'pollinate -q'
+      (LP: #1286316) [Dustin Kirkland]
+    * Write status to /run/cloud-init/status.json for consumption by
+      other programs (LP: #1284439)
+    * fix output of network information to not include 'addr:' (LP: #1285185)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 03 Mar 2014 16:59:27 -0500
+
+cloud-init (0.7.5~bzr952-0ubuntu1) trusty; urgency=medium
+
+  * New upstream snapshot.
+    * fix broken seed of DAtaSourceNoCloud via external disk.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 18 Feb 2014 14:10:52 -0500
+
+cloud-init (0.7.5~bzr950-0ubuntu1) trusty; urgency=medium
+
+  * New upstream snapshot.
+    * support for vendor-data in NoCloud
+    * fix in is_ipv4 to accept IP addresses with a '0' in them.
+    * Azure: fix issue when stale data in /var/lib/waagent (LP: #1269626)
+    * skip config_modules that declare themselves only verified on a set of
+      distros.  Add them to 'unverified_modules' list to run anyway.
+    * Add CloudSigma datasource [Kiril Vladimiroff]
+    * Add initial support for Gentoo and Arch distributions [Nate House]
+    * Add GCE datasource [Vaidas Jablonskis]
+    * Add native Openstack datasource which reads openstack metadata
+      rather than relying on EC2 data in openstack metadata service.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 14 Feb 2014 14:39:56 -0500
+
+cloud-init (0.7.5~bzr933-0ubuntu1) trusty; urgency=medium
+
+  * debian/control: bump Standards-Version to 3.9.5
+  * debian/control: drop boto dependency no longer required in trunk.
+  * New upstream snapshot.
+    * ConfigDrive: consider partitions labelled correctly as possible sources.
+    * find root filesystem for resizing in cases where there is no initramfs
+    * removal of dependency on python-boto
+    * vendor-data support, and usage of that in Joyent datasource.
+    * change default output to be logged to /var/log/cloud-init-output.log
+    * SeLinuxGuard: Cast file path to string. (LP: #1260072)
+    * drop support for resizing via parted (LP: #1212492)
+    * SmartOS: changes to address changes in platform (LP: #1272115)
+    * FreeBSD support.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 24 Jan 2014 22:41:57 -0500
+
+cloud-init (0.7.5~bzr902-0ubuntu1) trusty; urgency=medium
+
+  * debian/control: Build-Depend on python-jsonpatch as #717916 is now fixed.
+  * debian/control: Recommend eatmydata (LP: #1236531)
+  * New upstream snapshot.
+    * support invoking apt with 'eatmydata' (LP: #1236531)
+    * add a message in log about dynamic import failures
+  * New in '0.7.4' release.
+    * fix reading of mount information on kernels < 2.6.26 (LP: #1248625)
+    * SmartOS: change 'region' to 'datacenter_name' to address change
+      in data provided to instance (LP: #1249124)
+    * support calling 'add-apt-repository' for 'cloud-archive:' entries
+      (LP: #1244355)
+    * DataSourceAzure: fix incompatibility with python 2.6 (LP: #1232175)
+    * fix bug mounting first partition of a alias'd name. (LP: #1236594)
+    * SmartOS: fix bug with hostname due to trailing whitespace (LP: #1236445)
+    * fix creation of partitions on Azure (LP: #1233698)
+    * cc_growpart: respect /etc/growroot-disabled (LP: #1234331)
+    * ubuntu config: add default user to 'sudo' group (LP: #1228228)
+    * Fix usage of libselinux-python when selinux is disabled
+    * add OpenNebula datasource
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 17 Dec 2013 16:51:30 -0500
+
+cloud-init (0.7.3-0ubuntu2) saucy; urgency=low
+
+  * fix bug where a mount entry of 'ephemeral0' would only consider
+    the unpartitioned device, not also the first partition (LP: #1236594)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 07 Oct 2013 20:16:02 -0400
+
+cloud-init (0.7.3-0ubuntu1) saucy; urgency=low
+
+  * New upstream release.
+    * Fix for SmartOS datasource when hostname is provided via dmi
+      data (LP: #1236445)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 07 Oct 2013 14:49:56 -0400
+
+cloud-init (0.7.3~bzr884-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * allow disabling of growpart via file /etc/growroot-disabled
+      (LP: #1234331)
+    * add default user to sudo group (LP: #1228228)
+    * fix disk creation on azure (LP: #1233698)
+    * DatasourceSmartOS: allow availabiltity-zone to be fed from the
+      datasource via 'region' (which allows 'mirrors' and other things
+      to make use of it).
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 04 Oct 2013 21:08:07 -0400
+
+cloud-init (0.7.3~bzr879-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * fixes to disk_setup config module and enabling of partition
+      creation and filesystem creation on Azure.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 27 Sep 2013 19:47:37 -0400
+
+cloud-init (0.7.3~bzr871-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * add 'disk_setup' config module for partitioning disks and
+      creating filesystems. (LP: #1218506)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 20 Sep 2013 20:46:08 -0400
+
+cloud-init (0.7.3~bzr869-0ubuntu1) saucy; urgency=low
+
+  * depend on cloud-utils or cloud-guest-utils (LP: #1224003)
+  * New upstream snapshot.
+    * Add OpenNebula datasource.
+    * Support reading 'random_seed' from metadata and writing to /dev/urandom
+    * fix for bug in log_time.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 11 Sep 2013 17:04:45 -0400
+
+cloud-init (0.7.3~bzr862-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * support base64 encoded data in the smart os datasource
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 29 Aug 2013 04:54:39 -0400
+
+cloud-init (0.7.3~bzr861-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * fix publishing hostname on azure (LP: #1214541)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 20 Aug 2013 16:06:22 -0400
+
+cloud-init (0.7.3~bzr860-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * fix setting of password for a user on azure. (LP: #1212723)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 15 Aug 2013 16:01:40 -0400
+
+cloud-init (0.7.3~bzr858-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * fix resizing of root partition by preferring the functional 'growpart'
+      support over the broken 'parted resizepart' support (LP: #1212444)
+    * add options for apt_ftp_proxy, apt_https_proxy and apt_config
+      (LP: #1057195)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 14 Aug 2013 21:44:22 -0400
+
+cloud-init (0.7.3~bzr851-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * azure: do not wait for output of bouncing interface (ifdown; ifup)
+      as that waits on output of all ifupdown scripts to close all file
+      descriptors.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 29 Jul 2013 12:21:08 -0400
+
+cloud-init (0.7.3~bzr850-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * fix bouncing of interface. environment was not being modified
+      so command invoked did not have access to 'interface'.
+  * debian/README.source: update to read upstream version from trunk
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 26 Jul 2013 14:34:02 -0400
+
+cloud-init (0.7.3~bzr849-0ubuntu2) saucy; urgency=low
+
+  * debian/control: fix bad dependency on python-jsonpatch 
+    by build-depending on python-json-patch, so dh_python2
+    can find the right package (LP: #1205358).
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 26 Jul 2013 10:47:59 -0400
+
+cloud-init (0.7.3~bzr849-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * azure: support publishing hostname via bouncing interface (LP: #1202758)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 25 Jul 2013 17:08:30 -0400
+
+cloud-init (0.7.3~bzr845-0ubuntu2) saucy; urgency=low
+
+  * debian/control: fix dependency python-json-patch.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 24 Jul 2013 15:01:24 -0400
+
+cloud-init (0.7.3~bzr845-0ubuntu1) saucy; urgency=low
+
+  * Reads the currently set value in /etc/cloud/cloud.cfg.d/90_dpkg.cfg to
+    db_set the value of cloud-init/datasources. (Closes: #709773)
+  * New upstream snapshot.
+    * azure: use deployment-id rather than static instance-id (LP: #1204190)
+    * config-drive: make 'availability_zone' available. (LP: #1190431)
+    * finalize handlers even on error (LP: #1203368)
+    * azure: fix password based access (LP: #1201969)
+    * add smartos (Joyent cloud) datasource
+    * support patching cloud-config via jsonp (LP: #1200476)
+  * debian/control: add dependency on python-jsonp
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 24 Jul 2013 13:47:53 -0400
+
+cloud-init (0.7.3~bzr829-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * fix to upstart_job handler if version upstart is version 1.8.
+    * Azure datasource: allow userdata to be found in node named
+      'UserData' or 'CustomData'
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 11 Jul 2013 10:20:03 -0400
+
+cloud-init (0.7.3~bzr826-0ubuntu2) saucy; urgency=low
+
+  * debian/cloud-init.templates: add 'Azure' datasource to list
+    of available datasources.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 10 Jul 2013 16:31:48 -0400
+
+cloud-init (0.7.3~bzr826-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * Fix omnibus support (LP: #1182265)
+    * invoke 'initctl reload-configuration' on upstart jobs again
+      (LP: #1124384)
+  * Remove unowned files in /etc/apt/apt.conf.d/ after purge. (Closes #674237)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 10 Jul 2013 13:35:59 -0400
+
+cloud-init (0.7.2-0ubuntu1) saucy; urgency=low
+
+  * New upstream release.
+    * fix merging routines to be backwards compatible (LP: #1180867)
+    * fix for python 2.6
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 05 Jun 2013 11:12:46 -0400
+
+cloud-init (0.7.2~bzr812-0ubuntu1) saucy; urgency=low
+
+  * New upstream snapshot.
+    * catch up with upstream, which is hopefully 0.7.2
+    * straighten out the merging routines
+    * fix a bug in Maas datasource
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 10 May 2013 17:53:49 -0400
+
+cloud-init (0.7.2~bzr809-0ubuntu1) raring; urgency=low
+
+  * New upstream snapshot.
+    * make apt-get invoke 'dist-upgrade' rather than 'upgrade' for
+      package_upgrade. (LP: #1164147)
+    * workaround 2.6 kernel issue that stopped blkid from showing /dev/sr0
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 11 Apr 2013 12:55:51 -0400
+
+cloud-init (0.7.2~bzr804-0ubuntu1) raring; urgency=low
+
+  * New upstream snapshot.
+    * use python-requests rather than urllib2 for http (LP: #1067888)
+    * handle failure of resizefs better.  Specifically, do not show
+      warnings or stack trace in lxc (LP: #1160462)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 27 Mar 2013 10:04:41 -0400
+
+cloud-init (0.7.2~bzr795-0ubuntu1) raring; urgency=low
+
+  * New upstream snapshot.
+    * documentation on write-files module (LP: #1111205)
+    * support for specifying package versions in package installs
+    * DataSourceNoCloud: allow specifyin user-data and meta-data in
+      the datasource config (LP: #1115833)
+    * work around bug in upstart for now (1124384)
+    * support resizing btrfs fileystems
+    * parse ssh keys more correctly (LP: #1136343)
+    * upstart/cloud-init-nonet.conf: handle sigterm gracefully (LP: #1015223)
+    * support growing partitions (LP: #1136936)
+    * use --force-unsafe-io for dpkg installations to improve speed
+      This is sane as it happens on instance initialization.
+    * more powerful and user-suppliable cloud-config merge mechanisms
+      (LP: #1023179)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 07 Mar 2013 17:33:59 -0500
+
+cloud-init (0.7.1-0ubuntu5) raring; urgency=low
+
+  * catchup-751-760.patch (sync to 760)
+    * DataSourceConfigDrive: allow config-drive data to come from a 
+      CD-ROM (LP: #1100545)
+    * Allow 'sr0' to be used as a source for mount config [Vlastimil Holer]
+    * do not log passwords provided via config (LP: #1096417)
+    * DataSourceCloudStack: Attempt to find the 'virtual router' as provided
+      from dhcp responses, rather than assuming it is the default route 
+      (LP: #1089989) [Gerard Dethier]
+      in the CloudStack environment use virtual router rather than default route 
+    * notify upstart after writing upstart jobs to support filesystems that
+      do not support inotify such as overlayfs (LP: #1080841)
+    * fix cloud-config 'lock_password' user setup (LP: #1096423)
+  * debian/README.source: minor improvements.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 18 Jan 2013 10:12:34 -0500
+
+cloud-init (0.7.1-0ubuntu4) raring; urgency=low
+
+  * cherry pick relevant patches from trunk up to revision 750
+  * use short form of '--stderr' argument to logger for better cross
+    distro support (LP: #1083715)
+  * puppet: make installation configurable (LP: #1090205)
+  * chef: add omnibus installation method
+  * fix allowing cloud-config input via user-data to affect the
+    apt mirror selection (LP: #090482)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 17 Dec 2012 10:48:23 -0500
+
+cloud-init (0.7.1-0ubuntu3) raring; urgency=low
+
+  * cherry pick relevant patches from trunk up to revision 745
+  * fix writing of sudoers when suders rule is a string rather than
+    an array (LP: #1079002)
+  * add trailing slash to sudoers files that are written
+  * fix resizefs module when 'noblock' was provided (LP: #1080985)
+  * make sure there is no blank line before cloud-init entry in
+    there are no blank lines in /etc/ca-certificates.conf (LP: #1077020)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 03 Dec 2012 21:45:48 -0500
+
+cloud-init (0.7.1-0ubuntu2) raring; urgency=low
+
+  * debian/watch: add watch file
+  * add 'ubuntu' user to sudoers (LP: #1080717)
+  * set 'ubuntu' user shell to bash
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 19 Nov 2012 09:38:29 -0500
+
+cloud-init (0.7.1-0ubuntu1) raring; urgency=low
+
+  * New upstream release.
+    * landscape: install landscape-client package if not installed.
+      only take action if cloud-config is present (LP: #1066115)
+    * landscape: restart landscape after install or config (LP: #1070345)
+    * multipart/archive: do not fail on unknown headers in multipart
+      mime or cloud-archive config (LP: #1065116).
+    * tools/Z99-cloud-locale-test.sh: avoid warning when user's shell is
+      zsh (LP: #1073077)
+    * fix stack trace when unknown user-data input had unicode (LP: #1075756)
+    * split 'apt-update-upgrade' config module into 'apt-configure' and
+      'package-update-upgrade-install'.  The 'package-update-upgrade-install'
+      will be a cross distro module.
+    * fix bug where cloud-config from user-data could not affect system_info
+      settings (LP: #1076811)
+    * add yum_add_repo configuration module for adding additional yum repos
+    * fix public key importing with config-drive-v2 datasource (LP: #1077700)
+    * handle renaming and fixing up of marker names (LP: #1075980)
+      this relieves that burden from the distro/packaging.
+    * group config: fix how group members weren't being translated correctly
+      when the group: [member, member...] format was used (LP: #1077245)
+    * work around an issue with boto > 0.6.0 that lazy loaded the return from 
+      get_instance_metadata().  This resulted in failure for cloud-init to
+      install ssh keys. (LP: #1068801)
+    * add power_state_change config module for shutting down stystem after
+      cloud-init finishes. (LP: #1064665)
+
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 14 Nov 2012 15:18:50 -0500
+
+cloud-init (0.7.0-0ubuntu2) quantal; urgency=low
+
+  * config-drive: copy metadata entry 'hostname' to 'local-hostname' to fix
+    config modules (set_hostname) will function as expected (LP: #1061964)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 05 Oct 2012 11:45:15 -0400
+
+cloud-init (0.7.0-0ubuntu1) quantal; urgency=low
+
+  * New upstream release.
+    * minor change to oauth header fix (LP: #978127).
+    * incorporation of 0.7.0 upstream release.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 01 Oct 2012 14:19:46 -0400
+
+cloud-init (0.7.0~bzr677-0ubuntu1) quantal; urgency=low
+
+  * add CloudStack to DataSources listed by dpkg-reconfigure (LP: #1002155)
+  * New upstream snapshot.
+    * 0440 permissions on /etc/sudoers.d files rather than 0644
+    * get host ssh keys to the console (LP: #1055688)
+    * MAAS DataSource adjust timestamp in oauth header to one based on the
+      timestamp in the response of a 403.  This accounts for a bad local
+      clock. (LP: #978127)
+    * re-start the salt daemon rather than start to ensure config changes
+      are taken.
+    * allow for python unicode types in yaml that is loaded.
+    * cleanup in how config modules get at users and groups.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Sun, 30 Sep 2012 14:29:04 -0400
+
+cloud-init (0.7.0~bzr659-0ubuntu2) quantal; urgency=low
+
+  * debian/cloud-init.templates: fix bad template file (LP: #1053239)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 20 Sep 2012 09:18:20 -0400
+
+cloud-init (0.7.0~bzr659-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+    * add signal handlers to more cleanly exit
+    * add logging fallback in case logging fails
+    * documentation fix for landscape config (LP: #1042764)
+    * do not write a comment in /etc/hostname (LP: #1052664)
+    * fix incorrect ubuntu mirrors for 'ports' arches [Robbie Basak]
+    * fix generation of hostname based on ip address in datasource 
+      (LP: #1050962) [Andy Grimm]
+    * remove 'start networking' from cloud-init-nonet and replace it
+      with container specific fixes (LP: #1031065)
+    * fix landscape configuration so client will run (LP: #1042758)
+    * enable all available datasources (adding AltCloud and None)
+    * fix bug where user data scripts re-ran on upgrade from 10.04 versions
+      (LP: #1049146)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 19 Sep 2012 22:08:51 -0400
+
+cloud-init (0.7.0~bzr644-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+    * fix cloud-archives (LP: #1044594)
+    * fix set_passwords for usergroups as a list (LP: #1044553)
+  * fix 'failed to setup apt-pipelining' warning on install due to
+    old 0.6 style usage of cloud-init.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Sat, 01 Sep 2012 20:11:34 -0400
+
+cloud-init (0.7.0~bzr642-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+    * support using launch-index (ami-launch-index) (LP: #1023177)
+    * usergroup related fixes (LP: #1041384, #1044044, #1044508)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 31 Aug 2012 17:04:06 -0400
+
+cloud-init (0.7.0~bzr639-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+    * fix broken ssh_import_id, which would give stack trace
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 28 Aug 2012 14:09:47 -0400
+
+cloud-init (0.7.0~bzr637-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+    * fix issue with public keys not being added to 'ubuntu' user
+      since the user was not created yet. (LP: #1042459)
+    * only search the top level domain 'instance-data' for the EC2
+      metadata service, to avoid misconfiguration or unexpected results
+      by searching search entries in /etc/resolv.conf (LP: #1040200)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 27 Aug 2012 20:27:06 -0400
+
+cloud-init (0.7.0~bzr634-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+    * support for datasource from config-drive-v2 (LP: #1037567)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 24 Aug 2012 17:24:26 -0400
+
+cloud-init (0.7.0~bzr633-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+    * support creating users on boot. remove requirement for a 'ubuntu'
+      user to be previously present in image. (LP: #1028503)
+    * add experimental apt_reboot_if_required flag to reboot if necessary
+      after upgrade or package install (LP: #1038108)
+    * improve mirror selection for a distro: 
+      * support arm mirrors (LP: #1028501)
+      * support seeding security mirror (LP: #1006963)
+      * support dns mirrors including availability-zone reference
+        (LP: #1037727)
+    * include a "None" datasource so items like ssh host key generation
+      occur if there is no other metadata service. (LP: #906669)
+    * print authorized_keys for users to the console (LP: #1010582)
+    * Add RHEVm and vSphere support as datasource AltCloud [Joseph VLcek]
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 23 Aug 2012 01:06:34 -0400
+
+cloud-init (0.7.0~bzr614-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+    * disable searching for 'ubuntu-mirror' in local dns to find a
+      local mirror (LP: #974509)
+    * emit the cloud-config event (LP: #1028674) 
+    * write timestamps to console on reboot and shutdown (LP: #1018554)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 03 Aug 2012 14:55:37 -0400
+
+cloud-init (0.7.0~bzr608-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+    * fix issue with EC2 datasource that prevented /mnt from being mounted.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 16 Jul 2012 16:49:55 -0400
+
+cloud-init (0.7.0~bzr604-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+    * add cc_write_file for injecting files via cloud-config (LP: #1012854)
+    * fix issue with empty user data
+    * remove some un-needed warnings to console output in DataSourceOVF
+    * allow user-data scripts output through to the console
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 12 Jul 2012 16:11:01 -0400
+
+cloud-init (0.7.0~bzr583-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+  * debian/control: wrap-and-sort
+  * debian/control: actually depend on software-properties-common
+  * debian/control: depend on python-cheetah again instead of python-tempita
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 09 Jul 2012 17:41:22 -0400
+
+cloud-init (0.7.0~bzr564-0ubuntu2) quantal; urgency=low
+
+  * debian/control: Build-Depends on python-setuptools (LP: #1022101)
+
+ -- Angel Abad <angelabad@xxxxxxxxxx>  Sat, 07 Jul 2012 18:43:05 +0200
+
+cloud-init (0.7.0~bzr564-0ubuntu1) quantal; urgency=low
+
+  * New upstream snapshot.
+    Thanks to Joshua Harlow for hard work.
+  * depend on software-properties-common rather than
+    python-software-properties (LP: #1021418)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 06 Jul 2012 17:31:01 -0400
+
+cloud-init (0.6.3-0ubuntu3) quantal; urgency=low
+
+  * grub-legacy-ec2: add missing dependency on ucf (LP: #960336).
+
+ -- Robie Basak <robie.basak@xxxxxxxxxx>  Sun, 24 Jun 2012 05:10:13 +0100
+
+cloud-init (0.6.3-0ubuntu2) quantal; urgency=high
+
+  * Added -generic to Xen kernels list since -virtual has been dropped with
+    Quantal. (LP: #1005551)
+
+ -- Ben Howard <ben.howard@xxxxxxxxxx>  Tue, 29 May 2012 12:59:01 -0600
+
+cloud-init (0.6.3-0ubuntu1) precise; urgency=low
+
+  * New upstream release.
+    * improve chef examples for working configurations on 11.10 and 12.04
+      [Lorin Hochstein] (LP: #960564)
+    * fix bug in landscape module if /etc/landscape did not exist
+      (LP: #978329)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 11 Apr 2012 00:05:00 -0400
+
+cloud-init (0.6.3~bzr554-0ubuntu1) precise; urgency=low
+
+  * New upstream snapshot.
+    * Fix bug in Chef support that required 'validation_cert' (LP: #960547)
+    * Provide user-friendly message when a user ssh's in with an invalid
+      locale (LP: #960547)
+    * Support reading a url reference to cloud-config from the kernel
+      command line.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 05 Apr 2012 01:24:42 -0400
+
+cloud-init (0.6.3~bzr551-0ubuntu1) precise; urgency=low
+
+  * New upstream snapshot.
+    * support running resize2fs in the background (default=off) (LP: #961226)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 22 Mar 2012 14:33:59 -0400
+
+cloud-init (0.6.3~bzr548-0ubuntu1) precise; urgency=low
+
+  * New upstream snapshot.
+    * If public-keys is a string, split it into multiple keys on newline
+      This specifically helps the MAAS data source, and should not negatively
+      affect others.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 19 Mar 2012 13:50:50 -0400
+
+cloud-init (0.6.3~bzr547-0ubuntu1) precise; urgency=low
+
+  * New upstream snapshot.
+    * rename DataSourceMaaS to DataSourceMAAS.
+    * support public-keys in DataSourceMAAS
+    * Warn in user-data processing on non-multipart, non-handled data 
+    * CloudStack data source added (not enabled by default)
+  * fix bug in cloud-init.postinst where the name used was wrong
+    causing config-apt-pipelining to run more than intended
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 16 Mar 2012 14:12:38 -0400
+
+cloud-init (0.6.3~bzr539-0ubuntu3) precise; urgency=low
+
+  * make maas config file only readable by root (LP: #954721)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 14 Mar 2012 01:19:32 -0400
+
+cloud-init (0.6.3~bzr539-0ubuntu2) precise; urgency=low
+
+  [Cosmin Luta]
+  * add dependency on python-oauth (LP: #953915)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 13 Mar 2012 11:36:11 -0400
+
+cloud-init (0.6.3~bzr539-0ubuntu1) precise; urgency=low
+
+  * New upstream snapshot.
+    * add ability to configure Acquire::http::Pipeline-Depth via
+      cloud-config setting 'apt_pipelining' (LP: #942061)
+    * if cloud-config settings removed default certificats
+      (remove-defaults), then seed package ca-certificates to not
+      install new ones on upgrade.
+    * run-parts now uses internal implementation rather than
+      separate command.
+    * add MaaS datasource (LP: #942061)
+  * debian/cloud-init.postinst: address population of apt_pipeline 
+    setting on installation.
+  * debian/cloud-init.postinst: support configuring cloud-init
+    maas datasource via preseed values cloud-init/maas-metadata-url and
+    cloud-init/maas-credentials. (LP: #942061)
+  * debian/cloud-init.postinst: support for (LP: #924375)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 09 Mar 2012 16:37:01 -0500
+
+cloud-init (0.6.3~bzr530-0ubuntu1) precise; urgency=low
+
+  * New upstream snapshot.
+    - fix DataSourceNoCloud seeded from local or cmdline (LP: #942695)
+    - change 'islxc' to 'iscontainer' and use 'running-in-container' utility
+      from upstart rather than 'lxc-is-container' (LP: #941955)
+    - Do not fail on bad part handlers, instead catch error and log
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 28 Feb 2012 19:15:19 -0500
+
+cloud-init (0.6.3~bzr527-0ubuntu1) precise; urgency=low
+
+  * New upstream snapshot.
+    - exit 0 in cloud-init if no metadata is found (nothing to do)
+    - documentation improvements
+    - support network config in DataSourceNoCloud
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 17 Feb 2012 17:11:50 -0500
+
+cloud-init (0.6.3~bzr519-0ubuntu1) precise; urgency=low
+
+  * New upstream snapshot.
+    - [Mike Milner] add support for managing CA Certificates (LP: #915232)
+    - in ci-info lines, use '.' to for empty field for easier machine reading
+    - support empty lines in "#include" files (LP: #923043)
+    - [Jef Baeur] support configuration of salt minions Bauer) (LP: #927795)
+    - DataSourceOVF: only search for OVF data on ISO9660 filesystems (LP: #898373)
+    - DataSourceConfigDrive: support getting data from openstack config drive
+      (LP: #857378)
+    - [Juerg Haefliger] formating and pylint cleanups
+  * increase timeouts for initial config check for metadata service
+    to address slow metadata service in openstack
+  * add awareness of ConfigDrive data source
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 16 Feb 2012 17:27:05 -0500
+
+cloud-init (0.6.3~bzr502-0ubuntu1) precise; urgency=low
+
+  * New upstream snapshot.
+    - [Mike Milner] add test case framework (LP: #890851)
+    - [Juerg Haefliger] fix pylint warnings (LP: #914739)
+    - fix regression where ec2 mirrors were not selected (LP: #915282)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 12 Jan 2012 17:56:52 +0100
+
+cloud-init (0.6.3~bzr497-0ubuntu1) precise; urgency=low
+
+  * New upstream snapshot.
+    - cloud-config support for configuring apt-proxy
+    - selection of local mirror based on presense of 'ubuntu-mirror' dns
+      entry in local domain. (LP: #897688)
+    - DataSourceEc2: more resilliant to slow metadata service (LP: #894279)
+    - close stdin in all programs launched by cloud-init (LP: #903993)
+    - revert management of /etc/hosts to 0.6.1 style (LP: #890501, LP: #871966)
+    - write full ssh keys to console for easy machine consumption (LP: #893400)
+    - put INSTANCE_ID environment variable in bootcmd scripts
+    - add 'cloud-init-per' script for easily running things with a given freq
+      (this replaced cloud-init-run-module)
+    - support configuration of landscape-client via cloud-config (LP: #857366)
+    - part-handlers now get base64 decoded content rather than 2xbase64 encoded
+      in the payload parameter. (LP: #874342)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 22 Dec 2011 04:07:38 -0500
+
+cloud-init (0.6.2-0ubuntu2) precise; urgency=low
+
+  * Build using dh_python2. LP: #904248.
+  * debian/rules: Explicitly set DEB_PYTHON2_MODULE_PACKAGES = cloud-init.
+
+ -- Matthias Klose <doko@xxxxxxxxxx>  Sat, 17 Dec 2011 21:08:23 +0000
+
+cloud-init (0.6.2-0ubuntu1) precise; urgency=low
+
+  * New upstream release
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 27 Oct 2011 23:05:15 -0400
+
+cloud-init (0.6.1-0ubuntu20) oneiric; urgency=low
+
+  * fix broken path if local-hostname was not in metadata (LP: #857380)
+  * redirect output of 'start networking' in 'cloud-init-nonet' to /dev/null
+  * include GPLv3 in source tree
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 23 Sep 2011 09:24:27 -0400
+
+cloud-init (0.6.1-0ubuntu19) oneiric; urgency=low
+
+  * If local-hostname is not in meta-data, attempt to look up hostname in
+    an alias in /etc/hosts. This will avoid setting domain portion of fqdn
+    to 'localdomain' in some cases (LP: #850206).
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 14 Sep 2011 15:15:00 -0400
+
+cloud-init (0.6.1-0ubuntu18) oneiric; urgency=low
+
+  * minor documentation improvement.
+
+  [Mike Moulton, Avishai Ish-Shalom]
+  * Chef support fixes. support for environment and initial attr (LP: #845208)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 13 Sep 2011 17:02:48 -0400
+
+cloud-init (0.6.1-0ubuntu17) oneiric; urgency=low
+
+  * fix issues with chef (LP: #845161)
+  * be more forgiving on metadata for public-keys (LP: #845155)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 09 Sep 2011 14:19:03 -0700
+
+cloud-init (0.6.1-0ubuntu16) oneiric; urgency=low
+
+  * catch up with trunk at revision 439
+  * warn on failure to set hostname (LP: #832175)
+  * properly wait for all static interfaces to be up before
+    cloud-init runs (depends on fix in LP:# 838968).
+  * in DataSources NoCloud and OVF, do not set hostname to the
+    static value 'ubuntuhost' if local-hostname is not in metadata
+    (LP: #838280)
+  * improve the way ssh_authorized_keys is updated, so that the
+    values given will be used. (LP: #434076, LP: #833499)
+  * cloud-init-notnet.conf: minor changes to config
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 01 Sep 2011 21:14:09 -0400
+
+cloud-init (0.6.1-0ubuntu15) oneiric; urgency=low
+
+  * catch up with trunk at revision 431
+  * add network debug info to console when cloud-init runs (LP: #828186)
+  * fix issue where subprocesses (apt-add-repository) where given
+    the console and would attempt to prompt user and hang boot (LP: #831505)
+  * add awareness of ecdsa to cc_ssh
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 23 Aug 2011 00:01:01 -0400
+
+cloud-init (0.6.1-0ubuntu14) oneiric; urgency=low
+
+  * change the handling of user-data (LP: #810044)
+   * boothooks will now run more than once as they were intended
+   * cloud-config and user-scripts will be updated from user data every boot
+  * Add a second type of part-handler that will be called on every boot 
+  * fix bad handling of /etc/hosts if manage_etc_hosts was false
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 08 Aug 2011 12:46:56 -0500
+
+cloud-init (0.6.1-0ubuntu13) oneiric; urgency=low
+
+  * do not install 92-uec-upgrade-available as a motd hook.  This file was
+    installed but did not do anything since updates-check was removed.
+  * support multiple staticly configured network devices, as long as
+    all of them come up early (LP: #810044)
+
+  [Marc Cluet]
+  * add support for passing mcollective keys via cloud-config
+  * add support for 'include-once' type.  include-once urls are only
+    retrieved once-per-instance rather than on every boot.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 01 Aug 2011 16:45:40 -0400
+
+cloud-init (0.6.1-0ubuntu12) oneiric; urgency=low
+
+  * do not give trace on failure to resize in lxc container (LP: #800856)
+  * increase the timeout on url gets for "seedfrom" values (LP: #812646)
+  * do not write entries for ephemeral0 on t1.micro (LP: #744019)
+
+  [Adam Gandalman]
+  * improve the updating of /etc/hosts with correct fqdn when possible
+    (LP: #812539)
+   
+  [Avishai Ish-Shalom]
+  * add chef support (cloudinit/CloudConfig/cc_chef.py) (LP: #798844)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 21 Jul 2011 05:51:03 -0400
+
+cloud-init (0.6.1-0ubuntu11) oneiric; urgency=low
+
+  [Marc Cluet]
+  * sanitize hosts file for system's hostname to 127.0.1.1 (LP: #802637)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 30 Jun 2011 14:12:47 -0400
+
+cloud-init (0.6.1-0ubuntu10) oneiric; urgency=low
+
+  * sync with trunk (rev 405)
+  * fix cloud-init in ubuntu lxc containers (LP: #800824)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 28 Jun 2011 06:42:45 -0400
+
+cloud-init (0.6.1-0ubuntu9) oneiric; urgency=low
+
+  * sync with trunk (rev 404)
+  * make metadata urls configurable, to support eucalyptus in
+    STATIC or SYSTEM modes (LP: #761847)
+  * support disabling byobu in cloud-config (LP: #797336)
+  * guarantee that ssh_config runs before sshd starts (LP: #781101)
+  * make prefix for keys added to /root/.ssh/authorized_keys configurable
+    and add 'no-port-forwarding,no-agent-forwarding,no-X11-forwarding'
+    to the default (LP: #798505)
+  * make 'cloud-config ready' command configurable (LP: #785551)
+  * make fstab fields used to 'fill in' shorthand mount entries configurable
+    (LP: #785542)
+  * read sshd_config to properly get path for authorized_keys (LP: #731849)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 17 Jun 2011 12:18:34 -0400
+
+cloud-init (0.6.1-0ubuntu8) natty; urgency=low
+
+  * instead of including /boot/grub, create it in postinst
+    of grub-legacy-ec2.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 15 Apr 2011 13:01:17 -0400
+
+cloud-init (0.6.1-0ubuntu7) natty; urgency=low
+
+  * grub-legacy-ec2: add /boot/grub directory so installation does
+    not depend on it already existing (LP: #759885)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 13 Apr 2011 11:03:04 -0400
+
+cloud-init (0.6.1-0ubuntu6) natty; urgency=low
+
+  * avoid upgrade prompt for grub-pc when devices are named xvdX (LP: #752361)
+  * catchup to trunk cloud-init (rev 395)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 06 Apr 2011 06:46:55 -0400
+
+cloud-init (0.6.1-0ubuntu5) natty; urgency=low
+
+  * fix --purge of grub-legacy-ec2 package (LP: #749444)
+  * catchup to trunk cloud-init (rev 394)
+  * support user-data formated in dos format by converting to unix for
+    user-scripts, boothooks, and upstart jobs (LP: #744965)
+  * removal of some debug code, minor documentation fix
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 04 Apr 2011 13:20:27 -0400
+
+cloud-init (0.6.1-0ubuntu4) natty; urgency=low
+
+  * catch up to trunk cloud-init (rev 389).
+  * fix bug in part-handler code, that broke part handlers (LP: #739694)
+  * fix sporadic resizefs failure (LP: #726938)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 21 Mar 2011 22:06:59 -0400
+
+cloud-init (0.6.1-0ubuntu3) natty; urgency=low
+
+  * catch up to trunk cloud-init (rev 385).
+  * attempt to install packages on failed apt-get update (LP: #728167)
+  * enabled timezone and mcollective cloud-config plugins
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 04 Mar 2011 21:17:21 -0500
+
+cloud-init (0.6.1-0ubuntu2) natty; urgency=low
+
+  * grub-legacy-ec2: Use dpkg-query --control-path instead of hard-coding a
+    path to debconf templates file, for compatibility with multiarch.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 01 Mar 2011 23:23:55 -0500
+
+cloud-init (0.6.1-0ubuntu1) natty; urgency=low
+
+  * New upstream release.
+  * fix for puppet configuration options (LP: #709946) [Ryan Lane]
+  * fix pickling of DataSource, which broke seeding.
+  * turn resize_rootfs default to True
+  * avoid mounts in DataSourceOVF if 'read' on device fails
+    'mount /dev/sr0' for an empty virtual cdrom device was taking 18 seconds
+  * add 'manual_cache_clean' option to select manual cleaning of
+    the /var/lib/cloud/instance/ link, for a data source that might
+    not be present on every boot
+  * make DataSourceEc2 retries and timeout configurable
+  * add 'bootcmd' like 'runcmd' to cloud-config syntax for running things early
+  * move from '#opt_include' in config file format to conf_d.
+    now local config files should live in /etc/cloud/cloud.cfg.d/
+  * move /etc/cloud/distro.cfg to /etc/cloud/cloud.cfg.d/90_dpkg.cfg
+  * allow /etc/hosts to be written from hosts.tmpl. which allows
+    getting local-hostname into /etc/hosts (LP: #720440)
+  * better handle startup if there is no eth0 (LP: #714807)
+  * update rather than append in puppet config [Marc Cluet]
+  * add cloud-config for mcollective [Marc Cluet]
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Sat, 19 Feb 2011 01:16:10 -0500
+
+cloud-init (0.6.0-0ubuntu4) natty; urgency=low
+
+  * fix running of user scripts (LP: #711480) (cherry pick 344) 
+  * fix 2 lintian warnings
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 01 Feb 2011 16:15:30 -0500
+
+cloud-init (0.6.0-0ubuntu3) natty; urgency=low
+
+  * make a better attempt at deciding if DataSourceEc2 should be used
+    on first install or upgrade
+  * fix behavior if def_log_file is empty in cloud-config (cherry pick 333)
+  * improve comment strings in rsyslog config (cherry pick 334)
+  * do not package cloud-init query (cherry pick 335)
+  * add previous-instance-id and previous-datasource to cloud/data
+    and cloud/instance/datasource files (cherry pick 337)
+  * allow setting of passwords and enabling/disabling ssh password auth
+    via cloud-config (cherry pick 338)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 31 Jan 2011 12:48:39 -0500
+
+cloud-init (0.6.0-0ubuntu2) natty; urgency=low
+
+  * add a debian/README.source file
+  * fix bug in fixing permission on /var/log/cloud-init.log (cherry pick)
+  * remove dependency on update-motd as updates-check was removed
+  * fix failure on cloud-init package purge
+  * add configuration of DataSources via debconf. Default to not searching
+    Ec2. (LP: #635188)
+  * fix naming of pre-processed (now user-data.txt.i) (cherry pick)
+  * upgrade existing content in /var/lib/cloud to 0.6.x format
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 27 Jan 2011 16:32:44 -0500
+
+cloud-init (0.6.0-0ubuntu1) natty; urgency=low
+
+  * New upstream release.
+  * fix permissions on cloud-init.log so syslog can write to it (LP: ##704509)
+  * rework of /var/lib/cloud layout
+  * remove updates-check (LP: #653220)
+  * support resizing root partition on first boot (enabled by default)
+  * added cloud-config options for setting hostname, phone_home
+  * indicate "all the way up" with message to console and file creation
+    in /var/lib/cloud/instance/ (LP: #653271)
+  * write ssh keys to console late in boot to ensure they're in console buffer
+  * add support for redirecting output of cloud-init, cloud-config, 
+    cloud-final via the config file, or user data config file
+  * add support for posting data about the instance to a url (phone_home)
+  * add minimal OVF transport (iso) support
+  * make DataSources that are attempted dynamic and configurable from
+    config. config option 'cloud_type' replaced by 'datasource_list'
+  * add 'timezone' option to cloud-config (LP: #645458)
+  * Added an additional archive format, that can be used for multi-part
+    input to cloud-init.  This may be more user friendly then mime-multipart
+    (LP: #641504)
+  * add support for reading Rightscale style user data (LP: #668400)
+  * make the message on 'disable_root' more clear (LP: #672417)
+  * do not require public key if private is given in ssh cloud-config 
+    (LP: #648905)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 26 Jan 2011 17:28:36 -0500
+
+cloud-init (0.5.15-0ubuntu4) natty; urgency=low
+
+  * Rebuild with python 2.7 as the python default.
+
+ -- Matthias Klose <doko@xxxxxxxxxx>  Wed, 08 Dec 2010 15:01:36 +0000
+
+cloud-init (0.5.15-0ubuntu3) maverick; urgency=low
+
+  * do not use ec2 ubuntu archive if instance is VPC (LP: #615545)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 16 Sep 2010 04:28:55 -0400
+
+cloud-init (0.5.15-0ubuntu2) maverick; urgency=low
+
+  * grub-legacy-ec2: boot with console=hvc0 (LP: #606373)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 15 Sep 2010 16:41:48 -0400
+
+cloud-init (0.5.15-0ubuntu1) maverick; urgency=low
+
+  * New upstream release.
+  * fix /etc/fstab cloudconfig entries for t1.micro and
+    change default fstab values for ephemeral0 to nobootwait (LP: #634102)
+  * grub-legacy-ec2: do not write chainload for grub2 to menu.lst
+    (LP: #627451)
+  * seed grub-pc correctly so update-grub runs on ec2 or uec(LP: #623609)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Sun, 12 Sep 2010 15:23:39 -0400
+
+cloud-init (0.5.14-0ubuntu5) maverick; urgency=low
+
+  * add missing imports for cc_puppet (LP: #632744)
+  * append to apt_sources files rather than truncating (LP: #627597)
+  * get double commented lines into sources.list (LP: #627439)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 08 Sep 2010 10:31:58 -0400
+
+cloud-init (0.5.14-0ubuntu4) maverick; urgency=low
+
+  * add commented out entries for partner, backports, and multiverse
+    (LP: #620572)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 26 Aug 2010 16:44:48 -0400
+
+cloud-init (0.5.14-0ubuntu3) maverick; urgency=low
+
+  * fix syntax error in cloudinit/util.py (failed installation)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 17 Aug 2010 22:22:06 -0400
+
+cloud-init (0.5.14-0ubuntu2) maverick; urgency=low
+
+  * fix bug preventing 'seedfrom' from working (LP:617400)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 17 Aug 2010 15:49:13 -0400
+
+cloud-init (0.5.14-0ubuntu1) maverick; urgency=low
+
+  * New upstream release.
+   - support for reading metadata and userdata from filesystem
+   - support for boot without metadata at all
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 12 Aug 2010 14:45:28 -0400
+
+cloud-init (0.5.13-0ubuntu3) maverick; urgency=low
+
+  * grub-legacy-ec2: fix 'apt-get --reinstall' and dpkg-divert (LP: #611812)
+  * enable -virtual kernels as "xen" kernels (pv_ops now functional)
+  * fix bad syntax in cloud-init-run-module.py
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 02 Aug 2010 16:26:48 -0400
+
+cloud-init (0.5.13-0ubuntu2) maverick; urgency=low
+
+  * debian/control: drop ssh-import as a recommends, as this has been
+    subsumed by openssh-server
+
+ -- Dustin Kirkland <kirkland@xxxxxxxxxx>  Sat, 24 Jul 2010 21:02:40 +0200
+
+cloud-init (0.5.13-0ubuntu1) maverick; urgency=low
+
+  * New upstream release.
+  * invoke dpkg with --force-confold (LP: #607642)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 21 Jul 2010 11:58:53 -0400
+
+cloud-init (0.5.12-0ubuntu8) maverick; urgency=low
+
+  * update-grub-legacy-ec2:
+    - add code to stop use of 'uuid' grub syntax
+    - change fallback grub device from (hd0,0) to (hd0)
+    - change timeout in menu.lst to 0
+  * grub-legacy-ec2: add grub-set-default functionality (LP: #605961)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 15 Jul 2010 13:07:01 -0400
+
+cloud-init (0.5.12-0ubuntu7) maverick; urgency=low
+
+  * update-grub-legacy-ec2:                                                     
+    - force setting of indomU so output of build process has
+      a menu.lst with -ec2 kernels listed.
+    - remove 'quite splash' from kernel options
+    - make sure grub_root_device is set to hd0 in image build
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 13 Jul 2010 16:33:51 -0400
+
+cloud-init (0.5.12-0ubuntu6) maverick; urgency=low
+
+  * fix installation error
+  * add quilt-setup rule for package development 
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 13 Jul 2010 12:04:21 -0400
+
+cloud-init (0.5.12-0ubuntu5) maverick; urgency=low
+
+  * sync with upstream r226.
+  * fix bug where nfs/network mounts could not be specified (LP: #603329)
+  * manage hostname setting better (LP: #596993)
+  * add legacy-grub-ec2 package.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 08 Jul 2010 22:24:59 -0400
+
+cloud-init (0.5.12-0ubuntu4) maverick; urgency=low
+
+  * handle hostname managing better with ebs root. (LP: #596993)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 07 Jul 2010 11:54:10 -0400
+
+cloud-init (0.5.12-0ubuntu3) maverick; urgency=low
+
+  * fix cloud-boothook input type (LP: #600799)
+  * sync with upstream.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 01 Jul 2010 21:19:13 -0400
+
+cloud-init (0.5.12-0ubuntu2) maverick; urgency=low
+
+  * fix cloud config 'apt-update-upgrade' failure due to missing import
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 21 Jun 2010 15:08:32 -0400
+
+cloud-init (0.5.12-0ubuntu1) maverick; urgency=low
+
+  * New upstream release.
+  * fix cloud-init-run-module to allow 'always' (LP: #568139)
+  * add support for setting debconf selections 
+  * add cloud-config support for debconf selections (LP: #582667),
+    byobu enablement, and ssh-import-lp-id
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 18 Jun 2010 15:48:14 -0400
+
+cloud-init (0.5.11-0ubuntu2) maverick; urgency=low
+
+  * handle renaming sem/markers for config items to avoid
+    running per-instance again after package upgrade
+  * pull 'config-' prefix on sem/ items for cloud-config modules from
+    0.5.12
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 18 Jun 2010 12:52:10 -0400
+
+cloud-init (0.5.11-0ubuntu1) maverick; urgency=low
+
+  * New upstream release.
+  * remove ec2-get-info.  It is replaced by cloudutils ec2metadata
+  * use python logging
+  * reduce number of upstart jobs
+  * add "boothook" user data type
+  * Switch to dpkg-source 3.0 (quilt) format
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 18 Jun 2010 01:04:58 -0400
+
+cloud-init (0.5.10-0ubuntu1) lucid; urgency=low
+
+  * New upstream release.
+  * ec2-get-info: fix for python traceback
+  * ephemeral mount will show up in /etc/mtab or df on first boot
+    LP: #527825
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 26 Mar 2010 00:57:28 -0400
+
+cloud-init (0.5.9-0ubuntu1) lucid; urgency=low
+
+  * New upstream release.
+  * rename apt list files. 'ubuntu-bug' now works without update (LP: #513060)
+  * replace 'cloudconfig' entries in fstab rather than appending (LP: #524562)
+  * fix to fstab writing on ebs-root instances
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 08 Mar 2010 13:07:02 -0500
+
+cloud-init (0.5.8-0ubuntu1) lucid; urgency=low
+
+  * New upstream release.
+  * cache data from metadata service, LP: #527364
+  * fix format of cron entry in cron.d/cloudinit-updates
+  * package egg-info file
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 02 Mar 2010 15:48:04 -0500
+
+cloud-init (0.5.7-0ubuntu4) lucid; urgency=low
+
+  * fix empty package previous package was emptpy for cloud-init
+    due to adding the ec2-init package
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 26 Feb 2010 17:06:05 -0500
+
+cloud-init (0.5.7-0ubuntu3) lucid; urgency=low
+
+  * debian/control:
+    - recommend ssh-import, such that the ssh-import-lp-id
+      utility is available in UEC images for convenient importing of
+      ssh public keys stored in Launchpad, LP: #524101
+    - build a transitional ec2-init package to handle the rename
+      gracefully on upgrades, LP: #527187
+
+ -- Dustin Kirkland <kirkland@xxxxxxxxxx>  Thu, 25 Feb 2010 16:22:10 -0600
+
+cloud-init (0.5.7-0ubuntu2) lucid; urgency=low
+
+  * fix packaging but that put the message-of-the-day hook file
+    into a subdir of etc/update-motd.d, remove old file (LP: #524999)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 19 Feb 2010 21:02:10 -0500
+
+cloud-init (0.5.7-0ubuntu1) lucid; urgency=low
+
+  * New upstream release.
+  * run cloud-init early in boot process (LP: #504883, #524516)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 19 Feb 2010 18:27:45 -0500
+
+cloud-init (0.5.6-0ubuntu1) lucid; urgency=low
+
+  * New upstream release.
+  * supports 'runcmd' in cloud-config
+  * enable the update check code (LP: #524258)
+  * fix retry_url in boto_utils.py when metadata service not around
+    (LP: #523832)
+  * run cloud-config-puppet.conf later (LP: #523625)
+  [ Scott Moser 0.5.5 ]
+  * New upstream release, supports checking for updates
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 19 Feb 2010 03:13:22 -0500
+
+cloud-init (0.5.4-0ubuntu1) lucid; urgency=low
+
+  * New upstream release.
+  * fix broken user-data scripts
+  * merge mathiaz work for cloud-config-puppet
+  * fix bug causing apt update to fail
+  * rename EC2Init class to CloudInit
+  * only set hostname once per instance. (LP: #514492)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 17 Feb 2010 09:40:30 -0500
+
+cloud-init (0.5.3-0ubuntu2) lucid; urgency=low
+
+  * divert ureadahead.conf in postinst (LP: #499520)
+  * lintian cleanups
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 05 Feb 2010 15:48:21 -0500
+
+cloud-init (0.5.3-0ubuntu1) lucid; urgency=low
+
+  * Rename ec2-init to cloud-init.  New upstream release.
+  * set hostname to ip-u.x.y.z if local-hostname provides a ip addr
+    (LP: #475354)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 04 Feb 2010 03:00:05 -0500
+
+ec2-init (0.5.2-0ubuntu1) lucid; urgency=low
+
+  * new upstream release
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 29 Jan 2010 13:30:52 -0500
+
+ec2-init (0.5.1-0ubuntu1) lucid; urgency=low
+
+  * new upstream release
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 22 Jan 2010 16:19:30 -0500
+
+ec2-init (0.5.0-0ubuntu4) lucid; urgency=low
+
+  * add an upstart job to get ssh keys regenerated and written
+    to console (LP: #506599, LP: #507070)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 14 Jan 2010 13:10:55 -0500
+
+ec2-init (0.5.0-0ubuntu3) lucid; urgency=low
+
+  * work around difference in uec/ec2 metadata service (LP:506332)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 12 Jan 2010 11:33:11 -0500
+
+ec2-init (0.5.0-0ubuntu2) lucid; urgency=low
+
+  * pull changes from devel branch to get functional on ec2
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 11 Jan 2010 12:03:45 -0500
+
+ec2-init (0.5.0-0ubuntu2) lucid; urgency=low
+
+  * new upstream release
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 07 Jan 2010 22:00:38 -0500
+
+ec2-init (0.4.999-0ubuntu8) lucid; urgency=low
+
+  * fix mirror selection for us-west-1 (LP: #494185)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 11 Dec 2009 15:12:19 -0500
+
+ec2-init (0.4.999-0ubuntu7) karmic; urgency=low
+
+  * work around differences in eucalyptus ephemeral mounts (LP: #458850)
+  * get 'ec2:' prefix on ssh public key fingerprint (LP: #458576)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 26 Oct 2009 16:18:06 -0400
+
+ec2-init (0.4.999-0ubuntu6) karmic; urgency=low
+
+  * make sources.list components for 'karmic-security' the same as
+    'karmic' and 'karmic-updates' (main, restricted) (LP: #457866)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 22 Oct 2009 08:55:58 -0400
+
+ec2-init (0.4.999-0ubuntu5) karmic; urgency=low
+
+  * write regenerate_ssh_host_keys output directly to /dev/console
+    to ensure that it gets there. (LP: #451881)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 21 Oct 2009 17:23:38 -0400
+
+ec2-init (0.4.999-0ubuntu4) karmic; urgency=low
+
+  * set locale to en_US.UTF-8 if get_location_from_availability_zone 
+    doesn't have a match (LP: #407949)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 20 Oct 2009 09:57:49 -0400
+
+ec2-init (0.4.999-0ubuntu3) karmic; urgency=low
+
+  * split running of user-data out of ec2-init into ec2-init-user-data
+    run this at S99. (LP : #431255)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 25 Sep 2009 14:17:17 -0400
+
+ec2-init (0.4.999-0ubuntu2) karmic; urgency=low
+
+  * remove rightscale-init from package (see LP: #434181, LP: #434693)
+  * fix lintian warning, specify path to GPL-3
+  * replace multiple '| logger' in regenerate_ssh_host_keys single one
+  * add ec2-is-compat-env, and disable init script by default.  it can be
+    enabled by setting 'compat=1' in /etc/ec2-init/is-compat-env
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 24 Sep 2009 16:32:42 -0400
+
+ec2-init (0.4.999-0ubuntu1) karmic; urgency=low
+
+  * New upstream release
+
+ -- Soren Hansen <soren@xxxxxxxxxx>  Wed, 26 Aug 2009 01:23:52 +0200
+
+ec2-init (0.4.99-0ubuntu3) karmic; urgency=low
+
+  * Also update /etc/default/locale when setting the locale based on
+    locality.
+
+ -- Soren Hansen <soren@xxxxxxxxxx>  Tue, 11 Aug 2009 21:49:33 +0200
+
+ec2-init (0.4.99-0ubuntu2) karmic; urgency=low
+
+  * Consolidate build-dependencies a bit.
+  * Sync default configuration with code.
+  * Create /var/lib/ec2 in package.
+  * Make ec2-get-info more robust in testing environments.
+  * Handle missing public keys more gracefully.
+  * Set proper ownership of user's authorized_keys.
+
+ -- Soren Hansen <soren@xxxxxxxxxx>  Tue, 11 Aug 2009 09:54:16 +0200
+
+ec2-init (0.4.99-0ubuntu1) karmic; urgency=low
+
+  * Massive rewrite. (LP: #407871, #407919, #308530, #407949, #407950, #407892
+    and probably many others)
+  * First Ubuntu version with the upstream tarball split out.
+  * Switch to arch: all. There is no arch specific code here.
+
+ -- Soren Hansen <soren@xxxxxxxxxx>  Tue, 11 Aug 2009 08:33:33 +0200
+
+ec2-init (0.3.4ubuntu9) karmic; urgency=low
+
+  * Really include the action id in the semaphore filename.
+
+ -- Soren Hansen <soren@xxxxxxxxxx>  Sat, 11 Jul 2009 09:50:31 +0200
+
+ec2-init (0.3.4ubuntu8) karmic; urgency=low
+
+  * Add Vcs-Bzr header to debian/control.
+  * Include the action id in the semaphore filename.
+
+ -- Soren Hansen <soren@xxxxxxxxxx>  Sat, 11 Jul 2009 02:35:43 +0200
+
+ec2-init (0.3.4ubuntu7) karmic; urgency=low
+
+  * Re-add accidentally removed locale template.
+  * Fix indentation in init script.
+
+ -- Soren Hansen <soren@xxxxxxxxxx>  Fri, 10 Jul 2009 23:47:27 +0200
+
+ec2-init (0.3.4ubuntu6) karmic; urgency=low
+
+  * Replace calls to ec2-get-data with calls to ec2-get-info.
+  * Make this package arch: all.
+
+ -- Soren Hansen <soren@xxxxxxxxxx>  Fri, 10 Jul 2009 23:16:35 +0200
+
+ec2-init (0.3.4ubuntu5) karmic; urgency=low
+
+  * debian/init: Move instance reboot detection out of python 
+    scripts and move them to the init script.
+  * debian/ec2-set-defaults.py: 
+    - Point to the right location for locate (LP: #387611)
+    - Default to UTC (LP: #341060)
+  * debian/ec2-set-apt-sources.py: If you cant contact EC2 then use the
+    regular archive (LP: #387027)
+  * debian/ec2-setup-hostname.py: Use the local hostname in /etc/hosts
+    and dont change once rebooted. (LP: #352745)
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Wed, 08 Jul 2009 09:48:49 -0400
+
+ec2-init (0.3.4ubuntu4) karmic; urgency=low
+
+  * debian/init: Run update-motd regardless whether its a firstboot or not.
+  * debian/init: Fix comments (LP: #373057)
+  * debian/control: Add update-motd as a depends.
+  * ec2-set-defaults.py: Wait for network to become available. (LP: #308530)
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Thu, 28 May 2009 05:04:31 -0400
+
+ec2-init (0.3.4ubuntu3) karmic; urgency=low
+
+  * debian/init: Move init script to run before ssh and regenerate the ssh
+    host kes in the init script rather than /etc/rc.local (LP: #370628)
+  * ec2-set-apt-sources.py: 
+    - Move sources.list to /var/ec2 so it doesnt get removed after user
+    reboots.
+  * ec2-set-defaults.py:
+    - Move locale to /var/ec2/ so it doesnt get remove after user reboots.
+  * ec2-set-hostname.py
+    - Create an /etc/hostname as well.
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Thu, 14 May 2009 11:11:49 -0400
+
+ec2-init (0.3.4ubuntu2) karmic; urgency=low
+
+  * Really change the locale when setting up an instance. (LP: #341066) 
+  * Run ec2-run-user-data script last. (LP: #373055)
+  * Minor comment tweaks. (LP: #373057)
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Wed, 13 May 2009 13:41:35 -0400
+
+ec2-init (0.3.4ubuntu1) karmic; urgency=low
+
+  * Add more smarts to ec2 instance bring up. (LP: #371936)
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Tue, 05 May 2009 08:59:54 -0400
+
+ec2-init (0.3.3ubuntu12) jaunty; urgency=low
+
+  * ec2-run-user-data.py: Fix error. 
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Tue, 07 Apr 2009 08:14:07 -0400
+
+ec2-init (0.3.3ubuntu11) jaunty; urgency=low
+
+  * debian/control:
+    - Add python-cheetah and python-apt as a dependency.
+  * debian/ec2-config.cfg:
+    - Remove distro due to the change in ec2-set-apt-sources.py
+  * debian/inistall
+    - Install the templates in the right place.
+  * ec2-set-apt-sources.py:
+    - Use python-apt to update the sources.list.
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Wed, 01 Apr 2009 13:58:43 -0400
+
+ec2-init (0.3.3ubuntu10) jaunty; urgency=low
+
+  * ec2-set-hostname.py:
+    - Use template for /etc/hosts creation.
+    - Dont use public_hostname in /etc/hosts. (LP: #352745) 
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Wed, 01 Apr 2009 08:48:05 -0400
+
+ec2-init (0.3.3ubuntu9) jaunty; urgency=low
+
+  * ec2-set-apt-sources.py:
+    - Use a template to generate the sources.list and generate it based on the lsb_release. 
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Tue, 31 Mar 2009 15:15:55 -0400
+
+ec2-init (0.3.3ubuntu8) jaunty; urgency=low
+
+  * ec2-set-apt-sources.py:
+    - Add the ubuntu-on-ec2 ppa. 
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Tue, 31 Mar 2009 09:37:13 -0400
+
+ec2-init (0.3.3ubuntu7) jaunty; urgency=low
+
+  * debian/rules: Fix typo. 
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Sun, 22 Mar 2009 17:14:16 -0400
+
+ec2-init (0.3.3ubuntu6) jaunty; urgency=low
+
+  * Set the configuration file to jaunty.
+  * ec2-fetch-credentials: Fix typo.
+  * ec2-set-defaults.py: 
+    - Remove timezone change when booting the instance.
+    - Redirect output to /dev/null.
+  * ec2-set-apt-sources.py:
+    - Run apt-get update after the /etc/apt/sources.list and
+      redirect the output to /dev/null.
+  * rightscale-init: Updated rightscale-init
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Thu, 19 Mar 2009 20:52:59 -0400
+
+ec2-init (0.3.3ubuntu5) jaunty; urgency=low
+
+  * debian/ec2-config.cfg:
+    - Add disable root option.
+  * debian/ec2-init.rightscale-init.init:
+    - Add rightscale detection script.
+  * ec2-get-info.py:
+    - Display the information about an AMI instance.
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Mon, 16 Mar 2009 08:54:49 -0400
+
+ec2-init (0.3.3ubuntu4) jaunty; urgency=low
+
+  * ec2-fetch-credentials.py:
+    - Allow user to choose which user they wish to configure for.
+    - Allow user to disable root user if they wish to.
+  * ec2-set-defaults.py:
+    - Set default timezone to UTC.
+    - Set locale depending on zone.
+  * debian/init:
+    - Removed nash plugin.
+    - Add ec2-set-defaults.
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Wed, 04 Mar 2009 08:33:01 -0500
+
+ec2-init (0.3.3ubuntu3~intrepid4) intrepid; urgency=low
+
+  * set distro to intrepid.
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Thu, 26 Feb 2009 10:28:06 -0500
+
+ec2-init (0.3.3ubuntu3) jaunty; urgency=low
+
+  * debian/ec2-init: Log results of ec2-run-user-data to syslog.
+  * ec2-run-user-data.py :Dont leave files around and log the 
+    output to syslog. 
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Thu, 26 Feb 2009 10:24:35 -0500
+
+ec2-init (0.3.3ubuntu2) jaunty; urgency=low
+
+  * ec2-set-apt-sources.py:
+    - Use the ec2 mirrors. (LP: #317065, #333897)
+    - Update the /etc/apt/sources.list (LP: #333904)
+  * ec2-fetch-credentials.py:
+    - Better error checking (LP: #325067)
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Tue, 24 Feb 2009 14:02:37 -0500
+
+ec2-init (0.3.3ubuntu1) jaunty; urgency=low
+
+  * debian/init: Fix init script. 
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Fri, 20 Feb 2009 09:22:54 -0500
+
+ec2-init (0.3.3) jaunty; urgency=low
+
+  * ec2-set-apt-sources.py
+    - Determine the zone that the user is in and generate
+      a /etc/apt/sources.list.d/ based on that.
+  * debian/init:
+    - Check to see if there is an /var/run/ec2 and create
+      it if it doesnt exist.
+    - Start ec2-set-apt-sources at first bootup.
+  * debian/rules:
+    - Install ec2-set-apt-sources.
+  * debian/control:
+    - Add python-configobj as a dependency.
+  * debian/{install,dirs}
+    - Create an /etc/ec2-init to read the configuration file and install it.
+  
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Mon, 09 Feb 2009 10:35:56 -0500
+
+ec2-init (0.3.2) jaunty; urgency=low
+
+  * debian/init:
+    - Remove already ran detection
+    - Log the running of ec2-run-user-data to /var/log/ec2-user-data.log
+  * ec2-set-hostname.py:
+    - set hostname to the Ec2 local-hostname
+    - Update the /etc/hosts to change the ubuntu hostname to the
+      public hostname.
+  * ec2-fetch-credentials:
+    - Copy the ssh keys to the ubuntu user.
+    - Setup authorized keys for root to tell the user to login as the 
+      ubuntu user when they try to connect.
+  * ec2-run-user-data:
+    - Create an .already-ran file to check to see if ec2-run-user-data
+      already ran.
+    - Save the ec2-run-user-data script in /var/ec2.
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Wed, 04 Feb 2009 09:32:08 -0500
+
+ec2-init (0.3.1) jaunty; urgency=low
+
+  * debian/dir: Install /var/ec2 to save user-data scripts.
+  * debian/rules: Start ec2-init after ssh.
+  * ec2-run-user-data.py: Save run-user-data script with ami-id.
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Mon, 26 Jan 2009 10:40:52 -0500
+
+ec2-init (0.3) jaunty; urgency=low
+
+  * ec2-run-user-data: Fix python error when writing a file to the disk. 
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Thu, 15 Jan 2009 11:49:08 -0500
+
+ec2-init (0.2) jaunty; urgency=low
+
+  * debian/init: Run fetch-credentials before anything else.
+    (LP: #308533)
+  * Add ec2-set-hostname.py: Queries ec2 metdada for public-hostname
+    and then sets it (LP: #316201)
+
+ -- Chuck Short <zulcss@xxxxxxxxxx>  Tue, 13 Jan 2009 15:20:21 -0500
+
+ec2-init (0.1) intrepid; urgency=low
+
+  * Initial release (LP: #269434).
+
+ -- Soren Hansen <soren@xxxxxxxxxx>  Fri, 12 Sep 2008 15:30:32 +0200
+
diff --git a/debian/cherry-pick b/debian/cherry-pick
new file mode 100755
index 0000000..dd55724
--- /dev/null
+++ b/debian/cherry-pick
@@ -0,0 +1,197 @@
+#!/bin/bash
+
+VERBOSITY=0
+TEMP_D=""
+CR=$'\n'
+
+error() { echo "$@" 1>&2; }
+fail() { [ $# -eq 0 ] || error "$@"; exit 1; }
+
+Usage() {
+    cat <<EOF
+Usage: ${0##*/} [ options ] <<ARGUMENTS>>
+
+   Cherry pick a patch into debian/patches.
+   Useful to grab an upstream commit to the current packaging branch.
+
+   options:
+      -h | --help  show help
+EOF
+}
+
+bad_Usage() { Usage 1>&2; [ $# -eq 0 ] || error "$@"; return 1; }
+cleanup() {
+    [ -z "${TEMP_D}" -o ! -d "${TEMP_D}" ] || rm -Rf "${TEMP_D}"
+}
+
+debug() {
+    local level=${1}; shift;
+    [ "${level}" -gt "${VERBOSITY}" ] && return
+    error "${@}"
+}
+
+shorten() {
+    local name="$1" len="70"
+    while [ "${#name}" -gt "$len" ]; do
+        name="${name%-*}"
+    done
+    _RET="$name"
+}
+
+print_commit() {
+    local subject="$1" author="$2" bugs="$3" aname=""
+    aname=${author% <*}
+    echo "$subject${bugs:+ (LP: ${bugs})}"
+}
+
+print_bugs() {
+    local subject="$1" author="$2" bugs="$3" aname=""
+    echo "$bugs"
+}
+
+git_log_to_dch() {
+    # call printer with subject, author and bugs as extracted
+    # from either git format-patch output or git show output.
+    local line="" commit="" lcommit="" bugs=""
+    local printer="${1:-print_commit}"
+    while :; do
+        read line || break
+        case "$line" in
+            commit\ *|From\ *)
+                if [ -n "$commit" ]; then
+                    "$printer" "$subject" "$author" "$bugs"
+                fi
+                commit=${line#* }
+                commit=${commit%% *}
+                bugs=""
+                author=""
+                subject=""
+                ;;
+            Author:\ *|From:\ *) author="${line#*: }";;
+            LP:*) bugs="${bugs:+${bugs}, }${line#*: }";;
+            "") [ -z "$subject" ] && read subject;;
+            Subject:\ *)
+                subject="${line#Subject: }"
+                subject="${subject#\[PATCH\] }"
+                ;;
+        esac
+    done
+    if [ -n "$commit" ]; then
+        "$printer" "$subject" "$author" "$bugs"
+    fi
+}
+
+main() {
+    local short_opts="ho:v"
+    local long_opts="help,verbose"
+    local getopt_out=""
+    getopt_out=$(getopt --name "${0##*/}" \
+        --options "${short_opts}" --long "${long_opts}" -- "$@") &&
+        eval set -- "${getopt_out}" ||
+        { bad_Usage; return; }
+
+    local cur="" next=""
+
+    while [ $# -ne 0 ]; do
+        cur="$1"; next="$2";
+        case "$cur" in
+            -h|--help) Usage ; exit 0;;
+            -v|--verbose) VERBOSITY=$((${VERBOSITY}+1));;
+            --) shift; break;;
+        esac
+        shift;
+    done
+
+	[ -n "$TEMP_D" ] ||
+        TEMP_D=$(mktemp -d "${TMPDIR:-/tmp}/${0##*/}.XXXXXX") ||
+		{ error "failed to make tempdir"; return 1; }
+	trap cleanup EXIT
+
+    [ $# -gt 0 ] || { bad_Usage "must provide commit-ish"; return; }
+
+    local r="" commit_in="$1" chash="" shash="" sname="" fname="" cur_br=""
+    cur_br=$(git rev-parse --abbrev-ref HEAD) ||
+        { error "failed to get current branch"; return 1; }
+    chash=$(git show --quiet "--pretty=format:%H" "${commit_in}") ||
+        { error "failed git show $commit_in"; return 1; }
+
+    if git merge-base --is-ancestor "$chash" HEAD; then
+        error "current branch '$cur_br' already contains $commit_in ($chash)"
+        return 1
+    fi
+
+    out=$(git show --quiet "--pretty=format:%h %f" "$chash") ||
+        { error "failed git show $chash"; return 1; }
+
+    shash=${out% *}
+    sname=${out#* }
+    longname="cpick-$shash-$sname"
+    shorten "$longname"
+    fname="$_RET"
+
+    [ -d debian/patches ] || mkdir -p debian/patches ||
+        { error "failed to make debian/patches"; return 1; }
+
+    local series="debian/patches/series" fpath="debian/patches/$fname"
+    if [ -e "$series" ] && out=$(grep -- "-${shash}-" "$series"); then
+        error "$chash already exists in $series"
+        error "  $out"
+        return 1
+    fi
+
+    if [ -e "$series" ]; then
+        if out=$(quilt applied 2>&1); then
+            error "there are quilt patches applied!"
+            error "$out"
+            return 1
+        fi
+    fi
+
+    git format-patch --stdout -1 "$chash" > "$fpath" ||
+        { error "failed git format-patch -1 $chash > $fpath"; return 1; }
+
+    echo "$fname" >> "$series" ||
+        { error "failed to write to $series"; return 1; }
+
+    quilt push "$fname" ||
+        { error "patches do not cleanly apply"; return 1; }
+    quilt refresh && quilt pop -a ||
+        { error "failed to refresh or pop quilt"; return 1; }
+
+    local message=""
+    message=$(git_log_to_dch < "$fpath") ||
+        { error "failed getting log entry from $fpath"; return 1; }
+    dch -i "cherry-pick $shash: $message"
+
+    dch -e || {
+        r=$?;
+        error "dch -e exited $r";
+        return $r;
+    }
+
+    local commit_files=""
+    commit_files=( "$series" "$fpath" )
+    git diff HEAD "${commit_files[@]}"
+
+    echo -n "Commit this change? (Y/n): "
+    read answer || fail "failed to read answer"
+    case "$answer" in
+        n|[Nn][oO]) exit 1;;
+    esac
+
+    bugs=$(git_log_to_dch print_bugs < "$fpath")
+    msg="cherry pick $shash${bugs:+${CR}${CR}LP: ${bugs}}"
+    git add "$series" "$fpath" ||
+        { error "failed to git add $series $fpath"; return 1; }
+
+    git commit -m "$msg" "${commit_files[@]}" ||
+        fail "failed to commit '$msg'"
+
+    git commit -m "update changelog" debian/changelog ||
+        fail "failed to commit update to debian changelog."
+
+    return 0
+}
+
+main "$@"
+# vi: ts=4 expandtab
diff --git a/debian/cloud-init.config b/debian/cloud-init.config
new file mode 100644
index 0000000..6e9c6f7
--- /dev/null
+++ b/debian/cloud-init.config
@@ -0,0 +1,78 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+hasEc2Md() {
+	local d=/var/lib/cloud i=/var/lib/cloud/instance/ f=""
+	local flist="${i}/datasource ${i}/obj.pkl ${d}/cache/obj.pkl"
+	# search current instance data source information
+	for f in ${flist}; do
+		[ -f "${f}" ] || continue
+		grep -q DataSourceEc2 "${f}" 2>/dev/null && return 0
+	done
+
+
+	# there was no data above found that would have been indicated
+	# by a upgrade. lets just see if we can't find the metadata
+	# service.  if wget is not present (it is not 'essential')
+	# then we will quietly return 1
+	local url="http://169.254.169.254/2009-04-04/meta-data/instance-id";
+	i=""
+	if command -v wget >/dev/null 2>&1; then
+		local tout="--connect-timeout 5 --read-timeout 5 --tries 1" 
+		i=$(wget "${url}" ${tout} -O - 2>/dev/null) || :
+	elif command -v curl >/dev/null 2>&1; then
+		i=$(curl "${url}" --max-time 1) || :
+	fi
+	# if instance-id starts with 'i-' then in all likelyhood its good
+	[ "${i#i-}" != "${i}" ] && return 0
+	return 1
+}
+
+get_yaml_list() {
+	# get_yaml_list(file, key, def): return a comma delimited list with the value
+	# for the yaml array defined in 'key' from 'file'. if not found , return 'def'
+	# only really supports 'key: [en1, en2 ]' format.
+	local file="$1" key="$2" default="$3"
+	[ -f "$file" ] || return 1
+	# any thing that didn't match the key is deleted so the final 'p' only
+	# prints things that matched.
+	RET=$(sed -n -e "/^$key:/"'!'d -e "s/$key:[ \[]*//"\
+		-e "s, \]$,," -e p "$file")
+	[ -n "$RET" ] || RET="$default"
+}
+
+# old_dpkg_cfg is very old file that is no longer read by cloud-init.
+# it gets re-named to cloud.cfg.d/90_dpkg.cfg in the preinst.
+dpkg_cfg="/etc/cloud/cloud.cfg.d/90_dpkg.cfg"
+old_dpkg_cfg="/etc/cloud/distro.cfg"
+if [ -f "${old_dpkg_cfg}" -a ! -f "$dpkg_cfg" ]; then
+	dpkg_cfg="${old_dpkg_cfg}"
+   echo "WARN: reading value from ${old_dpkg_cfg}" 1>&2
+fi
+if [ -f "$dpkg_cfg" ]; then
+	if get_yaml_list "$dpkg_cfg" datasource_list NOTFOUND &&
+		val="$RET" && [ "$val" != "NOTFOUND" ]; then
+		db_set cloud-init/datasources $val
+	else
+		echo "WARN: failed to read datasource_list from $dpkg_cfg" 1>&2
+	fi
+elif { db_fget cloud-init/datasources seen || : ; } &&
+		[ "${RET}" = "false" ]; then
+	# this is the first time this we've run (installation or re-install after
+	# purge). try to determine if the Ec2 datasource is there.
+	# if it is, and Ec2 was not in the default list, then add it.
+	db_get cloud-init/datasources
+	def="${RET}"
+	case " ${def}," in
+		*\ Ec2,*) :;;
+		*) hasEc2Md &&
+			db_set cloud-init/datasources "${def:+${def}, }Ec2";;
+	esac
+fi
+
+db_input low cloud-init/datasources || true
+db_go
+
+exit 0
+# vi: ts=4 noexpandtab
diff --git a/debian/cloud-init.lintian-overrides b/debian/cloud-init.lintian-overrides
new file mode 100644
index 0000000..591b651
--- /dev/null
+++ b/debian/cloud-init.lintian-overrides
@@ -0,0 +1,3 @@
+# this explicitly diverts ureadahead.conf in ureadahead package
+# see LP: #499520 for more discussion
+cloud-init binary: diversion-for-unknown-file
diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst
new file mode 100644
index 0000000..420420b
--- /dev/null
+++ b/debian/cloud-init.postinst
@@ -0,0 +1,331 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+set -f # disable pathname expansion
+db_capb escape # to support carriage return / multi-line values
+
+debug() {
+   [ "${_CI_UPGRADE_DEBUG:-0}" = "0" ] && return 0
+   echo "$@" 1>&2 || :
+}
+
+update_cfg() {
+   # takes filename, header, new object (in yaml), optionally 'remover'
+   # and merges new into existing object in filename, and then updates file
+   # remover a string that means "delete existing entry"
+   python3 -c '
+import sys, yaml
+
+def update(src, cand):
+    if not (isinstance(src, dict) and isinstance(cand, dict)):
+        return cand
+    for k, v in cand.items():
+        # if the candidate has _ as value, delete source
+        if v == REMOVER:
+            if k in src:
+                del src[k]
+            continue
+        if k not in src:
+            src[k] = v
+        else:
+            src[k] = update(src[k], v)
+    return src
+
+(fname, header, newyaml) = sys.argv[1:4]
+REMOVER = object
+if len(sys.argv) == 5:
+   REMOVER = sys.argv[4]
+newcfg = yaml.load(newyaml)
+
+with open(fname, "r") as fp:
+    cfg = yaml.load(fp)
+if not cfg: cfg = {}
+
+cfg = update(cfg, newcfg)
+
+with open(fname, "w") as fp:
+    fp.write(header + "\n")
+    fp.write(yaml.dump(cfg))' "$@"
+}
+
+handle_preseed_maas() {
+   local cfg_file="/etc/cloud/cloud.cfg.d/90_dpkg_maas.cfg"
+   local md_url="" creds_all="" c_key="" t_key="" t_sec="" c_sec="";
+
+   db_get "cloud-init/maas-metadata-url" && md_url="$RET" || :
+   db_get "cloud-init/maas-metadata-credentials" && creds_all="$RET" || :
+
+   # nothing to do
+   [ -n "$md_url" -o -n "$creds_all" ] || return 0
+
+   # change a url query string format into : delimited
+   if [ -n "$creds_all" -a "${creds_all#*&}" != "${creds_all}" ]; then
+      # the command here ends up looking like:
+      # python3 -c '...' 'oauth_consumer_key=v1&oauth_token_key=v2...' \
+      #   oauth_consumer_key oauth_token_key oauth_token_secret
+      creds_all=$(python3 -c 'from six.moves.urllib.parse import parse_qs;
+import sys;
+keys = parse_qs(sys.argv[1])
+for k in sys.argv[2:]:
+   sys.stdout.write("%s:" % keys.get(k,[""])[0])' "$creds_all" \
+   oauth_consumer_key oauth_token_key oauth_token_secret
+)
+   fi
+
+   # now, if non-empty creds_all is: consumer_key:token_key:token_secret
+   if [ -n "$creds_all" ]; then
+      OIFS="$IFS"; IFS=:; set -- $creds_all; IFS="$OIFS"
+      c_key=$1; t_key=$2; t_sec=$3
+   fi
+
+   if [ "$md_url" = "_" -a "${c_key}:${t_key}:${t_sec}" = "_:_:_" ]; then
+      # if all these values were '_', the delete value, just delete the file.
+      rm -f "$cfg_file"
+   else
+      local header="# written by cloud-init debian package per preseed entries
+# cloud-init/{maas-metadata-url,/maas-metadata-credentials}"
+
+      local pair="" k="" v="" pload="" orig_umask=""
+      for pair in "metadata_url:$md_url" "consumer_key:${c_key}" \
+         "token_key:${t_key}" "token_secret:$t_sec"; do
+         k=${pair%%:*}
+         v=${pair#${k}:}
+         [ -n "$v" ] && pload="${pload} $k: \"$v\","
+      done
+
+      # '_' would indicate "delete", otherwise, existing entries are left
+      orig_umask=$(umask)
+      umask 066
+      : >> "$cfg_file" && chmod 600 "$cfg_file"
+      update_cfg "$cfg_file" "$header" "datasource: { MAAS: { ${pload%,} } }" _
+      umask ${orig_umask}
+   fi
+
+   # now clear the database of the values, as they've been consumed
+   db_unregister "cloud-init/maas-metadata-url" || :
+   db_unregister "cloud-init/maas-metadata-credentials" || :
+}
+
+handle_preseed_local_cloud_config() {
+   local ccfg="" debconf_name="cloud-init/local-cloud-config"
+   local cfg_file="/etc/cloud/cloud.cfg.d/90_dpkg_local_cloud_config.cfg"
+   local header="# written by cloud-init debian package per preseed entry
+# $debconf_name"
+
+   db_get "${debconf_name}" && ccfg="$RET" || :
+
+   if [ "$ccfg" = "_" ]; then
+      rm -f "$cfg_file"
+   elif [ -n "$ccfg" ]; then
+      { echo "$header"; echo "$ccfg"; } > "$cfg_file"
+   fi
+   db_unregister "${debconf_name}" || :
+}
+
+fix_1336855() {
+  ### Begin fix for LP: 1336855
+  # fix issue where cloud-init misidentifies the location of grub and
+  # where grub misidentifies the location of the device
+
+  # if cloud-init's grub module did not run, then it did not break anything.
+  [ -f /var/lib/cloud/instance/sem/config_grub_dpkg ] || return 0
+
+  # This bug only happened on /dev/xvda devices
+  [ -b /dev/xvda ] || return 0
+
+  # we can't fix the system without /proc/cmdline
+  [ -r /proc/cmdline ] || return 0
+
+  # Don't do anything unless we have grub
+  [ -x /usr/sbin/grub-install ] || return 0
+
+  # First, identify the kernel device for the parent.
+  for parm in $(cat /proc/cmdline); do
+       dev=$(echo $parm | awk -F\= '{print$NF}')
+       case $parm in
+           root=UUID*)  [ -d /dev/disk/by-uuid ] &&
+                            root_dev=$(readlink -f /dev/disk/by-uuid/$dev);;
+           root=LABEL*) [ -d /dev/disk/by-label ] &&
+                            root_dev=$(readlink -f /dev/disk/by-label/$dev);;
+           root=/dev*)  [ -d /dev ] &&
+                            root_dev=$(readlink -f $dev);;
+       esac
+       [ -n "$root_dev" ] && break
+  done
+
+  # Don't continue if we don't have a root directive
+  [ -z "$root_dev" ] && return 0
+
+  # Only deal with simple, cloud-based devices
+  case $root_dev in
+       /dev/vda*|/dev/xvda*|/dev/sda*) ;;
+       *) return 0;;
+  esac
+
+  # Make sure that we are not chrooted.
+  [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ] && return 0
+
+  # Check if we are in a container, i.e. LXC
+  if systemd-detect-virt --quiet --container || lxc-is-container 2>/dev/null; then
+      return 0
+  fi
+
+  # Find out where grub thinks the root device is. Only continue if
+  # grub postinst would install/reinstall grub
+  db_get grub-pc/install_devices && grub_cfg_dev=${RET} || return 0
+  db_get grub-pc/install_devices_empty && grub_dev_empty=${RET} || return 0
+
+  # Find out the parent device for the root device.
+  #     example output: sda/sda1
+  block_path=$(udevadm info -q path -n $root_dev | awk '-Fblock/' '{print$NF}')
+
+  # Extract the parent device name. This works where the device is a block device
+  #     example output: /dev/sda
+  parent_dev=$(echo $block_path | awk '-F/' '$1 { if ( $1 ) {print"/dev/"$1}}')
+  [ -b "${parent_dev}" ] || return 0
+
+  # Do nothing if the device that the grub postinst would install is already used
+  [ "$grub_cfg_dev" = "$parent_dev" -o "$grub_cfg_dev" = "$root_dev" ] && return 0
+
+  # If we get here, do the installation
+  echo "Reconfiguring grub install device due to mismatch (LP: #1336855)"
+  echo "   Grub should use $parent_dev but is configured for $grub_cfg_dev"
+  db_set grub-pc/install_devices "$parent_dev"
+  grub-install $parent_dev &&
+     echo "Reinstalled grub" ||
+     echo "WARNING! Unable to fix grub device mismatch. You may be broken."
+
+}
+
+cleanup_lp1552999() {
+    local oldver="$1" last_bad_ver="0.7.7~bzr1178"
+    dpkg --compare-versions "$oldver" le "$last_bad_ver" || return 0
+    local edir="/etc/systemd/system/multi-user.target.wants"
+    rm -f "$edir/cloud-config.service" "$edir/cloud-final.service" \
+        "$edir/cloud-init-local.service" "$edir/cloud-init.service"
+}
+
+disable_network_config_on_upgrade() {
+    local oldver="$1" last_without_net="0.7.7~bzr1182-0ubuntu1"
+    if [ ! -f /var/lib/cloud/instance/obj.pkl ]; then
+        # this is a fresh system not one that has been booted.
+        return 0
+    fi
+    if dpkg --compare-versions "$oldver" le "$last_without_net"; then
+        echo "dpkg upgrade from $oldver" > /var/lib/cloud/data/upgraded-network
+    fi
+}
+
+fix_azure_upgrade_1611074() {
+    # adjust /etc/fstab on azure so boot after resize does not mount
+    # /mnt as ntfs and stop re-formatting.
+    local fixed_ver="0.7.8-49-1" dspath="/var/lib/cloud/instance/datasource"
+    local oldver="$1" tmpf="" r="" wmsg="" me="cloud-init postinst"
+
+    # if not on azure, or not booted with instance/ skip out.
+    if [ ! -e "$dspath" ]; then
+        debug "no $dspath"
+        return 0
+    fi
+    if ! grep -qi azure "$dspath"; then
+        debug "not on azure per $dspath"
+        return 0
+    fi
+
+    # if there is no /etc/fstab, then nothing to fix.
+    if [ ! -e /etc/fstab ]; then
+        debug "no /etc/fstab"
+        return 0
+    fi
+
+    if dpkg --compare-versions "$oldver" ge "$fixed_ver"; then
+        debug "previous version was fixed"
+        return 0
+    fi
+
+    wmsg="WARN: $me failed."
+    wmsg="$wmsg Subsequent resize may not update ephemeral correctly."
+    tmpf=$(mktemp "${TMPDIR:-/tmp}/cloud-init-upgrade.XXXXXX") || {
+        echo "$wmsg (mktemp failed with $?)" 1>&2
+        return 0;
+    }
+
+    awk '{
+        if ($4 !~ /x-systemd.requires/ && $4 ~ /comment=cloudconfig/) {
+            sub(/comment=cloudconfig/, "x-systemd.requires=cloud-init.service,comment=cloudconfig")
+        }
+        printf("%s\n", $0)}' /etc/fstab > "$tmpf" || {
+            echo "$wmsg (awk reading of /etc/fstab failed with $?)" 1>&2
+            rm -f "$tmpf"
+            return 0;
+        }
+    if cmp /etc/fstab "$tmpf" >/dev/null 2>&1; then
+        debug "no changes needed."
+    else
+        cat "$tmpf" > /etc/fstab || {
+            r=$?
+            echo "$wmsg (cp $tmpf /etc/fstab failed with $r)"
+            echo ==== expected to write the following to /etc/fstab =====
+            cat "$tmpf"
+            echo ========================================================
+            return $r
+        } 1>&2
+        echo "$me fixed /etc/fstab for x-systemd.requires" 1>&2
+    fi
+    rm "$tmpf" || :
+}
+
+
+if [ "$1" = "configure" ]; then
+   # disable ureadahead (LP: #499520)
+   dpkg-divert --package cloud-init --rename --divert \
+      /etc/init/ureadahead.conf.disabled --add /etc/init/ureadahead.conf
+   if db_get cloud-init/datasources; then
+      values="$RET"
+      if [ "${values#*MaaS}" != "${values}" ]; then
+         # if db had old MAAS spelling, fix it.
+         values=$(echo "$values" | sed 's,MaaS,MAAS,g')
+         db_set cloud-init/datasources "$values"
+      fi
+      cat > /etc/cloud/cloud.cfg.d/90_dpkg.cfg <<EOF
+# to update this file, run dpkg-reconfigure cloud-init
+datasource_list: [ $values ]
+EOF
+   fi
+
+   # we want to affect apt_pipelining on install, not wait for
+   # cloud-init to run it on next boot.
+   pipeline_f="/etc/apt/apt.conf.d/90cloud-init-pipelining"
+   if [ -f /var/lib/cloud/instance/obj.pkl ]; then
+      cloud-init single --name apt-pipelining --frequency once >/dev/null 2>&1 ||
+         echo "Warning: failed to setup apt-pipelining" 1>&2
+   elif [ ! -f "$pipeline_f" ]; then
+      # there was no cloud available, so populate it ourselves.
+      cat > "$pipeline_f" <<EOF
+//Written by cloud-init per 'apt_pipelining'
+Acquire::http::Pipeline-Depth "0";
+EOF
+   fi
+
+   # if there are maas settings pre-seeded apply them
+   handle_preseed_maas
+
+   # if there is generic cloud-config preseed, apply them
+   handle_preseed_local_cloud_config
+
+   # fix issue where cloud-init misidentifies the location of grub
+   fix_1336855
+
+   # make upgrades disable network changes by cloud-init
+   disable_network_config_on_upgrade "$2"
+
+   fix_azure_upgrade_1611074 "$2"
+fi
+
+#DEBHELPER#
+
+if [ "$1" = "configure" ]; then
+   oldver="$2"
+   cleanup_lp1552999 "$oldver"
+fi
diff --git a/debian/cloud-init.postrm b/debian/cloud-init.postrm
new file mode 100644
index 0000000..81b6681
--- /dev/null
+++ b/debian/cloud-init.postrm
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+   purge)
+      rm -f /etc/cloud/cloud.cfg.d/90_dpkg.cfg
+      rm -f /etc/apt/apt.conf.d/90cloud-init-pipelining
+      ;;
+   remove)
+      dpkg-divert --package cloud-init --remove --rename --divert \
+            /etc/init/ureadahead.conf.disabled /etc/init/ureadahead.conf
+      rm -f /etc/cloud/cloud.cfg.d/90cloud-init-pipelining
+      ;;
+esac
+
+#DEBHELPER#
diff --git a/debian/cloud-init.preinst b/debian/cloud-init.preinst
new file mode 100644
index 0000000..c8406e3
--- /dev/null
+++ b/debian/cloud-init.preinst
@@ -0,0 +1,254 @@
+#!/bin/sh
+set -e
+
+# Remove a no-longer used conffile
+rm_conffile() {
+	local PKGNAME="$1"
+	local CONFFILE="$2"
+
+	[ -e "$CONFFILE" ] || return 0
+
+	local md5sum="$(md5sum $CONFFILE | sed -e 's/ .*//')"
+	local old_md5sum="$(dpkg-query -W -f='${Conffiles}' $PKGNAME | \
+			sed -n -e "\' $CONFFILE ' { s/ obsolete$//; s/.* //; p }")"
+	if [ "$md5sum" != "$old_md5sum" ]; then
+		echo "Obsolete conffile $CONFFILE has been modified by you."
+		echo "Saving as $CONFFILE.dpkg-bak ..."
+		mv -f "$CONFFILE" "$CONFFILE".dpkg-bak
+	else
+		echo "Removing obsolete conffile $CONFFILE ..."
+		rm -f "$CONFFILE"
+	fi
+}
+
+# move_sem(src,targets)
+#  rename sem/* items named $src to $targets
+#  (with hard links if more than one)
+move_sem() {
+	local src=$1 f="" targ="" freqid="" dir=/var/lib/cloud/sem
+	shift
+	# link the remaining targets to src, if it exists
+	for f in "${dir}/${src}."*; do
+		# if there were no src entries, nothing to do
+		[ -f "${f}" ] || return 0
+		freqid=${f#${dir}/${src}.} # 'i-abcdefg' or 'always'
+		for targ in "$@"; do
+			[ -e "${dir}/${targ}.${freqid}" ] && continue
+			ln -f "${f}" "${dir}/${targ}.${freqid}"
+		done
+		rm "${f}"
+	done
+   return 0
+}
+
+fix_ephemeral0_micro() {
+   # make ephemeral0 entries in /etc/fstab written by cloudconfig
+   # 'nobootwait', so they do not block subsequent boots (LP: #634102)
+   local out="" oldver=$1 dev="" adop="nobootwait"
+   local s="[[:space:]]" ns="[^[:space:]]" # space and "not space"
+   local remain="${s}\+.*" first4=""
+   for dev in /dev/sda2 /dev/sdb; do
+      first4="${dev}$s\+$ns\+$s\+$ns\+$s\+$ns\+"
+      out=$(awk '$1 == dev && $4 ~ /cloudconfig/ &&  $4 !~ op { print $1 ; }' \
+         dev="${dev}" "op=${adop}" /etc/fstab) || return 0
+      [ -n "${out}" ] || continue
+      echo "making ephemeral ${dev} in /etc/fstab ${adop} (LP: #634102)" 1>&2
+      sed -i "s|^\(${first4}\)\(${remain}\)|\1,${adop}\2|" /etc/fstab
+   done
+}
+
+convert_varlib_05x_06x() {
+   local url="http://169.254.169.254/2009-04-04/meta-data/instance-id";
+   local tout="--connect-timeout .5 --read-timeout .5" 
+   local iid="" f="" uptime="" bn=""
+   iid=$(wget "${url}" ${tout} --tries 1 -O - 2>/dev/null) || iid=""
+
+   [ -n "${iid}" -a -d /var/lib/cloud ] || return 0
+   cd /var/lib/cloud
+   mkdir -p "instances/${iid}" "instances/${iid}/sem"
+   [ -e instance ] || ln -sf "instances/${iid}" instance
+   for f in data/*; do
+      [ -f "$f" ] || continue
+      case "${f#*/}" in
+         user-data.txt.i|user-data.txt|cloud-config.txt)
+            mv "${f}" instance/
+            ;;
+      esac
+   done
+   [ -f data/cache/obj.pkl ] && mv data/cache/obj.pkl instance/
+   for f in sem/*.${iid}; do
+      [ -f "${f}" ] || continue
+      bn=${f#*/}; bn=${bn%.${iid}}
+      case "${bn}" in
+         set_defaults) mv "${f}" "instance/sem/config-locale";;
+         set_hostname) mv "${f}" "instance/sem/config-set_hostname";;
+         *) mv "${f}" "instance/sem/${bn}";;
+      esac
+   done
+   [ ! -f sem/update_hostname.always ] ||
+      mv sem/update_hostname.always sem/config-update_hostname.always
+   rmdir data/cache 2>/dev/null || :
+   rm -f data/available.build
+
+   mkdir -p instance/scripts
+   if [ -d data/scripts ]; then
+      mv data/scripts/* instance/scripts || :
+      rmdir data/scripts || :
+   fi
+   [ -d data/scripts/* ] && mv data/scripts instance/
+
+   [ ! -e instance/boot-finished ] &&
+      [ -f /proc/uptime ] && read uptime other </proc/uptime &&
+      echo "${uptime}" > instance/boot-finished || :
+
+   return 0
+}
+
+azure_apply_new_instance_id_1506187() {
+  # With LP: #1506187, the Azure instance ID detection method was changed
+  # to use the DMI data. In order to prevent existing instances from thinking
+  # they are new instances, the instance ID needs to be updated here.
+
+  if grep DataSourceAzure /var/lib/cloud/instance/datasource > /dev/null 2>&1; then
+
+     product_id_f="/sys/devices/virtual/dmi/id/product_uuid"
+     instance_id_f="/var/lib/cloud/data/instance-id"
+
+     if [ ! -e "${product_id_f}" -o ! -e "${instance_id_f}" ]; then
+        return 0
+     fi
+
+     # Get the current instance ID's (new and old)
+     new_instance_id="$(cat ${product_id_f})"
+     old_instance_id="$(cat ${instance_id_f})"
+
+     if [ "${new_instance_id}" = "${old_instance_id}" ]; then
+        # this may have been applied for a prior version, i.e. upgrading
+        # from 14.04 to 16.04
+        return 0
+
+     elif [ -z "${new_instance_id}" -o -z "${old_instance_id}" ]; then
+        cat <<EOM
+
+WARNING: Failed to migrate old instance ID to new instance ID.
+    Cloud-init may detect this instance as a new instance upon reboot.
+    Please see: https://bugs.launchpad.net/bug/1506187
+
+EOM
+
+     elif [ "${new_instance_id}" != "${old_instance_id}" ]; then
+        cat <<EOM
+
+AZURE: this instance uses an unstable instance ID. Cloud-init will
+    migrate the instance ID from:
+            ${old_instance_id}
+        to:
+            ${new_instance_id}
+    For more information about this change, please see:
+    https://bugs.launchpad.net/bug/1506187
+    https://azure.microsoft.com/en-us/blog/accessing-and-using-azure-vm-unique-id
+
+EOM
+
+        # Write the new instance id
+        echo "${new_instance_id}" > /var/lib/cloud/data/instance-id
+
+        # Remove the symlink for the instance
+        rm /var/lib/cloud/instance
+
+        # Rename the old instance id to the new one
+        mv /var/lib/cloud/instances/${old_instance_id} \
+           /var/lib/cloud/instances/${new_instance_id}
+
+        # Link the old id to the new one, just incase
+        ln -s /var/lib/cloud/instances/${new_instance_id} \
+              /var/lib/cloud/instances/${old_instance_id}
+
+        # Make the active instance the new id
+        ln -s /var/lib/cloud/instances/${new_instance_id} \
+              /var/lib/cloud/instance
+  fi
+fi
+}
+
+cleanup_lp1552999() {
+    local oldver="$1" last_bad_ver="0.7.7~bzr1178"
+    dpkg --compare-versions "$oldver" le "$last_bad_ver" || return 0
+    local hdir="/var/lib/systemd/deb-systemd-helper-enabled"
+    hdir="$hdir/multi-user.target.wants" 
+    local edir="/etc/systemd/system/multi-user.target.wants"
+    rm -f "$hdir/cloud-config.service" "$hdir/cloud-final.service" \
+        "$hdir/cloud-init-local.service" "$hdir/cloud-init.service"
+}
+
+case "$1" in
+	install|upgrade)
+		# removing obsolete conffiles from the 'ec2-init' package
+		if dpkg --compare-versions "$2" le "0.5.1"; then
+			rm_conffile ec2-init "/etc/init/cloud-ssh-keygen.conf"
+		fi
+		if dpkg --compare-versions "$2" lt "0.5.3"; then
+			rm_conffile ec2-init "/etc/init/ec2init.conf"
+		fi
+		if [ "$2" = "0.5.7-0ubuntu1" ]; then
+			bad_d=/etc/update-motd.d/92-ec2-upgrade-available
+			rm_conffile cloud-init "${bad_d}/motd-hook"
+			# the dir for this file is almost certainly empty, but
+			# if the file above was only moved, or other files there
+			# then leave it be
+			rmdir "${bad_d}" 2>/dev/null || true
+		fi
+
+		if dpkg --compare-versions "$2" le "0.5.10-0ubuntu2"; then
+			old_confs="cloud-apt-update-upgrade cloud-config-misc
+				cloud-config-mounts cloud-config-puppet
+				cloud-config-ssh cloud-disable-ec2-metadata" 
+			for f in ${old_confs}; do
+				rm_conffile cloud-init "/etc/init/${f}.conf"
+			done
+		fi
+
+		if dpkg --compare-versions "$2" le "0.5.11-0ubuntu1"; then
+			# rename the config entries in sem/ so they're not run again
+
+			# transition names in 0.5.11 had only short name (no config- prefix)
+			# so create config- entries for each
+			for name in apt-update-upgrade disable-ec2-metadata mounts \
+				puppet runcmd ssh updates-check; do
+				move_sem ${name} config-${name}
+			done
+
+			# 0.5.11 split 'config-misc' into 'updates-check' and 'runcmd'
+			move_sem config-misc config-updates-check config-runcmd
+		fi
+
+      if dpkg --compare-versions "$2" le "0.5.14-0ubuntu5"; then
+         fix_ephemeral0_micro
+      fi
+
+      if dpkg --compare-versions "$2" le 0.6.0-0ubuntu1; then
+         # convert /var/lib/cloud from 0.5.x layout to 0.6.x
+         convert_varlib_05x_06x
+      fi
+
+      # 0.6.0 changed 'user-scripts' to config-scripts-user (LP: #1049146)
+      if [ -e /var/lib/cloud/instance/sem/user-scripts ]; then
+         ln -sf user-scripts /var/lib/cloud/instance/sem/config-scripts-user
+      fi
+
+      # 0.7.7-bzr1556 introduced new instance ID source for Azure
+      if dpkg --compare-versions "$2" le "0.7.7~bzr1556-0ubuntu1"; then
+         azure_apply_new_instance_id_1506187
+      fi
+
+      d=/etc/cloud/
+      if [ -f "$d/distro.cfg" ] && [ ! -f "$d/cloud.cfg.d/90_dpkg.cfg" ]; then
+         echo "moving $d/distro.cfg -> $d/cloud.cfg.d/90_dpkg.cfg"
+         [ -d "${d}/cloud.cfg.d" ] || mkdir "${d}/cloud.cfg.d"
+         mv "$d/distro.cfg" "$d/cloud.cfg.d/90_dpkg.cfg"
+      fi
+
+      cleanup_lp1552999 "$oldver"
+esac
+
+#DEBHELPER#
diff --git a/debian/cloud-init.prerm b/debian/cloud-init.prerm
new file mode 100644
index 0000000..8954fa4
--- /dev/null
+++ b/debian/cloud-init.prerm
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+set -e
+rm -f /etc/cron.d/cloudinit-updates
+
+#DEBHELPER#
diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates
new file mode 100644
index 0000000..5ed37f7
--- /dev/null
+++ b/debian/cloud-init.templates
@@ -0,0 +1,12 @@
+Template: cloud-init/datasources
+Type: multiselect
+Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, None
+Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, None
+Choices: NoCloud: Reads info from /var/lib/cloud/seed only, ConfigDrive: Reads data from Openstack Config Drive, OpenNebula: read from OpenNebula context disk, DigitalOcean: reads data from Droplet datasource, Azure: read from MS Azure cdrom. Requires walinux-agent, AltCloud: config disks for RHEVm and vSphere, OVF: Reads data from OVF Transports, MAAS: Reads data from Ubuntu MAAS, GCE: google compute metadata service, OpenStack: native openstack metadata service, CloudSigma: metadata over serial for cloudsigma.com,  SmartOS: Read from SmartOS metadata service, Bigstep: Bigstep metadata service, Scaleway: Scaleway metadata service, AliYun: Alibaba metadata service, Ec2: reads data from EC2 Metadata service, CloudStack: Read from CloudStack metadata service, None: Failsafe datasource
+Description: Which data sources should be searched?
+ Cloud-init supports searching different "Data Sources" for information
+ that it uses to configure a cloud instance.
+ .
+ Warning: Only select 'Ec2' if this system will be run on a system with
+ the EC2 metadata service present.  Doing so incorrectly will result in
+ a substantial timeout on boot.
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..1de4f2f
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,70 @@
+Source: cloud-init
+Section: admin
+Priority: extra
+Maintainer: Scott Moser <smoser@xxxxxxxxxx>
+Build-Depends: debhelper (>= 9),
+               dh-python,
+               dh-systemd,
+               iproute2,
+               pep8,
+               po-debconf,
+               pyflakes,
+               python3,
+               python3-configobj,
+               python3-httpretty,
+               python3-jinja2,
+               python3-jsonpatch,
+               python3-mock,
+               python3-nose,
+               python3-oauthlib,
+               python3-pep8,
+               python3-pyflakes | pyflakes (<< 1.1.0-2),
+               python3-requests,
+               python3-serial,
+               python3-setuptools,
+               python3-six,
+               python3-unittest2,
+               python3-yaml
+XS-Python-Version: all
+Vcs-Browser: https://git.launchpad.net/cloud-init/?h=ubuntu/devel
+Vcs-Git: git://git.launchpad.net/cloud-init -b ubuntu/devel
+Standards-Version: 3.9.6
+
+Package: cloud-init
+Architecture: all
+Depends: cloud-guest-utils | cloud-utils,
+         ifupdown (>= 0.6.10ubuntu5),
+         procps,
+         python3,
+         python3-requests (>= 0.8.2),
+         python3-serial,
+         ${misc:Depends},
+         ${python3:Depends}
+Breaks: walinuxagent (<< 2.1.3-0ubuntu4.1)
+Recommends: eatmydata, gdisk, software-properties-common
+Provides: ec2-init
+Replaces: ec2-init (<<0.5.3)
+Conflicts: ec2-init (<<0.5.3)
+XB-Python-Version: ${python:Versions}
+Description: Init scripts for cloud instances
+ Cloud instances need special scripts to run during initialisation
+ to retrieve and install ssh keys and to let the user run various scripts.
+
+Package: grub-legacy-ec2
+Depends: debconf (>= 1.5.19) | cdebconf,
+         ucf,
+         util-linux (>= 2.15-1),
+         ${misc:Depends}
+Conflicts: grub
+Suggests: grub-legacy-doc
+Architecture: all
+Description: Handles update-grub for ec2 instances
+ EC2 instances that use grub-legacy as a bootloader need a way to keep
+ /boot/grub/menu.lst up to date while not conflicting with grub-pc.
+ This package provides that.
+
+Package: ec2-init
+Depends: cloud-init, ${misc:Depends}
+Architecture: all
+Description: package renamed -> cloud-init
+ This package has been renamed to 'cloud-init'.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..598cda1
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,40 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: cloud-init
+Upstream-Contact: cloud-init-dev@xxxxxxxxxxxxxxxxxxx
+Source: https://launchpad.net/cloud-init
+
+Files: *
+Copyright: 2010, Canonical Ltd.
+License: GPL-3 or Apache-2.0
+
+License: GPL-3
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 3, as
+ published by the Free Software Foundation.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ .
+ The complete text of the GPL version 3 can be seen in
+ /usr/share/common-licenses/GPL-3.
+
+License: Apache-2.0
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+    http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian-based systems the full text of the Apache version 2.0 license
+ can be found in `/usr/share/common-licenses/Apache-2.0'.
diff --git a/debian/grub-legacy-ec2.install b/debian/grub-legacy-ec2.install
new file mode 100644
index 0000000..f9ac628
--- /dev/null
+++ b/debian/grub-legacy-ec2.install
@@ -0,0 +1,4 @@
+debian/grub-set-default usr/sbin
+debian/grub-set-default-legacy-ec2 usr/sbin
+debian/kernel etc/
+debian/update-grub-legacy-ec2 usr/sbin
diff --git a/debian/grub-legacy-ec2.lintian-overrides b/debian/grub-legacy-ec2.lintian-overrides
new file mode 100644
index 0000000..ed8c77f
--- /dev/null
+++ b/debian/grub-legacy-ec2.lintian-overrides
@@ -0,0 +1,6 @@
+# no-debconf-config and debconf-is-not-a-registry lintian errors
+# are present in the ubuntu grub package that these were pulled from.
+# they're due to the use of debconf for merging prompt in
+# update-grub-legacy-ec2
+grub-legacy-ec2 binary: no-debconf-config
+grub-legacy-ec2 binary: debconf-is-not-a-registry
diff --git a/debian/grub-legacy-ec2.postinst b/debian/grub-legacy-ec2.postinst
new file mode 100644
index 0000000..3c4aa5c
--- /dev/null
+++ b/debian/grub-legacy-ec2.postinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "configure" ]; then
+   mkdir -p /boot/grub
+   update-grub-legacy-ec2 -y
+fi
+
+#DEBHELPER#
diff --git a/debian/grub-legacy-ec2.postrm b/debian/grub-legacy-ec2.postrm
new file mode 100644
index 0000000..5018423
--- /dev/null
+++ b/debian/grub-legacy-ec2.postrm
@@ -0,0 +1,17 @@
+#!/bin/sh
+set -e
+
+if [ "$1" = purge ]; then
+   if [ -x "`which ucf 2>/dev/null`" ]; then
+      ucf --purge /var/run/grub/menu.lst
+   fi
+   if [ -x "`which ucfr 2>/dev/null`" ]; then
+      ucfr --purge grub /var/run/grub/menu.lst
+   fi
+fi
+
+if [ "$1" = "remove" ]; then
+   dpkg-divert --package grub-legacy-ec2 --remove --rename --divert \
+      /usr/sbin/grub-set-default.real /usr/sbin/grub-set-default
+fi
+#DEBHELPER#
diff --git a/debian/grub-legacy-ec2.preinst b/debian/grub-legacy-ec2.preinst
new file mode 100644
index 0000000..ac73b42
--- /dev/null
+++ b/debian/grub-legacy-ec2.preinst
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -e
+
+if [ "$1" = "install" -o "$1" = "upgrade" ]; then
+   dpkg-divert --package grub-legacy-ec2 --rename --divert \
+       /usr/sbin/grub-set-default.real --add /usr/sbin/grub-set-default
+fi
+
+#DEBHELPER#
diff --git a/debian/grub-legacy-ec2.templates b/debian/grub-legacy-ec2.templates
new file mode 100644
index 0000000..0562c8c
--- /dev/null
+++ b/debian/grub-legacy-ec2.templates
@@ -0,0 +1,9 @@
+Template: grub/update_grub_changeprompt_threeway
+Type: select
+# Translators, please keep translations *short* (less than 65 columns)
+__Choices: install the package maintainer's version, keep the local version currently installed, show the differences between the versions, show a side-by-side difference between the versions, show a 3-way difference between available versions, do a 3-way merge between available versions (experimental), start a new shell to examine the situation
+Choices-C: install_new, keep_current, diff, sdiff, diff_threeway, merge_threeway, shell
+Default: keep_current
+_Description: What would you like to do about ${BASENAME}?
+ A new version of /boot/grub/menu.lst is available, but the version installed
+ currently has been locally modified.
diff --git a/debian/grub-set-default b/debian/grub-set-default
new file mode 100755
index 0000000..8816bc7
--- /dev/null
+++ b/debian/grub-set-default
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+diverted=/usr/sbin/grub-set-default.real
+legacy_ec2=/usr/sbin/grub-set-default-legacy-ec2
+normal=/usr/sbin/grub-set-default
+
+warn() { echo "WARNING:" "$@" 1>&2; }
+Usage() {
+   cat <<EOF
+${0} is a wrapper provided by grub-legacy-ec2.
+It ensures that the appropriate 'set-default' is called.
+For specific version or help info invoke one of the following directly:
+  ${diverted}
+ and 
+  ${legacy_ec2} 
+EOF
+}
+
+[ $# -eq 0 ] && { Usage; exit 1; }
+for a in "$@"; do
+   case "$a" in
+      --help|-h|-v|--version) Usage; exit 0;;
+   esac
+done
+
+"${legacy_ec2}" "${@}"
+lret=$?
+[ ${lret} -eq 0 ] || warn "${legacy_ec2} returned ${lret}"
+
+dret=0
+if [ -x "${diverted}" -a -f "/boot/grub/grub.cfg" ]; then
+   "${diverted}" "$@"
+   dret=$?
+fi
+[ ${dret} -eq 0 ] || warn "${diverted} returned ${dret}"
+
+[ $lret -eq 0 -a $dret -eq 0 ]
+exit
diff --git a/debian/grub-set-default-legacy-ec2 b/debian/grub-set-default-legacy-ec2
new file mode 100644
index 0000000..dcd88fb
--- /dev/null
+++ b/debian/grub-set-default-legacy-ec2
@@ -0,0 +1,141 @@
+#! /bin/sh
+
+# Set a default boot entry for GRUB
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Initialize some variables.
+PACKAGE=grub-legacy-ec2
+VERSION=0.97-29ubuntu60
+
+rootdir=
+entry=
+
+# Usage: usage
+# Print the usage.
+usage () {
+    cat <<EOF
+Usage: grub-set-default [OPTION] entry
+Set the default boot entry for GRUB.
+
+  -h, --help              print this message and exit
+  -v, --version           print the version information and exit
+  --root-directory=DIR    Use the directory DIR instead of the root directory
+
+ENTRY is a number or the special keyword \`default\'.
+
+Report bugs to <bug-grub@xxxxxxx>.
+EOF
+}
+
+# Check the arguments.
+for option in "$@"; do
+    case "$option" in
+    -h | --help)
+	usage
+	exit 0 ;;
+    -v | --version)
+	echo "grub-set-default (GNU GRUB ${VERSION})"
+	exit 0 ;;
+    --root-directory=*)
+	rootdir=`echo "$option" | sed 's/--root-directory=//'` ;;
+    -*)
+	echo "Unrecognized option \`$option'" 1>&2
+	usage
+	exit 1
+	;;
+    *)
+	if test "x$entry" != x; then
+	    echo "More than one entries?" 1>&2
+	    usage
+	    exit 1
+	fi
+	# We don't care about what the user specified actually.
+	entry="${option}" ;;
+    esac
+done
+
+if test "x$entry" = x; then
+    echo "entry not specified." 1>&2
+    usage
+    exit 1
+fi
+
+find_grub_dir ()
+{
+        echo  -n "Searching for GRUB installation directory ... " >&2
+
+        for d in $grub_dirs ; do
+                if [ -d "$d" ] ; then
+                        grub_dir="$d"
+                        break
+                fi
+        done
+
+        if [ -z "$grub_dir" ] ; then
+                abort "No GRUB directory found.\n###"
+        else
+                echo "found: $grub_dir" >&2
+        fi
+
+        echo $grub_dir
+}
+
+grub_dirs="/boot/grub /boot/boot/grub"
+
+# Determine the GRUB directory. This is different among OSes.
+# if rootdir has been informed use it or find grubdir otherwise
+if [ -n "${rootdir}" ]; then
+  grubdir=${rootdir}/boot/grub
+  if test -d ${grubdir}; then
+    :
+  else
+    grubdir=${rootdir}/grub
+    if test -d ${grubdir}; then
+        :
+    else
+        echo "No GRUB directory found under ${rootdir}/" 1>&2
+        exit 1
+    fi
+  fi
+else
+  grubdir=$(find_grub_dir)
+fi
+
+file=${grubdir}/default
+if test -f ${file}; then
+    chmod 0600 ${file}
+    rm -f ${file}
+fi
+cat <<EOF > $file
+$entry
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+# WARNING: If you want to edit this file directly, do not remove any line
+# from this file, including this warning. Using \`grub-set-default\' is
+# strongly recommended.
+EOF
+
+# Bye.
+exit 0
diff --git a/debian/kernel/postinst.d/x-grub-legacy-ec2 b/debian/kernel/postinst.d/x-grub-legacy-ec2
new file mode 100755
index 0000000..3343651
--- /dev/null
+++ b/debian/kernel/postinst.d/x-grub-legacy-ec2
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+version="$1"
+bootopt=""
+
+# passing the kernel version is required
+[ -z "${version}" ] && exit 0
+
+# avoid running multiple times
+if [ -n "$DEB_MAINT_PARAMS" ]; then
+	eval set -- "$DEB_MAINT_PARAMS"
+	if [ -z "$1" ] || [ "$1" != "configure" ]; then
+		exit 0
+	fi
+fi
+
+update=/usr/sbin/update-grub-legacy-ec2
+[ ! -x "${update}" ] || exec "${update}"
diff --git a/debian/kernel/postrm.d/x-grub-legacy-ec2 b/debian/kernel/postrm.d/x-grub-legacy-ec2
new file mode 100755
index 0000000..6f6aa4a
--- /dev/null
+++ b/debian/kernel/postrm.d/x-grub-legacy-ec2
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+version="$1"
+bootopt=""
+
+# passing the kernel version is required
+[ -z "${version}" ] && exit 0
+
+# avoid running multiple times
+if [ -n "$DEB_MAINT_PARAMS" ]; then
+	eval set -- "$DEB_MAINT_PARAMS"
+	if [ -z "$1" ] || [ "$1" != "remove" ]; then
+		exit 0
+	fi
+fi
+
+update=/usr/sbin/update-grub-legacy-ec2
+[ ! -x "${update}" ] || exec "${update}"
diff --git a/debian/patches/azure-use-walinux-agent.patch b/debian/patches/azure-use-walinux-agent.patch
new file mode 100644
index 0000000..0caa44e
--- /dev/null
+++ b/debian/patches/azure-use-walinux-agent.patch
@@ -0,0 +1,17 @@
+Description: Use walinux-agent rather than builtin fabric support
+ Upstream now uses the built-in support for instance initialization on Azure.
+ On a stable release, we want to continue to use the walinux-agent integration.
+ Upstream made this change under bug 1538522.
+Forwarded: not-needed
+Author: Scott Moser <smoser@xxxxxxxxxx>
+--- a/cloudinit/sources/DataSourceAzure.py
++++ b/cloudinit/sources/DataSourceAzure.py
+@@ -184,7 +184,7 @@ if util.is_FreeBSD():
+         LOG.debug("resource disk is None")
+ 
+ BUILTIN_DS_CONFIG = {
+-    'agent_command': AGENT_START_BUILTIN,
++    'agent_command': AGENT_START,
+     'data_dir': "/var/lib/waagent",
+     'set_hostname': True,
+     'hostname_bounce': {
diff --git a/debian/patches/cpick-3cee0bf8-oracle-fix-detect_openstack-to-report-True-on b/debian/patches/cpick-3cee0bf8-oracle-fix-detect_openstack-to-report-True-on
new file mode 100644
index 0000000..7518cb0
--- /dev/null
+++ b/debian/patches/cpick-3cee0bf8-oracle-fix-detect_openstack-to-report-True-on
@@ -0,0 +1,66 @@
+From 3cee0bf85fbf12d272422c8eeed63bf06e64570b Mon Sep 17 00:00:00 2001
+From: Chad Smith <chad.smith@xxxxxxxxxxxxx>
+Date: Tue, 31 Jul 2018 18:44:12 +0000
+Subject: [PATCH] oracle: fix detect_openstack to report True on
+ OracleCloud.com DMI data
+
+The OpenStack datasource in 18.3 changed to detect data in the
+init-local stage instead of init-network and attempted to redetect
+OpenStackLocal datasource on Oracle across reboots. The function
+detect_openstack was added to quickly detect whether a platform is
+OpenStack based on dmi product_name or chassis_asset_tag and it was
+a bit too strict for Oracle in checking for 'OpenStack Nova'/'Compute'
+DMI product_name.
+
+Oracle's DMI product_name reports 'SAtandard PC (i440FX + PIIX, 1996)'
+and DMI chassis_asset_tag is 'OracleCloud.com'.
+
+detect_openstack function now adds 'OracleCloud.com' as a supported value
+'OracleCloud.com' to valid chassis-asset-tags for the OpenStack
+datasource.
+
+LP: #1784685
+---
+ cloudinit/sources/DataSourceOpenStack.py       |  3 ++-
+ .../test_datasource/test_openstack.py          | 18 ++++++++++++++++++
+ 2 files changed, 20 insertions(+), 1 deletion(-)
+
+--- a/cloudinit/sources/DataSourceOpenStack.py
++++ b/cloudinit/sources/DataSourceOpenStack.py
+@@ -28,7 +28,8 @@ DMI_PRODUCT_NOVA = 'OpenStack Nova'
+ DMI_PRODUCT_COMPUTE = 'OpenStack Compute'
+ VALID_DMI_PRODUCT_NAMES = [DMI_PRODUCT_NOVA, DMI_PRODUCT_COMPUTE]
+ DMI_ASSET_TAG_OPENTELEKOM = 'OpenTelekomCloud'
+-VALID_DMI_ASSET_TAGS = [DMI_ASSET_TAG_OPENTELEKOM]
++DMI_ASSET_TAG_ORACLE_CLOUD = 'OracleCloud.com'
++VALID_DMI_ASSET_TAGS = [DMI_ASSET_TAG_OPENTELEKOM, DMI_ASSET_TAG_ORACLE_CLOUD]
+ 
+ 
+ class DataSourceOpenStack(openstack.SourceMixin, sources.DataSource):
+--- a/tests/unittests/test_datasource/test_openstack.py
++++ b/tests/unittests/test_datasource/test_openstack.py
+@@ -511,6 +511,24 @@ class TestDetectOpenStack(test_helpers.C
+             ds.detect_openstack(),
+             'Expected detect_openstack == True on OpenTelekomCloud')
+ 
++    @test_helpers.mock.patch(MOCK_PATH + 'util.read_dmi_data')
++    def test_detect_openstack_oraclecloud_chassis_asset_tag(self, m_dmi,
++                                                            m_is_x86):
++        """Return True on OpenStack reporting Oracle cloud asset-tag."""
++        m_is_x86.return_value = True
++
++        def fake_dmi_read(dmi_key):
++            if dmi_key == 'system-product-name':
++                return 'Standard PC (i440FX + PIIX, 1996)'  # No match
++            if dmi_key == 'chassis-asset-tag':
++                return 'OracleCloud.com'
++            assert False, 'Unexpected dmi read of %s' % dmi_key
++
++        m_dmi.side_effect = fake_dmi_read
++        self.assertTrue(
++            ds.detect_openstack(),
++            'Expected detect_openstack == True on OracleCloud.com')
++
+     @test_helpers.mock.patch(MOCK_PATH + 'util.get_proc_env')
+     @test_helpers.mock.patch(MOCK_PATH + 'util.read_dmi_data')
+     def test_detect_openstack_by_proc_1_environ(self, m_dmi, m_proc_env,
diff --git a/debian/patches/ds-identify-behavior-xenial.patch b/debian/patches/ds-identify-behavior-xenial.patch
new file mode 100644
index 0000000..11a89af
--- /dev/null
+++ b/debian/patches/ds-identify-behavior-xenial.patch
@@ -0,0 +1,32 @@
+Description: Adjust behavior of ds-identify for SRU
+ To make this acceptable as a SRU we have changed ds-identify to
+ act in 'report only' mode, and to only 'warn' when it cloud-init
+ finds itself to be using a Ec2 Datasource on an unknown and
+ non AWS platform.
+Forwarded: not-needed
+Author: Scott Moser <smoser@xxxxxxxxxx>
+Bug-ubuntu: http://bugs.launchpad.net/bugs/1669675
+Bug-ubuntu: http://bugs.launchpad.net/bugs/1660385
+
+--- a/tools/ds-identify
++++ b/tools/ds-identify
+@@ -85,8 +85,8 @@ _DI_LOGGED=""
+ DI_MAIN=${DI_MAIN:-main}
+ 
+ DI_BLKID_OUTPUT=""
+-DI_DEFAULT_POLICY="search,found=all,maybe=all,notfound=${DI_DISABLED}"
+-DI_DEFAULT_POLICY_NO_DMI="search,found=all,maybe=all,notfound=${DI_ENABLED}"
++DI_DEFAULT_POLICY="report,found=all,maybe=all,notfound=${DI_ENABLED}"
++DI_DEFAULT_POLICY_NO_DMI="report,found=all,maybe=all,notfound=${DI_ENABLED}"
+ DI_DMI_CHASSIS_ASSET_TAG=""
+ DI_DMI_PRODUCT_NAME=""
+ DI_DMI_SYS_VENDOR=""
+@@ -123,7 +123,7 @@ DI_ON_FOUND=""
+ DI_ON_MAYBE=""
+ DI_ON_NOTFOUND=""
+ 
+-DI_EC2_STRICT_ID_DEFAULT="true"
++DI_EC2_STRICT_ID_DEFAULT="warn"
+ 
+ _IS_IBM_CLOUD=""
+ 
diff --git a/debian/patches/openstack-no-network-config.patch b/debian/patches/openstack-no-network-config.patch
new file mode 100644
index 0000000..d6560f4
--- /dev/null
+++ b/debian/patches/openstack-no-network-config.patch
@@ -0,0 +1,40 @@
+Description: Fallback network config instead of network_data.json for OpenStack
+ To make this acceptable as a SRU we keep the same behavior as is
+ in the stable release which is to generate network for fallback nic
+ only.
+ .
+ In this series, OpenStack datasource can optionally generate
+ network_config from network_data.json if the datasource is configured
+ with a file like /etc/cloud.cfg.d/openstack-net.cfg:
+ .
+ datasource:
+   OpenStack:
+     apply_network_config: true
+Forwarded: not-needed
+Author: Chad Smith <chad.smith@xxxxxxxxxxxxx>
+
+--- a/cloudinit/sources/DataSourceOpenStack.py
++++ b/cloudinit/sources/DataSourceOpenStack.py
+@@ -97,10 +97,9 @@ class DataSourceOpenStack(openstack.Sour
+         if self._network_config != sources.UNSET:
+             return self._network_config
+ 
+-        # RELEASE_BLOCKER: SRU to Xenial and Artful SRU should not provide
++        # Xenial, Artful and Bionic will not provide
+         # network_config by default unless configured in /etc/cloud/cloud.cfg*.
+-        # Patch Xenial and Artful before release to default to False.
+-        if util.is_false(self.ds_cfg.get('apply_network_config', True)):
++        if util.is_false(self.ds_cfg.get('apply_network_config', False)):
+             self._network_config = None
+             return self._network_config
+         if self.network_json == sources.UNSET:
+--- a/tests/unittests/test_datasource/test_openstack.py
++++ b/tests/unittests/test_datasource/test_openstack.py
+@@ -345,6 +345,7 @@ class TestOpenStackDataSource(test_helpe
+             settings.CFG_BUILTIN, None, helpers.Paths({'run_dir': self.tmp}))
+         sample_json = {'links': [{'ethernet_mac_address': 'mymac'}],
+                        'networks': [], 'services': []}
++        ds_os.ds_cfg = {'apply_network_config': True}  # Default is False
+         ds_os.network_json = sample_json
+         with test_helpers.mock.patch(mock_path) as m_convert_json:
+             m_convert_json.return_value = example_cfg
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..8681721
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,5 @@
+azure-use-walinux-agent.patch
+ds-identify-behavior-xenial.patch
+stable-release-no-jsonschema-dep.patch
+openstack-no-network-config.patch
+cpick-3cee0bf8-oracle-fix-detect_openstack-to-report-True-on
diff --git a/debian/patches/stable-release-no-jsonschema-dep.patch b/debian/patches/stable-release-no-jsonschema-dep.patch
new file mode 100644
index 0000000..41cbe98
--- /dev/null
+++ b/debian/patches/stable-release-no-jsonschema-dep.patch
@@ -0,0 +1,21 @@
+Description: Remove the optional dependency on jsonschema for stable release.
+ To make this acceptable as a SRU we keep the same dependencies as are
+ in the stable release.
+ .
+ The '${python3:Depends}' in debian/control would automatically add the
+ dependency if it is seen in requirements.txt.
+Forwarded: not-needed
+Author: Scott Moser <smoser@xxxxxxxxxx>
+
+--- a/requirements.txt
++++ b/requirements.txt
+@@ -31,7 +31,8 @@ requests
+ jsonpatch
+ 
+ # For validating cloud-config sections per schema definitions
+-jsonschema
++## Do not add dependencies to a stable release (SRU).
++#jsonschema
+ 
+ # For Python 2/3 compatibility
+ six
diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in
new file mode 100644
index 0000000..9dc1b8f
--- /dev/null
+++ b/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] grub.templates
diff --git a/debian/po/ca.po b/debian/po/ca.po
new file mode 100644
index 0000000..e839a46
--- /dev/null
+++ b/debian/po/ca.po
@@ -0,0 +1,80 @@
+# ucf (debconf) translation to Catalan.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Aleix Badia i Bosch <abadia@xxxxxx>, 2004
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf_0.30_templates\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:08-0500\n"
+"Last-Translator: Aleix Badia i Bosch <abadia@xxxxxx>\n"
+"Language-Team: Catalan <debian-l10n-catalan@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instal�la la versi� del mantenidor del paquet"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "mant�n la versi� instal�lada actualment"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "mostra les difer�ncies entre les versions"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "mostra les difer�ncies entre les versions"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "mostra les difer�ncies entre les versions"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "inicia una nova l�nia de comandes per examinar la situaci�"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Qu� voleu fer respecte el ${BASNAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Hi ha una nova versi� del fitxer /boot/grub/menu.lst, per� la vostra versi� "
+"s'ha modificat localment."
diff --git a/debian/po/cs.po b/debian/po/cs.po
new file mode 100644
index 0000000..7d8db4a
--- /dev/null
+++ b/debian/po/cs.po
@@ -0,0 +1,89 @@
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-23 14:31+0200\n"
+"Last-Translator: Miroslav kure <kurem@xxxxxxxxx>\n"
+"Language-Team: Czech <debian-l10n-czech@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instalovat verzi od správce balíku"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "ponechat aktuálně instalovanou lokální verzi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "zobrazit rozdíly mezi verzemi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "zobrazit rozdíly mezi verzemi vedle sebe"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "zobrazit třícestný rozdíl mezi dostupnými verzemi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "provést třícestné sloučení dostupných verzí (experimentální)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "spustit nový shell a prozkoumat situaci"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Co chcete udělat s ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"K dispozici je novější verze souboru /boot/grub/menu.lst, avšak "
+"nainstalovaná verze obsahuje lokální úpravy."
diff --git a/debian/po/da.po b/debian/po/da.po
new file mode 100644
index 0000000..399439c
--- /dev/null
+++ b/debian/po/da.po
@@ -0,0 +1,86 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Claus Hindsgaul <claus_h@xxxxxxxx>, 2005.
+# Claus Hindsgaul <claus.hindsgaul@xxxxxxxxx>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf debconf template\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:09-0500\n"
+"Last-Translator: Claus Hindsgaul <claus.hindsgaul@xxxxxxxxx>\n"
+"Language-Team: Danish\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "install�r pakkevedligeholderens udgave"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "bevar din aktuelt-installerede udgave"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "vis forskellene mellem udgaverne"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "vis forskellene mellem versionerne overfor hinanden"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "vis 3-vejs forskelle mellem de tilg�ngelige udgaver af filen"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+"udf�r en 3-vejs fletning mellem de tilg�ngelige udgaver af filen [Meget "
+"eksperimentelt]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "start en ny skal for at unders�ge situationen"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Hvad vil du g�re med ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Der er kommet en ny version af filen /boot/grub/menu.lst, men din version er "
+"blevet �ndret lokalt."
diff --git a/debian/po/de.po b/debian/po/de.po
new file mode 100644
index 0000000..294f739
--- /dev/null
+++ b/debian/po/de.po
@@ -0,0 +1,92 @@
+# translation of ucf_3.002_de.po to German
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+#    Developers do not need to manually edit POT or PO files.
+#
+# Erik Schanze <eriks@xxxxxxxxxx>, 2004-2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf_3.002_de\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-07-01 22:08+0200\n"
+"Last-Translator: Erik Schanze <eriks@xxxxxxxxxx>\n"
+"Language-Team: German <debian-l10n-german@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "Version des Paket-Betreuers installieren"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "aktuell installierte Version behalten"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "Unterschiede zwischen den Versionen anzeigen"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "Unterschiede zwischen den Versionen nebeneinander anzeigen"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "3-Wege-Differenz der verfügbaren Versionen der Datei anzeigen"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "3-Wege-Vereinigung verfügbarer Versionen [experimentell]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "die Angelegenheit in einer neu gestarteten Shell untersuchen"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Wie wollen Sie mit ${BASENAME} verfahren?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Eine neue Version der Datei /boot/grub/menu.lst ist verfügbar, aber die "
+"installierte Version wurde verändert."
diff --git a/debian/po/es.po b/debian/po/es.po
new file mode 100644
index 0000000..725d9e9
--- /dev/null
+++ b/debian/po/es.po
@@ -0,0 +1,105 @@
+# ucf translation to spanish
+# Copyright (C) 2004-2007 Software in the Public Interest
+# This file is distributed under the same license as the ucf package.
+#
+# Changes:
+# - Initial translation
+#       Lucas Wall <kthulhu@xxxxxxx>, 2004
+# - Updated 
+#       Javier Fernandez-Sanguino <jfs@xxxxxxxxxx>, 2007
+#
+#
+#  Traductores, si no conoce el formato PO, merece la pena leer la 
+#  documentaci�n de gettext, especialmente las secciones dedicadas a este
+#  formato, por ejemplo ejecutando:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+# Equipo de traducci�n al espa�ol, por favor lean antes de traducir
+# los siguientes documentos:
+#
+# - El proyecto de traducci�n de Debian al espa�ol
+#   http://www.debian.org/intl/spanish/coordinacion
+#   especialmente las notas de traducci�n en
+#   http://www.debian.org/intl/spanish/notas
+#
+# - La gu�a de traducci�n de po's de debconf:
+#   /usr/share/doc/po-debconf/README-trans
+#   o http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf 1.06\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-21 13:41+0200\n"
+"Last-Translator: Javier Fernandez-Sanguino <jfs@xxxxxxxxxx>\n"
+"Language-Team: Debian Spanish <debian-l10n-spanish@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instalar la versi�n del responsable del paquete"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "conservar la versi�n local actualmente instalada"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "mostrar las diferencias entre las versiones"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "mostrar las diferencias entre las versiones lado a lado"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "mostrar las diferencias entre las tres versiones"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "fusionar las tres versiones disponibles (experimental)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "ejecutar un nuevo int�rprete para examinar la situaci�n"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "�Qu� desea hacer con ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Hay una nueva versi�n del fichero /boot/grub/menu.lst, pero la versi�n que "
+"est� instalada ha sido modificada localmente."
diff --git a/debian/po/eu.po b/debian/po/eu.po
new file mode 100644
index 0000000..ddf7d2a
--- /dev/null
+++ b/debian/po/eu.po
@@ -0,0 +1,83 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Piarres Beobide <pi@xxxxxxxxxxx>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf-debconf\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-20 13:40+0200\n"
+"Last-Translator: Piarres Beobide <pi@xxxxxxxxxxx>\n"
+"Language-Team: Euskara <Librezale@xxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 0.11\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "Pakete arduradunaren bertsioa instalatu"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "mantendu lokalean instalaturiko bertsioa"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "bertsioen arteko ezberdintasunak ikusi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "bertsioen arteko ezberdintasunak aldez-alde ikusi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "bertsioen arteko ezberdintasunak 3 eratara ikusi"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "bertsioen arteko ezberdintasunak 3 eratara batu (esperimentala)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "shell berri bat hasi egoera aztertzeko"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Zer egitea gustatuko litzaizuke ${BASENAME}-ri buruz?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"/boot/grub/menu.lst fitxategiaren bertsio berri bat dago eskuragarri, baina "
+"instalaturik dagoenak lokalean eraldatua izan da."
diff --git a/debian/po/fi.po b/debian/po/fi.po
new file mode 100644
index 0000000..62da440
--- /dev/null
+++ b/debian/po/fi.po
@@ -0,0 +1,79 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf_3.003\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-10-30 18:42+0200\n"
+"Last-Translator: Esko Arajärvi <edu@xxxxxx>\n"
+"Language-Team: Finnish <debian-l10n-finnish@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Finnish\n"
+"X-Poedit-Country: FINLAND\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "asenna paketin ylläpitäjän versio"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "säilytä tällä hetkellä asennettu paikallinen versio"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "näytä versioiden väliset erot"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "näytä versioiden väliset erot rinnakkain"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "näytä versioiden välinen kolmisuuntainen erotus"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "tee kolmisuuntainen versioiden yhdistys (kokeellinen)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "käynnistä uusi kuori tilanteen tutkimiseksi"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Miten käsitellään ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Asetustiedostosta /boot/grub/menu.lst on tarjolla uusi versio, mutta "
+"nykyistä versiota on muokattu paikallisesti."
diff --git a/debian/po/fr.po b/debian/po/fr.po
new file mode 100644
index 0000000..1598329
--- /dev/null
+++ b/debian/po/fr.po
@@ -0,0 +1,78 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: fr\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-19 09:36+0200\n"
+"Last-Translator: Eric Madesclair <eric-m@xxxxxxxxxx>\n"
+"Language-Team: French <debian-l10n-french@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "Installer la version du responsable du paquet"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "Garder la version actuellement installée"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "Montrer les différences entre les versions"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "Montrer côte à côte les différences entre les versions"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "Montrer les différences entre les trois versions du fichier"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "Fusionner les trois versions disponibles du fichier (expérimental)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "Lancer un shell pour examiner la situation"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Action souhaitée pour ${BASENAME} :"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Une nouvelle version du fichier /boot/grub/menu.lst est disponible mais la "
+"version actuellement utilisée a été modifiée localement."
diff --git a/debian/po/gl.po b/debian/po/gl.po
new file mode 100644
index 0000000..6547ad3
--- /dev/null
+++ b/debian/po/gl.po
@@ -0,0 +1,80 @@
+# Galician translation of ucf's debconf templates.
+# This file is distributed under the same license as the ucf package.
+# Jacobo Tarrio <jtarrio@xxxxxxxxxx>, 2006, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-20 15:50+0200\n"
+"Last-Translator: Jacobo Tarrio <jtarrio@xxxxxxxxxx>\n"
+"Language-Team: Galician <proxecto@xxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instalar a versión do mantedor de paquetes"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "conservar a versión local instalada actualmente"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "amosar as diferencias entre as versións"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "amosar unha comparación entre as versións"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "amosar unha diferencia a tres entre as versións dispoñibles"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "mesturar as versións dispoñibles (experimental)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "iniciar un intérprete de ordes para examinar a situación"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "¿Que quere facer con ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Hai dispoñible unha nova versión do ficheiro /boot/grub/menu.lst, pero a "
+"versión actualmente instalada ten modificacións locais."
diff --git a/debian/po/it.po b/debian/po/it.po
new file mode 100644
index 0000000..f344e46
--- /dev/null
+++ b/debian/po/it.po
@@ -0,0 +1,81 @@
+# translation of ucf_1.18_templates.po to italian
+# Copyright Luca Bruno <luca.br@xxxxxx>, 2005.
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf_1.18_templates\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:10-0500\n"
+"Last-Translator: Luca Bruno <luca.br@xxxxxx>\n"
+"Language-Team:  Italian <tp@xxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "installare la versione del manutentore del pacchetto"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "mantenere la propria versione attualmente installata"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "mostrare le differenze tra le versioni"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "mostrare le differenze tra le versioni"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "Mostrare le differenze tra 3 versioni del file disponibili"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+"Integrare le differenze tra 3 versioni del file disponibili [Molto "
+"sperimentale]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "eseguire una nuova shell per esaminare la situazione"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Cosa si vuol fare di ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Una nuova versione del file /boot/grub/menu.lst è disponibile, ma la propria "
+"versione è stata modificata localmente."
diff --git a/debian/po/ja.po b/debian/po/ja.po
new file mode 100644
index 0000000..981ef22
--- /dev/null
+++ b/debian/po/ja.po
@@ -0,0 +1,90 @@
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-21 14:11+0900\n"
+"Last-Translator: Kenshi Muto <kmuto@xxxxxxxxxx>\n"
+"Language-Team: Japanese <debian-japanese@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "パッケージメンテナのバージョンをインストール"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "現在インストールされているローカルバージョンを保持"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "バージョン間の差異を表示"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "バージョン間の差異を並行表示"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "利用可能なバージョン間の3種類の差異を表示"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "利用可能なバージョン間での3種類マージを行う (実験的)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "状況を検討するための新しいシェルを起動"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "${BASENAME} について何を行いたいですか?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"設定ファイル /boot/grub/menu.lst の新しいバージョンが利用可能ですが、現在イン"
+"ストールされているバージョンは、ローカルで変更されています。"
diff --git a/debian/po/nl.po b/debian/po/nl.po
new file mode 100644
index 0000000..e8acf63
--- /dev/null
+++ b/debian/po/nl.po
@@ -0,0 +1,95 @@
+# translation of ucf_2.007_templates.po to dutch
+# This file is distributed under the same license as the ucf package.
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+#    Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf_2.007_nl\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:09-0500\n"
+"Last-Translator: Kurt De Bree <kdebree(AT)telenet(DOT)be>\n"
+"Language-Team: Nederlands <debian-l10n-dutch@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10.2\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "installeer de versie van de pakketbeheerder"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "behoud de reeds geïnstalleerde versie"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "toon de verschillen tussen de versies"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "toon de verschillende versies zij-aan-zij"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr ""
+"toon een drievoudig verschil tussen de beschikbare versies van het bestand"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+"doe een drievoudige samenvoeging tussen de beschikbare versies van het "
+"bestand (Zeer Experimenteel)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "start een nieuwe shell om de situatie te onderzoeken"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Wat wilt u met ${BASENAME} doen?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Een nieuwe versie van het bestand /boot/grub/menu.lst is beschikbaar, maar "
+"uw versie werd handmatig gewijzigd."
diff --git a/debian/po/pl.po b/debian/po/pl.po
new file mode 100644
index 0000000..a42099e
--- /dev/null
+++ b/debian/po/pl.po
@@ -0,0 +1,100 @@
+# translation of ucf3002.po to Polish
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+# Wojciech Zar�ba <wojtekz@xxxxxxxxxxx>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf3002\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-27 17:15+0200\n"
+"Last-Translator: Wojciech Zar�ba <wojtekz@xxxxxxxxxxxxxxxxx>\n"
+"Language-Team: Polish <pl@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "zainstalowanie wersji przygotowanej przez opiekuna pakietu"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "zachowanie lokalnie zainstalowanej wersji"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "pokazanie r�nic pomi�dzy wersjami"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "pokazanie r�nic - obok siebie - pomi�dzy wersjami"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "pokazanie r�nic pomi�dzy trzema dost�pnymi wersjami"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "scalenie zmian pomi�dzy 3 dost�pnymi wersjami (eksperymentalne)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "uruchomienie pow�oki w celu zbadania sytuacji"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Prosz� wybra� akcj� do wykonania na pliku ${BASENAME}:"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Dost�pna jest nowa wersja pliku /boot/grub/menu.lst, ale obecna wersja "
+"zosta�a lokalnie zmodyfikowana."
+
+#~ msgid "Modified configuration file"
+#~ msgstr "Zmodyfikowany plik konfiguracyjny"
+
+#~ msgid "Line by line differences between versions"
+#~ msgstr "R�nice linia po linii pomi�dzy wersjami"
diff --git a/debian/po/pt.po b/debian/po/pt.po
new file mode 100644
index 0000000..23c7f8f
--- /dev/null
+++ b/debian/po/pt.po
@@ -0,0 +1,82 @@
+# Portuguese translation of ucf's debconf messages.
+# 2007, Pedro Ribeiro <p.m42.ribeiro@xxxxxxxxx>
+# Bruno Queiros <brunomiguelqueiros@xxxxxxx>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf 2.0020\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:09-0500\n"
+"Last-Translator: Bruno Queiros <brunomiguelqueiros@xxxxxxx>\n"
+"Language-Team: Portuguese <traduz@xxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instalar a versão do criador do pacote"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "manter a versão actualmente instalada"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "mostrar a diferença entre as versões"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "mostrar uma diferença lado-a-lado entre as versões"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "mostrar uma diferença em 3 vias entre versões disponíveis do ficheiro"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+"fazer uma junção em 3 vias entre versões disponíveis do ficheiro [Muito "
+"Experimental]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "iniciar uma nova consola para examinar a situação"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "O que quer fazer acerca de ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Uma nova versão do ficheiro /boot/grub/menu.lst está disponível, mas a sua "
+"versão foi modificada localmente."
diff --git a/debian/po/pt_BR.po b/debian/po/pt_BR.po
new file mode 100644
index 0000000..9d736b9
--- /dev/null
+++ b/debian/po/pt_BR.po
@@ -0,0 +1,89 @@
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-09-19 01:11-0500\n"
+"Last-Translator: André Luís Lopes <andrelop@xxxxxxxxxx>\n"
+"Language-Team: Debian-BR Project <debian-l10n-portuguese@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "instalar a versão do mantenedor do pacote"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "manter a versão instalada atualmente"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "exibir as diferenças entre as versões"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "exibir as diferenças lado-a-lado entre as versões"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "exibir as diferenças entre as três versões disponíveis do arquivo"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "juntar as 3 versões disponíveis do arquivo [Bem Experimental]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "iniciar um novo shell e examinar a situação"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "O que você gostaria de fazer em relação a ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Uma nova versão do arquivo /boot/grub/menu.lst está disponível, mas sua "
+"versão local foi modificada."
diff --git a/debian/po/ru.po b/debian/po/ru.po
new file mode 100644
index 0000000..6560fe3
--- /dev/null
+++ b/debian/po/ru.po
@@ -0,0 +1,85 @@
+# translation of ru.po to Russian
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+#
+# Yuri Kozlov <kozlov.y@xxxxxxxxx>, 2006, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: 3.001\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-07-01 13:45+0400\n"
+"Last-Translator: Yuri Kozlov <kozlov.y@xxxxxxxxx>\n"
+"Language-Team: Russian <debian-l10n-russian@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "установить версию из пакета"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "сохранить установленную локальную версию"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "показать различия между версиями"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "показать различия между версиями параллельно"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "показать различия сразу между 3-мя доступными версиями"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "выполнить слияние 3-х доступных версий [экспериментальный режим]"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "запустить новую оболочку командной строки для прояснения ситуации"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Что нужно сделать с ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Доступна новая версия файла /boot/grub/menu.lst, но версия файла, "
+"находящегося в системе, была изменёна локально."
diff --git a/debian/po/sv.po b/debian/po/sv.po
new file mode 100644
index 0000000..8a157de
--- /dev/null
+++ b/debian/po/sv.po
@@ -0,0 +1,82 @@
+# Swedish translation for ucf.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the ucf package.
+# Daniel Nylander <po@xxxxxxxxxxxxxxxxx>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf 2.002\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-25 10:07+0100\n"
+"Last-Translator: Daniel Nylander <po@xxxxxxxxxxxxxxxxx>\n"
+"Language-Team: Swedish <debian-l10n-swedish@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "installera paketansvariges version"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "behåll den lokalt installerade version"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "visa skillnaderna mellan versionerna"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "visa skillnaderna sida vid sida mellan versionerna"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "visa en 3-vägs skillnad mellan tillgängliga versioner"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "gör en 3-vägs sammanslagning mellan versionerna (experimentell)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "starta ett nytt skal för att undersöka situationen"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Vad vill du göra med ${BASENAME}?"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"En ny version av filen /boot/grub/menu.lst finns tillgänglig, men versionen "
+"som är installerad har ändrats lokalt."
diff --git a/debian/po/templates.pot b/debian/po/templates.pot
new file mode 100644
index 0000000..f0b056a
--- /dev/null
+++ b/debian/po/templates.pot
@@ -0,0 +1,80 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr ""
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
diff --git a/debian/po/vi.po b/debian/po/vi.po
new file mode 100644
index 0000000..a815be9
--- /dev/null
+++ b/debian/po/vi.po
@@ -0,0 +1,91 @@
+# Vietnamese translation for UCF.
+# Copyright © 2007 Free Software Foundation, Inc.
+# Clytie Siddall <clytie@xxxxxxxxxxxxxxxx>, 2005-2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ucf 3.002\n"
+"Report-Msgid-Bugs-To: Source: grub@xxxxxxxxxxxxxxxxxxx\n"
+"POT-Creation-Date: 2008-01-28 08:38-0800\n"
+"PO-Revision-Date: 2007-06-21 17:52+0930\n"
+"Last-Translator: Clytie Siddall <clytie@xxxxxxxxxxxxxxxx>\n"
+"Language-Team: Vietnamese <vi-VN@xxxxxxxxxxxxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.6.4a1\n"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "install the package maintainer's version"
+msgstr "cài đặt phiên bản của nhà duy trì gói"
+
+# msgid "keep your currently-installed version"
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "keep the local version currently installed"
+msgstr "giữ phiên bản cục bộ đã cài đặt hiện thời"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show the differences between the versions"
+msgstr "hiển thị khác biệt giữa những phiên bản"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a side-by-side difference between the versions"
+msgstr "hiển thị khác biệt cạnh nhau giữa những phiên bản"
+
+# msgid "show a 3 way difference between available versions of the file"
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "show a 3-way difference between available versions"
+msgstr "hiển thị khác biệt ba hướng giữa những phiên bản sẵn sàng"
+
+# msgid ""
+# do a 3 way merge between available versions of the file [Very 
+# Experimental]
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "do a 3-way merge between available versions (experimental)"
+msgstr "trộn ba hướng những phiên bản sẵn sàng (thực nghiệm)"
+
+#. Type: select
+#. Choices
+#. Translators, please keep translations *short* (less than 65 columns)
+#: ../grub.templates:1001
+msgid "start a new shell to examine the situation"
+msgstr "khởi chạy trình bao mới để khám xét trường hợp"
+
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+msgid "What would you like to do about ${BASENAME}?"
+msgstr "Đối với ${BASENAME}? muốn làm gì vậy?"
+
+# msgid ""
+# A new version of configuration file ${FILE} is available, but your 
+# version has been locally modified.
+#. Type: select
+#. Description
+#: ../grub.templates:1002
+#, fuzzy
+msgid ""
+"A new version of /boot/grub/menu.lst is available, but the version installed "
+"currently has been locally modified."
+msgstr ""
+"Có sẵn một phiên bản mới của tập tin cấu hình /boot/grub/menu.lst, nhưng "
+"phiên bản được cài đặt hiện thời đã bị sửa đổi cục bộ."
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..c5b18eb
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,25 @@
+#!/usr/bin/make -f
+INIT_SYSTEM ?= upstart,systemd
+export PYBUILD_INSTALL_ARGS=--init-system=$(INIT_SYSTEM)
+DEB_VERSION := $(shell dpkg-parsechangelog --show-field=Version)
+
+%:
+	dh $@ --with python3,systemd --buildsystem pybuild
+
+override_dh_auto_test:
+ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
+	http_proxy= make PYVER=python3 check
+else
+	@echo check disabled by DEB_BUILD_OPTIONS=$(DEB_BUILD_OPTIONS)
+endif
+
+override_dh_systemd_start:
+	dh_systemd_start --no-restart-on-upgrade --no-start
+
+override_dh_auto_install:
+	dh_auto_install --destdir=debian/cloud-init
+	install -D -m 0644 ./tools/21-cloudinit.conf debian/cloud-init/etc/rsyslog.d/21-cloudinit.conf
+	install -D ./tools/Z99-cloud-locale-test.sh debian/cloud-init/etc/profile.d/Z99-cloud-locale-test.sh
+	install -D ./tools/Z99-cloudinit-warnings.sh debian/cloud-init/etc/profile.d/Z99-cloudinit-warnings.sh
+	install -m 0644 -D debian/apport-launcher.py debian/cloud-init/usr/share/apport/package-hooks/cloud-init.py
+	flist=$$(find $(CURDIR)/debian/ -type f -name version.py) && sed -i 's,@@PACKAGED_VERSION@@,$(DEB_VERSION),' $${flist:-did-not-find-version-py-for-replacement}
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/update-grub-legacy-ec2 b/debian/update-grub-legacy-ec2
new file mode 100755
index 0000000..c1c9dc7
--- /dev/null
+++ b/debian/update-grub-legacy-ec2
@@ -0,0 +1,1620 @@
+#!/bin/bash
+#
+# Insert a list of installed kernels in a grub config file
+#   Copyright 2001 Wichert Akkerman <wichert@xxxxxxxxx>
+#   Copyright 2007, 2008 Canonical Ltd.
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# Contributors:
+#	Jason Thomas <jason@xxxxxxxxxx>
+#	David B.Harris <dbarclay10@xxxxxxxx>
+#	Marc Haber <mh@xxxxxxxxxxxx>
+#	Crispin Flowerday <crispin@xxxxxxxx>
+#	Steve Langasek <steve.langasek@xxxxxxxxxxxxx>
+
+# Abort on errors
+set -e
+
+# load debconf first, since this re-execs the script
+. /usr/share/debconf/confmodule
+
+host_os=`uname -s | tr '[A-Z]' '[a-z]'`
+
+abort() {
+	message=$@
+
+	echo >&2
+	printf '%s\n' "$message" >&2
+	echo >&2
+	exit 1
+}
+
+find_grub_dir ()
+{
+	echo  -n "Searching for GRUB installation directory ... " >&2
+
+	for d in $grub_dirs ; do
+		if [ -d "$d" ] ; then
+			grub_dir="$d"
+			break
+		fi
+	done
+	
+	if [ -z "$grub_dir" ] ; then
+		abort "No GRUB directory found.
+ To create a template run 'mkdir /boot/grub' first.
+ To install grub, install it manually or try the 'grub-install' command.
+ ### Warning, grub-install is used to change your MBR. ###"
+	else
+		echo "found: $grub_dir" >&2
+	fi
+
+	echo $grub_dir
+}
+
+find_device ()
+{
+	mount_point=$1
+
+	# Autodetect current root device
+	device=
+	if [ -f /etc/fstab ] ; then
+		device=$(awk '$1!~/^#/{
+		  if ($2 ~ "^/+$") { $2 = "/"; } else { sub("/*$", "", $2); }
+		  if ($2 == "'"$mount_point"'"){
+				print $1;
+			}
+		  }' /etc/fstab | tail -n 1)
+	fi
+
+	if [ -n "$device" ] ; then
+		case "$device" in
+			LABEL=* | UUID=*)
+				device=`readlink -f "$(findfs $device)"`
+			;;
+			*)
+				device=`readlink -f "$device"`
+			;;
+		esac
+	fi
+
+	echo $device
+}
+
+find_root_device ()
+{
+	device=$(find_device "/")
+
+	if [ -z "$device" ]; then
+		echo "Cannot determine root device.  Assuming /dev/hda1" >&2
+		echo "This error is probably caused by an invalid /etc/fstab" >&2
+		device=/dev/hda1
+	fi
+
+	echo $device
+}
+
+# Usage: convert_raid1 os_device
+# Checks if os_device is a software raid1.
+# If so, converts to first physical device in array.
+convert_raid1 ()
+{
+    case $1 in
+        /dev/md[0-9])
+            : ;; # Continue
+        *)
+            return 1 ;;
+    esac
+
+    [ -x /sbin/mdadm ] || return 1
+
+    # Check that the raid device is raid1
+    raidlevel=$(mdadm -D -b $1 | grep "^ARRAY" | \
+            sed "s/^.*level=//" | cut -d" " -f1)
+    [ "$raidlevel" = "raid1" ] || return 1
+    
+    # Take only the first device that makes up the raid
+    raiddev=$(mdadm -D $1 | grep -A1 "Number" | grep "dev" \
+                          | sed "s/^.*\(\/dev\/.*\)$/\1/")
+    [ -n "$raiddev" ] || return 1
+
+    echo $raiddev
+    return 0
+}
+
+# Usage: convert os_device
+# Convert an OS device to the corresponding GRUB drive.
+# This part is OS-specific.
+convert () {
+    # First, check if the device file exists.
+    if test -e "$1"; then
+		:
+    else
+		echo "$1: Not found or not a block device." 1>&2
+		exit 1
+    fi
+
+	host_os=`uname -s | tr '[[:upper:]]' '[[:lower:]]'`
+
+    # Break the device name into the disk part and the partition part.
+    case "$host_os" in
+    linux)
+		tmp_disk=`echo "$1" | sed -e 's%\([sh]d[[:lower:]]\)[0-9]*$%\1%' \
+				  -e 's%\(fd[0-9]*\)$%\1%' \
+				  -e 's%/part[0-9]*$%/disc%' \
+				  -e 's%\(c[0-7]d[0-9]*\).*$%\1%'`
+		tmp_part=`echo "$1" | sed -e 's%.*/[sh]d[[:lower:]]\([0-9]*\)$%\1%' \
+				  -e 's%.*/fd[0-9]*$%%' \
+				  -e 's%.*/floppy/[0-9]*$%%' \
+				  -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \
+				  -e 's%.*c[0-7]d[0-9]*p*%%'`
+	;;
+    gnu)
+		tmp_disk=`echo "$1" | sed 's%\([sh]d[0-9]*\).*%\1%'`
+		tmp_part=`echo "$1" | sed "s%$tmp_disk%%"` ;;
+    freebsd|*/kfreebsd)
+		tmp_disk=`echo "$1" | sed 's%r\{0,1\}\([saw]d[0-9]*\).*$%\1%' \
+			    | sed 's%r\{0,1\}\(da[0-9]*\).*$%\1%'`
+		tmp_part=`echo "$1" \
+	    		| sed "s%.*/r\{0,1\}[saw]d[0-9]\(s[0-9]*[a-h]\)%\1%" \
+       	    	| sed "s%.*/r\{0,1\}da[0-9]\(s[0-9]*[a-h]\)%\1%"`
+	;;
+    netbsd|*/knetbsd)
+		tmp_disk=`echo "$1" | sed 's%r\{0,1\}\([sw]d[0-9]*\).*$%r\1d%' \
+	    		| sed 's%r\{0,1\}\(fd[0-9]*\).*$%r\1a%'`
+		tmp_part=`echo "$1" \
+	    		| sed "s%.*/r\{0,1\}[sw]d[0-9]\([abe-p]\)%\1%"`
+	;;
+    *)
+		echo "update-grub does not support your OS yet." 1>&2
+		exit 1 ;;
+    esac
+
+    # Get the drive name.
+    tmp_drive=`grep -v '^#' $device_map | grep "$tmp_disk *$" \
+			| sed 's%.*\(([hf]d[0-9][a-z0-9,]*)\).*%\1%'`
+
+    # If not found, print an error message and exit.
+    if test "x$tmp_drive" = x; then
+		echo "$1 does not have any corresponding BIOS drive." 1>&2
+		exit 1
+    fi
+
+    if test "x$tmp_part" != x; then
+		# If a partition is specified, we need to translate it into the
+		# GRUB's syntax.
+		case "$host_os" in
+		linux)
+	    	  echo "$tmp_drive" | sed "s%)$%,`expr $tmp_part - 1`)%" ;;
+		gnu)
+	    	  if echo $tmp_part | grep "^s" >/dev/null; then
+				tmp_pc_slice=`echo $tmp_part \
+		    		| sed "s%s\([0-9]*\)[a-z]*$%\1%"`
+				tmp_drive=`echo "$tmp_drive" \
+		    		| sed "s%)%,\`expr "$tmp_pc_slice" - 1\`)%"`
+	    	  fi
+	    	  if echo $tmp_part | grep "[a-z]$" >/dev/null; then
+				tmp_bsd_partition=`echo "$tmp_part" \
+		    		| sed "s%[^a-z]*\([a-z]\)$%\1%"`
+				tmp_drive=`echo "$tmp_drive" \
+		    		| sed "s%)%,$tmp_bsd_partition)%"`
+	    	  fi
+	    	  echo "$tmp_drive" ;;
+		freebsd|*/kfreebsd)
+	    	  if echo $tmp_part | grep "^s" >/dev/null; then
+				tmp_pc_slice=`echo $tmp_part \
+		    		| sed "s%s\([0-9]*\)[a-h]*$%\1%"`
+				tmp_drive=`echo "$tmp_drive" \
+		    		| sed "s%)%,\`expr "$tmp_pc_slice" - 1\`)%"`
+	    	  fi
+	    	  if echo $tmp_part | grep "[a-h]$" >/dev/null; then
+				tmp_bsd_partition=`echo "$tmp_part" \
+		    		| sed "s%s\{0,1\}[0-9]*\([a-h]\)$%\1%"`
+				tmp_drive=`echo "$tmp_drive" \
+		    		| sed "s%)%,$tmp_bsd_partition)%"`
+	    	  fi
+	    	  echo "$tmp_drive" ;;
+		netbsd|*/knetbsd)
+	    	  if echo $tmp_part | grep "^[abe-p]$" >/dev/null; then
+				tmp_bsd_partition=`echo "$tmp_part" \
+		    		| sed "s%\([a-p]\)$%\1%"`
+				tmp_drive=`echo "$tmp_drive" \
+		    		| sed "s%)%,$tmp_bsd_partition)%"`
+	    	  fi
+	    	  echo "$tmp_drive" ;;
+		esac
+    else
+		# If no partition is specified, just print the drive name.
+		echo "$tmp_drive"
+    fi
+}
+
+# Usage: convert_default os_device
+# Convert an OS device to the corresponding GRUB drive.
+# Calls OS-specific convert, and returns a default of
+# (hd0,0) if anything goes wrong
+convert_default () {
+	# Check if device is software raid1 array
+	if tmp_dev=$(convert_raid1 $1 2>/dev/null) ; then
+		: # Use device returned by convert_raid1
+	else
+		tmp_dev=$1
+	fi
+
+	if tmp=$(convert $tmp_dev 2>/dev/null) ; then
+		echo $tmp
+	else
+		echo "${grub_root_device_fallback}"
+	fi
+}
+
+is_removable () {
+	removabledevice="$(echo "$1" | sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' -e 's%\(fd[0-9]*\)$%\1%' -e 's%/part[0-9]*$%/disc%' -e 's%\(c[0-7]d[0-9]*\).*$%\1%' -e 's%^/dev/%%g')"
+        if [ -e "/sys/block/$removabledevice/removable" ]; then
+                if [ "$(cat /sys/block/$removabledevice/removable)" != "0" ]; then
+                        echo "/dev/$removabledevice"
+                        return
+                fi
+        fi
+	echo ""
+}
+
+convert_to_uuid()
+{
+	local dev; dev=$1
+
+	convert=false
+	case "$dev" in
+		/dev/disk/*)
+			;;
+		/dev/mapper/*)
+			;;
+		/dev/evms/[hs]d[a-z][0-9]*)
+			convert=:
+			;;
+		/dev/evms/*)
+			;;
+		/dev/md[0-9]*)
+			;;
+		/dev/*)
+			convert=:
+			;;
+	esac
+	if $convert; then
+		if [ -b "$dev" ]; then
+			uuid=$(blkid -o value -s UUID "$dev" || true)
+		fi
+	fi
+
+	echo "$uuid"
+}
+
+convert_kopt_to_uuid()
+{
+	local kopt; kopt=$1
+
+	convert=false
+	root=$(echo "$kopt" | sed 's/.*root=//;s/ .*//')
+	case "$root" in
+		UUID=*|LABEL=*)
+			;;
+		/dev/disk/*)
+			;;
+		/dev/mapper/*)
+			;;
+		/dev/evms/[hs]d[a-z][0-9]*)
+			convert=:
+			;;
+		/dev/evms/*)
+			;;
+		/dev/md[0-9]*)
+			;;
+		/dev/*)
+			convert=:
+			;;
+	esac
+	if $convert; then
+		if [ -L "$DEV" ] && readlink "$DEV" | grep -q "^/dev/mapper/"
+		then
+			:
+		elif [ -b "$root" ]; then
+			uuid=$(blkid -o value -s UUID "$root" || true)
+			if [ -n "$uuid" ]; then
+				kopt=$(echo "$kopt" | sed "s/\(.*root=\)[^ ]*/\1UUID=$uuid/")
+			fi
+		fi
+	fi
+
+	echo "$kopt"
+}
+
+
+## Configuration Options
+# directory's to look for the grub installation and the menu file
+grub_dirs="/boot/grub /boot/boot/grub"
+
+# The grub installation directory
+grub_dir=$(find_grub_dir)
+
+# Full path to the menu.lst
+menu_file_basename=menu.lst
+menu_file=$grub_dir/$menu_file_basename
+
+# Full path to the menu.lst fragment used for ucf management
+ucf_menu_file=/var/run/grub/$menu_file_basename
+
+# Full path to the default file
+default_file_basename=default
+default_file=$grub_dir/$default_file_basename
+
+# the device for the / filesystem
+root_device=$(find_root_device)
+
+# the device for the /boot filesystem
+boot_device=$(find_device "/boot")
+
+# Full path to the device.map
+device_map=$grub_dir/device.map
+
+# Default kernel options, overidden by the kopt statement in the menufile.
+loop_file=""
+if [ -f /etc/fstab ]; then
+   loop_file=$(awk '$2=="/" && $4~"loop" {print $1}' /etc/fstab)
+fi
+if [ -n "$loop_file" ]; then
+	dev_mountpoint=$(awk '"'${loop_file}'"~"^"$2 && $2!="/" {print $1";"$2}' /proc/mounts|tail -n 1)
+	host_device="${dev_mountpoint%;*}"
+	host_mountpoint="${dev_mountpoint#*;}"
+fi
+if [ -n "$host_device" ]; then
+	boot_device=
+	root_device="$host_device"
+	default_kopt="root=$host_device loop=${loop_file#$host_mountpoint} ro"
+else
+	default_kopt="root=$root_device ro"
+fi
+default_kopt="$(convert_kopt_to_uuid "$default_kopt")"
+kopt="$default_kopt"
+
+# Title
+title=$(lsb_release --short --description 2>/dev/null) || title="Ubuntu"
+
+# should update-grub remember the default entry
+updatedefaultentry="false"
+
+# Drive(in GRUB terms) where the kernel is located. Overridden by the
+# kopt statement in menufile.
+# if we don't have a device.map then we can't use the convert function.
+
+# Try to use a UUID instead of the GRUB device name.
+if test -z "$boot_device" ; then
+	uuid=$(convert_to_uuid "$root_device")
+else
+	uuid=$(convert_to_uuid "$boot_device")
+fi
+
+#if [ -n "$uuid" ]; then
+#	grub_root_device="$uuid"
+#fi
+## The ec2 provide pv-grub do not support 'uuid' so we have to use a grub name
+## when presented to grub, the root filesystem is on what grub sees
+## as a bare disk (hd0), rather than what we see it as in user space (sda1).
+grub_root_device_fallback="(hd0)"
+grub_root_device="${grub_root_device_fallback}"
+
+check_removable=""
+if true; then
+	if test -f "$device_map"; then
+		if test -z "$boot_device" ; then
+			grub_root_device=$(convert_default "$root_device")
+			check_removable="$(is_removable "$root_device")"
+		else
+			grub_root_device=$(convert_default "$boot_device")
+			check_removable="$(is_removable "$boot_device")"
+		fi
+	else
+		grub_root_device="${grub_root_device_fallback}"
+	fi
+fi
+
+# If the root/boot device is on a removable target, we need to override
+# the grub_root_device to (hd0,X). This is a requirement since the BIOS
+# will change device mapping dynamically if we switch boot device.
+
+if test -n "$check_removable" ; then
+	grub_root_device="$(echo "$grub_root_device" | sed -e 's/d.*,/d0,/g')"
+fi
+
+# should grub create the alternative boot options in the menu
+	alternative="true"
+
+# should grub lock the alternative boot options in the menu
+	lockalternative="false"
+
+# additional options to use with the default boot option, but not with the
+# alternatives
+	defoptions="console=hvc0"
+
+# should grub lock the old kernels
+	lockold="false"
+
+# Xen hypervisor options to use with the default Xen boot option
+	xenhopt=""
+
+# Xen Linux kernel options to use with the default Xen boot option
+	xenkopt="console=tty0"
+
+# options to use with the alternative boot options
+	altoptions="(recovery mode) single"
+
+# controls howmany kernels are listed in the config file,
+# this does not include the alternative kernels
+	howmany="all"
+
+# should grub create a memtest86 entry
+	memtest86="true"
+
+# should grub add "savedefault" to default boot options
+	savedefault="false"
+
+# is grub running in a domU?
+	indomU="true"
+
+# stores the command line arguments
+	command_line_arguments=$1
+
+# does this version of grub support the quiet option?
+if [ -f ${grub_dir}/installed-version ] && dpkg --compare-versions `cat ${grub_dir}/installed-version` ge 0.97-11ubuntu4; then
+    supports_quiet=true
+else
+    supports_quiet=false
+fi
+
+# read user configuration
+if test -f "/etc/default/grub" ; then
+    . /etc/default/grub
+fi
+
+# Default options to use in a new config file. This will only be used if $menu_file
+# doesn't already exist. Only edit the lines between the two "EOF"s. The others are
+# part of the script.
+newtemplate=$(tempfile)
+cat >> "$newtemplate" <<EOF
+# $menu_file_basename - See: grub(8), info grub, update-grub(8)
+#            grub-install(8), grub-floppy(8),
+#            grub-md5-crypt, /usr/share/doc/grub
+#            and /usr/share/doc/grub-legacy-doc/.
+
+## default num
+# Set the default entry to the entry number NUM. Numbering starts from 0, and
+# the entry number 0 is the default if the command is not used.
+#
+# You can specify 'saved' instead of a number. In this case, the default entry
+# is the entry saved with the command 'savedefault'.
+# WARNING: If you are using dmraid do not use 'savedefault' or your
+# array will desync and will not let you boot your system.
+default		0
+
+## timeout sec
+# Set a timeout, in SEC seconds, before automatically booting the default entry
+# (normally the first entry defined).
+# on ec2, with no console access, there is no reason for a timeout.  set to 0.
+timeout		0
+
+## hiddenmenu
+# Hides the menu by default (press ESC to see the menu)
+hiddenmenu
+
+# Pretty colours
+#color cyan/blue white/blue
+
+## password ['--md5'] passwd
+# If used in the first section of a menu file, disable all interactive editing
+# control (menu entry editor and command-line)  and entries protected by the
+# command 'lock'
+# e.g. password topsecret
+#      password --md5 \$1\$gLhU0/\$aW78kHK1QfV3P2b2znUoe/
+# password topsecret
+
+#
+# examples
+#
+# title		Windows 95/98/NT/2000
+# root		(hd0,0)
+# makeactive
+# chainloader	+1
+#
+# title		Linux
+# root		(hd0,1)
+# kernel	/vmlinuz root=/dev/hda2 ro
+#
+
+#
+# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST
+
+EOF
+## End Configuration Options
+
+echo -n "Searching for default file ... " >&2
+if [ -f "$default_file" ] ; then
+  echo "found: $default_file" >&2
+else
+  echo "Generating $default_file file and setting the default boot entry to 0" >&2
+  grub-set-default 0
+fi
+
+# Make sure we use the standard sorting order
+LC_COLLATE=C
+# Magic markers we use
+start="### BEGIN AUTOMAGIC KERNELS LIST"
+end="### END DEBIAN AUTOMAGIC KERNELS LIST"
+
+startopt="## ## Start Default Options ##"
+endopt="## ## End Default Options ##"
+
+# path to grub2
+grub2name="/boot/grub/core.img"
+
+# Extract options from config file
+ExtractMenuOpt()
+{
+	opt=$1
+
+	sed -ne "/^$start\$/,/^$end\$/ {
+		/^$startopt\$/,/^$endopt\$/ {
+			/^# $opt=/ {
+				s/^# $opt=\(.*\)\$/\1/
+				p
+			}
+		}
+	}" $menu
+}
+
+GetMenuOpts()
+{
+	opt=$1
+
+	sed -ne "/^$start\$/,/^$end\$/ {
+		/^$startopt\$/,/^$endopt\$/ {
+			/^# $opt=/ {
+				p
+			}
+		}
+	}" $menu
+}
+
+ExtractMenuOpts()
+{
+	opt=$1
+
+	GetMenuOpts $opt | sed "s/^# $opt=\(.*\)\$/\1=\"\2\"/"
+}
+
+GetMenuOpt()
+{
+	opt=$1
+	value=$2
+
+	[ -z "$(GetMenuOpts "$opt")" ] || value=$(ExtractMenuOpt "$opt")
+
+	echo $value
+}
+
+# Compares two version strings A and B
+# Returns -1 if A<B
+#          0 if A==B
+#          1 if A>B
+# This compares version numbers of the form
+# 2.4.14.2 > 2.4.14
+# 2.4.14random = 2.4.14-random > 2.4.14-ac10 > 2.4.14 > 2.4.14-pre2 > 
+# 2.4.14-pre1 > 2.4.13-ac99
+CompareVersions()
+{  
+    	#Changes the line something-x.y.z into somthing-x.y.z.q
+	#This is to ensure that kernels with a .q is treated as higher than the ones without               
+        #First a space is put after the version number
+        v1=$(echo $1 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2,3\}[0-9]\+\)\(.*\)!\1 \3!g')
+	v2=$(echo $2 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2,3\}[0-9]\+\)\(.*\)!\1 \3!g')
+	#If the version number only has 3 digits then put in another .0
+        v1=$(echo $v1 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2\}[0-9]\+\)\( .*\|$\)!\1.0 \3!g')
+        v2=$(echo $v2 | sed -e 's!^\(.*-\([0-9]\+\.\)\{2\}[0-9]\+\)\( .*\|$\)!\1.0 \3!g')
+          
+	# Then split the version number and remove any '.' 's or dashes
+	v1=$(echo $v1 | sed -e 's![-\.]\+! !g' -e 's!\([0-9]\)\([[:alpha:]]\)!\1 \2!')
+	v2=$(echo $v2 | sed -e 's![-\.]\+! !g' -e 's!\([0-9]\)\([[:alpha:]]\)!\1 \2!')
+
+	# we weight different kernel suffixes here
+	# ac   = 50
+	# pre  = -50
+	# rc   = -40
+	# test = -60
+	# others are given 99
+	v1=$(echo $v1 | sed -e 's! k7! 786 !g' -e 's! ac! 50 !g' -e 's! rc! -40 !g' -e 's! pre! -50 !g' -e 's! test! -60 !g' -e 's![^ ]*[^-0-9 ][^ ]*!99!g')
+
+	v2=$(echo $v2 | sed -e 's! k7! 786 !g' -e 's! ac! 50 !g' -e 's! rc! -40 !g' -e 's! pre! -50 !g' -e 's! test! -60 !g' -e 's![^ ]*[^-0-9 ][^ ]*!99!g')
+
+	result=0; v1finished=0; v2finished=0;
+	while [ $result -eq 0 ] && [ $v1finished -eq 0 ] && [ $v2finished -eq 0 ];
+	do
+		if [ "$v1" = "" ]; then
+			v1comp=0; v1finished=1
+		else
+			set -- $v1; v1comp=$1; shift; v1=$*
+		fi
+
+		if [ "$v2" = "" ]; then
+			v2comp=0; v2finished=1
+		else
+			set -- $v2; v2comp=$1; shift; v2=$*
+		fi
+		
+		set +e
+		result=`expr $v1comp - $v2comp` 
+		result=`expr substr $result 1 2`
+		set -e
+
+		if   [ $result -gt 0 ]; then result=1
+		elif [ $result -lt 0 ]; then result=-1	
+		fi	
+	done
+
+	# finally return the result
+	echo $result
+}
+
+# looks in the directory specified for an initrd image with the version specified
+FindInitrdName()
+{
+	# strip trailing slashes
+	directory=$(echo $1 | sed -e 's#/*$##')
+	version=$2
+
+	# initrd
+	# initrd.img
+	# initrd-lvm
+	# .*.gz
+
+	initrdName=""
+	names="initrd initrd.img initrd-lvm"
+	compressed="gz"
+
+	for n in $names ; do
+		# make sure we haven't already found it
+		if [ -z "$initrdName" ] ; then
+			if [ -f "$directory/$n$version" ] ; then
+				initrdName="$n$version"
+				break
+			else
+				for c in $compressed ; do
+					if [ -f "$directory/$n$version.$c" ] ; then
+						initrdName="$n$version.$c"
+						break
+					fi
+				done
+			fi
+		else
+			break
+		fi
+	done
+
+	# return the result
+	echo $initrdName
+}
+
+FindXenHypervisorVersions ()
+{
+	version=$1
+
+	if [ -f "/var/lib/linux-image-$version/xen-versions" ]; then
+		ret="$(cat /var/lib/linux-image-$version/xen-versions)"
+	fi
+
+	echo $ret
+}
+
+get_kernel_opt()
+{
+	kernel_version=$1
+
+	version=$(echo $kernel_version | sed 's/^[^0-9]*//')
+	version=$(echo $version | sed 's/[-\+\.]/_/g')
+	if [ -n "$version" ] ; then
+		while [ -n "$version" ] ; do
+			currentOpt="$(eval "echo \${kopt_$version}")"
+			if [ -n "$currentOpt" ] ; then
+				break
+			fi
+
+			oldversion="$version"
+			version=$(echo $version | sed 's/_\?[^_]*$//')
+			if [ "$version" = "$oldversion" ] ; then
+				# Break infinite loop, if the version isn't what we expect
+				break
+			fi
+		done
+	fi
+
+	if [ -z "$currentOpt" ] ; then
+			currentOpt=$kopt
+	fi
+
+	echo $currentOpt
+}
+
+write_kernel_entry()
+{
+	local kernel_version; kernel_version=$1; shift
+	local recovery_desc; recovery_desc=$1; shift
+	local lock_alternative; lock_alternative=$1; shift
+	local grub_root_device; grub_root_device=$1; shift
+	local kernel; kernel=$1; shift
+	local kernel_options; kernel_options=$1; shift
+	local recovery_suffix; recovery_suffix=$1; shift
+	local initrd; initrd=$1; shift
+	local savedefault; savedefault=$1; shift
+	local lockold; lockold=$1; shift
+	local dapper_upgrade; dapper_upgrade=$1; shift
+	local hypervisor
+	if [ -n "$1" ]; then
+		# Hypervisor.
+		hypervisor=$1; shift
+		local hypervisor_image; hypervisor_image=$1; shift
+		local hypervisor_version; hypervisor_version=$1; shift
+		local hypervisor_options; hypervisor_options=$1; shift
+	fi
+
+	echo -n "title		" >> $buffer
+
+	if [ -n "$hypervisor" ]; then
+		echo -n "$hypervisor $hypervisor_version / " >> $buffer
+	fi
+
+	echo -n "$title" >> $buffer
+	if [ -n "$kernel_version" ]; then
+		echo -n ", " >> $buffer
+		# memtest86 is not strictly a kernel
+		if ! echo "$kernel_version" | grep -q ^memtest86; then
+			echo -n "kernel " >> $buffer
+		fi
+		echo -n "$kernel_version" >> $buffer
+	fi
+	if [ -n "$recovery_desc" ]; then
+		echo -n " $recovery_desc" >> $buffer
+	fi
+	echo >> $buffer
+
+	# lock the alternative options
+	if test x"$lock_alternative" = x"true" ; then
+		echo "lock" >> $buffer
+	fi
+	# lock the old entries
+	if test x"$lockold" = x"true" ; then
+	echo "lock" >> $buffer
+	fi
+
+	case "$grub_root_device" in
+		[^A-Za-z0-9]*)
+			echo "root		$grub_root_device" >> $buffer
+		;;
+		*)
+			echo "uuid		$grub_root_device" >> $buffer
+		;;
+	esac
+
+	echo -n "kernel		"  >> $buffer
+	if [ -n "$hypervisor" ]; then
+		echo -n "$hypervisor_image" >> $buffer
+		if [ -n "$hypervisor_options" ]; then
+			echo -n " $hypervisor_options"  >> $buffer
+		fi
+		echo >> $buffer
+		echo -n "module		"  >> $buffer
+	fi
+	echo -n "$kernel"  >> $buffer
+	if [ -n "$kernel_options" ]; then
+		echo -n " $kernel_options"  >> $buffer
+	fi
+	if [ -n "$recovery_desc" ]; then
+		echo -n " $recovery_suffix"  >> $buffer
+	fi
+	if [ -n "$dapper_upgrade" -a -z "$kernel_options$recovery_desc" ]; then
+		echo -n " "  >> $buffer
+	fi
+	echo >> $buffer
+
+	if [ -n "$initrd" ]; then
+		if [ -n "$hypervisor" ]; then
+			echo -n "module		" >> $buffer
+		else
+			echo -n "initrd		" >> $buffer
+		fi
+		echo "$initrd" >> $buffer
+	fi
+
+	if [ ! -n "$recovery_desc" -a x"$supports_quiet" = x"true" -a -z "$dapper_upgrade" ]; then
+		echo "quiet" >> $buffer
+	fi
+
+	if test x"$savedefault" = x"true" ; then
+		echo "savedefault" >> $buffer
+	fi
+	if test x"$dapper_upgrade" != x ; then
+		echo "boot" >> $buffer
+	fi
+	echo >> $buffer
+}
+
+## write out the kernel entries
+output_kernel_list() {
+	counter=0
+
+	# Xen entries first.
+	for kern in $xenKernels ; do
+		if test ! x"$howmany" = x"all" ; then
+			if [ $counter -gt $howmany ] ; then
+				break
+			fi
+		fi
+
+		kernelName=$(basename $kern)
+		kernelVersion=$(echo $kernelName | sed -e 's/vmlinuz//')
+
+		initrdName=$(FindInitrdName "/boot" "$kernelVersion")
+		initrd=""
+
+		kernel=$kernel_dir/$kernelName
+		if [ -n "$initrdName" ] ; then
+			initrd=$kernel_dir/$initrdName
+		fi
+
+		kernelVersion=$(echo $kernelVersion | sed -e 's/^-//')
+		currentOpt=$(get_kernel_opt $kernelVersion)
+
+		hypervisorVersions=$(FindXenHypervisorVersions "$kernelVersion")
+
+		found=
+		for hypervisorVersion in $hypervisorVersions; do
+			hypervisor="$kernel_dir/xen-$hypervisorVersion.gz"
+			if [ -e "$hypervisor" ]; then
+				found=1
+
+				echo "Found Xen hypervisor $hypervisorVersion,  kernel: $kernel" >&2
+
+				write_kernel_entry "$kernelVersion" '' '' "$grub_root_device" \
+				  "$kernel" "$currentOpt $xenkopt" '' "$initrd" "$savedefault" '' "$dapper_upgrade" \
+				  Xen "$hypervisor" "$hypervisorVersion" "$xenhopt"
+		        counter=$(($counter + 1))
+			fi
+		done
+
+		if [ -z $found ]; then
+			for hypervisor in $hypervisors; do
+				hypVersion=`basename "$hypervisor" .gz | sed s%xen-%%`
+		
+				echo "Found Xen hypervisor $hypVersion,  kernel: $kernel" >&2
+
+				write_kernel_entry "$kernelVersion" '' '' "$grub_root_device" \
+				  "$kernel" "$currentOpt $xenkopt" '' "$initrd" "$savedefault" '' "$dapper_upgrade" \
+				  Xen "$kernel_dir/$hypervisor" "$hypVersion" "$xenhopt"
+		        counter=$(($counter + 1))
+			done
+		fi
+	done
+
+	for kern in $sortedKernels ; do
+		counter=$(($counter + 1))
+		if test ! x"$howmany" = x"all" ; then
+			if [ $counter -gt $howmany ] ; then 
+				break
+			fi
+		fi
+		kernelName=$(basename $kern)
+		initrdName=""
+		initrd=""
+		extra_opts=""
+
+		if [ "$kern" = "/boot/last-good-boot/vmlinuz" ]; then
+			kernelVersion="Last successful boot"
+			if [ -e "/boot/last-good-boot/initrd.img" ]; then
+				initrdName="last-good-boot/initrd.img"
+			fi
+			kernelName="last-good-boot/vmlinuz"
+			extra_opts="$extra_opts last-good-boot"
+		else
+			kernelVersion=$(echo $kernelName | sed -e 's/vmlinuz//')
+			initrdName=$(FindInitrdName "/boot" "$kernelVersion")
+			if [ -x "/usr/bin/makedumpfile" ] && [ -x "/sbin/kexec" ]; then
+				extra_opts="$extra_opts crashkernel=384M-2G:64M,2G-:128M"
+			fi
+		fi
+
+		kernel=$kernel_dir/$kernelName
+
+		if [ -n "$initrdName" ] ; then
+			initrd=$kernel_dir/$initrdName
+		fi
+
+		echo "Found kernel: $kernel" >&2
+
+		if [ "$kernelName" = "vmlinuz" ]; then
+			if [ -L "/boot/$kernelName" ]; then
+				kernelVersion=`readlink -f "/boot/$kernelName"`
+				kernelVersion=$(echo $kernelVersion | sed -e 's/.*vmlinuz-//')
+				kernelVersion="$kernelVersion Default"
+			else
+				kernelVersion="Default"
+			fi
+		fi
+		if [ "$kernelName" = "vmlinuz.old" ]; then
+			if [ -L "/boot/$kernelName" ]; then
+				kernelVersion=`readlink -f "/boot/$kernelName"`
+				kernelVersion=$(echo $kernelVersion | sed -e 's/.*vmlinuz-//')
+				kernelVersion="$kernelVersion Previous"
+			else
+				kernelVersion="Previous"
+			fi
+		fi
+
+		kernelVersion=$(echo $kernelVersion | sed -e 's/^-//')
+
+		currentOpt=$(get_kernel_opt $kernelVersion)
+
+		do_lockold=$lockold
+		# do not lockold for the first entry
+		[ $counter -eq 1 ] && do_lockold=false
+
+		if [ "$kernelName" = "last-good-boot/vmlinuz" ]; then
+			if [ -e /boot/last-good-boot/cmdline ]; then
+				cmdline="$(cat /boot/last-good-boot/cmdline) last-good-boot"
+			else
+				cmdline="$currentOpt $defoptions $extra_opts"
+			fi
+			write_kernel_entry "$kernelVersion" "" "" "$grub_root_device" "$kernel" \
+				"$cmdline" "" "$initrd" "$savedefault" "$do_lockold" \
+				"$dapper_upgrade"
+		else
+			write_kernel_entry "$kernelVersion" "" "" "$grub_root_device" "$kernel" \
+				"$currentOpt $defoptions $extra_opts" "" "$initrd" "$savedefault" \
+				"$do_lockold" "$dapper_upgrade"
+		fi
+
+		# insert the alternative boot options
+		if test ! x"$alternative" = x"false" && \
+		   test ! x"$kernelName" = x"last-good-boot/vmlinuz"; then
+			# for each altoptions line do this stuff
+			sed -ne 's/# altoptions=\(.*\)/\1/p' $buffer | while read line; do
+				descr=$(echo $line | sed -ne 's/\(([^)]*)\)[[:space:]]\(.*\)/\1/p')
+				suffix=$(echo $line | sed -ne 's/\(([^)]*)\)[[:space:]]\(.*\)/\2/p')
+
+				test x"$lockalternative" = x"true" && do_lockold=false
+				write_kernel_entry "$kernelVersion" "$descr" "$lockalternative" \
+					"$grub_root_device" "$kernel" "$currentOpt $extra_opts" \
+					"$suffix" "$initrd" "false" "$do_lockold" \
+					"$dapper_upgrade"
+			done
+		fi
+	done
+
+## Adding the chainload stanza is simply confusing, and for
+## legacy ec2 grub, it will never be used. LP: #627451
+##
+#	if test -f $grub2name ; then
+#		echo "Found GRUB 2: $grub2name" >&2
+#		cat >> $buffer << EOF
+#title		Chainload into GRUB 2
+#root		$grub_root_device
+#kernel		$grub2name
+#EOF
+#		if test x"$savedefault" = x"true" ; then
+#			echo "savedefault" >> $buffer
+#		fi
+#		echo >> $buffer
+#	fi
+    
+	memtest86names="memtest86 memtest86+"
+
+	if test ! x"$memtest86" = x"false" ; then
+		for name in $memtest86names ; do
+			if test -f "/boot/$name.bin" ; then
+				kernelVersion="$name"
+				kernel="$kernel_dir/$name.bin"
+				currentOpt=
+				initrd=
+
+				echo "Found kernel: $kernel" >&2
+
+				write_kernel_entry "$kernelVersion" "" "" "$grub_root_device" \
+				"$kernel" "$currentOpt" "" "$initrd" "false" "" "$dapper_upgrade"
+			fi
+		done
+	fi
+
+	echo $end >> $buffer
+}
+
+ucf_update_kernels() {
+	local target; target="$1"
+	local buffer; buffer="$2"
+
+	sed -ni -e"/$endopt/,/$end/p" "$buffer"
+
+	if [ "x$initialconfig" = "x" ]; then
+		sed -n -e"/$endopt/,/$end/p" < $menu > $ucf_menu_file
+	else
+		cat $buffer > $ucf_menu_file
+	fi
+
+	db_x_loadtemplatefile "$(dpkg-query --control-path grub-legacy-ec2 templates)" grub
+
+	ucf --debconf-ok \
+		--debconf-template grub/update_grub_changeprompt_threeway \
+		--three-way "$buffer" $ucf_menu_file
+	rm "$buffer"
+
+	# now re-merge the ucf results with the target file
+	sed -i -e "/^$endopt/,/^$end/ {
+		/^$endopt/r $ucf_menu_file
+		d
+	}
+	" $target
+
+	rm -f $ucf_menu_file ${ucf_menu_file}.ucf-old
+}
+
+
+echo -n "Testing for an existing GRUB $menu_file_basename file ... " >&2
+
+# Test if our menu file exists
+if [ -f "$menu_file" ] ; then
+	menu="$menu_file"
+	rm -f $newtemplate
+	unset newtemplate
+	echo "found: $menu_file" >&2
+	cp -f "$menu_file" "$menu_file~"
+else
+	# if not ask user if they want us to create one
+	initialconfig=1
+	menu="$menu_file"
+	echo >&2
+	echo >&2
+	echo -n "Could not find $menu_file file. " >&2
+	if [ "-y" = "$command_line_arguments" ] ; then
+		echo >&2
+		echo "Generating $menu_file" >&2
+		answer=y
+	else
+		echo -n "Would you like $menu_file generated for you? " >&2
+		echo -n "(y/N) " >&2
+		read answer <&2
+	fi
+
+	case "$answer" in
+		y* | Y*)
+		cat "$newtemplate" > $menu_file
+		rm -f $newtemplate
+		unset newtemplate
+		;;
+		*)
+		abort "Not creating $menu_file as you wish"
+		;;
+	esac
+fi
+
+# Extract the kernel options to use
+kopt=$(GetMenuOpt "kopt" "$kopt")
+
+# Extract options for specific kernels
+opts="$(ExtractMenuOpts "\(kopt_[[:alnum:]_]\+\)")"
+test -z "$opts" || eval "$opts"
+CustomKopts=$(GetMenuOpts "\(kopt_[[:alnum:]_]\+\)" | \
+	grep -v "^# kopt_2_6=" || true)
+
+# Set the kernel 2.6 option only for fresh install (but convert it to
+# mount-by-UUID on upgrade)
+test -z "$kopt_2_6" && test -z "$(GetMenuOpt "kopt" "")" && \
+	kopt_2_6="$default_kopt"
+
+# Extract the grub root
+grub_root_device=$(GetMenuOpt "groot" "$grub_root_device")
+groot_cfg=$(GetMenuOpt groot "${grub_root_device_fallback}")
+case "${groot_cfg}" in
+	[^A-Za-z0-9]*) :;;
+	*) 
+		echo "uuid not supported. update 'groot' in ${menu_file}" >&2;
+		abort "groot must be grub root device (ie '(hd0)'). not '${groot_cfg}'" >&2;
+esac
+
+# Extract the old recovery value
+alternative=$(GetMenuOpt "recovery" "$alternative")
+
+# Extract the alternative value
+alternative=$(GetMenuOpt "alternative" "$alternative")
+
+# Extract the lockalternative value
+lockalternative=$(GetMenuOpt "lockalternative" "$lockalternative")
+
+# Extract the additional default options
+# Check nonaltoptions too for compatibility with Ubuntu <= 5.10
+defoptions=$(GetMenuOpt "nonaltoptions" "$defoptions")
+defoptions=$(GetMenuOpt "defoptions" "$defoptions")
+
+# Extract the lockold value
+lockold=$(GetMenuOpt "lockold" "$lockold")
+
+# Extract Xen hypervisor options
+xenhopt=$(GetMenuOpt "xenhopt" "$xenhopt")
+
+# Extract Xen Linux kernel options
+xenkopt=$(GetMenuOpt "xenkopt" "$xenkopt")
+
+# Extract the howmany value
+howmany=$(GetMenuOpt "howmany" "$howmany")
+
+# Extract the memtest86 value
+memtest86=$(GetMenuOpt "memtest86" "$memtest86")
+
+# Extract the indomU value
+indomU=$(GetMenuOpt "indomU" "$indomU")
+ 
+# Extract the updatedefaultentry option
+updatedefaultentry=$(GetMenuOpt "updatedefaultentry" "$updatedefaultentry")
+
+# If "default saved" is in use, set the default to true
+grep -q "^default.*saved" $menu && savedefault=true
+# Extract the savedefault option
+savedefault=$(GetMenuOpt "savedefault" "$savedefault")
+
+# Generate the menu options we want to insert
+buffer=$(tempfile)
+echo $start >> $buffer
+echo "## lines between the AUTOMAGIC KERNELS LIST markers will be modified" >> $buffer
+echo "## by the debian update-grub script except for the default options below" >> $buffer
+echo >> $buffer
+echo "## DO NOT UNCOMMENT THEM, Just edit them to your needs" >> $buffer
+echo >> $buffer
+echo "## ## Start Default Options ##" >> $buffer
+
+echo "## default kernel options" >> $buffer
+echo "## default kernel options for automagic boot options" >> $buffer
+echo "## If you want special options for specific kernels use kopt_x_y_z" >> $buffer
+echo "## where x.y.z is kernel version. Minor versions can be omitted." >> $buffer
+echo "## e.g. kopt=root=/dev/hda1 ro" >> $buffer
+echo "##      kopt_2_6_8=root=/dev/hdc1 ro" >> $buffer
+echo "##      kopt_2_6_8_2_686=root=/dev/hdc2 ro" >> $buffer
+echo "# kopt=$kopt" >> $buffer
+if [ -n "$kopt_2_6" ] && [ "$kopt" != "$kopt_2_6" ]; then
+    echo "# kopt_2_6=$kopt_2_6" >> $buffer
+fi
+if [ -n "$CustomKopts" ] ; then
+    echo "$CustomKopts" >> $buffer
+fi
+echo >> $buffer
+
+echo "## default grub root device" >> $buffer
+echo "## e.g. groot=${grub_root_device_fallback}" >> $buffer
+echo "# groot=$grub_root_device" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub create alternative automagic boot options" >> $buffer
+echo "## e.g. alternative=true" >> $buffer
+echo "##      alternative=false" >> $buffer
+echo "# alternative=$alternative" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub lock alternative automagic boot options" >> $buffer
+echo "## e.g. lockalternative=true" >> $buffer
+echo "##      lockalternative=false" >> $buffer
+echo "# lockalternative=$lockalternative" >> $buffer
+echo >> $buffer
+
+echo "## additional options to use with the default boot option, but not with the" >> $buffer
+echo "## alternatives" >> $buffer
+echo "## e.g. defoptions=vga=791 resume=/dev/hda5" >> $buffer
+echo "# defoptions=$defoptions" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub lock old automagic boot options" >> $buffer
+echo "## e.g. lockold=false" >> $buffer
+echo "##      lockold=true" >> $buffer
+echo "# lockold=$lockold" >> $buffer
+echo >> $buffer
+
+echo "## Xen hypervisor options to use with the default Xen boot option" >> $buffer
+echo "# xenhopt=$xenhopt" >> $buffer
+echo >> $buffer
+
+echo "## Xen Linux kernel options to use with the default Xen boot option" >> $buffer
+echo "# xenkopt=$xenkopt" >> $buffer
+echo >> $buffer
+
+echo "## altoption boot targets option" >> $buffer
+echo "## multiple altoptions lines are allowed" >> $buffer
+echo "## e.g. altoptions=(extra menu suffix) extra boot options" >> $buffer
+echo "##      altoptions=(recovery) single" >> $buffer
+
+if ! grep -q "^# altoptions" $menu ; then
+	echo "# altoptions=$altoptions" >> $buffer
+else
+	grep "^# altoptions" $menu >> $buffer
+fi
+echo >> $buffer
+
+echo "## controls how many kernels should be put into the $menu_file_basename" >> $buffer
+echo "## only counts the first occurence of a kernel, not the" >> $buffer
+echo "## alternative kernel options" >> $buffer
+echo "## e.g. howmany=all" >> $buffer
+echo "##      howmany=7" >> $buffer
+echo "# howmany=$howmany" >> $buffer
+echo >> $buffer
+
+echo "## specify if running in Xen domU or have grub detect automatically" >> $buffer
+echo "## update-grub will ignore non-xen kernels when running in domU and vice versa" >> $buffer
+echo "## e.g. indomU=detect" >> $buffer
+echo "##      indomU=true" >> $buffer
+echo "##      indomU=false" >> $buffer
+echo "# indomU=$indomU" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub create memtest86 boot option" >> $buffer
+echo "## e.g. memtest86=true" >> $buffer
+echo "##      memtest86=false" >> $buffer
+echo "# memtest86=$memtest86" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub adjust the value of the default booted system" >> $buffer
+echo "## can be true or false" >> $buffer
+echo "# updatedefaultentry=$updatedefaultentry" >> $buffer
+echo >> $buffer
+
+echo "## should update-grub add savedefault to the default options" >> $buffer
+echo "## can be true or false" >> $buffer
+echo "# savedefault=$savedefault" >> $buffer
+echo >> $buffer
+
+echo "## ## End Default Options ##" >> $buffer
+echo >> $buffer
+
+echo -n "Searching for splash image ... " >&2
+current_splash=`grep '^splashimage=' ${menu_file} || true`
+splash_root_device=""
+splash_uuid=""
+case "$grub_root_device" in
+	[^A-Za-z0-9]*)
+		splash_root_device=${grub_root_device}
+	;;
+	*)
+		splash_uuid="uuid		$grub_root_device"
+	;;
+esac
+splashimage_path="splashimage=${splash_root_device}${grub_dir##${boot_device:+/boot}}/splash.xpm.gz"
+if [ `sed -e "/^$start/,/^$end/d" $menu_file | grep -c '^splashimage='` != "0" ] ; then
+       #checks for splashscreen defined outside the autoupdated part
+       splashimage=$(grep '^splashimage=' ${menu_file})
+       echo "found: ${splashimage##*=}" >&2
+       echo >&2  
+elif [ -f "${grub_dir}/splash.xpm.gz" ]  && [ "$current_splash" = "" ]; then
+       echo "found: /boot/grub/splash.xpm.gz" >&2
+       echo "$splash_uuid" >> $buffer
+       echo "$splashimage_path" >> $buffer
+       echo >> $buffer
+elif [ -f "${grub_dir}/splash.xpm.gz" ]  && [ "$current_splash" = "$splashimage_path" ]; then
+       echo "found: /boot/grub/splash.xpm.gz" >&2
+       echo "$splash_uuid" >> $buffer
+       echo "$splashimage_path" >> $buffer
+       echo >> $buffer
+elif [ "$current_splash" != "" ] && [ "$current_splash" != "$splashimage_path" ]; then
+       echo "found but preserving previous setting: $(grep '^splashimage=' ${menu_file})" >&2
+       echo "$splash_uuid" >> $buffer
+       echo "$current_splash" >> $buffer
+       echo >> $buffer
+else
+       echo "none found, skipping ..." >&2
+fi
+
+
+hypervisors=""
+for hyp in /boot/xen-*.gz; do
+    if [ ! -h "$hyp" ] && [ -f "$hyp" ]; then
+	hypervisors="$hypervisors `basename "$hyp"`"
+    fi
+done
+
+# figure out where grub looks for the kernels at boot time
+kernel_dir=/boot
+if [ -n "$boot_device" ] ; then
+	kernel_dir=
+fi
+
+
+# We need a static path to use for the ucf registration; since we're not
+# using the full menu.lst file (maybe we should, just copying it around?
+# C.f. discussion with Manoj), create a directory in a fixed location
+# even though we're not treating the file in that location as
+# persistent.
+mkdir -p /var/run/grub
+
+# The first time ucf sees the file, we can only assume any difference
+# between the magic comments and the kernel options is a result of local
+# mods, so this will result in a ucf prompt for anyone whose first
+# invocation of update-grub is as a result of updating the magic comments.
+if ! ucfq grub | grep -q $ucf_menu_file; then
+	otherbuffer=$(tempfile)
+	cat $buffer > $otherbuffer
+
+	sortedKernels=`sed -n -e "
+	/$endopt/,/$end/ {
+		s/^kernel[[:space:]]\+\([^[:space:]]\+\).*/\1/p
+	}" < $menu | grep -vE "memtest86|$grub2name|xen" | uniq`
+	xenKernels=`sed -n -e "
+	/$endopt/,/$end/ {
+		s/^module[[:space:]]\+\([^[:space:]]*vmlinuz[^[:space:]]\+\).*/\1/p
+	}" < $menu | uniq`
+
+	savebuffer="$buffer"
+	buffer="$otherbuffer"
+	savetitle="$title"
+	title="$(sed -n -e "/$endopt/,/$end/ {
+		s/^title[[:space:]]\+\(.*\),.*/\1/p
+	}" < $menu | head -n 1)"
+	if [ -z "$title" ]; then
+		title="$savetitle"
+	fi
+
+	# Hack: the kernel list output in Ubuntu 6.06 was different than
+	# in the current version, so to support smooth upgrades we need to
+	# properly detect a config generated by this old version of
+	# update-grub and mimic it for the initial ucf registration
+	dapper_upgrade=`sed -n -e "
+	/$endopt/,/$end/ {
+		/^boot/p
+	}" < $menu`
+	save_savedefault="$savedefault"
+	if [ -n "$dapper_upgrade" ]; then
+		savedefault=true
+	fi
+
+	output_kernel_list
+
+	savedefault="$save_savedefault"
+	dapper_upgrade=""
+	buffer="$savebuffer"
+	title="$savetitle"
+
+	ucf_update_kernels "$menu" "$otherbuffer"
+
+	# all done, now register it
+	ucfr grub $ucf_menu_file
+fi
+
+
+if ! type is_xen_kernel >/dev/null 2>&1; then
+  check_xen_config_for_kernel() {
+    # input is like /boot/vmlinuz-2.6.35-13-virtual
+    # expected config path is /boot/config-2.6.35-13-virtual
+    local kernel="$1" config="" dir="" bname=""
+    dir=${kernel%/*}
+    [ "$dir" = "$kernel" ] && dir="."
+    bname=${kernel##*/}
+    config="$dir/config-${bname#*-}"
+    [ -f "$config" ] || return 1
+    grep -q CONFIG_XEN=y "$config"
+  }
+
+  is_xen_kernel() {
+    # input is like /boot/vmlinuz-2.6.35-13-virtual
+    # return whether or not this kernel is xen bootable.
+    check_xen_config_for_kernel "$1" && return 0
+
+    # get the version string out of it.
+    local ver_flavor="";
+    ver_flavor="${1##*vmlinuz-}"
+
+    case "${ver_flavor}" in
+       *-aws) return 0;;
+       *-ec2) return 0;;
+       *-virtual)
+         # 10.04 LTS through 12.04 LTS -virtual is the EC2/Xen kernel
+         dpkg --compare-versions ${ver_flavor%-virtual} gt 2.6.35-13 && return 0;;
+       *-generic)
+         # Starting with 12.10, -virtual was merged into -generic
+         dpkg --compare-versions ${ver_flavor%-generic} ge 3.4.0-3 && return 0;;
+    esac
+    return 1;
+  }
+fi
+
+for kern in /boot/vmlinuz-*; do
+  case "$kern" in
+    *.signed) continue;;
+  esac
+  is_xen_kernel "${kern}" &&
+    xen_verlist="${xen_verlist} ${kern#/boot/vmlinuz-}"
+done
+xen_verlist=${xen_verlist# }
+
+xenKernels=""
+for ver in ${xen_verlist}; do
+  # ver is a kernel version
+  kern="/boot/vmlinuz-$ver"
+  if [ -r $kern ] ; then
+       newerKernels=""
+       for i in $xenKernels ; do
+                res=$(CompareVersions "$kern" "$i")
+                if [ "$kern" != "" ] && [ "$res" -gt 0 ] ; then
+                        newerKernels="$newerKernels $kern $i"
+                        kern=""
+                else
+                        newerKernels="$newerKernels $i"
+                fi
+        done
+        if [ "$kern" != "" ] ; then
+                newerKernels="$newerKernels $kern"
+        fi
+        xenKernels="$newerKernels"
+    fi
+done
+xenKernels=" ${xenKernels} "
+
+if [ "$indomU" = "detect" ]; then
+    if [ -e /proc/xen/capabilities ] && ! grep -q "control_d" /proc/xen/capabilities; then
+        indomU="true"
+    else
+        indomU="false"
+    fi
+fi
+
+sortedKernels=""
+for kern in $(/bin/ls -1vr /boot | grep -v "dpkg-*" | grep "^vmlinuz-") ; do
+	if `echo "$xenKernels" | grep -q "$kern "` || `echo "$kern" | grep -q "xen"`; then
+		is_xen=1
+	else
+		is_xen=
+	fi
+
+    if [ "$indomU" = "false" ] && [ "$is_xen" ]; then
+        # We aren't running in a Xen domU, skip xen kernels
+        echo "Ignoring Xen kernel on non-Xen host: $kern"
+        continue
+    elif [ "$indomU" = "true" ] && ! [ "$is_xen" ]; then
+        # We are running in a Xen domU, skip non-xen kernels
+        echo "Ignoring non-Xen Kernel on Xen domU host: $kern"
+        continue
+    fi
+    
+    kern="/boot/$kern"
+	newerKernels=""
+	for i in $sortedKernels ; do
+	    res=$(CompareVersions "$kern" "$i")
+	    if [ "$kern" != "" ] && [ "$res" -gt 0 ] ; then
+		newerKernels="$newerKernels $kern $i"
+	 	kern=""
+	    else
+		newerKernels="$newerKernels $i"
+	    fi
+	done
+	if [ "$kern" != "" ] ; then
+	    newerKernels="$newerKernels $kern"
+	fi
+	sortedKernels="$newerKernels"
+done
+
+if test -f "/boot/vmlinuz.old" ; then
+	sortedKernels="/boot/vmlinuz.old $sortedKernels"
+fi
+if test -f "/boot/vmlinuz" ; then
+	sortedKernels="/boot/vmlinuz $sortedKernels"
+fi
+
+# Add our last-good-boot kernel, second in list. We always add it, because
+# it can appear out of nowhere.
+newerKernels=""
+last_good="/boot/last-good-boot/vmlinuz"
+if [ -e "$last_good" ]; then
+	for i in $sortedKernels ; do
+		if [ "$last_good" != "" ]; then
+			newerKernels="$i $last_good"
+			last_good=""
+		else
+			newerKernels="$newerKernels $i"
+		fi
+	done
+	# Shouldn't happen, unless someone removed all the kernels
+	if [ "$last_good" != "" ]; then
+		newerKernels="$newerKernels $last_good"
+	fi
+	sortedKernels="$newerKernels"
+fi
+
+#Finding the value the default line
+use_grub_set_default="false"
+if test "$updatedefaultentry" = "true" ; then
+	defaultEntryNumber=$(sed -ne 's/^[[:blank:]]*default[[:blank:]]*\(.*\).*/\1/p' $menu)
+
+	if [ "$defaultEntryNumber" = "saved" ] ; then
+	    defaultEntryNumber=$(sed 'q' "$grub_dir/default")
+	    use_grub_set_default="true"	   
+	fi
+	
+	if test -n "$defaultEntryNumber"; then	
+		defaultEntryNumberPlusOne=$(expr $defaultEntryNumber \+ 1);
+		defaultEntry=$(grep "^[[:blank:]]*title" $menu | sed -ne "${defaultEntryNumberPlusOne}p" | sed -ne ";s/^[[:blank:]]*title[[:blank:]]*//p")
+		defaultEntry=$(echo $defaultEntry | sed -e "s/[[:blank:]]*$//") # don't trust trailing blanks	
+	else
+		notChangeDefault="yes"
+	fi
+else
+		notChangeDefault="yes"
+fi
+
+output_kernel_list
+
+otherbuffer=$(tempfile)
+cat $buffer > $otherbuffer
+
+ucf_update_kernels "$buffer" "$otherbuffer"
+
+echo -n "Updating $menu ... " >&2
+# Insert the new options into the menu
+if ! grep -q "^$start" $menu ; then
+    cat $buffer >> $menu
+    rm -f $buffer
+else
+    umask 077
+    sed -e "/^$start/,/^$end/{
+	/^$start/r $buffer
+	d
+	}
+	" $menu > $menu.new
+    cat $menu.new > $menu
+    rm -f $buffer $menu.new
+fi
+
+# Function to update the default value
+set_default_value() {
+    if [ "$use_grub_set_default" = "true" ] ; then
+	grub-set-default $1
+    else
+	value="$1"
+	newmenu=$(tempfile)
+	sed -e "s/^[[:blank:]]*default[[:blank:]]*[[:digit:]]*\(.*\)/default         ${value}\1/;b" $menu > $newmenu
+	cat $newmenu > $menu
+	rm -f $newmenu
+	unset newmenu
+    fi
+}
+
+#Updating the default number
+if test -z "$notChangeDefault"; then
+	newDefaultNumberPlusOne=$(grep "^[[:blank:]]*title[[:blank:]]*" $menu | grep -n "${defaultEntry}" | cut -f1 -d ":" | sed -ne "1p")
+	if test -z "$newDefaultNumberPlusOne"; then
+		echo "Previous default entry removed, resetting to 0">&2
+		set_default_value "0"
+	elif test -z "$defaultEntry"; then
+		echo "Value of default value matches no entry, resetting to 0" >&2
+		set_default_value "0"
+	else
+		if test "$newDefaultNumberPlusOne" = "1"; then
+			newDefaultNumber="0"
+		else
+			newDefaultNumber=$(expr $newDefaultNumberPlusOne - 1)
+		fi
+		echo "Updating the default booting kernel">&2
+		set_default_value "$newDefaultNumber"
+	fi
+fi
+
+echo "done" >&2
+echo >&2
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..0f7a600
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,2 @@
+version=3
+https://launchpad.net/cloud-init/+download .*/\+download/cloud-init-(.+)\.tar.gz
diff --git a/tools/Z99-cloud-locale-test.sh b/tools/Z99-cloud-locale-test.sh
index 4978d87..3ffaa2e 100644
--- a/tools/Z99-cloud-locale-test.sh
+++ b/tools/Z99-cloud-locale-test.sh
@@ -11,8 +11,11 @@
 #  of how to fix them.
 
 locale_warn() {
-    local bad_names="" bad_lcs="" key="" val="" var="" vars="" bad_kv=""
-    local w1 w2 w3 w4 remain
+    [ -n "${KSH_VERSION}" ] &&
+        typeset _local="typeset" || local _local="local"
+
+    $_local bad_names="" bad_lcs="" key="" val="" var="" vars="" bad_kv=""
+    $_local w1 w2 w3 w4 remain
 
     # if shell is zsh, act like sh only for this function (-L).
     # The behavior change will not permenently affect user's shell.
@@ -53,8 +56,8 @@ locale_warn() {
     printf " This can affect your user experience significantly, including the\n"
     printf " ability to manage packages. You may install the locales by running:\n\n"
 
-    local bad invalid="" to_gen="" sfile="/usr/share/i18n/SUPPORTED"
-    local pkgs=""
+    $_local bad invalid="" to_gen="" sfile="/usr/share/i18n/SUPPORTED"
+    $_local local pkgs=""
     if [ -e "$sfile" ]; then
         for bad in ${bad_lcs}; do
             grep -q -i "${bad}" "$sfile" &&
@@ -67,7 +70,7 @@ locale_warn() {
     fi
     to_gen=${to_gen# }
 
-    local pkgs=""
+    $_local pkgs=""
     for bad in ${to_gen}; do
         pkgs="${pkgs} language-pack-${bad%%_*}"
     done
diff --git a/tools/Z99-cloudinit-warnings.sh b/tools/Z99-cloudinit-warnings.sh
index 1d41337..3be1584 100644
--- a/tools/Z99-cloudinit-warnings.sh
+++ b/tools/Z99-cloudinit-warnings.sh
@@ -4,9 +4,11 @@
 # Purpose: show user warnings on login.
 
 cloud_init_warnings() {
-    local warning="" idir="/var/lib/cloud/instance" n=0
-    local warndir="$idir/warnings"
-    local ufile="$HOME/.cloud-warnings.skip" sfile="$warndir/.skip"
+    [ -n "${KSH_VERSION}" ] &&
+        typeset _local="typeset" || local _local="local"
+    $_local warning="" idir="/var/lib/cloud/instance" n=0
+    $_local warndir="$idir/warnings"
+    $_local ufile="$HOME/.cloud-warnings.skip" sfile="$warndir/.skip"
     [ -d "$warndir" ] || return 0
     [ ! -f "$ufile" ] || return 0
     [ ! -f "$sfile" ] || return 0

Follow ups