← Back to team overview

cloud-init-dev team mailing list archive

[Merge] ~smoser/cloud-init:cleanup/ci-nocloud-pubkeys-in-metadata into cloud-init:master

 

Scott Moser has proposed merging ~smoser/cloud-init:cleanup/ci-nocloud-pubkeys-in-metadata into cloud-init:master.

Commit message:
citest: In NoCloudKVM provide keys via metadata not userdata.

The NoCloudKVM platform was inserting ssh keys via user-data
rather than through meta-data like it is done on other platforms.
This way we are not forced to change the user-data provided.

Also, provide meta-data including a uuid as the instance-id.


Requested reviews:
  cloud-init commiters (cloud-init-dev)
Related bugs:
  Bug #1728186 in cloud-init (Ubuntu): "AliYun datasource has wrong case in config"
  https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1728186

For more details, see:
https://code.launchpad.net/~smoser/cloud-init/+git/cloud-init/+merge/334780
-- 
Your team cloud-init commiters is requested to review the proposed merge of ~smoser/cloud-init:cleanup/ci-nocloud-pubkeys-in-metadata into cloud-init:master.
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..df79a3e
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,29 @@
+=== 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 ==
+To pull a new upstream snapshot:
+
+ ./debian/new-upstream-snapshot ../trunk
+
+== 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..ea72cf2
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,3368 @@
+cloud-init (17.1-46-g7acc9e68-0ubuntu1~17.10.1) artful-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 09:58:48 -0700
+
+cloud-init (17.1-41-g76243487-0ubuntu1~17.10.1) artful-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:57:03 -0700
+
+cloud-init (17.1-27-geb292c18-0ubuntu1~17.10.1) artful-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 12:56:34 -0600
+
+cloud-init (17.1-25-g17a15f9e-0ubuntu1~17.10.1) artful-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]
+    - schema: Log debug instead of warning when jsonschema is not available.
+      (LP: #1724354)
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Mon, 23 Oct 2017 15:07:35 -0600
+
+cloud-init (17.1-18-gd4f70470-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - simpletable: Fix get_string method to return table-formatted string
+      (LP: #1722566)
+
+ -- Chad Smith <chad.smith@xxxxxxxxxxxxx>  Tue, 10 Oct 2017 13:40:13 -0600
+
+cloud-init (17.1-17-g45d361cb-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - 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] (LP: #1721157)
+    - tests: re-enable tox with nocloud-kvm support [Joshua Powers]
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx>  Thu, 05 Oct 2017 16:15:34 -0500
+
+cloud-init (17.1-13-g7fd04255-0ubuntu1) artful; urgency=medium
+
+  * debian/copyright: dep5 updates, reorganize, add Apache 2.0 license.
+    (LP: #1718681)
+  * debian/control: drop dependency on python3-prettytable
+  * New upstream snapshot.
+    - systemd: remove limit on tasks created by cloud-init-final.service.
+      [Robert Schweikert] (LP: #1717969)
+    - suse: Support addition of zypper repos via cloud-config.
+      [Robert Schweikert] (LP: #1718675)
+    - tests: Combine integration configs and testcases [Joshua Powers]
+    - Azure, CloudStack: Support reading dhcp options from systemd-networkd.
+      [Dimitri John Ledkov] (LP: #1718029)
+    - 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] (LP: #1718681)
+    - tests: remove dependency on shlex [Joshua Powers]
+    - AltCloud: Trust PATH for udevadm and modprobe.
+    - DataSourceOVF: use util.find_devs_with(TYPE=iso9660)
+      [Ryan Harper] (LP: #1718287)
+    - tests: remove a temp file used in bootcmd tests.
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx>  Tue, 03 Oct 2017 10:59:52 -0500
+
+cloud-init (17.1-0ubuntu1) artful; urgency=medium
+
+  * New upstream release.
+    - doc: document GCE datasource. [Arnd Hannemann]
+    - suse: updates to templates to support openSUSE and SLES.
+      [Robert Schweikert] (LP: #1718640)
+    - suse: Copy sysvinit files from redhat with slight changes.
+      [Robert Schweikert] (LP: #1718649)
+    - 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.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 22 Sep 2017 12:21:18 -0400
+
+cloud-init (0.7.9-283-g7eb3460b-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - ec2: Fix maybe_perform_dhcp_discovery to use /var/tmp as a tmpdir
+      [Chad Smith] (LP: #1717627)
+    - Azure: wait longer for SSH pub keys to arrive.
+      [Paul Meyer] (LP: #1717611)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 18 Sep 2017 20:41:53 -0400
+
+cloud-init (0.7.9-281-g10f067d8-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - GCE: Fix usage of user-data. (LP: #1717598)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 18 Sep 2017 17:03:22 -0400
+
+cloud-init (0.7.9-280-ge626966e-0ubuntu1) artful; urgency=medium
+
+  * 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.
+    - cmdline: add collect-logs subcommand. [Chad Smith] (LP: #1607345)
+    - CloudStack: consider dhclient lease files named with a hyphen.
+      (LP: #1717147)
+    - resizefs: Drop check for read-only device file, do not warn on
+      overlayroot. [Chad Smith]
+    - Do not provide systemd-fsck drop-in which could cause ordering cycles.
+      [Balint Reczey] (LP: #1717477)
+    - 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] (LP: #1715738, #1715690)
+    - chef: Add option to pin chef omnibus install version
+      [Ethan Apodaca] (LP: #1462693)
+    - 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] (LP: #1675063)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 15 Sep 2017 16:09:07 -0400
+
+cloud-init (0.7.9-267-g922c3c5c-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - Ec2: only attempt to operate at local mode on known platforms.
+      (LP: #1715128)
+    - Use /run/cloud-init for tempfile operations. (LP: #1707222)
+    - ds-identify: Make OpenStack return maybe on arch other than intel.
+      (LP: #1715241)
+    - tests: mock missed openstack metadata uri network_data.json
+      [Chad Smith] (LP: #1714376)
+    - 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] (LP: #1714117)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 07 Sep 2017 16:59:04 -0400
+
+cloud-init (0.7.9-259-g7e76c57b-0ubuntu1) artful; urgency=medium
+
+  * Disable upstart support, as upstart is no longer shipped in artful.
+    [Dimitri Ledkov]
+  * New upstream snapshot.
+    - 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] (LP: #1639030)
+    - url_helper: fail gracefully if oauthlib is not available
+      [Lars Kellogg-Stedman] (LP: #1713760)
+    - cloud-init analyze: fix issues running under python 2. [Andrew Jorgensen]
+    - Configure logging module to always use UTC time.
+      [Ryan Harper] (LP: #1713158)
+    - 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] (LP: #1712676)
+    - 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] (LP: #1699282, #1710932)
+    - 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ä] (LP: #1700091)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 30 Aug 2017 21:18:05 -0400
+
+cloud-init (0.7.9-243-ge74d775-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - tools: Add tooling for basic cloud-init performance analysis.
+      [Chad Smith] (LP: #1709761)
+    - network: add v2 passthrough and fix parsing v2 config with bonds/bridge
+      params [Ryan Harper] (LP: #1709180)
+    - 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] (LP: #1709772)
+    - cc_ntp: fallback on timesyncd configuration if ntp is not installable
+      [Ryan Harper] (LP: #1686485)
+    - 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] (LP: #1701420)
+    - archlinux: Fix bug with empty dns, do not render 'lo' devices.
+      (LP: #1663045, #1706593)
+    - cloudinit.net: add initialize_network_device function and tests
+      [Chad Smith]
+    - makefile: fix ci-deps-ubuntu target [Chad Smith]
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx>  Mon, 21 Aug 2017 15:09:36 -0500
+
+cloud-init (0.7.9-231-g80bf98b9-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - tests: remove 'yakkety' from releases as it is EOL.
+    - 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] (LP: #1705306)
+    - sysconfig: support subnet type of 'manual'.
+    - Drop rand_str() usage in DNS redirection detection
+      [Bob Aman] (LP: #1088611)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 31 Jul 2017 09:47:34 -0400
+
+cloud-init (0.7.9-221-g7e41b2a7-0ubuntu3) artful; urgency=medium
+
+  * debian/control: replace Depends on ifupdown with 'nplan | ifupdown'.
+    (LP: #1705639)
+  * debian/control: drop versioned dependencies on old packages.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 21 Jul 2017 12:32:33 -0400
+
+cloud-init (0.7.9-221-g7e41b2a7-0ubuntu2) artful; urgency=medium
+
+  * debian/cloud-init.templates: enable Scaleway cloud.
+  * debian/cloud-init.templates: enable Aliyun cloud.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 21 Jul 2017 09:33:39 -0400
+
+cloud-init (0.7.9-221-g7e41b2a7-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - sysconfig: use MACADDR on bonds/bridges to configure mac_address
+      [Ryan Harper] (LP: #1701417)
+    - net: eni route rendering missed ipv6 default route config
+      [Ryan Harper] (LP: #1701097)
+    - sysconfig: enable mtu set per subnet, including ipv6 mtu
+      [Ryan Harper] (LP: #1702513)
+    - sysconfig: handle manual type subnets [Ryan Harper] (LP: #1687725)
+    - sysconfig: fix ipv6 gateway routes [Ryan Harper] (LP: #1694801)
+    - sysconfig: fix rendering of bond, bridge and vlan types.
+      [Ryan Harper] (LP: #1695092)
+    - Templatize systemd unit files for cross distro deltas. [Ryan Harper]
+    - sysconfig: ipv6 and default gateway fixes. [Ryan Harper] (LP: #1704872)
+    - net: fix renaming of nics to support mac addresses written in upper case.
+      (LP: #1705147)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 20 Jul 2017 21:37:12 -0400
+
+cloud-init (0.7.9-212-g865e941f-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - tests: fixes for issues uncovered when moving to python 3.6.
+    - sysconfig: include GATEWAY value if set in subnet 
+      [Ryan Harper] (LP: #1686856)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 19 Jul 2017 07:54:57 -0400
+
+cloud-init (0.7.9-210-ge80517ae-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - Scaleway: add datasource with user and vendor data for Scaleway.
+      [Julien Castets]
+    - Support comments in content read by load_shell_content.
+    - FreeBSD: cloudinit local fail to run during boot [Hongjiang Zhang]
+    - doc: fix disk setup example table_type options [Sandor Zeestraten]
+      (LP: #1703789)
+    - tools: Fix exception handling. [Joonas Kylmälä] (LP: #1701527)
+    - 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]
+      (LP: #1702717)
+    - 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]
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 18 Jul 2017 14:03:33 -0400
+
+cloud-init (0.7.9-199-g4d9f24f5-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - read_dmi_data: always return None when inside a container. (LP: #1701325)
+    - requirements.txt: remove trailing white space.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 29 Jun 2017 18:01:21 -0400
+
+cloud-init (0.7.9-197-gebc9ecbc-0ubuntu1) artful; urgency=medium
+
+  * debian/control: add build dependency python3-jsonschema (LP: #1695318)
+  * New upstream snapshot.
+    - Azure: Add network-config, Refactor net layer to handle duplicate macs.
+      [Ryan Harper]
+    - 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] (LP: #1697815)
+    - FreeBSD: fix cdrom mounting failure if /mnt/cdrom/secure did not exist.
+      [Hongjiang Zhang] (LP: #1696295)
+    - 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] (LP: #1606406)
+    - 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]
+    - systemd: make cloud-final.service run before apt daily services.
+      (LP: #1693361)
+    - selinux: Allow restorecon to be non-fatal. [Ryan Harper] (LP: #1686751)
+    - net: Allow netinfo subprocesses to return 0 or 1.
+      [Ryan Harper] (LP: #1686751)
+    - net: Allow for NetworkManager configuration [Ryan McCabe] (LP: #1693251)
+    - 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] (LP: #1695333)
+    - RHEL/CentOS: Fix default routes for IPv4/IPv6 configuration.
+      [Andreas Karis] (LP: #1696176)
+    - test: Fix pyflakes complaint of unused import.
+      [Joshua Powers] (LP: #1695918)
+    - 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] (LP: #1695318)
+    - azure: remove accidental duplicate line in merge.
+    - azure: identify platform by well known value in chassis asset tag.
+      [Chad Smith] (LP: #1693939)
+    - 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]
+    - net: remove systemd link file writing from eni renderer [Ryan Harper]
+    - AliYun: Enable platform identification and enable by default.
+      [Junjie Wang] (LP: #1638931)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 27 Jun 2017 17:18:24 -0400
+
+cloud-init (0.7.9-153-g16a7302f-0ubuntu1) artful; 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.
+      [Scott Moser] (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)
+    - python2.6: fix unit tests usage of assertNone and format.
+    - test: 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.
+    - cc_ntp: Restructure cc_ntp unit tests. [Chad Smith] (LP: #1692794)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 26 May 2017 15:11:48 -0400
+
+cloud-init (0.7.9-144-g2825a917-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - 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]
+      (LP: #1679817, #1685534, #1685532)
+    - disk_setup: fix several issues with gpt disk partitions. (LP: #1692087)
+    - function spelling & docstring update [Joshua Powers]
+    - Fixing wrong file name regression. [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)
+    - cloudstack: fix 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)
+    - Revert "tools/net-convert: fix argument order for render_network_state"
+    - make deb: Add devscripts dependency for make deb. Cleanup packages/bddeb.
+      [Chad Smith] (LP: #1685935)
+    - tools/net-convert: fix argument order for render_network_state
+      [Ryan Harper] (LP: #1685944)
+    - 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]
+    - Fix name of "uri" key in docs for "cc_apt_configure" module
+      [Felix Dreissig]
+    - tests: Enable artful [Joshua Powers]
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 23 May 2017 17:04:40 -0400
+
+cloud-init (0.7.9-113-g513e99e0-0ubuntu1) artful; urgency=medium
+
+  * 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] (LP: #1592150)
+    - template: Update debian backports template [Joshua Powers] (LP: #1627293)
+    - rsyslog: replace ~ with stop [Joshua Powers] (LP: #1367899)
+    - Doc: add additional RTD examples [Joshua Powers] (LP: #1459604)
+    - 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 resolve.conf configuration.
+      [Jon Grimm] (LP: #1531582)
+    - Fix examples that reference upstream chef repository.
+      [Jon Grimm] (LP: #1678145)
+    - 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]
+    - DigitalOcean: configure all NICs presented in meta-data. [Ben Howard]
+    - Remove (and/or fix) URL shortener references [Jon Grimm] (LP: #1669727)
+    - HACKING.rst: more info on filling out contributors agreement.
+      [Scott Moser]
+    - util: teach write_file about copy_mode option
+      [Lars Kellogg-Stedman] (LP: #1644064)
+    - DigitalOcean: bind resolvers to loopback interface. [Ben Howard]
+    - tests: fix AltCloud tests to not rely on blkid (LP: #1636531)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 25 Apr 2017 16:34:08 -0400
+
+cloud-init (0.7.9-90-g61eb03fe-0ubuntu2) UNRELEASED; urgency=medium
+
+  * debian/update-grub-legacy-ec2: fix early exit failure no /etc/fstab
+    file. (LP: #1682160)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 12 Apr 2017 11:16:33 -0400
+
+cloud-init (0.7.9-90-g61eb03fe-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - OpenStack: add 'dvs' to the list of physical link types. 
+      (LP: #1674946)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 03 Apr 2017 11:10:38 -0400
+
+cloud-init (0.7.9-89-gbf7723e8-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - 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.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 31 Mar 2017 17:02:28 -0400
+
+cloud-init (0.7.9-87-gd23543eb-0ubuntu1) zesty; urgency=medium
+
+  * debian/cloud-init.templates: add Bigstep to list of sources. (LP: #1676460)
+  * New upstream snapshot.
+    - 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.
+      (LP: #1677376) [Steve Langasek]
+    - 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)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 30 Mar 2017 16:46:43 -0400
+
+cloud-init (0.7.9-77-g4a2b2f87-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - Fix filesystem creation when using "partition: auto" [Jonathan Ballet]
+      (LP: #1634678)
+    - ConfigDrive: support reading config drive data from /config-drive for
+      nova-lxd.  (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.
+    - 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)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 24 Mar 2017 16:50:56 -0400
+
+cloud-init (0.7.9-68-gef18b8ac-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - cloudinit.net: add network config v2 parsing and rendering [Ryan Harper]
+    - net: Fix incorrect call to isfile [Joshua Powers] (LP: #1674317)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 20 Mar 2017 16:21:55 -0400
+
+cloud-init (0.7.9-66-g5beecdf8-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - 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>  Fri, 17 Mar 2017 21:41:40 -0400
+
+cloud-init (0.7.9-48-g1c795b9-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - ds-identify: report cleanups for config and exit value. (LP: #1669949)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 06 Mar 2017 14:56:28 -0500
+
+cloud-init (0.7.9-47-gc81ea53-0ubuntu1) zesty; urgency=medium
+
+  * debian/rules: install Z99-cloudinit-warnings.sh to /etc/profile.d
+  * New upstream snapshot.
+    - Support warning if the used datasource is not in ds-identify's list
+      (LP: #1669675)
+    - Z99-cloudinit-warnings: Add profile.d script for showing warnings on
+      login.
+    - Z99-cloud-locale-test.sh: convert tabs to spaces, remove unneccesary
+      execute bit in permissions.
+    - tools/ds-identify: look at cloud.cfg when looking for ec2 strict_id.
+    - tools/ds-identify: fix bug that would mistakingly enable vmware guest
+      customization.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 03 Mar 2017 01:56:19 -0500
+
+cloud-init (0.7.9-38-g83606ae-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - tools/ds-identify: ovf identify vmware guest customization.
+    - Identify Brightbox as an Ec2 datasource user. (LP: #1661693)
+    - DatasourceEc2: add warning message when not on AWS.
+    - ds-identify: add reading of datasource/Ec2/strict_id
+    - tools/ds-identify: add support for 'found' or 'maybe' contributing
+      config.
+    - tools/ds-identify: read the seed directory on Ec2
+    - tools/ds-identify: use quotes in local declarations.
+    - tools/ds-identify: fix documentation of policy setting in a comment.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 24 Feb 2017 22:53:53 -0500
+
+cloud-init (0.7.9-30-gf4e8eb0-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - ds-identify: only run once per boot unless --force is given.
+    - net: correct errors in cloudinit/net/sysconfig.py
+      [Lars Kellogg-Stedman] (LP: #1665441)
+    - ec2_utils: fix MetadataLeafDecoder that returned bytes on empty.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 17 Feb 2017 17:05:47 -0500
+
+cloud-init (0.7.9-26-g1cd8cfa-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - apply the runtime configuration written by ds-identify.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 14 Feb 2017 14:45:25 -0500
+
+cloud-init (0.7.9-25-g65529b6-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - ds-identify: fix checking for filesystem label (LP: #1663735)
+    - ds-identify: read ds=nocloud properly (LP: #1663723)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 10 Feb 2017 15:25:17 -0500
+
+cloud-init (0.7.9-23-g0df21b6-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - support nova-lxd by reading platform from environment of pid 1.
+      (LP: #1661797)
+    - ds-identify: change aarch64 to use the default for non-dmi systems.
+      that default is to enable cloud-init even if no datasources are
+      explicitly found.
+    - Remove style checking during build and add latest style checks to tox
+      [Joshua Powers] (LP: #1652329)
+    - code-style: make master pass pycodestyle (2.3.1) cleanly.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 09 Feb 2017 13:18:47 -0500
+
+cloud-init (0.7.9-19-ge987092-0ubuntu2) zesty; urgency=medium
+
+  * debian/update-grub-legacy-ec2: fix shell syntax error. (LP: #1662221)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 06 Feb 2017 11:14:11 -0500
+
+cloud-init (0.7.9-19-ge987092-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - manual_cache_clean: When manually cleaning touch a file in instance dir.
+    - Add tools/ds-identify to identify datasources available.
+    - Fix small typo and change iso-filename for consistency [Robin Naundorf]
+    - Fix eni rendering of multiple IPs per interface
+      [Ryan Harper] (LP: #1657940)
+    - 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
+    - Add 3 ecdsa-sha2-nistp* ssh key types now that they are standardized
+      [Lars Kellogg-Stedman] (LP: #1658174)
+    - reset httppretty for each test [Lars Kellogg-Stedman] (LP: #1658200)
+    - build: fix running Make on a branch with tags other than master
+    - EC2: Do not cache security credentials on disk
+      [Andrew Jorgensen] (LP: #1638312)
+    - doc: Fix typos and clarify some aspects of the part-handler
+      [Erik M. Bray]
+    - doc: add some documentation on OpenStack datasource.
+    - OpenStack: Use timeout and retries from config in get_data.
+      [Lars Kellogg-Stedman] (LP: #1657130)
+    - Fixed Misc issues related to VMware customization. [Sankar Tanguturi]
+    - Fix minor docs typo: perserve > preserve [Jeremy Bicha]
+    - Use dnf instead of yum when available [Lars Kellogg-Stedman]
+      (LP: #1647118)
+    - validate-yaml: use python rather than explicitly python3
+    - Get early logging logged, including failures of cmdline url.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 03 Feb 2017 21:54:39 -0500
+
+cloud-init (0.7.9-0ubuntu2) zesty; 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).
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 20 Jan 2017 10:01:42 -0500
+
+cloud-init (0.7.9-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - release 0.7.9
+    - doc: adjust headers in tests documentation for consistency.
+    - 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)
+    - 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.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 23 Dec 2016 12:54:50 -0500
+
+cloud-init (0.7.8-68-gca3ae67-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - user-groups: fix bug when groups was provided as string and had spaces
+      (LP: #1354694)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 19 Dec 2016 12:35:13 -0500
+
+cloud-init (0.7.8-67-gc9c9197-0ubuntu1) zesty; urgency=medium
+
+  * debian/cherry-pick: add utility for cherry picking commits from upstream
+    into patches in debian/patches.
+  * New upstream snapshot.
+    - mounts: use mount -a again to accomplish mounts (LP: #1647708)
+    - CloudSigma: Fix bug where datasource was not loaded in local search. (LP: #1648380)
+    - when adding a user, strip whitespace from group list (LP: #1354694)
+    - fix decoding of utf-8 chars in yaml test
+    - Replace usage of sys_netdev_info with read_sys_net (LP: #1625766)
+    - fix problems found in python2.6 test.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Sun, 11 Dec 2016 21:22:57 -0500
+
+cloud-init (0.7.8-61-g2d2ec70-0ubuntu1) zesty; urgency=medium
+
+  * debian/grub-legacy-ec2.install: install post(inst|rm) files correctly.
+    [Simon Deziel] (LP: #1581416)
+  * New upstream snapshot.
+    - OpenStack: extend physical types to include hyperv, hw_veb, vhost_user. [Scott Moser] (LP: #1642679)
+    - tests: fix assumptions that expected no eth0 in system. [Scott Moser] (LP: #1644043)
+    - net/cmdline: Consider ip= or ip6= on command line not only ip= [Scott Moser] (LP: #1639930)
+    - Just use file logging by default [Joshua Harlow] (LP: #1643990)
+    - Improve formatting for ProcessExecutionError [Wesley Wiedenmeier]
+    - flake8: fix trailing white space [Scott Moser]
+    - Doc: various documentation fixes [Sean Bright]
+    - cloudinit/config/cc_rh_subscription.py: Remove repos before adding [Brent Baude]
+    - packages/redhat: fix rpm spec file. [Scott Moser]
+    - main: set TZ in environment if not already set. [Ryan Harper]
+    - Azure: No longer rely on walinux agent. [Scott Moser] (LP: #1538522)
+    - disk_setup: Use sectors as unit when formatting MBR disks with sfdisk. [Daniel Watkins] (LP: #1460715)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 28 Nov 2016 16:08:09 -0500
+
+cloud-init (0.7.8-49-g9e904bb-0ubuntu1) zesty; 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.
+      Use that on Azure to handle re-formatting of ephemeral disk.
+      (LP: #1611074)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 18 Nov 2016 16:37:34 -0500
+
+cloud-init (0.7.8-48-g9d826b8-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - systemd: cloud-init-local use RequiresMountsFor=/var/lib/cloud
+      (LP: #1642062)
+    - systemd: cloud-init remove After=systemd-networkd-wait-online
+    - systemd: cloud-init-local change Before basic to sysinit
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 15 Nov 2016 17:21:34 -0500
+
+cloud-init (0.7.8-45-g584b843-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - pep8: fix style errors reported by pycodestyle 2.1.0 [Scott Moser]
+    - systemd: drop both Wants and After local-fs.target [Scott Moser]
+    - systemd: networking service adjustments. (LP: #1636912)
+    - systemd: replace Before=basic.target, dbus.target with sysinit.target
+      (LP: #1629797)
+    - doc: Add documentation on stages of boot.
+    - doc: make the RST files consistently formated and other improvements.
+    - Ec2: fix syntax and tox in previous commit.
+    - Ec2: protect against non-dictionary in block-device-mapping.
+    - doc: fixed example to not overwrite /etc/hosts [Chris Glass]
+    - Doc: fix spelling / typos in ca_certs and scripts_vendor.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 10 Nov 2016 21:04:09 -0500
+
+cloud-init (0.7.8-35-gc24187e-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - pyflakes: fix issue with pyflakes 1.3 found in ubuntu zesty-proposed.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 07 Nov 2016 13:31:30 -0500
+
+cloud-init (0.7.8-34-ga1cdebd-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - net/cmdline: Further adjustments to ipv6 support [LaMont Jones]
+     (LP: #1621615)
+    - Add coverage dependency to bddeb to fix package build.
+    - doc: improve HACKING.rst file
+    - dmidecode: Allow dmidecode to be used on aarch64 [Robert Schweikert]
+    - AliYun: Add new datasource for Ali-Cloud ECS [kaihuan.pkh]
+    - Add coverage collection to tox unit tests. [Joshua Powers]
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 04 Nov 2016 11:03:46 -0400
+
+cloud-init (0.7.8-28-gf7a5756-0ubuntu1) zesty; urgency=medium
+
+  * New upstream snapshot.
+    - cc_users_groups: fix remaing call to ds.normalize_user_groups
+      [Ryan Harper]
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 26 Oct 2016 09:06:03 -0400
+
+cloud-init (0.7.8-27-g29348af-0ubuntu1) zesty; urgency=medium
+
+  * debian/cloud-init.templates: enable DigitalOcean by default [Ben Howard]
+  * New upstream snapshot.
+    - disk-config: udev settle after partitioning in gpt format. (LP: #1626243)
+    - unittests: do not read system /etc/cloud/cloud.cfg.d (LP: #1635350)
+    - Add documentation for logging features. [Wesley Wiedenmeier]
+    - Add support for snap create-user on Ubuntu Core images. [Ryan Harper]
+      (LP: #1619393)
+    - Fix sshd restarts for rhel distros. [Jim Gorz] (LP: #1470433)
+    - OpenNebula: replace 'ip' parsing with cloudinit.net usage.
+    - Fix python2.6 things found running in centos 6.
+    - Move user/group functions to new ug_util file [Joshua Harlow]
+    - DigitalOcean: enable usage of data source by default.
+    - update Gentoo initscripts to run in the correct order [Matthew Thode]
+    - MAAS: improve the main of datasource to look at kernel cmdline config.
+    - tests: silence the Cheetah UserWarning about NameMapper C version.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 25 Oct 2016 17:06:59 -0400
+
+cloud-init (0.7.8-15-g6e45ffb-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - systemd: Run cloud-init.service Before dbus.socket not dbus.target
+      [Daniel Watkins] (LP: #1629797).
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 07 Oct 2016 12:41:38 -0400
+
+cloud-init (0.7.8-14-g94fd35e-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - systemd: run cloud-init.service Before dbus.service (LP: #1629797)
+    - unittests: fix use of mock 2.0 'assert_called' when running make check
+      [Ryan Harper]
+    - Improve module documentation and doc cleanup.  [Wesley Wiedenmeier]
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 04 Oct 2016 16:46:05 -0400
+
+cloud-init (0.7.8-11-g02f6c4b-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - lxd: Update network config for LXD 2.3 [Stéphane Graber]
+    - DigitalOcean: use meta-data for network configruation [Ben Howard]
+    - ntp: move to run after apt configuration (LP: #1628337)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 29 Sep 2016 14:30:15 -0400
+
+cloud-init (0.7.8-8-g0439d8a-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - Decode unicode types in decode_binary [Robert Schweikert]
+    - systemd: Ensure that cloud-init-local happens before NetworkManager
+    - Allow ephemeral drive to be unpartitioned [Paul Meyer]
+    - subp: add 'update_env' argument
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 23 Sep 2016 16:51:27 -0400
+
+cloud-init (0.7.8-4-g970dbd1-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - net: support reading ipv6 dhcp config from initramfs [LaMont Jones]
+      (LP: #1621615)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 21 Sep 2016 11:56:23 -0400
+
+cloud-init (0.7.8-3-g80f5ec4-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - Adjust mounts and disk configuration for systemd. (LP: #1611074)
+    - dmidecode: run dmidecode only on i?86 or x86_64 arch. [Robert Schweikert]
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 20 Sep 2016 13:59:20 -0400
+
+cloud-init (0.7.8-1-g3705bb5-0ubuntu1) yakkety; 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:47:11 -0400
+
+cloud-init (0.7.7-31-g65ace7b-0ubuntu1) yakkety; urgency=medium
+
+  * 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)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 12 Sep 2016 14:56:42 -0400
+
+cloud-init (0.7.7-28-g34a26f7-0ubuntu2) yakkety; urgency=medium
+
+  * debian/control: fix missing dependency on python3-serial,
+    and make SmartOS datasource work.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 09 Sep 2016 21:22:13 -0400
+
+cloud-init (0.7.7-28-g34a26f7-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - systemd: Better support package and upgrade.
+      (LP: #1576692, #1621336)
+    - tests: cleanup tempdirs in apt_source tests
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 09 Sep 2016 16:01:13 -0400
+
+cloud-init (0.7.7-26-g058dd75-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - 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.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 08 Sep 2016 09:36:52 -0400
+
+cloud-init (0.7.7-22-g763f403-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - 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)
+  * debian/control, debian/README.source: update to reference git.
+  * debian/new-upstream-snapshot: small fixes.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 26 Aug 2016 15:22:13 -0400
+
+cloud-init (0.7.7-17-g40a2f62-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - 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]
+  * debian/control: drop very old meta-package ec2-init
+  * debian/rules, debian/cloud-init.install: remove install file
+    and use --destdir=debian/cloud-init. (LP: #1615745)
+  * debian/dirs: remove obsolete / unused file.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 22 Aug 2016 17:02:56 -0400
+
+cloud-init (0.7.7-13-g41271bd-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - 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]
+  * debian/new-upstream-snapshot: update to use git and packaging branches.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 18 Aug 2016 17:11:51 -0400
+
+cloud-init (0.7.7-10-gbc2c326-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot:
+    - DigitalOcean: use the v1.json endpoint
+    - MAAS: add vendor-data support (LP: #1612313)
+    - Upgrade the minimum configobj package to one new enough to work
+    - 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
+    - add ntp config module
+    - SmartOS: more improvements for network configuration
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 12 Aug 2016 17:18:01 -0400
+
+cloud-init (0.7.7-0ubuntu1) yakkety; urgency=medium
+
+  * New Upstream release.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 10 Aug 2016 01:48:32 -0400
+
+cloud-init (0.7.7~git1029-gb56d7a1-0ubuntu1) yakkety; urgency=medium
+
+  * New Upstream snapshot.
+    - mcollective: add tests, cleanups and bug fix when no config in /etc.
+    - Move upstream revision control to git.  [Lars Kellogg-Stedman]
+    - Adjust unit tests to address newer requests have strong type validation.
+  * debian/control: update Standards-Version to 3.9.8
+  * debian/rules: fix PYVER in environment to sync with upstream changes.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Tue, 09 Aug 2016 01:16:28 -0400
+
+cloud-init (0.7.7~bzr1256-0ubuntu1) yakkety; 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>  Thu, 14 Jul 2016 14:54:05 -0400
+
+cloud-init (0.7.7~bzr1246-0ubuntu1) yakkety; 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:28:39 -0400
+
+cloud-init (0.7.7~bzr1245-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - user_data: fix error when user-data is not utf-8 decodable (LP: #1532072)
+    - write_files: if no permissions are provided, use the default without
+      logging a warning.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Wed, 22 Jun 2016 15:11:33 -0400
+
+cloud-init (0.7.7~bzr1243-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - do not render systemd.link files (LP: #1594546)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Mon, 20 Jun 2016 17:14:34 -0400
+
+cloud-init (0.7.7~bzr1242-0ubuntu1) yakkety; urgency=medium
+
+  * d/control: Build-Depends on python3-unittest2
+  * New upstream snapshot.
+    - DataSourceNoCloud: fix stack trace on reboot, default to dsmode=net 
+      (LP: #1592505)
+    - support network rendering to sysconfig (for centos and RHEL)
+    - fix errors reported by pylint
+    - move 'main' into cloudinit.cmd for easier testing. use
+      setuptools entry_points for creating executable.
+    - Remove trailing dot from GCE metadata URL (LP: #1581200)
+    - Change missing Cheetah log warning to debug [Andrew Jorgensen]
+    - make networking config provided in system config override datasource.
+      (LP: #1590104)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Thu, 16 Jun 2016 00:07:12 -0400
+
+cloud-init (0.7.7~bzr1227-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - fix one more unit test to run inside buildd.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Sat, 04 Jun 2016 20:55:07 -0400
+
+cloud-init (0.7.7~bzr1226-0ubuntu1) yakkety; urgency=medium
+
+  * New upstream snapshot.
+    - fix unit tests to run inside buildd.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 03 Jun 2016 23:01:16 -0400
+
+cloud-init (0.7.7~bzr1225-0ubuntu1) yakkety; urgency=medium
+
+  * debian/cloud-init.templates fix capitalisation in template so
+    dpkg-reconfigure works to select OpenStack. (LP: #1575727)
+  * New upstream snapshot.
+    - improve network configuration.  Support DreamCompute, RDO openstack
+      and SmartOS networking
+    - remove blocking udev rules (LP: #1577844, LP: #1571761)
+    - support for renaming devices in a container (LP: #1579130).
+    - Apt sources configuration improvements (LP: #1574113)
+    - kernel command line: override all local settings (LP: #1582323)
+    - fix timestamp in reporting events.
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 03 Jun 2016 16:38:55 -0400
+
+cloud-init (0.7.7~bzr1215-0ubuntu1) yakkety; urgency=medium
+
+  * debian/new-upstream-snapshot: minor change supporting revision
+    passed in as an argument.
+  * New upstream snapshot.
+    - Paths: fix instance path if datasource's id has a '/'. (LP: #1575938)
+    - Config Drive: fix check_instance_id signature.  (LP: #1575055)
+    - cloudstack: Only use DHCPv4 lease files as a datasource (LP: #1576273)
+
+ -- Scott Moser <smoser@xxxxxxxxxx>  Fri, 29 Apr 2016 12:37:48 -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.maintscript b/debian/cloud-init.maintscript
new file mode 100644
index 0000000..93aff81
--- /dev/null
+++ b/debian/cloud-init.maintscript
@@ -0,0 +1,8 @@
+rm_conffile /etc/init/cloud-config.conf 0.7.9-243-ge74d775-0ubuntu2~
+rm_conffile /etc/init/cloud-final.conf 0.7.9-243-ge74d775-0ubuntu2~
+rm_conffile /etc/init/cloud-init-blocknet.conf 0.7.9-243-ge74d775-0ubuntu2~
+rm_conffile /etc/init/cloud-init-container.conf 0.7.9-243-ge74d775-0ubuntu2~
+rm_conffile /etc/init/cloud-init-local.conf 0.7.9-243-ge74d775-0ubuntu2~
+rm_conffile /etc/init/cloud-init-nonet.conf 0.7.9-243-ge74d775-0ubuntu2~
+rm_conffile /etc/init/cloud-init.conf 0.7.9-243-ge74d775-0ubuntu2~
+rm_conffile /etc/init/cloud-log-shutdown.conf 0.7.9-243-ge74d775-0ubuntu2~
diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst
new file mode 100644
index 0000000..f88d1c5
--- /dev/null
+++ b/debian/cloud-init.postinst
@@ -0,0 +1,336 @@
+#!/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" || :
+}
+
+cleanup_ureadahead() {
+    local oldver="$1" last_bad_ver="0.7.9-243-ge74d775-0ubuntu2~"
+    dpkg --compare-versions "$oldver" le "$last_bad_ver" || return 0
+    dpkg-divert --package cloud-init --remove --rename --divert \
+        /etc/init/ureadahead.conf.disabled /etc/init/ureadahead.conf
+}
+
+if [ "$1" = "configure" ]; then
+   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"
+
+   cleanup_ureadahead "$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..4e20db1
--- /dev/null
+++ b/debian/cloud-init.postrm
@@ -0,0 +1,15 @@
+#!/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)
+      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..3f46d7b
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,61 @@
+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-jsonschema,
+               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.8
+
+Package: cloud-init
+Architecture: all
+Depends: cloud-guest-utils | cloud-utils,
+         nplan | ifupdown,
+         procps,
+         python3,
+         python3-requests,
+         python3-serial,
+         ${misc:Depends},
+         ${python3:Depends}
+Recommends: eatmydata, gdisk, software-properties-common
+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 | cdebconf,
+         ucf,
+         util-linux,
+         ${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.
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/new-upstream-snapshot b/debian/new-upstream-snapshot
new file mode 100755
index 0000000..6ad8af6
--- /dev/null
+++ b/debian/new-upstream-snapshot
@@ -0,0 +1,170 @@
+#!/bin/sh
+
+TEMP_D=""
+CR='
+'
+error() { echo "$@" 1>&2; }
+fail() { [ $# -eq 0 ] || error "$@"; exit 1; }
+Usage() {
+cat <<EOF
+${0##*/} [branch]
+    update current branch with trunk branch.
+    branch defaults to 'master'
+EOF
+}
+
+print_commit() {
+    local subject="$1" author="$2" bugs="$3" aname="" buf="" abugs=""
+    local indent="    - " indent2="      " ll=79
+    aname=${author% <*}
+    [ "${aname}" = "Scott Moser" ] && aname=""
+    abugs="${aname:+ [${aname}]}${bugs:+ (LP: ${bugs})}"
+    if [ $((${#subject}+${#abugs})) -le $(($ll-${#indent})) ]; then
+        echo "${indent}${subject}${abugs}"
+    elif [ ${#subject} -ge $(($ll-${#indent})) ]; then
+        echo "${subject}${abugs}" |
+            fmt --width=$(($ll-${#indent})) |
+            sed -e "1s/^/${indent}/; 1n;" \
+                -e 's/^[ ]*//' \
+                -e '/^[ ]*$/d' -e "s/^/$indent2/" -e 's/[ ]\+$//'
+
+    else
+        ( echo "${subject}"; echo "${abugs}" ) |
+            fmt --width=$(($ll-${#indent})) |
+            sed -e "1s/^/${indent}/; 1n;" \
+                -e 's/^[ ]*//' \
+                -e '/^[ ]*$/d' -e "s/^/$indent2/" -e 's/[ ]\+$//'
+    fi
+}
+
+git_log_to_dch() {
+    local line="" commit="" lcommit="" bugs=""
+    while :; do
+        read line || break
+        case "$line" in
+            commit\ *)
+                if [ -n "$commit" ]; then
+                    print_commit "$subject" "$author" "$bugs"
+                fi
+                commit=${line#*: }
+                bugs=""
+                author=""
+                subject=""
+                ;;
+            Author:*) author="${line#Author: }";;
+            LP:*) bugs="${bugs:+${bugs}, }${line#*: }";;
+            "") [ -z "$subject" ] && read subject;;
+        esac
+    done
+    if [ -n "$commit" ]; then
+        print_commit "$subject" "$author" "$bugs"
+    fi
+}
+cleanup() {
+    [ ! -d "${TEMP_D}" ] || rm -Rf "${TEMP_D}"
+}
+
+from_ref=${1:-"master"}
+cur_branch=$(git rev-parse --abbrev-ref HEAD) ||
+   fail "failed to get current branch"
+
+case "$cur_branch" in
+    ubuntu/*) :;;
+    *) fail "You are on branch '$cur_branch', expect to be on ubuntu/*";;
+esac
+
+TEMP_D=$(mktemp -d) || fail "failed mktemp"
+trap cleanup EXIT
+
+prev_pkg_ver=$(dpkg-parsechangelog --show-field Version) ||
+   fail "failed reading package version"
+pkg_name=$(dpkg-parsechangelog --show-field Source) ||
+   fail "failed to read Source from changelog"
+
+# turn 0.7.7-10-gbc2c326-0ubuntu1 into 'bc2c326'
+t=${prev_pkg_ver%-*}
+prev_pkg_hash=${t##*-g}
+
+new_pkg_debian="0ubuntu1"
+new_upstream_ver=$(git describe --abbrev=8 "${from_ref}")
+new_pkg_ver="${new_upstream_ver}-${new_pkg_debian}"
+
+prev_upstream_ver=${prev_pkg_ver%-*}
+if [ "${prev_upstream_ver}" = "${new_upstream_ver}" ]; then
+    echo "nothing to commit.  '$from_ref' is at ${new_upstream_ver}."
+    exit 0
+fi
+
+dpseries="debian/patches/series"
+if [ -e $dpseries ]; then
+   drops=""
+   while read bname extra; do
+      case "$bname" in
+         cpick-*)
+            commit=${bname#cpick-}
+            commit=${commit%%-*}
+            echo "bname=$bname commit=${commit}" 1>&2
+            if git merge-base --is-ancestor "$commit" "$from_ref"; then
+               drops="${drops} debian/patches/$bname"
+            fi
+            ;;
+         *) echo "$bname${extra:+ ${extra}}";;
+      esac
+   done < $dpseries > "${TEMP_D}/series"
+   drops=${drops# }
+   if [ -n "$drops" ]; then
+      cp "${TEMP_D}/series" "$dpseries" ||
+         fail "failed copying to $dpseries"
+      if [ ! -s $dpseries ]; then
+         git rm --force "$dpseries" ||
+            fail "failed removing empty $dpseries: git rm $dpseries"
+      fi
+      msg="drop cherry picks before merge from ${from_ref} at $new_upstream_ver"
+      msg="$msg${CR}${CR}drop the following cherry picks:"
+      for file in $drops; do
+         git rm "$file" || fail "failed to git rm $file"
+         msg="${msg}$CR  $file"
+      done
+      git commit -m "$msg" "$dpseries" $drops
+   fi
+fi
+
+git merge "${from_ref}" -m "merge from $from_ref at $new_upstream_ver" ||
+    fail "failed: git merge ${from_ref} -m 'merge from $from_ref ..'"
+clog="${TEMP_D}/changelog"
+gitlog="${TEMP_D}/gitlog"
+
+git log --first-parent --no-decorate --format=full \
+   "${prev_pkg_hash}..${from_ref}" >  "$gitlog" ||
+   fail "failed git log ${prev_pkg_hash}..${from_ref}"
+
+cat >> "$clog" <<EOF
+$pkg_name ($new_pkg_ver) UNRELEASED; urgency=medium
+
+  * New upstream snapshot.
+EOF
+git_log_to_dch < "$gitlog" >> "$clog" ||
+   fail "failed git_log_to_dch"
+cat >> "$clog" <<EOF
+
+ -- ${DEBFULLNAME} <$DEBEMAIL>  $(date -R)
+
+EOF
+
+cat "$clog" "debian/changelog" > "$TEMP_D/newlog" &&
+   cp "$TEMP_D/newlog" "debian/changelog" ||
+   fail "failed replacing debian/changelog"
+
+dch -e || fail "dch -e exited $?"
+
+git diff
+
+echo -n "Commit this change? (Y/n): "
+read answer || fail "failed to read answer"
+case "$answer" in
+   n|[Nn][oO]) exit 1;;
+esac
+
+msg="update changelog (new upstream snapshot $new_upstream_ver)."
+git commit -m "$msg" debian/changelog ||
+   fail "failed to commit '$msg'"
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..3e03fed
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,23 @@
+#!/usr/bin/make -f
+INIT_SYSTEM ?= systemd
+export PYBUILD_INSTALL_ARGS=--init-system=$(INIT_SYSTEM)
+
+%:
+	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
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..fb44b6e
--- /dev/null
+++ b/debian/update-grub-legacy-ec2
@@ -0,0 +1,1619 @@
+#!/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
+       *-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/tests/cloud_tests/instances/nocloudkvm.py b/tests/cloud_tests/instances/nocloudkvm.py
index bc06a79..a061e31 100644
--- a/tests/cloud_tests/instances/nocloudkvm.py
+++ b/tests/cloud_tests/instances/nocloudkvm.py
@@ -2,12 +2,15 @@
 
 """Base NoCloud KVM instance."""
 
+import copy
 import os
 import paramiko
 import socket
 import subprocess
 import time
+import uuid
 
+from cloudinit.atomic_helper import write_json
 from cloudinit import util as c_util
 from tests.cloud_tests.instances import base
 from tests.cloud_tests import util
@@ -37,14 +40,38 @@ class NoCloudKVMInstance(base.Instance):
         @param features: dictionary of supported feature flags
         """
         self.user_data = user_data
-        self.meta_data = meta_data
-        self.ssh_key_file = os.path.join(platform.config['data_dir'],
-                                         platform.config['private_key'])
+        if meta_data:
+            meta_data = copy.deepcopy(meta_data)
+        else:
+            meta_data = {}
+
+        if 'instance-id' in meta_data:
+            iid = meta_data['instance-id']
+        else:
+            iid = str(uuid.uuid1())
+            meta_data['instance-id'] = iid
+
+        self.instance_id = iid
+        self.ssh_key_file = os.path.join(
+            platform.config['data_dir'], platform.config['private_key'])
+        self.ssh_pubkey_file = os.path.join(
+            platform.config['data_dir'], platform.config['public_key'])
+
+        self.ssh_pubkey = None
+        if self.ssh_pubkey_file:
+            with open(self.ssh_pubkey_file, "r") as fp:
+                self.ssh_pubkey = fp.read()
+
+            if not meta_data.get('public-keys'):
+                meta_data['public-keys'] = []
+            meta_data['public-keys'].append(self.ssh_pubkey)
+
         self.ssh_port = None
         self.pid = None
         self.pid_file = None
         self.console_file = None
         self.disk = image_path
+        self.meta_data = meta_data
 
         super(NoCloudKVMInstance, self).__init__(
             platform, name, properties, config, features)
@@ -78,11 +105,15 @@ class NoCloudKVMInstance(base.Instance):
         """Generate nocloud seed from user-data"""
         seed_file = os.path.join(tmpdir, '%s_seed.img' % self.name)
         user_data_file = os.path.join(tmpdir, '%s_user_data' % self.name)
+        meta_data_file = os.path.join(tmpdir, '%s_meta_data' % self.name)
 
         with open(user_data_file, "w") as ud_file:
             ud_file.write(self.user_data)
 
-        c_util.subp(['cloud-localds', seed_file, user_data_file])
+        # meta-data can be yaml, but more easily pretty printed with json
+        write_json(meta_data_file, self.meta_data)
+        c_util.subp(['cloud-localds', seed_file, user_data_file,
+                     meta_data_file])
 
         return seed_file
 
diff --git a/tests/cloud_tests/snapshots/nocloudkvm.py b/tests/cloud_tests/snapshots/nocloudkvm.py
index 21e908d..dee8f8f 100644
--- a/tests/cloud_tests/snapshots/nocloudkvm.py
+++ b/tests/cloud_tests/snapshots/nocloudkvm.py
@@ -41,10 +41,6 @@ class NoCloudKVMSnapshot(base.Snapshot):
         @param use_desc: description of snapshot instance use
         @return_value: an Instance
         """
-        key_file = os.path.join(self.platform.config['data_dir'],
-                                self.platform.config['public_key'])
-        user_data = self.inject_ssh_key(user_data, key_file)
-
         instance = self.platform.create_instance(
             self.properties, self.config, self.features,
             self._image_path, image_desc=str(self), use_desc=use_desc,
@@ -55,22 +51,6 @@ class NoCloudKVMSnapshot(base.Snapshot):
 
         return instance
 
-    def inject_ssh_key(self, user_data, key_file):
-        """Inject the authorized key into the user_data."""
-        with open(key_file) as f:
-            value = f.read()
-
-        key = 'ssh_authorized_keys:'
-        value = '  - %s' % value.strip()
-        user_data = user_data.split('\n')
-        if key in user_data:
-            user_data.insert(user_data.index(key) + 1, '%s' % value)
-        else:
-            user_data.insert(-1, '%s' % key)
-            user_data.insert(-1, '%s' % value)
-
-        return '\n'.join(user_data)
-
     def destroy(self):
         """Clean up snapshot data."""
         shutil.rmtree(self._workd)

Follow ups