cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #03882
[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