From 2188dc71be86b6c22d2c5522fb7ce41dee566903 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 5 Aug 2016 16:57:38 -0400 Subject: [PATCH 0001/1174] add debian directory from current yakkety --- debian/README.source | 43 + debian/changelog | 2301 ++++++++++++++++++++ debian/cherry-pick-rev | 45 + debian/cloud-init.config | 78 + debian/cloud-init.install | 11 + debian/cloud-init.lintian-overrides | 3 + debian/cloud-init.postinst | 264 +++ debian/cloud-init.postrm | 17 + debian/cloud-init.preinst | 254 +++ debian/cloud-init.prerm | 6 + debian/cloud-init.templates | 12 + debian/compat | 1 + debian/control | 67 + debian/copyright | 51 + debian/dirs | 5 + debian/grub-legacy-ec2.install | 4 + debian/grub-legacy-ec2.lintian-overrides | 6 + debian/grub-legacy-ec2.postinst | 10 + debian/grub-legacy-ec2.postrm | 17 + debian/grub-legacy-ec2.preinst | 9 + debian/grub-legacy-ec2.templates | 9 + debian/grub-set-default | 38 + debian/grub-set-default-legacy-ec2 | 141 ++ debian/kernel/postinst.d/x-grub-legacy-ec2 | 18 + debian/kernel/postrm.d/x-grub-legacy-ec2 | 18 + debian/new-upstream-snapshot | 69 + debian/po/POTFILES.in | 1 + debian/po/ca.po | 80 + debian/po/cs.po | 89 + debian/po/da.po | 86 + debian/po/de.po | 92 + debian/po/es.po | 105 + debian/po/eu.po | 83 + debian/po/fi.po | 79 + debian/po/fr.po | 78 + debian/po/gl.po | 80 + debian/po/it.po | 81 + debian/po/ja.po | 90 + debian/po/nl.po | 95 + debian/po/pl.po | 100 + debian/po/pt.po | 82 + debian/po/pt_BR.po | 89 + debian/po/ru.po | 85 + debian/po/sv.po | 82 + debian/po/templates.pot | 80 + debian/po/vi.po | 91 + debian/rules | 16 + debian/source/format | 1 + debian/update-grub-legacy-ec2 | 1598 ++++++++++++++ debian/watch | 2 + 50 files changed, 6762 insertions(+) create mode 100644 debian/README.source create mode 100644 debian/changelog create mode 100755 debian/cherry-pick-rev create mode 100644 debian/cloud-init.config create mode 100644 debian/cloud-init.install create mode 100644 debian/cloud-init.lintian-overrides create mode 100644 debian/cloud-init.postinst create mode 100644 debian/cloud-init.postrm create mode 100644 debian/cloud-init.preinst create mode 100644 debian/cloud-init.prerm create mode 100644 debian/cloud-init.templates create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/dirs create mode 100644 debian/grub-legacy-ec2.install create mode 100644 debian/grub-legacy-ec2.lintian-overrides create mode 100644 debian/grub-legacy-ec2.postinst create mode 100644 debian/grub-legacy-ec2.postrm create mode 100644 debian/grub-legacy-ec2.preinst create mode 100644 debian/grub-legacy-ec2.templates create mode 100755 debian/grub-set-default create mode 100644 debian/grub-set-default-legacy-ec2 create mode 100755 debian/kernel/postinst.d/x-grub-legacy-ec2 create mode 100755 debian/kernel/postrm.d/x-grub-legacy-ec2 create mode 100755 debian/new-upstream-snapshot create mode 100644 debian/po/POTFILES.in create mode 100644 debian/po/ca.po create mode 100644 debian/po/cs.po create mode 100644 debian/po/da.po create mode 100644 debian/po/de.po create mode 100644 debian/po/es.po create mode 100644 debian/po/eu.po create mode 100644 debian/po/fi.po create mode 100644 debian/po/fr.po create mode 100644 debian/po/gl.po create mode 100644 debian/po/it.po create mode 100644 debian/po/ja.po create mode 100644 debian/po/nl.po create mode 100644 debian/po/pl.po create mode 100644 debian/po/pt.po create mode 100644 debian/po/pt_BR.po create mode 100644 debian/po/ru.po create mode 100644 debian/po/sv.po create mode 100644 debian/po/templates.pot create mode 100644 debian/po/vi.po create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100755 debian/update-grub-legacy-ec2 create mode 100644 debian/watch diff --git a/debian/README.source b/debian/README.source new file mode 100644 index 00000000000..5e4319fb875 --- /dev/null +++ b/debian/README.source @@ -0,0 +1,43 @@ +=== General Info === +Development packaging branch is at + lp:ubuntu//cloud-init +alternatively, if you're on the development release: + lp:ubuntu/cloud-init + +Patches in debian/patches are also stored applied in bzr. + +To cherry pick revisions 391 to tip from from trunk, do something like: + s=391; e=; + b=../trunk; + [ -n "${e}" ] || e=$(cd ${b} && bzr revno) + pfile=catchup-${s}${e:+-${e}}.patch + [ "$s" = "$e" ] && pfile=catchup-${s}.patch + ( cd ../trunk && bzr log -r$s..$e && + bzr diff -p1 -r$(($s-1))..$e ) > ../$pfile.full + mkdir -p debian/patches + filterdiff --exclude "*/ChangeLog" < ../$pfile.full > debian/patches/$pfile + echo "$pfile" >> debian/patches/series + quilt push + quilt refresh + files="$(quilt files ${pfile}) debian/patches/series debian/patches/${pfile}" + files="$files .pc/${pfile} .pc/applied-patches" + bzr add $files + + # now add an entry + dch --append "${pfile} (sync to $e)" + dch --edit # improve the entry + debcommit $files + + ../$pfile.full will have the full diff. See 'ChangeLog' entries there + and debian/patches/$pfile for help writing debian/changelog entry + +You can set 'e' (end) to not go to tip. + +== Cherry pick single patch == +There is a utility in debian/cherry-pick-rev that will +help to cherry pick a single commit from trunk. + +== New snapshot == +To pull a new upstream snapshot, given lp:cloud-init in ../trunk: + + ./debian/new-upstream-snapshot ../trunk diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 00000000000..cdbf792cf91 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,2301 @@ +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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Sat, 17 Dec 2011 21:08:23 +0000 + +cloud-init (0.6.2-0ubuntu1) precise; urgency=low + + * New upstream release + + -- Scott Moser 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Thu, 04 Feb 2010 03:00:05 -0500 + +ec2-init (0.5.2-0ubuntu1) lucid; urgency=low + + * new upstream release + + -- Scott Moser Fri, 29 Jan 2010 13:30:52 -0500 + +ec2-init (0.5.1-0ubuntu1) lucid; urgency=low + + * new upstream release + + -- Scott Moser 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 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 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 Mon, 11 Jan 2010 12:03:45 -0500 + +ec2-init (0.5.0-0ubuntu2) lucid; urgency=low + + * new upstream release + + -- Scott Moser 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 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 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 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 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 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 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 Thu, 24 Sep 2009 16:32:42 -0400 + +ec2-init (0.4.999-0ubuntu1) karmic; urgency=low + + * New upstream release + + -- Soren Hansen 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Tue, 31 Mar 2009 09:37:13 -0400 + +ec2-init (0.3.3ubuntu7) jaunty; urgency=low + + * debian/rules: Fix typo. + + -- Chuck Short 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 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 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 Wed, 04 Mar 2009 08:33:01 -0500 + +ec2-init (0.3.3ubuntu3~intrepid4) intrepid; urgency=low + + * set distro to intrepid. + + -- Chuck Short 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 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 Tue, 24 Feb 2009 14:02:37 -0500 + +ec2-init (0.3.3ubuntu1) jaunty; urgency=low + + * debian/init: Fix init script. + + -- Chuck Short 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 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 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 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 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 Tue, 13 Jan 2009 15:20:21 -0500 + +ec2-init (0.1) intrepid; urgency=low + + * Initial release (LP: #269434). + + -- Soren Hansen Fri, 12 Sep 2008 15:30:32 +0200 + diff --git a/debian/cherry-pick-rev b/debian/cherry-pick-rev new file mode 100755 index 00000000000..09f60d12670 --- /dev/null +++ b/debian/cherry-pick-rev @@ -0,0 +1,45 @@ +#!/bin/sh +Usage() { + cat <&2; exit 1; } +[ "$1" = "--help" -o "$1" = "-h" ] && { Usage; exit 0; } + +repo=${1} +revno=${2} +name=${3} + +name=${name%.patch} +name=${name%.diff} + +fname="${name}.patch" + +( cd "${repo}" && bzr log -r${revno}..${revno} && + bzr diff -p1 -r$((${revno}-1))..${revno} ) | + filterdiff --exclude "*/ChangeLog" | + quilt import -P "${fname}" /dev/stdin + +[ $? -eq 0 ] || { echo "failed"; exit 1; } + +cat </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.install b/debian/cloud-init.install new file mode 100644 index 00000000000..d985f51e22b --- /dev/null +++ b/debian/cloud-init.install @@ -0,0 +1,11 @@ +./tools/21-cloudinit.conf etc/rsyslog.d/ +./tools/Z99-cloud-locale-test.sh etc/profile.d/ +etc/cloud +etc/init/*.conf +lib/systemd/* +lib/udev/* +usr/bin +usr/lib/cloud-init +usr/lib/python*/*-packages/*egg-info +usr/lib/python*/*-packages/cloudinit +usr/share/doc/cloud-init diff --git a/debian/cloud-init.lintian-overrides b/debian/cloud-init.lintian-overrides new file mode 100644 index 00000000000..591b651e979 --- /dev/null +++ b/debian/cloud-init.lintian-overrides @@ -0,0 +1,3 @@ +# this explicitly diverts ureadahead.conf in ureadahead package +# see LP: #499520 for more discussion +cloud-init binary: diversion-for-unknown-file diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst new file mode 100644 index 00000000000..a36fb248c89 --- /dev/null +++ b/debian/cloud-init.postinst @@ -0,0 +1,264 @@ +#!/bin/sh -e + +. /usr/share/debconf/confmodule + +set -f # disable pathname expansion +db_capb escape # to support carriage return / multi-line values + +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 +} + +if [ "$1" = "configure" ]; then + # disable ureadahead (LP: #499520) + dpkg-divert --package cloud-init --rename --divert \ + /etc/init/ureadahead.conf.disabled --add /etc/init/ureadahead.conf + if db_get cloud-init/datasources; then + values="$RET" + if [ "${values#*MaaS}" != "${values}" ]; then + # if db had old MAAS spelling, fix it. + values=$(echo "$values" | sed 's,MaaS,MAAS,g') + db_set cloud-init/datasources "$values" + fi + cat > /etc/cloud/cloud.cfg.d/90_dpkg.cfg </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" <&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 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 < /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 00000000000..8954fa4d7c2 --- /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 00000000000..f056f05bfc5 --- /dev/null +++ b/debian/cloud-init.templates @@ -0,0 +1,12 @@ +Template: cloud-init/datasources +Type: multiselect +Default: NoCloud, ConfigDrive, OpenNebula, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Ec2, CloudStack, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, 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, 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, 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 00000000000..ec635144f60 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 00000000000..759f77509e9 --- /dev/null +++ b/debian/control @@ -0,0 +1,67 @@ +Source: cloud-init +Section: admin +Priority: extra +Maintainer: Scott Moser +Build-Depends: debhelper (>= 9), + dh-python, + dh-systemd, + iproute2, + pep8, + po-debconf, + pyflakes, + python3, + python3-configobj, + python3-httpretty, + python3-jinja2, + python3-jsonpatch, + python3-mock, + python3-nose, + python3-oauthlib, + python3-pep8, + python3-prettytable, + python3-pyflakes | pyflakes (<< 1.1.0-2), + python3-requests, + python3-serial, + python3-setuptools, + python3-six, + python3-unittest2, + python3-yaml +XS-Python-Version: all +Standards-Version: 3.9.6 + +Package: cloud-init +Architecture: all +Depends: cloud-guest-utils | cloud-utils, + ifupdown (>= 0.6.10ubuntu5), + procps, + python3, + python3-requests (>= 0.8.2), + ${misc:Depends}, + ${python3:Depends} +Recommends: eatmydata, gdisk, software-properties-common +Provides: ec2-init +Replaces: ec2-init (<<0.5.3) +Conflicts: ec2-init (<<0.5.3) +XB-Python-Version: ${python:Versions} +Description: Init scripts for cloud instances + Cloud instances need special scripts to run during initialisation + to retrieve and install ssh keys and to let the user run various scripts. + +Package: grub-legacy-ec2 +Depends: debconf (>= 1.5.19) | cdebconf, + ucf, + util-linux (>= 2.15-1), + ${misc:Depends} +Conflicts: grub +Suggests: grub-legacy-doc +Architecture: all +Description: Handles update-grub for ec2 instances + EC2 instances that use grub-legacy as a bootloader need a way to keep + /boot/grub/menu.lst up to date while not conflicting with grub-pc. + This package provides that. + +Package: ec2-init +Depends: cloud-init, ${misc:Depends} +Architecture: all +Description: package renamed -> cloud-init + This package has been renamed to 'cloud-init'. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 00000000000..40dabac1c43 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,51 @@ +Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135 +Name: cloud-init +Maintainer: Scott Moser +Source: https://launchpad.net/cloud-init + +This package was debianized by Soren Hansen on +Thu, 04 Sep 2008 12:49:15 +0200 as ec2-init. It was later renamed to +cloud-utils by Scott Moser + +Upstream Author: Scott Moser + Soren Hansen + Chuck Short + +Copyright: 2010, Canonical Ltd. +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 . + + The complete text of the GPL version 3 can be seen in + /usr/share/common-licenses/GPL-3. + +Files: cloudinit/boto_utils.py +Copyright: 2006,2007, Mitch Garnaat http://garnaat.org/ +License: MIT + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, dis- + tribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the fol- + lowing conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- + ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT + SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. diff --git a/debian/dirs b/debian/dirs new file mode 100644 index 00000000000..f966b7defbc --- /dev/null +++ b/debian/dirs @@ -0,0 +1,5 @@ +etc/cloud +etc/init +usr/bin +usr/share/doc/cloud +var/lib/cloud diff --git a/debian/grub-legacy-ec2.install b/debian/grub-legacy-ec2.install new file mode 100644 index 00000000000..b75b0beee2e --- /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/kernel/ +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 00000000000..ed8c77f1cbf --- /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 00000000000..3c4aa5cdb95 --- /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 00000000000..50184234abf --- /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 00000000000..ac73b428927 --- /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 00000000000..0562c8cb569 --- /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 00000000000..8816bc7e11f --- /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 +} + +# 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 < $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 00000000000..33436510704 --- /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 00000000000..6f6aa4a4678 --- /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 00000000000..7d35e8626ad --- /dev/null +++ b/debian/new-upstream-snapshot @@ -0,0 +1,69 @@ +#!/bin/sh + +Usage() { + cat <&2; exit 1; } + +name="cloud-init" +[ $# -eq 0 ] && { Usage 1>&2; exit 1; } +[ "$1" = "-h" -o "$1" = "--help" ] && { Usage; exit 0; } +trunk=$1 +revno=${2:-tip} +uver=${3:-0.7.7} # the *next* upstream version + +[ -d "$trunk" ] || + fail "trunk dir '$trunk' not a dir" +if [ "$revno" = "tip" ]; then + revno=$(cd "$trunk" && bzr revno) || + fail "failed getting bzr revno from $trunk" +fi +pversion=$(dpkg-parsechangelog --show-field Version) || + fail "failed to read previous version with dpkg-parsechangelog" +prevno=$(echo "$pversion" | sed 's,.*bzr\([0-9]\+\)-.*,\1,') || + fail "fail reading previous bzr revision from previous version '$pversion'" +version=${uver}~bzr${revno} +tarball=${name}-${version}.tar.gz +t=../${name}_${version}.orig.tar.gz +if [ -f "$t" ]; then + echo "using '$t' as tarball" 1>&2 + tarball="$t" +else + echo "creating $tarball with bzr export" 1>&2 + bzr export --format=tgz "--revision=${revno}" "$tarball" "${trunk}" || + fail "failed exporting bzr in $trunk to $tarball" +fi +bzr merge-upstream "$tarball" "--version=${version}" || + fail "failed merge-upstream of $tarball at version=$version" + +oldrev=$(($prevno+1)) +( cd "$trunk" && bzr log -r "${oldrev}..${revno}" ) > new-changes.log || + fail "failed to get changes from ${oldrev}..$revno" + +cat <, 2004 +# +msgid "" +msgstr "" +"Project-Id-Version: ucf_0.30_templates\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: Catalan \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 00000000000..7d8db4a77bb --- /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@packages.debian.org\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 \n" +"Language-Team: Czech \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 00000000000..399439cf2a2 --- /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 , 2005. +# Claus Hindsgaul , 2007. +msgid "" +msgstr "" +"Project-Id-Version: ucf debconf template\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \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 00000000000..294f7390058 --- /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 , 2004-2007. +msgid "" +msgstr "" +"Project-Id-Version: ucf_3.002_de\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: German \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 00000000000..725d9e91ef1 --- /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 , 2004 +# - Updated +# Javier Fernandez-Sanguino , 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@packages.debian.org\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 \n" +"Language-Team: Debian Spanish \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 00000000000..ddf7d2a731b --- /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 , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: ucf-debconf\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: Euskara \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 00000000000..62da4409350 --- /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@packages.debian.org\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 \n" +"Language-Team: Finnish \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 00000000000..1598329c668 --- /dev/null +++ b/debian/po/fr.po @@ -0,0 +1,78 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: fr\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: French \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 00000000000..6547ad32402 --- /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 , 2006, 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: ucf\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: Galician \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 00000000000..f344e46302f --- /dev/null +++ b/debian/po/it.po @@ -0,0 +1,81 @@ +# translation of ucf_1.18_templates.po to italian +# Copyright Luca Bruno , 2005. +msgid "" +msgstr "" +"Project-Id-Version: ucf_1.18_templates\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: Italian \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 00000000000..981ef2288a3 --- /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@packages.debian.org\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 \n" +"Language-Team: Japanese \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 00000000000..e8acf632d92 --- /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@packages.debian.org\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 \n" +"Language-Team: Nederlands \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 00000000000..a42099e1727 --- /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 , 2007. +msgid "" +msgstr "" +"Project-Id-Version: ucf3002\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: Polish \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 00000000000..23c7f8f560e --- /dev/null +++ b/debian/po/pt.po @@ -0,0 +1,82 @@ +# Portuguese translation of ucf's debconf messages. +# 2007, Pedro Ribeiro +# Bruno Queiros , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: ucf 2.0020\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: Portuguese \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 00000000000..9d736b9707e --- /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@packages.debian.org\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 \n" +"Language-Team: Debian-BR Project \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 00000000000..6560fe3197d --- /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 , 2006, 2007. +msgid "" +msgstr "" +"Project-Id-Version: 3.001\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: Russian \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 00000000000..8a157dedaeb --- /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 , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: ucf 2.002\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: Swedish \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 00000000000..f0b056afc25 --- /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 , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: LANGUAGE \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 00000000000..a815be9abba --- /dev/null +++ b/debian/po/vi.po @@ -0,0 +1,91 @@ +# Vietnamese translation for UCF. +# Copyright © 2007 Free Software Foundation, Inc. +# Clytie Siddall , 2005-2007. +# +msgid "" +msgstr "" +"Project-Id-Version: ucf 3.002\n" +"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" +"Language-Team: Vietnamese \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 00000000000..4008d73fe95 --- /dev/null +++ b/debian/rules @@ -0,0 +1,16 @@ +#!/usr/bin/make -f +INIT_SYSTEM ?= upstart,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=3 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 diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 00000000000..163aaf8d82b --- /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 00000000000..19648f6df7a --- /dev/null +++ b/debian/update-grub-legacy-ec2 @@ -0,0 +1,1598 @@ +#!/bin/bash +# +# Insert a list of installed kernels in a grub config file +# Copyright 2001 Wichert Akkerman +# 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 +# David B.Harris +# Marc Haber +# Crispin Flowerday +# Steve Langasek + +# 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=$(awk '$2=="/" && $4~"loop" {print $1}' /etc/fstab) +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" <&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 AB +# 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 + is_xen_kernel() { + # input is like /boot/vmlinuz-2.6.35-13-virtual + # 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 + 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 00000000000..0f7a600b4c5 --- /dev/null +++ b/debian/watch @@ -0,0 +1,2 @@ +version=3 +https://launchpad.net/cloud-init/+download .*/\+download/cloud-init-(.+)\.tar.gz From 81731f13d03ab54b6a31d6e949c46589f0ad6c6d Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 5 Aug 2016 17:01:49 -0400 Subject: [PATCH 0002/1174] debian/control: update Standards-Version to 3.9.8 --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 759f77509e9..6d221cc3362 100644 --- a/debian/control +++ b/debian/control @@ -27,7 +27,7 @@ Build-Depends: debhelper (>= 9), python3-unittest2, python3-yaml XS-Python-Version: all -Standards-Version: 3.9.6 +Standards-Version: 3.9.8 Package: cloud-init Architecture: all From d0824effd2e48b1d7e0e58ebc85049b86bb6ceca Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 5 Aug 2016 17:04:26 -0400 Subject: [PATCH 0003/1174] debian/rules: fix PYVER in environment to sync with upstream changes. --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 4008d73fe95..4bf66d9009e 100755 --- a/debian/rules +++ b/debian/rules @@ -7,7 +7,7 @@ export PYBUILD_INSTALL_ARGS=--init-system=$(INIT_SYSTEM) override_dh_auto_test: ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) - http_proxy= make PYVER=3 check + http_proxy= make PYVER=python3 check else @echo check disabled by DEB_BUILD_OPTIONS=$(DEB_BUILD_OPTIONS) endif From 320da1b28502e299daf531d3acc31a00e84c52a4 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 9 Aug 2016 01:16:25 -0400 Subject: [PATCH 0004/1174] debian/changelog: update --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index cdbf792cf91..25ebb2b3b1e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +cloud-init (0.7.7~git1029-gb56d7a1-0ubuntu1) UNRELEASED; 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 Tue, 09 Aug 2016 01:12:33 -0400 + cloud-init (0.7.7~bzr1256-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From b384eb10f5035ab8faeccff069031f1e2903e8a7 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 9 Aug 2016 01:16:46 -0400 Subject: [PATCH 0005/1174] releasing package cloud-init version 0.7.7~git1029-gb56d7a1-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 25ebb2b3b1e..cc4109aaeef 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.7~git1029-gb56d7a1-0ubuntu1) UNRELEASED; urgency=medium +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. @@ -7,7 +7,7 @@ cloud-init (0.7.7~git1029-gb56d7a1-0ubuntu1) UNRELEASED; urgency=medium * debian/control: update Standards-Version to 3.9.8 * debian/rules: fix PYVER in environment to sync with upstream changes. - -- Scott Moser Tue, 09 Aug 2016 01:12:33 -0400 + -- Scott Moser Tue, 09 Aug 2016 01:16:28 -0400 cloud-init (0.7.7~bzr1256-0ubuntu1) yakkety; urgency=medium From cebfb223f47d5b49dc90aefea3d9ac1dc304242a Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 10 Aug 2016 01:44:08 -0400 Subject: [PATCH 0006/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index cc4109aaeef..d34afb4ccb7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (0.7.7-0ubuntu1) UNRELEASED; urgency=medium + + * New Upstream release. + + -- Scott Moser Wed, 10 Aug 2016 01:42:27 -0400 + cloud-init (0.7.7~git1029-gb56d7a1-0ubuntu1) yakkety; urgency=medium * New Upstream snapshot. From e28ba310872846e0bc60595aed353c17b760fdcb Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 10 Aug 2016 01:48:50 -0400 Subject: [PATCH 0007/1174] releasing package cloud-init version 0.7.7-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d34afb4ccb7..db004d1e67f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,8 @@ -cloud-init (0.7.7-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.7-0ubuntu1) yakkety; urgency=medium * New Upstream release. - -- Scott Moser Wed, 10 Aug 2016 01:42:27 -0400 + -- Scott Moser Wed, 10 Aug 2016 01:48:32 -0400 cloud-init (0.7.7~git1029-gb56d7a1-0ubuntu1) yakkety; urgency=medium From ccbf01b1ef035492bdfe8f7f41b971cebb39b984 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 12 Aug 2016 17:10:48 -0400 Subject: [PATCH 0008/1174] update changelog --- debian/changelog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/debian/changelog b/debian/changelog index db004d1e67f..05d630613ff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,18 @@ +cloud-init (0.7.7-10-gbc2c326-0ubuntu1) UNRELEASED; 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 Fri, 12 Aug 2016 17:07:26 -0400 + cloud-init (0.7.7-0ubuntu1) yakkety; urgency=medium * New Upstream release. From e383684e9d234bbce0dcf8906d3067f7180f1ba1 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 12 Aug 2016 17:18:38 -0400 Subject: [PATCH 0009/1174] releasing package cloud-init version 0.7.7-10-gbc2c326-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 05d630613ff..f039202bd46 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.7-10-gbc2c326-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.7-10-gbc2c326-0ubuntu1) yakkety; urgency=medium * New upstream snapshot: - DigitalOcean: use the v1.json endpoint @@ -11,7 +11,7 @@ cloud-init (0.7.7-10-gbc2c326-0ubuntu1) UNRELEASED; urgency=medium - add ntp config module - SmartOS: more improvements for network configuration - -- Scott Moser Fri, 12 Aug 2016 17:07:26 -0400 + -- Scott Moser Fri, 12 Aug 2016 17:18:01 -0400 cloud-init (0.7.7-0ubuntu1) yakkety; urgency=medium From ad5045198413d7dc6e3e496541d3a362aa2f415e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 18 Aug 2016 15:57:56 -0400 Subject: [PATCH 0010/1174] debian/new-upstream-snapshot: update to use git and packaging branches. --- debian/changelog | 6 ++ debian/new-upstream-snapshot | 163 ++++++++++++++++++++++------------- 2 files changed, 110 insertions(+), 59 deletions(-) diff --git a/debian/changelog b/debian/changelog index f039202bd46..95832fc3c76 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (0.7.7-10-gbc2c326-0ubuntu2) UNRELEASED; urgency=medium + + * debian/new-upstream-snapshot: update to use git and packaging branches. + + -- Scott Moser Thu, 18 Aug 2016 15:57:08 -0400 + cloud-init (0.7.7-10-gbc2c326-0ubuntu1) yakkety; urgency=medium * New upstream snapshot: diff --git a/debian/new-upstream-snapshot b/debian/new-upstream-snapshot index 7d35e8626ad..c0699796f21 100755 --- a/debian/new-upstream-snapshot +++ b/debian/new-upstream-snapshot @@ -1,69 +1,114 @@ #!/bin/sh +TEMP_D="" +error() { echo "$@" 1>&2; } +fail() { [ $# -eq 0 ] || error "$@"; exit 1; } Usage() { - cat <&2; exit 1; } - -name="cloud-init" -[ $# -eq 0 ] && { Usage 1>&2; exit 1; } -[ "$1" = "-h" -o "$1" = "--help" ] && { Usage; exit 0; } -trunk=$1 -revno=${2:-tip} -uver=${3:-0.7.7} # the *next* upstream version - -[ -d "$trunk" ] || - fail "trunk dir '$trunk' not a dir" -if [ "$revno" = "tip" ]; then - revno=$(cd "$trunk" && bzr revno) || - fail "failed getting bzr revno from $trunk" -fi -pversion=$(dpkg-parsechangelog --show-field Version) || - fail "failed to read previous version with dpkg-parsechangelog" -prevno=$(echo "$pversion" | sed 's,.*bzr\([0-9]\+\)-.*,\1,') || - fail "fail reading previous bzr revision from previous version '$pversion'" -version=${uver}~bzr${revno} -tarball=${name}-${version}.tar.gz -t=../${name}_${version}.orig.tar.gz -if [ -f "$t" ]; then - echo "using '$t' as tarball" 1>&2 - tarball="$t" -else - echo "creating $tarball with bzr export" 1>&2 - bzr export --format=tgz "--revision=${revno}" "$tarball" "${trunk}" || - fail "failed exporting bzr in $trunk to $tarball" +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 + +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_upstream=$(git describe master) +new_pkg_debian="0ubuntu1" +new_upstream_ver=$(git describe "${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 -bzr merge-upstream "$tarball" "--version=${version}" || - fail "failed merge-upstream of $tarball at version=$version" -oldrev=$(($prevno+1)) -( cd "$trunk" && bzr log -r "${oldrev}..${revno}" ) > new-changes.log || - fail "failed to get changes from ${oldrev}..$revno" +git merge "${from_ref}" -m "merge from $from_ref at $new_upstream_ver" +TEMP_D=$(mktemp -d) || fail "failed mktemp" +clog="${TEMP_D}/changelog" +gitlog="${TEMP_D}/gitlog" -cat < "$gitlog" || + fail "failed git log ${prev_pkg_hash}..${from_ref}" + +cat >> "$clog" <> "$clog" || + fail "failed git_log_to_dch" +cat >> "$clog" < $(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 + +git commit -m "update changelog." debian/changelog From 995cbef28097de96f6376dc36b0d128d30209d55 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 18 Aug 2016 15:58:44 -0400 Subject: [PATCH 0011/1174] update changelog. --- debian/changelog | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 95832fc3c76..6a583a9b83f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,12 @@ -cloud-init (0.7.7-10-gbc2c326-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (0.7.7-13-g41271bd-0ubuntu1) UNRELEASED; 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 Thu, 18 Aug 2016 15:57:08 -0400 + -- Scott Moser Thu, 18 Aug 2016 15:58:18 -0400 cloud-init (0.7.7-10-gbc2c326-0ubuntu1) yakkety; urgency=medium From 1fd61c7193e56d0dce0dbf90df7b8d54827a3cb3 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 18 Aug 2016 17:12:01 -0400 Subject: [PATCH 0012/1174] releasing package cloud-init version 0.7.7-13-g41271bd-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6a583a9b83f..98faa1b2d95 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.7-13-g41271bd-0ubuntu1) UNRELEASED; urgency=medium +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] @@ -6,7 +6,7 @@ cloud-init (0.7.7-13-g41271bd-0ubuntu1) UNRELEASED; urgency=medium - Get Azure endpoint server from DHCP client [Brent Baude] * debian/new-upstream-snapshot: update to use git and packaging branches. - -- Scott Moser Thu, 18 Aug 2016 15:58:18 -0400 + -- Scott Moser Thu, 18 Aug 2016 17:11:51 -0400 cloud-init (0.7.7-10-gbc2c326-0ubuntu1) yakkety; urgency=medium From b98da18d2f604e87f11ad8ee306376d05c020015 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 19 Aug 2016 12:06:08 -0400 Subject: [PATCH 0013/1174] debian/dirs: remove unnecessary file --- debian/dirs | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 debian/dirs diff --git a/debian/dirs b/debian/dirs deleted file mode 100644 index f966b7defbc..00000000000 --- a/debian/dirs +++ /dev/null @@ -1,5 +0,0 @@ -etc/cloud -etc/init -usr/bin -usr/share/doc/cloud -var/lib/cloud From 638f0183265f7345656075d997963de75c0bd1dd Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 19 Aug 2016 12:06:42 -0400 Subject: [PATCH 0014/1174] debian/control: drop very old meta-package ec2-init --- debian/control | 9 --------- 1 file changed, 9 deletions(-) diff --git a/debian/control b/debian/control index 6d221cc3362..c3e5447d32a 100644 --- a/debian/control +++ b/debian/control @@ -39,9 +39,6 @@ Depends: cloud-guest-utils | cloud-utils, ${misc:Depends}, ${python3:Depends} Recommends: eatmydata, gdisk, software-properties-common -Provides: ec2-init -Replaces: ec2-init (<<0.5.3) -Conflicts: ec2-init (<<0.5.3) XB-Python-Version: ${python:Versions} Description: Init scripts for cloud instances Cloud instances need special scripts to run during initialisation @@ -59,9 +56,3 @@ Description: Handles update-grub for ec2 instances EC2 instances that use grub-legacy as a bootloader need a way to keep /boot/grub/menu.lst up to date while not conflicting with grub-pc. This package provides that. - -Package: ec2-init -Depends: cloud-init, ${misc:Depends} -Architecture: all -Description: package renamed -> cloud-init - This package has been renamed to 'cloud-init'. From 99d2da48a2469c870e61e1a5b2c67bdd5d69092b Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 19 Aug 2016 12:07:34 -0400 Subject: [PATCH 0015/1174] debian/rules, debian/cloud-init.install: remove install file Remove the install file and use --destdir=debian/cloud-init. This means we no longer have to maintain debian/cluod-init.install and risk missing some files. One such error occurred with the upstream Azure change that added dchlient-hooks, that were then not picked up by the cloud-init package here. LP: #1615745 --- debian/cloud-init.install | 11 ----------- debian/rules | 5 +++++ 2 files changed, 5 insertions(+), 11 deletions(-) delete mode 100644 debian/cloud-init.install diff --git a/debian/cloud-init.install b/debian/cloud-init.install deleted file mode 100644 index d985f51e22b..00000000000 --- a/debian/cloud-init.install +++ /dev/null @@ -1,11 +0,0 @@ -./tools/21-cloudinit.conf etc/rsyslog.d/ -./tools/Z99-cloud-locale-test.sh etc/profile.d/ -etc/cloud -etc/init/*.conf -lib/systemd/* -lib/udev/* -usr/bin -usr/lib/cloud-init -usr/lib/python*/*-packages/*egg-info -usr/lib/python*/*-packages/cloudinit -usr/share/doc/cloud-init diff --git a/debian/rules b/debian/rules index 4bf66d9009e..ef13251f073 100755 --- a/debian/rules +++ b/debian/rules @@ -14,3 +14,8 @@ 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 ./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 From c13f800d19884a28c57745f692d1b5221c6c3a6c Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 19 Aug 2016 12:10:25 -0400 Subject: [PATCH 0016/1174] update changelog --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index 98faa1b2d95..4d6b13419b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (0.7.7-13-g41271bd-0ubuntu2) UNRELEASED; urgency=medium + + * 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 Fri, 19 Aug 2016 12:09:44 -0400 + cloud-init (0.7.7-13-g41271bd-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From a89e00ce1a2d5eeec93da4a547034cef7a30aea7 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 22 Aug 2016 17:01:37 -0400 Subject: [PATCH 0017/1174] update changelog. --- debian/changelog | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4d6b13419b1..2fdedaddf61 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,16 @@ -cloud-init (0.7.7-13-g41271bd-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (0.7.7-17-g40a2f62-0ubuntu1) UNRELEASED; 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 Fri, 19 Aug 2016 12:09:44 -0400 + -- Scott Moser Mon, 22 Aug 2016 17:00:50 -0400 cloud-init (0.7.7-13-g41271bd-0ubuntu1) yakkety; urgency=medium From 2be0214598557ae424be88fde59a32d0d290e16f Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 22 Aug 2016 17:03:04 -0400 Subject: [PATCH 0018/1174] releasing package cloud-init version 0.7.7-17-g40a2f62-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2fdedaddf61..985dcfc6799 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.7-17-g40a2f62-0ubuntu1) UNRELEASED; urgency=medium +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 @@ -10,7 +10,7 @@ cloud-init (0.7.7-17-g40a2f62-0ubuntu1) UNRELEASED; urgency=medium and use --destdir=debian/cloud-init. (LP: #1615745) * debian/dirs: remove obsolete / unused file. - -- Scott Moser Mon, 22 Aug 2016 17:00:50 -0400 + -- Scott Moser Mon, 22 Aug 2016 17:02:56 -0400 cloud-init (0.7.7-13-g41271bd-0ubuntu1) yakkety; urgency=medium From f0e9dcce1b7ac248fcadf5576e63cee92f0e578e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 24 Aug 2016 10:46:35 -0400 Subject: [PATCH 0019/1174] debian/control, debian/README.source: update to reference git. --- debian/README.source | 50 +++++++++++++------------------------------- debian/control | 2 ++ 2 files changed, 17 insertions(+), 35 deletions(-) diff --git a/debian/README.source b/debian/README.source index 5e4319fb875..86bcf53030a 100644 --- a/debian/README.source +++ b/debian/README.source @@ -1,43 +1,23 @@ === General Info === -Development packaging branch is at - lp:ubuntu//cloud-init -alternatively, if you're on the development release: - lp:ubuntu/cloud-init +Packaging branches for the Ubuntu development release are maintained in +upstream git under ubuntu/devel branch. -Patches in debian/patches are also stored applied in bzr. + git clone git://git.launchpad.net/cloud-init -b ubuntu/devel -To cherry pick revisions 391 to tip from from trunk, do something like: - s=391; e=; - b=../trunk; - [ -n "${e}" ] || e=$(cd ${b} && bzr revno) - pfile=catchup-${s}${e:+-${e}}.patch - [ "$s" = "$e" ] && pfile=catchup-${s}.patch - ( cd ../trunk && bzr log -r$s..$e && - bzr diff -p1 -r$(($s-1))..$e ) > ../$pfile.full - mkdir -p debian/patches - filterdiff --exclude "*/ChangeLog" < ../$pfile.full > debian/patches/$pfile - echo "$pfile" >> debian/patches/series - quilt push - quilt refresh - files="$(quilt files ${pfile}) debian/patches/series debian/patches/${pfile}" - files="$files .pc/${pfile} .pc/applied-patches" - bzr add $files +Stable release branches are also available in ubuntu/ + $ 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 - # now add an entry - dch --append "${pfile} (sync to $e)" - dch --edit # improve the entry - debcommit $files - - ../$pfile.full will have the full diff. See 'ChangeLog' entries there - and debian/patches/$pfile for help writing debian/changelog entry - -You can set 'e' (end) to not go to tip. - -== Cherry pick single patch == -There is a utility in debian/cherry-pick-rev that will -help to cherry pick a single commit from trunk. +Patches in debian/patches are stored un-applied. == New snapshot == -To pull a new upstream snapshot, given lp:cloud-init in ../trunk: +To pull a new upstream snapshot: ./debian/new-upstream-snapshot ../trunk diff --git a/debian/control b/debian/control index c3e5447d32a..e9926e40414 100644 --- a/debian/control +++ b/debian/control @@ -27,6 +27,8 @@ Build-Depends: debhelper (>= 9), 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 From b28d285f9eb523f94f2130e1733f09c409417034 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 26 Aug 2016 15:20:12 -0400 Subject: [PATCH 0020/1174] debian/new-upstream-snapshot: small fixes. --- debian/new-upstream-snapshot | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/debian/new-upstream-snapshot b/debian/new-upstream-snapshot index c0699796f21..ef7510c2842 100755 --- a/debian/new-upstream-snapshot +++ b/debian/new-upstream-snapshot @@ -75,7 +75,8 @@ if [ "${prev_upstream_ver}" = "${new_upstream_ver}" ]; then exit 0 fi -git merge "${from_ref}" -m "merge from $from_ref at $new_upstream_ver" +git merge "${from_ref}" -m "merge from $from_ref at $new_upstream_ver" || + fail "failed: git merge ${from_ref} -m 'merge from $from_ref ..'" TEMP_D=$(mktemp -d) || fail "failed mktemp" clog="${TEMP_D}/changelog" gitlog="${TEMP_D}/gitlog" @@ -111,4 +112,6 @@ case "$answer" in n|[Nn][oO]) exit 1;; esac -git commit -m "update changelog." debian/changelog +msg="update changelog (new upstream snapshot $new_upstream_ver)." +git commit -m "$msg" debian/changelog || + fail "failed to commit '$msg'" From 01784424e33e5a667b2d3835498ff28fc54afc12 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 26 Aug 2016 15:20:51 -0400 Subject: [PATCH 0021/1174] update changelog. --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 985dcfc6799..a5d3d7e4659 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (0.7.7-17-g40a2f62-0ubuntu2) UNRELEASED; urgency=medium + + * debian/control, debian/README.source: update to reference git. + * debian/new-upstream-snapshot: small fixes. + + -- Scott Moser Fri, 26 Aug 2016 15:20:25 -0400 + cloud-init (0.7.7-17-g40a2f62-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From 8832ebe0d9875addceaee40b04ff32b65a4523b2 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 26 Aug 2016 15:21:27 -0400 Subject: [PATCH 0022/1174] update changelog (new upstream snapshot 0.7.7-22-g763f403). --- debian/changelog | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index a5d3d7e4659..7e4274ab8d3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,16 @@ -cloud-init (0.7.7-17-g40a2f62-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (0.7.7-22-g763f403-0ubuntu1) UNRELEASED; 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 Fri, 26 Aug 2016 15:20:25 -0400 + -- Scott Moser Fri, 26 Aug 2016 15:21:02 -0400 cloud-init (0.7.7-17-g40a2f62-0ubuntu1) yakkety; urgency=medium From a2b25e33dff19ef5d60c9a9292529d25b76fc998 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 26 Aug 2016 15:22:19 -0400 Subject: [PATCH 0023/1174] releasing package cloud-init version 0.7.7-22-g763f403-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 7e4274ab8d3..62424db16af 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.7-22-g763f403-0ubuntu1) UNRELEASED; urgency=medium +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. @@ -10,7 +10,7 @@ cloud-init (0.7.7-22-g763f403-0ubuntu1) UNRELEASED; urgency=medium * debian/control, debian/README.source: update to reference git. * debian/new-upstream-snapshot: small fixes. - -- Scott Moser Fri, 26 Aug 2016 15:21:02 -0400 + -- Scott Moser Fri, 26 Aug 2016 15:22:13 -0400 cloud-init (0.7.7-17-g40a2f62-0ubuntu1) yakkety; urgency=medium From 098833685f2cec2316e2e685263240e7ceadb157 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 8 Sep 2016 09:34:36 -0400 Subject: [PATCH 0024/1174] update changelog (new upstream snapshot 0.7.7-26-g058dd75). --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index 62424db16af..f8ab4c3f0b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +cloud-init (0.7.7-26-g058dd75-0ubuntu1) UNRELEASED; 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 Thu, 08 Sep 2016 09:33:49 -0400 + cloud-init (0.7.7-22-g763f403-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From 314aac21a2f096917f4f92ed61bdf832ba446ae5 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 8 Sep 2016 09:37:05 -0400 Subject: [PATCH 0025/1174] releasing package cloud-init version 0.7.7-26-g058dd75-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index f8ab4c3f0b1..19a4b39a693 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.7-26-g058dd75-0ubuntu1) UNRELEASED; urgency=medium +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) @@ -7,7 +7,7 @@ cloud-init (0.7.7-26-g058dd75-0ubuntu1) UNRELEASED; urgency=medium (LP: #1609899) - bddeb: add --release flag to specify the release in changelog. - -- Scott Moser Thu, 08 Sep 2016 09:33:49 -0400 + -- Scott Moser Thu, 08 Sep 2016 09:36:52 -0400 cloud-init (0.7.7-22-g763f403-0ubuntu1) yakkety; urgency=medium From f45f6bb2ca3d42aa050887f7b2ad54141649e988 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 9 Sep 2016 16:01:08 -0400 Subject: [PATCH 0026/1174] update changelog (new upstream snapshot 0.7.7-28-g34a26f7). --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index 19a4b39a693..554bf12145d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (0.7.7-28-g34a26f7-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - systemd: Better support package and upgrade. + (LP: #1576692, #1621336) + - tests: cleanup tempdirs in apt_source tests + + -- Scott Moser Fri, 09 Sep 2016 16:00:55 -0400 + cloud-init (0.7.7-26-g058dd75-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From dbc07567b6dc8ff03231def19232fa1c8a652369 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 9 Sep 2016 16:01:20 -0400 Subject: [PATCH 0027/1174] releasing package cloud-init version 0.7.7-28-g34a26f7-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 554bf12145d..b66bbfa4096 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,11 @@ -cloud-init (0.7.7-28-g34a26f7-0ubuntu1) UNRELEASED; urgency=medium +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 Fri, 09 Sep 2016 16:00:55 -0400 + -- Scott Moser Fri, 09 Sep 2016 16:01:13 -0400 cloud-init (0.7.7-26-g058dd75-0ubuntu1) yakkety; urgency=medium From 77b7d7cf922a06360065d6787681f3b2dd8ac29b Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 9 Sep 2016 21:21:17 -0400 Subject: [PATCH 0028/1174] debian/control: fix missing dependency on python3-serial Add python3-serial to Depends. This is not resolved by ${python3:Depends} because it is commented out in requirements.txt. pyserial is problematic both because it is not pure python and because it is not available for python2.6. The commit 26ea813d2 removed pyserial and thus lost the automatic dependency. This makes SmartOS datasource work. --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index e9926e40414..10b8370da8b 100644 --- a/debian/control +++ b/debian/control @@ -38,6 +38,7 @@ Depends: cloud-guest-utils | cloud-utils, procps, python3, python3-requests (>= 0.8.2), + python3-serial, ${misc:Depends}, ${python3:Depends} Recommends: eatmydata, gdisk, software-properties-common From 8a829832ba2bdbe4451887836cec522a77ebb817 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 9 Sep 2016 21:22:04 -0400 Subject: [PATCH 0029/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index b66bbfa4096..5ea1a0ca1fc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (0.7.7-28-g34a26f7-0ubuntu2) UNRELEASED; urgency=medium + + * debian/control: fix missing dependency on python3-serial, + and make SmartOS datasource work. + + -- Scott Moser Fri, 09 Sep 2016 21:19:23 -0400 + cloud-init (0.7.7-28-g34a26f7-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From 37527ac38c2829dba6d284f23ed40f007a7ee176 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 9 Sep 2016 21:22:26 -0400 Subject: [PATCH 0030/1174] releasing package cloud-init version 0.7.7-28-g34a26f7-0ubuntu2 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5ea1a0ca1fc..f3d77473740 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (0.7.7-28-g34a26f7-0ubuntu2) UNRELEASED; urgency=medium +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 Fri, 09 Sep 2016 21:19:23 -0400 + -- Scott Moser Fri, 09 Sep 2016 21:22:13 -0400 cloud-init (0.7.7-28-g34a26f7-0ubuntu1) yakkety; urgency=medium From f9f5d45f714232d6f96c2496219ad574f7066e08 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 12 Sep 2016 14:56:33 -0400 Subject: [PATCH 0031/1174] update changelog (new upstream snapshot 0.7.7-31-g65ace7b). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index f3d77473740..ab106e42954 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (0.7.7-31-g65ace7b-0ubuntu1) UNRELEASED; 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 Mon, 12 Sep 2016 14:56:09 -0400 + cloud-init (0.7.7-28-g34a26f7-0ubuntu2) yakkety; urgency=medium * debian/control: fix missing dependency on python3-serial, From 5538e7e31590488bf958448cd88cf1a8d52417b6 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 12 Sep 2016 14:56:48 -0400 Subject: [PATCH 0032/1174] releasing package cloud-init version 0.7.7-31-g65ace7b-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index ab106e42954..98feb1ed04f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.7-31-g65ace7b-0ubuntu1) UNRELEASED; urgency=medium +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 Mon, 12 Sep 2016 14:56:09 -0400 + -- Scott Moser Mon, 12 Sep 2016 14:56:42 -0400 cloud-init (0.7.7-28-g34a26f7-0ubuntu2) yakkety; urgency=medium From b64236049fe8bb922fae56b7fd149327a7210eeb Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 15 Sep 2016 09:47:01 -0400 Subject: [PATCH 0033/1174] update changelog (new upstream snapshot 0.7.8-1-g3705bb5). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 98feb1ed04f..1974cbf1113 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (0.7.8-1-g3705bb5-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream release 0.7.8. + * New upstream snapshot. + - systemd: put cloud-init.target After multi-user.target (LP: #1623868) + + -- Scott Moser Thu, 15 Sep 2016 09:46:17 -0400 + cloud-init (0.7.7-31-g65ace7b-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From b6c724db8ee7fcf5cd2f95aa3909d2108a8f3c10 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 15 Sep 2016 09:47:16 -0400 Subject: [PATCH 0034/1174] releasing package cloud-init version 0.7.8-1-g3705bb5-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1974cbf1113..df4d7f1626d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.8-1-g3705bb5-0ubuntu1) UNRELEASED; urgency=medium +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 Thu, 15 Sep 2016 09:46:17 -0400 + -- Scott Moser Thu, 15 Sep 2016 09:47:11 -0400 cloud-init (0.7.7-31-g65ace7b-0ubuntu1) yakkety; urgency=medium From 3fe05078779a354020ac6759aeedb26a7ec46a87 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 20 Sep 2016 13:59:09 -0400 Subject: [PATCH 0035/1174] update changelog (new upstream snapshot 0.7.8-3-g80f5ec4). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index df4d7f1626d..1df7554dc4e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (0.7.8-3-g80f5ec4-0ubuntu1) UNRELEASED; 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 Tue, 20 Sep 2016 13:58:52 -0400 + cloud-init (0.7.8-1-g3705bb5-0ubuntu1) yakkety; urgency=medium * New upstream release 0.7.8. From 9f5d2389c6339c718aedbe89f0e468c7b4e04c7b Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 20 Sep 2016 13:59:28 -0400 Subject: [PATCH 0036/1174] releasing package cloud-init version 0.7.8-3-g80f5ec4-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1df7554dc4e..03c841445c6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.8-3-g80f5ec4-0ubuntu1) UNRELEASED; urgency=medium +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 Tue, 20 Sep 2016 13:58:52 -0400 + -- Scott Moser Tue, 20 Sep 2016 13:59:20 -0400 cloud-init (0.7.8-1-g3705bb5-0ubuntu1) yakkety; urgency=medium From b19c1d1f9e658a739f0993227c68d9fd2819c4ea Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 21 Sep 2016 11:56:01 -0400 Subject: [PATCH 0037/1174] update changelog (new upstream snapshot 0.7.8-4-g970dbd1). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 03c841445c6..86d500d302a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (0.7.8-4-g970dbd1-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - net: support reading ipv6 dhcp config from initramfs [LaMont Jones] + (LP: #1621615) + + -- Scott Moser Wed, 21 Sep 2016 11:55:27 -0400 + cloud-init (0.7.8-3-g80f5ec4-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From 0e4eaef9640b6aaf09063124959717e05ed52b06 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 21 Sep 2016 11:56:47 -0400 Subject: [PATCH 0038/1174] releasing package cloud-init version 0.7.8-4-g970dbd1-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 86d500d302a..1d5df215312 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.8-4-g970dbd1-0ubuntu1) UNRELEASED; urgency=medium +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 Wed, 21 Sep 2016 11:55:27 -0400 + -- Scott Moser Wed, 21 Sep 2016 11:56:23 -0400 cloud-init (0.7.8-3-g80f5ec4-0ubuntu1) yakkety; urgency=medium From 8f639a04afe6e4d44645f67364cdcc5d433e5b3f Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 23 Sep 2016 16:51:21 -0400 Subject: [PATCH 0039/1174] update changelog (new upstream snapshot 0.7.8-8-g0439d8a). --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1d5df215312..63922dbcc1f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (0.7.8-8-g0439d8a-0ubuntu1) UNRELEASED; 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 Fri, 23 Sep 2016 16:51:03 -0400 + cloud-init (0.7.8-4-g970dbd1-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From dde8fb70c8a05294b2ff06df18988c78203daa3b Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 23 Sep 2016 16:51:31 -0400 Subject: [PATCH 0040/1174] releasing package cloud-init version 0.7.8-8-g0439d8a-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 63922dbcc1f..e4ee19d58fd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.8-8-g0439d8a-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.8-8-g0439d8a-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. - Decode unicode types in decode_binary [Robert Schweikert] @@ -6,7 +6,7 @@ cloud-init (0.7.8-8-g0439d8a-0ubuntu1) UNRELEASED; urgency=medium - Allow ephemeral drive to be unpartitioned [Paul Meyer] - subp: add 'update_env' argument - -- Scott Moser Fri, 23 Sep 2016 16:51:03 -0400 + -- Scott Moser Fri, 23 Sep 2016 16:51:27 -0400 cloud-init (0.7.8-4-g970dbd1-0ubuntu1) yakkety; urgency=medium From 590c3ccffef014bda0091e02bc86373d5aae5bae Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 29 Sep 2016 14:03:36 -0400 Subject: [PATCH 0041/1174] update changelog (new upstream snapshot 0.7.8-11-g02f6c4b). --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index e4ee19d58fd..ec6043ded1f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (0.7.8-11-g02f6c4b-0ubuntu1) UNRELEASED; 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 Thu, 29 Sep 2016 14:03:23 -0400 + cloud-init (0.7.8-8-g0439d8a-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From 1bf130a7e1157d83f073131beaa92d3169255229 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 29 Sep 2016 14:30:23 -0400 Subject: [PATCH 0042/1174] releasing package cloud-init version 0.7.8-11-g02f6c4b-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index ec6043ded1f..753324c3abc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,11 @@ -cloud-init (0.7.8-11-g02f6c4b-0ubuntu1) UNRELEASED; urgency=medium +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 Thu, 29 Sep 2016 14:03:23 -0400 + -- Scott Moser Thu, 29 Sep 2016 14:30:15 -0400 cloud-init (0.7.8-8-g0439d8a-0ubuntu1) yakkety; urgency=medium From 84cdc8362cfedfb4c4e49966879427d8f49ca2c5 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 4 Oct 2016 16:45:05 -0400 Subject: [PATCH 0043/1174] update changelog (new upstream snapshot 0.7.8-14-g94fd35e). --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index 753324c3abc..56fa5950452 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (0.7.8-14-g94fd35e-0ubuntu1) UNRELEASED; 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 Tue, 04 Oct 2016 16:44:29 -0400 + cloud-init (0.7.8-11-g02f6c4b-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From 29122844cafebaad766c27163a94950d29bfbfa3 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 4 Oct 2016 16:46:09 -0400 Subject: [PATCH 0044/1174] releasing package cloud-init version 0.7.8-14-g94fd35e-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 56fa5950452..958053a9bb8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.8-14-g94fd35e-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.8-14-g94fd35e-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. - systemd: run cloud-init.service Before dbus.service (LP: #1629797) @@ -6,7 +6,7 @@ cloud-init (0.7.8-14-g94fd35e-0ubuntu1) UNRELEASED; urgency=medium [Ryan Harper] - Improve module documentation and doc cleanup. [Wesley Wiedenmeier] - -- Scott Moser Tue, 04 Oct 2016 16:44:29 -0400 + -- Scott Moser Tue, 04 Oct 2016 16:46:05 -0400 cloud-init (0.7.8-11-g02f6c4b-0ubuntu1) yakkety; urgency=medium From 2350d8989c68cac4d7dba462a701066cbf7f5bf2 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 7 Oct 2016 12:36:38 -0400 Subject: [PATCH 0045/1174] update changelog (new upstream snapshot 0.7.8-15-g6e45ffb). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 958053a9bb8..05d37bf8b23 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (0.7.8-15-g6e45ffb-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - systemd: Run cloud-init.service Before dbus.socket not dbus.target + [Daniel Watkins] (LP: #1629797). + + -- Scott Moser Fri, 07 Oct 2016 12:36:18 -0400 + cloud-init (0.7.8-14-g94fd35e-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From e01edab90fc1020a0537b2617860a7b14c243aed Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 7 Oct 2016 12:41:42 -0400 Subject: [PATCH 0046/1174] releasing package cloud-init version 0.7.8-15-g6e45ffb-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 05d37bf8b23..f8e4cec92e3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.8-15-g6e45ffb-0ubuntu1) UNRELEASED; urgency=medium +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 Fri, 07 Oct 2016 12:36:18 -0400 + -- Scott Moser Fri, 07 Oct 2016 12:41:38 -0400 cloud-init (0.7.8-14-g94fd35e-0ubuntu1) yakkety; urgency=medium From f52be63b1bc67c6600507ca9ee071d33a60f5511 Mon Sep 17 00:00:00 2001 From: Ben Howard Date: Sun, 2 Oct 2016 18:15:00 -0600 Subject: [PATCH 0047/1174] debian/cloud-init.templates: enable DigitalOcean by default Added DigitalOcean to the default templates as enabled by default. This allows cloud-init to work out of the box on DigitalOcean droplets. --- debian/cloud-init.templates | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index f056f05bfc5..494c27a9a1d 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Ec2, CloudStack, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, 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, 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, Ec2: reads data from EC2 Metadata service, CloudStack: Read from CloudStack metadata service, None: Failsafe datasource +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Ec2, CloudStack, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, 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, 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. From 1a2086302c3a62277b272bd004e34eb5d264c2fe Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 18 Oct 2016 15:05:05 -0400 Subject: [PATCH 0048/1174] update changelog * debian/cloud-init.templates: enable DigitalOcean by default --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index f8e4cec92e3..f338803e9f9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (0.7.8-15-g6e45ffb-0ubuntu2) UNRELEASED; urgency=medium + + * debian/cloud-init.templates: enable DigitalOcean by default [Ben Howard] + + -- Scott Moser Tue, 18 Oct 2016 15:01:47 -0400 + cloud-init (0.7.8-15-g6e45ffb-0ubuntu1) yakkety; urgency=medium * New upstream snapshot. From 49c24587b7dbfa3fdb7e027f3a923288d6e62e86 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 25 Oct 2016 17:06:51 -0400 Subject: [PATCH 0049/1174] update changelog (new upstream snapshot 0.7.8-27-g29348af). --- debian/changelog | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index f338803e9f9..23720cd891d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,22 @@ -cloud-init (0.7.8-15-g6e45ffb-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (0.7.8-27-g29348af-0ubuntu1) UNRELEASED; urgency=medium * debian/cloud-init.templates: enable DigitalOcean by default [Ben Howard] - - -- Scott Moser Tue, 18 Oct 2016 15:01:47 -0400 + * 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 Tue, 25 Oct 2016 17:06:18 -0400 cloud-init (0.7.8-15-g6e45ffb-0ubuntu1) yakkety; urgency=medium From ce6a8c318ffd3dbcb7d976295a6974aebb47945a Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 25 Oct 2016 17:07:16 -0400 Subject: [PATCH 0050/1174] releasing package cloud-init version 0.7.8-27-g29348af-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 23720cd891d..00d35c5d258 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.8-27-g29348af-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.8-27-g29348af-0ubuntu1) zesty; urgency=medium * debian/cloud-init.templates: enable DigitalOcean by default [Ben Howard] * New upstream snapshot. @@ -16,7 +16,7 @@ cloud-init (0.7.8-27-g29348af-0ubuntu1) UNRELEASED; urgency=medium - MAAS: improve the main of datasource to look at kernel cmdline config. - tests: silence the Cheetah UserWarning about NameMapper C version. - -- Scott Moser Tue, 25 Oct 2016 17:06:18 -0400 + -- Scott Moser Tue, 25 Oct 2016 17:06:59 -0400 cloud-init (0.7.8-15-g6e45ffb-0ubuntu1) yakkety; urgency=medium From fd446b576e7f40b37fa8a59e6814faeef85f1b07 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 26 Oct 2016 09:06:00 -0400 Subject: [PATCH 0051/1174] update changelog (new upstream snapshot 0.7.8-28-gf7a5756). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 00d35c5d258..0419d53c844 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (0.7.8-28-gf7a5756-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - cc_users_groups: fix remaing call to ds.normalize_user_groups + [Ryan Harper] + + -- Scott Moser Wed, 26 Oct 2016 09:05:42 -0400 + cloud-init (0.7.8-27-g29348af-0ubuntu1) zesty; urgency=medium * debian/cloud-init.templates: enable DigitalOcean by default [Ben Howard] From 81c821916d18efeee4339ed326c6d9a5a3d136e9 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 26 Oct 2016 09:06:12 -0400 Subject: [PATCH 0052/1174] releasing package cloud-init version 0.7.8-28-gf7a5756-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0419d53c844..32cfa577591 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.8-28-gf7a5756-0ubuntu1) UNRELEASED; urgency=medium +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 Wed, 26 Oct 2016 09:05:42 -0400 + -- Scott Moser Wed, 26 Oct 2016 09:06:03 -0400 cloud-init (0.7.8-27-g29348af-0ubuntu1) zesty; urgency=medium From ddda48bc2b33ddcb0814b2e9b9f8d85b8f21cc7c Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 4 Nov 2016 10:38:36 -0400 Subject: [PATCH 0053/1174] update changelog (new upstream snapshot 0.7.8-34-ga1cdebd). --- debian/changelog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index 32cfa577591..a0ab85211d0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +cloud-init (0.7.8-34-ga1cdebd-0ubuntu1) UNRELEASED; 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 Fri, 04 Nov 2016 10:38:15 -0400 + cloud-init (0.7.8-28-gf7a5756-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 18c123eaafcc1fb70b76b8382a6f4d8810420296 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 4 Nov 2016 11:04:27 -0400 Subject: [PATCH 0054/1174] releasing package cloud-init version 0.7.8-34-ga1cdebd-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index a0ab85211d0..cf450341e1c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.8-34-ga1cdebd-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.8-34-ga1cdebd-0ubuntu1) zesty; urgency=medium * New upstream snapshot. - net/cmdline: Further adjustments to ipv6 support [LaMont Jones] @@ -9,7 +9,7 @@ cloud-init (0.7.8-34-ga1cdebd-0ubuntu1) UNRELEASED; urgency=medium - AliYun: Add new datasource for Ali-Cloud ECS [kaihuan.pkh] - Add coverage collection to tox unit tests. [Joshua Powers] - -- Scott Moser Fri, 04 Nov 2016 10:38:15 -0400 + -- Scott Moser Fri, 04 Nov 2016 11:03:46 -0400 cloud-init (0.7.8-28-gf7a5756-0ubuntu1) zesty; urgency=medium From ec1b3521f4555bc38b44393d3794f6f3732e7e56 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 7 Nov 2016 13:31:08 -0500 Subject: [PATCH 0055/1174] update changelog (new upstream snapshot 0.7.8-35-gc24187e). --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index cf450341e1c..09d8c694218 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (0.7.8-35-gc24187e-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - pyflakes: fix issue with pyflakes 1.3 found in ubuntu zesty-proposed. + + -- Scott Moser Mon, 07 Nov 2016 13:30:49 -0500 + cloud-init (0.7.8-34-ga1cdebd-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 22900ff61cce6b2d0a98c098928edbcfa8722a34 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 7 Nov 2016 13:31:40 -0500 Subject: [PATCH 0056/1174] releasing package cloud-init version 0.7.8-35-gc24187e-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 09d8c694218..725f467409b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (0.7.8-35-gc24187e-0ubuntu1) UNRELEASED; urgency=medium +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 Mon, 07 Nov 2016 13:30:49 -0500 + -- Scott Moser Mon, 07 Nov 2016 13:31:30 -0500 cloud-init (0.7.8-34-ga1cdebd-0ubuntu1) zesty; urgency=medium From b5b77f95b2de7efaeea73fef08e7bde4dcd7e8b3 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 10 Nov 2016 20:41:47 -0500 Subject: [PATCH 0057/1174] update changelog (new upstream snapshot 0.7.8-44-gbf4010a). --- debian/changelog | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/debian/changelog b/debian/changelog index 725f467409b..1ab640a34ac 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +cloud-init (0.7.8-44-gbf4010a-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - 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 Thu, 10 Nov 2016 20:40:33 -0500 + cloud-init (0.7.8-35-gc24187e-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From ab167ef5c3365ddcbdbef2bdd82f4afd5e696cbc Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 10 Nov 2016 21:03:44 -0500 Subject: [PATCH 0058/1174] update changelog (new upstream snapshot 0.7.8-45-g584b843). --- debian/changelog | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1ab640a34ac..2ff1d665ece 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ -cloud-init (0.7.8-44-gbf4010a-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.8-45-g584b843-0ubuntu1) UNRELEASED; 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 @@ -12,7 +13,7 @@ cloud-init (0.7.8-44-gbf4010a-0ubuntu1) UNRELEASED; urgency=medium - doc: fixed example to not overwrite /etc/hosts [Chris Glass] - Doc: fix spelling / typos in ca_certs and scripts_vendor. - -- Scott Moser Thu, 10 Nov 2016 20:40:33 -0500 + -- Scott Moser Thu, 10 Nov 2016 21:03:24 -0500 cloud-init (0.7.8-35-gc24187e-0ubuntu1) zesty; urgency=medium From 8b8276bb930d06eaee21868955ff814f1e5a06c5 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 10 Nov 2016 21:04:16 -0500 Subject: [PATCH 0059/1174] releasing package cloud-init version 0.7.8-45-g584b843-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2ff1d665ece..d13fcd62e9f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.8-45-g584b843-0ubuntu1) UNRELEASED; urgency=medium +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] @@ -13,7 +13,7 @@ cloud-init (0.7.8-45-g584b843-0ubuntu1) UNRELEASED; urgency=medium - doc: fixed example to not overwrite /etc/hosts [Chris Glass] - Doc: fix spelling / typos in ca_certs and scripts_vendor. - -- Scott Moser Thu, 10 Nov 2016 21:03:24 -0500 + -- Scott Moser Thu, 10 Nov 2016 21:04:09 -0500 cloud-init (0.7.8-35-gc24187e-0ubuntu1) zesty; urgency=medium From eb3901822483195556e857fddc6b188ffbaf1ca6 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 15 Nov 2016 17:21:25 -0500 Subject: [PATCH 0060/1174] update changelog (new upstream snapshot 0.7.8-48-g9d826b8). --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index d13fcd62e9f..ec78b17985a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (0.7.8-48-g9d826b8-0ubuntu1) UNRELEASED; 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 Tue, 15 Nov 2016 17:21:07 -0500 + cloud-init (0.7.8-45-g584b843-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From adf2b86e7a86cb26d9b8235f5da2fa0188c78c53 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 15 Nov 2016 17:21:53 -0500 Subject: [PATCH 0061/1174] releasing package cloud-init version 0.7.8-48-g9d826b8-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index ec78b17985a..0d38f814541 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.8-48-g9d826b8-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.8-48-g9d826b8-0ubuntu1) zesty; urgency=medium * New upstream snapshot. - systemd: cloud-init-local use RequiresMountsFor=/var/lib/cloud @@ -6,7 +6,7 @@ cloud-init (0.7.8-48-g9d826b8-0ubuntu1) UNRELEASED; urgency=medium - systemd: cloud-init remove After=systemd-networkd-wait-online - systemd: cloud-init-local change Before basic to sysinit - -- Scott Moser Tue, 15 Nov 2016 17:21:07 -0500 + -- Scott Moser Tue, 15 Nov 2016 17:21:34 -0500 cloud-init (0.7.8-45-g584b843-0ubuntu1) zesty; urgency=medium From fac7c5c3b5758c03b3df40ce25849c73de1a8140 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 18 Nov 2016 15:35:05 -0500 Subject: [PATCH 0062/1174] debian/cloud-init.postinst: update /etc/fstab on Azure instances. The edit consists of replacing comment=cloudconfig with x-systemd.requires,comment=cloudconfig inside of the 4th (fs_mntops) field in fstab. The edits are carefully safeguarded by checks for: a.) existance of /var/lib/cloud/instance/datasource b.) running on Azure per previous datasource run. c.) existance of /etc/fstab d.) upgrading from sufficiently old version Additionally before any write is done, we check that the new and old fstab file differ. LP: #1611074 --- debian/cloud-init.postinst | 67 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst index a36fb248c89..420420b5b6e 100644 --- a/debian/cloud-init.postinst +++ b/debian/cloud-init.postinst @@ -5,6 +5,11 @@ 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 @@ -212,6 +217,66 @@ disable_network_config_on_upgrade() { fi } +fix_azure_upgrade_1611074() { + # adjust /etc/fstab on azure so boot after resize does not mount + # /mnt as ntfs and stop re-formatting. + local fixed_ver="0.7.8-49-1" dspath="/var/lib/cloud/instance/datasource" + local oldver="$1" tmpf="" r="" wmsg="" me="cloud-init postinst" + + # if not on azure, or not booted with instance/ skip out. + if [ ! -e "$dspath" ]; then + debug "no $dspath" + return 0 + fi + if ! grep -qi azure "$dspath"; then + debug "not on azure per $dspath" + return 0 + fi + + # if there is no /etc/fstab, then nothing to fix. + if [ ! -e /etc/fstab ]; then + debug "no /etc/fstab" + return 0 + fi + + if dpkg --compare-versions "$oldver" ge "$fixed_ver"; then + debug "previous version was fixed" + return 0 + fi + + wmsg="WARN: $me failed." + wmsg="$wmsg Subsequent resize may not update ephemeral correctly." + tmpf=$(mktemp "${TMPDIR:-/tmp}/cloud-init-upgrade.XXXXXX") || { + echo "$wmsg (mktemp failed with $?)" 1>&2 + return 0; + } + + awk '{ + if ($4 !~ /x-systemd.requires/ && $4 ~ /comment=cloudconfig/) { + sub(/comment=cloudconfig/, "x-systemd.requires=cloud-init.service,comment=cloudconfig") + } + printf("%s\n", $0)}' /etc/fstab > "$tmpf" || { + echo "$wmsg (awk reading of /etc/fstab failed with $?)" 1>&2 + rm -f "$tmpf" + return 0; + } + if cmp /etc/fstab "$tmpf" >/dev/null 2>&1; then + debug "no changes needed." + else + cat "$tmpf" > /etc/fstab || { + r=$? + echo "$wmsg (cp $tmpf /etc/fstab failed with $r)" + echo ==== expected to write the following to /etc/fstab ===== + cat "$tmpf" + echo ======================================================== + return $r + } 1>&2 + echo "$me fixed /etc/fstab for x-systemd.requires" 1>&2 + fi + rm "$tmpf" || : +} + + if [ "$1" = "configure" ]; then # disable ureadahead (LP: #499520) dpkg-divert --package cloud-init --rename --divert \ @@ -254,6 +319,8 @@ EOF # make upgrades disable network changes by cloud-init disable_network_config_on_upgrade "$2" + + fix_azure_upgrade_1611074 "$2" fi #DEBHELPER# From 541f80ebcef4c35c1bd8718e847c47d709a1a918 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 18 Nov 2016 15:41:40 -0500 Subject: [PATCH 0063/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 0d38f814541..04c52c12177 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (0.7.8-48-g9d826b8-0ubuntu2) UNRELEASED; urgency=medium + + * debian/cloud-init.postinst: update /etc/fstab on Azure to fix + future resize operations. (LP: #1611074) + + -- Scott Moser Fri, 18 Nov 2016 15:25:17 -0500 + cloud-init (0.7.8-48-g9d826b8-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 681e3d0f207696b6c9b46b9663a27a5f33f956bc Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 18 Nov 2016 16:36:54 -0500 Subject: [PATCH 0064/1174] update changelog (new upstream snapshot 0.7.8-49-g9e904bb). --- debian/changelog | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 04c52c12177..ef56efd96ca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,13 @@ -cloud-init (0.7.8-48-g9d826b8-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (0.7.8-49-g9e904bb-0ubuntu1) UNRELEASED; 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 Fri, 18 Nov 2016 15:25:17 -0500 + -- Scott Moser Fri, 18 Nov 2016 16:36:12 -0500 cloud-init (0.7.8-48-g9d826b8-0ubuntu1) zesty; urgency=medium From 9689e0ee64ddfbc187d7538d55d58cd095206d46 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 18 Nov 2016 16:37:55 -0500 Subject: [PATCH 0065/1174] releasing package cloud-init version 0.7.8-49-g9e904bb-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index ef56efd96ca..984970e6754 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.8-49-g9e904bb-0ubuntu1) UNRELEASED; urgency=medium +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) @@ -7,7 +7,7 @@ cloud-init (0.7.8-49-g9e904bb-0ubuntu1) UNRELEASED; urgency=medium Use that on Azure to handle re-formatting of ephemeral disk. (LP: #1611074) - -- Scott Moser Fri, 18 Nov 2016 16:36:12 -0500 + -- Scott Moser Fri, 18 Nov 2016 16:37:34 -0500 cloud-init (0.7.8-48-g9d826b8-0ubuntu1) zesty; urgency=medium From f1246a1f8b55aef2df3db6add92f8913e4475264 Mon Sep 17 00:00:00 2001 From: Simon Deziel Date: Thu, 6 Oct 2016 21:58:29 -0400 Subject: [PATCH 0066/1174] debian/grub-legacy-ec2.install: install post(inst|rm) files correctly. The postinst and postrm scripts for grub-legacy-ec2 were ending up in /etc/kernel/kernel/ rather than /etc/kernel/ $ dpkg -L grub-legacy-ec2 | grep /etc .. /etc/kernel/kernel/postinst.d/x-grub-legacy-ec2 /etc/kernel/kernel/postrm.d/x-grub-legacy-ec2 New and correct paths are: /etc/kernel/postinst.d/x-grub-legacy-ec2 /etc/kernel/postrm.d/x-grub-legacy-ec2 LP: #1581416 --- debian/grub-legacy-ec2.install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/grub-legacy-ec2.install b/debian/grub-legacy-ec2.install index b75b0beee2e..f9ac62816b0 100644 --- a/debian/grub-legacy-ec2.install +++ b/debian/grub-legacy-ec2.install @@ -1,4 +1,4 @@ debian/grub-set-default usr/sbin debian/grub-set-default-legacy-ec2 usr/sbin -debian/kernel etc/kernel/ +debian/kernel etc/ debian/update-grub-legacy-ec2 usr/sbin From 3589660b12865631e360befaba901d925546f7e0 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 21 Nov 2016 10:14:12 -0500 Subject: [PATCH 0067/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 984970e6754..97d5f536f9c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (0.7.8-49-g9e904bb-0ubuntu2) UNRELEASED; urgency=medium + + * debian/grub-legacy-ec2.install: install post(inst|rm) files correctly. + [Simon Deziel] (LP: #1581416) + + -- Scott Moser Mon, 21 Nov 2016 09:42:28 -0500 + cloud-init (0.7.8-49-g9e904bb-0ubuntu1) zesty; urgency=medium * debian/cloud-init.postinst: update /etc/fstab on Azure to fix From 3f6ba404abbca282854fb495f22a1d23a53b87df Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 28 Nov 2016 16:08:01 -0500 Subject: [PATCH 0068/1174] update changelog (new upstream snapshot 0.7.8-61-g2d2ec70). --- debian/changelog | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 97d5f536f9c..f1cb223f8fc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,22 @@ -cloud-init (0.7.8-49-g9e904bb-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (0.7.8-61-g2d2ec70-0ubuntu1) UNRELEASED; urgency=medium * debian/grub-legacy-ec2.install: install post(inst|rm) files correctly. [Simon Deziel] (LP: #1581416) - - -- Scott Moser Mon, 21 Nov 2016 09:42:28 -0500 + * 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 Mon, 28 Nov 2016 16:07:41 -0500 cloud-init (0.7.8-49-g9e904bb-0ubuntu1) zesty; urgency=medium From d3fbff64a9fa66d4ba42cbc7ce1b1ab2555ff83b Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 28 Nov 2016 16:08:17 -0500 Subject: [PATCH 0069/1174] releasing package cloud-init version 0.7.8-61-g2d2ec70-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index f1cb223f8fc..9d399759ba0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.8-61-g2d2ec70-0ubuntu1) UNRELEASED; urgency=medium +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) @@ -16,7 +16,7 @@ cloud-init (0.7.8-61-g2d2ec70-0ubuntu1) UNRELEASED; urgency=medium - 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 Mon, 28 Nov 2016 16:07:41 -0500 + -- Scott Moser Mon, 28 Nov 2016 16:08:09 -0500 cloud-init (0.7.8-49-g9e904bb-0ubuntu1) zesty; urgency=medium From e7e210d019d1b8cb5c50aa963b11fbae89d8c6b8 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 1 Dec 2016 11:50:55 -0500 Subject: [PATCH 0070/1174] debian/cherry-pick: add cherry picking tool * Add a cherry picking tool. * add support for removing cherry picks to new-upstream-snapshot. * remove bzr version of script debian/cherry-pick-rev --- debian/README.source | 6 ++ debian/cherry-pick | 187 +++++++++++++++++++++++++++++++++++ debian/cherry-pick-rev | 45 --------- debian/new-upstream-snapshot | 38 ++++++- 4 files changed, 230 insertions(+), 46 deletions(-) create mode 100755 debian/cherry-pick delete mode 100755 debian/cherry-pick-rev diff --git a/debian/README.source b/debian/README.source index 86bcf53030a..df79a3ebbd0 100644 --- a/debian/README.source +++ b/debian/README.source @@ -21,3 +21,9 @@ Patches in debian/patches are stored un-applied. To pull a new upstream snapshot: ./debian/new-upstream-snapshot ../trunk + +== Cherry Pick == +To cherry pick an upstream commit: + ./debian/cherry-pick + +That will add a patch to debian/patches/ and debian/patches/series. diff --git a/debian/cherry-pick b/debian/cherry-pick new file mode 100755 index 00000000000..0ba2f19da88 --- /dev/null +++ b/debian/cherry-pick @@ -0,0 +1,187 @@ +#!/bin/bash + +VERBOSITY=0 +TEMP_D="" +CR=$'\n' + +error() { echo "$@" 1>&2; } +fail() { [ $# -eq 0 ] || error "$@"; exit 1; } + +Usage() { + cat <> + + 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() { + local line="" commit="" lcommit="" bugs="" + local printer="${1:-print_commit}" + while :; do + read line || break + case "$line" in + commit\ *) + if [ -n "$commit" ]; then + "$printer" "$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 + "$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 show --no-decorate "$chash" > "$fpath" || + { error "failed git show $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=( debian/changelog "$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'" + + return 0 +} + +main "$@" +# vi: ts=4 expandtab diff --git a/debian/cherry-pick-rev b/debian/cherry-pick-rev deleted file mode 100755 index 09f60d12670..00000000000 --- a/debian/cherry-pick-rev +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -Usage() { - cat <&2; exit 1; } -[ "$1" = "--help" -o "$1" = "-h" ] && { Usage; exit 0; } - -repo=${1} -revno=${2} -name=${3} - -name=${name%.patch} -name=${name%.diff} - -fname="${name}.patch" - -( cd "${repo}" && bzr log -r${revno}..${revno} && - bzr diff -p1 -r$((${revno}-1))..${revno} ) | - filterdiff --exclude "*/ChangeLog" | - quilt import -P "${fname}" /dev/stdin - -[ $? -eq 0 ] || { echo "failed"; exit 1; } - -cat <&2; } fail() { [ $# -eq 0 ] || error "$@"; exit 1; } Usage() { @@ -53,6 +55,7 @@ case "$cur_branch" in *) 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) || @@ -75,9 +78,42 @@ if [ "${prev_upstream_ver}" = "${new_upstream_ver}" ]; then 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 ..'" -TEMP_D=$(mktemp -d) || fail "failed mktemp" clog="${TEMP_D}/changelog" gitlog="${TEMP_D}/gitlog" From 3cb2d0d587fcd7b11ef6d04c5370a702305c694d Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Sat, 10 Dec 2016 15:42:05 +0100 Subject: [PATCH 0071/1174] debian/cherry-pick: use git format-patch rather than git show. This makes the patches in debian/patches/ dep3 complaint by using git format-patch rather than 'git show' --- debian/cherry-pick | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/debian/cherry-pick b/debian/cherry-pick index 0ba2f19da88..4906917f02b 100755 --- a/debian/cherry-pick +++ b/debian/cherry-pick @@ -50,23 +50,30 @@ print_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\ *) + commit\ *|From\ *) if [ -n "$commit" ]; then "$printer" "$subject" "$author" "$bugs" fi - commit=${line#*: } + commit=${line#* } + commit=${commit%% *} bugs="" author="" subject="" ;; - Author:*) author="${line#Author: }";; + 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 @@ -140,8 +147,8 @@ main() { fi fi - git show --no-decorate "$chash" > "$fpath" || - { error "failed git show $chash > $fpath"; return 1; } + 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; } From 1a2dce7c0937ba153df13f65ff26e8711ec41c9e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Sun, 11 Dec 2016 21:21:20 -0500 Subject: [PATCH 0072/1174] update changelog (new upstream snapshot 0.7.8-67-gc9c9197). --- debian/changelog | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/debian/changelog b/debian/changelog index 9d399759ba0..9ecc5a210c4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +cloud-init (0.7.8-67-gc9c9197-0ubuntu1) UNRELEASED; urgency=medium + + * 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 Sun, 11 Dec 2016 21:20:47 -0500 + cloud-init (0.7.8-61-g2d2ec70-0ubuntu1) zesty; urgency=medium * debian/grub-legacy-ec2.install: install post(inst|rm) files correctly. From b1db005b99a5486104adecb844dc0978f56a1794 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Sun, 11 Dec 2016 21:22:44 -0500 Subject: [PATCH 0073/1174] debian/cherry-pick: update changelog --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 9ecc5a210c4..14c165a9921 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,7 @@ cloud-init (0.7.8-67-gc9c9197-0ubuntu1) UNRELEASED; 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) From 6d5a99fa368e416e2ba23f00b9c7e6c39289217e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Sun, 11 Dec 2016 21:23:41 -0500 Subject: [PATCH 0074/1174] releasing package cloud-init version 0.7.8-67-gc9c9197-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 14c165a9921..1275a6b750f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.8-67-gc9c9197-0ubuntu1) UNRELEASED; urgency=medium +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. @@ -10,7 +10,7 @@ cloud-init (0.7.8-67-gc9c9197-0ubuntu1) UNRELEASED; urgency=medium - Replace usage of sys_netdev_info with read_sys_net (LP: #1625766) - fix problems found in python2.6 test. - -- Scott Moser Sun, 11 Dec 2016 21:20:47 -0500 + -- Scott Moser Sun, 11 Dec 2016 21:22:57 -0500 cloud-init (0.7.8-61-g2d2ec70-0ubuntu1) zesty; urgency=medium From 0596118156ea7dddd1505081e3613ebaa8d3caa0 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 19 Dec 2016 12:35:07 -0500 Subject: [PATCH 0075/1174] update changelog (new upstream snapshot 0.7.8-68-gca3ae67). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1275a6b750f..ef2ce3792e5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (0.7.8-68-gca3ae67-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - user-groups: fix bug when groups was provided as string and had spaces + (LP: #1354694) + + -- Scott Moser Mon, 19 Dec 2016 12:34:50 -0500 + cloud-init (0.7.8-67-gc9c9197-0ubuntu1) zesty; urgency=medium * debian/cherry-pick: add utility for cherry picking commits from upstream From 8c90c76d36f39f32f44c9a7de908adc58bb8ce3a Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 19 Dec 2016 12:35:36 -0500 Subject: [PATCH 0076/1174] releasing package cloud-init version 0.7.8-68-gca3ae67-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index ef2ce3792e5..2560b694184 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.8-68-gca3ae67-0ubuntu1) UNRELEASED; urgency=medium +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 Mon, 19 Dec 2016 12:34:50 -0500 + -- Scott Moser Mon, 19 Dec 2016 12:35:13 -0500 cloud-init (0.7.8-67-gc9c9197-0ubuntu1) zesty; urgency=medium From 871f432720bf41274f7a3e173b083e5b50ed6c24 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 23 Dec 2016 12:52:22 -0500 Subject: [PATCH 0077/1174] update changelog (new upstream snapshot 0.7.9). --- debian/changelog | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/debian/changelog b/debian/changelog index 2560b694184..2f2dd06f23e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,22 @@ +cloud-init (0.7.9-0ubuntu1) UNRELEASED; 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 Fri, 23 Dec 2016 12:51:35 -0500 + cloud-init (0.7.8-68-gca3ae67-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 155ab5f71cfc5e1868ee215f82ae08fa27dc32d9 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 23 Dec 2016 12:55:02 -0500 Subject: [PATCH 0078/1174] releasing package cloud-init version 0.7.9-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2f2dd06f23e..78905979af5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-0ubuntu1) zesty; urgency=medium * New upstream snapshot. - release 0.7.9 @@ -15,7 +15,7 @@ cloud-init (0.7.9-0ubuntu1) UNRELEASED; urgency=medium - doc: change 'nobootwait' to 'nofail' in docs [Anhad Jai Singh] - Replace an expired bit.ly link in code comment. - -- Scott Moser Fri, 23 Dec 2016 12:51:35 -0500 + -- Scott Moser Fri, 23 Dec 2016 12:54:50 -0500 cloud-init (0.7.8-68-gca3ae67-0ubuntu1) zesty; urgency=medium From b7df5be278f61c362e39eb0812600706a0b480ba Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 12 Jan 2017 09:11:09 -0500 Subject: [PATCH 0079/1174] fix update-grub-legacy-ec2 to check config for CONFIG_XEN=y Instead of relying on name and version based checking, update-grub-legacy-ec2 will now look at the config for a kernel if it is available to determine if it should be considered a xen kernel. LP: #1379080 --- debian/update-grub-legacy-ec2 | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/debian/update-grub-legacy-ec2 b/debian/update-grub-legacy-ec2 index 19648f6df7a..cb4e170fa77 100755 --- a/debian/update-grub-legacy-ec2 +++ b/debian/update-grub-legacy-ec2 @@ -1398,8 +1398,23 @@ 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-}" @@ -1418,6 +1433,9 @@ if ! type is_xen_kernel >/dev/null 2>&1; then 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 From 21382fe3532200dada5dd79dfc0ec0e4d75cca7d Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 12 Jan 2017 15:40:04 -0500 Subject: [PATCH 0080/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 78905979af5..343c0a145bc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (0.7.9-0ubuntu2) UNRELEASED; urgency=medium + + * fix update-grub-legacy-ec2 to check config for CONFIG_XEN=y (LP: #1379080) + + -- Scott Moser Thu, 12 Jan 2017 15:39:07 -0500 + cloud-init (0.7.9-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 6d440db99c4150fa6a03d2c0410f2698af1f7f7f Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 20 Jan 2017 09:57:28 -0500 Subject: [PATCH 0081/1174] debian/copyright: update License field to include Apache-2.0 License of cloud-init in 0.7.9 became dual license GPL-3 or Apache-2.0. --- debian/copyright | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/copyright b/debian/copyright index 40dabac1c43..cf4a76f8b2e 100644 --- a/debian/copyright +++ b/debian/copyright @@ -12,7 +12,7 @@ Upstream Author: Scott Moser Chuck Short Copyright: 2010, Canonical Ltd. -License: GPL-3 +License: GPL-3 or Apache-2.0 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. From 7a186878122e36f648407fd977670ae1ea3ce4fb Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 20 Jan 2017 09:57:48 -0500 Subject: [PATCH 0082/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 343c0a145bc..b71dd4ef9a1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ cloud-init (0.7.9-0ubuntu2) UNRELEASED; urgency=medium + * debian/copyright: update License field to include Apache. * fix update-grub-legacy-ec2 to check config for CONFIG_XEN=y (LP: #1379080) -- Scott Moser Thu, 12 Jan 2017 15:39:07 -0500 From 17f3e7be07ca8ad4a6fc9d77409190bb9202f483 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 20 Jan 2017 10:01:39 -0500 Subject: [PATCH 0083/1174] update changelog --- debian/changelog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index b71dd4ef9a1..7e846b2f895 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,8 @@ cloud-init (0.7.9-0ubuntu2) UNRELEASED; urgency=medium * debian/copyright: update License field to include Apache. - * fix update-grub-legacy-ec2 to check config for CONFIG_XEN=y (LP: #1379080) + * debian/update-grub-legacy-ec2: fix to include kernels whose config + has CONFIG_XEN=y (LP: #1379080). -- Scott Moser Thu, 12 Jan 2017 15:39:07 -0500 From 34400bfb9b49c4fa5e41916e81bd90c0d6a90466 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 20 Jan 2017 10:01:51 -0500 Subject: [PATCH 0084/1174] releasing package cloud-init version 0.7.9-0ubuntu2 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 7e846b2f895..cf3b008e667 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.9-0ubuntu2) UNRELEASED; urgency=medium +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 Thu, 12 Jan 2017 15:39:07 -0500 + -- Scott Moser Fri, 20 Jan 2017 10:01:42 -0500 cloud-init (0.7.9-0ubuntu1) zesty; urgency=medium From 1f57ca584d36337ba114b179d929f1eb4f617a9e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 3 Feb 2017 21:41:05 -0500 Subject: [PATCH 0085/1174] update changelog (new upstream snapshot 0.7.9-19-ge987092). --- debian/changelog | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/debian/changelog b/debian/changelog index cf3b008e667..d4911f3a00a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,34 @@ +cloud-init (0.7.9-19-ge987092-0ubuntu1) UNRELEASED; 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 Fri, 03 Feb 2017 21:39:25 -0500 + cloud-init (0.7.9-0ubuntu2) zesty; urgency=medium * debian/copyright: update License field to include Apache. From 61537b15489bafd102ae2764b81b2e6f79cd187c Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 3 Feb 2017 21:54:58 -0500 Subject: [PATCH 0086/1174] releasing package cloud-init version 0.7.9-19-ge987092-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d4911f3a00a..ecb7fc5a31a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-19-ge987092-0ubuntu1) UNRELEASED; urgency=medium +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. @@ -27,7 +27,7 @@ cloud-init (0.7.9-19-ge987092-0ubuntu1) UNRELEASED; urgency=medium - validate-yaml: use python rather than explicitly python3 - Get early logging logged, including failures of cmdline url. - -- Scott Moser Fri, 03 Feb 2017 21:39:25 -0500 + -- Scott Moser Fri, 03 Feb 2017 21:54:39 -0500 cloud-init (0.7.9-0ubuntu2) zesty; urgency=medium From cbdc2ac3e66ae32ce90b2706436b22144d61a876 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 6 Feb 2017 10:09:53 -0600 Subject: [PATCH 0087/1174] update-grub-legacy-ec2: fix shell syntax error. update-grub-legacy-ec2 had a shell issue due to missing space. LP: #1662221 --- debian/update-grub-legacy-ec2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/update-grub-legacy-ec2 b/debian/update-grub-legacy-ec2 index cb4e170fa77..048fa63ed8e 100755 --- a/debian/update-grub-legacy-ec2 +++ b/debian/update-grub-legacy-ec2 @@ -1403,7 +1403,7 @@ if ! type is_xen_kernel >/dev/null 2>&1; then # expected config path is /boot/config-2.6.35-13-virtual local kernel="$1" config="" dir="" bname="" dir=${kernel%/*} - [ "$dir" = "$kernel"] && dir="." + [ "$dir" = "$kernel" ] && dir="." bname=${kernel##*/} config="$dir/config-${bname#*-}" [ -f "$config" ] || return 1 From 723ea8241d33cc9ef0ac09b51a942604108adc4e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 6 Feb 2017 10:11:49 -0600 Subject: [PATCH 0088/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index ecb7fc5a31a..3a07ddaf412 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (0.7.9-19-ge987092-0ubuntu2) UNRELEASED; urgency=medium + + * debian/update-grub-legacy-ec2: fix shell syntax error. (LP: #1662221) + + -- Scott Moser Mon, 06 Feb 2017 10:05:56 -0600 + cloud-init (0.7.9-19-ge987092-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From eecd087d31ede6ae8a8bd6486d2f0dc545ca0fa9 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 6 Feb 2017 11:15:30 -0500 Subject: [PATCH 0089/1174] releasing package cloud-init version 0.7.9-19-ge987092-0ubuntu2 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3a07ddaf412..860168a46fe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,8 @@ -cloud-init (0.7.9-19-ge987092-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (0.7.9-19-ge987092-0ubuntu2) zesty; urgency=medium * debian/update-grub-legacy-ec2: fix shell syntax error. (LP: #1662221) - -- Scott Moser Mon, 06 Feb 2017 10:05:56 -0600 + -- Scott Moser Mon, 06 Feb 2017 11:14:11 -0500 cloud-init (0.7.9-19-ge987092-0ubuntu1) zesty; urgency=medium From 346bf65d26a59b03a6207e9d7f4b9fd4e67027ff Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 9 Feb 2017 13:18:43 -0500 Subject: [PATCH 0090/1174] update changelog (new upstream snapshot 0.7.9-23-g0df21b6). --- debian/changelog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index 860168a46fe..6c43df15964 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +cloud-init (0.7.9-23-g0df21b6-0ubuntu1) UNRELEASED; 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 Thu, 09 Feb 2017 13:17:41 -0500 + cloud-init (0.7.9-19-ge987092-0ubuntu2) zesty; urgency=medium * debian/update-grub-legacy-ec2: fix shell syntax error. (LP: #1662221) From 3c28eb0cb78e8f5259e7123781c9d4f30024db9c Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 9 Feb 2017 13:18:55 -0500 Subject: [PATCH 0091/1174] releasing package cloud-init version 0.7.9-23-g0df21b6-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6c43df15964..ee36a4de3bf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-23-g0df21b6-0ubuntu1) UNRELEASED; urgency=medium +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. @@ -10,7 +10,7 @@ cloud-init (0.7.9-23-g0df21b6-0ubuntu1) UNRELEASED; urgency=medium [Joshua Powers] (LP: #1652329) - code-style: make master pass pycodestyle (2.3.1) cleanly. - -- Scott Moser Thu, 09 Feb 2017 13:17:41 -0500 + -- Scott Moser Thu, 09 Feb 2017 13:18:47 -0500 cloud-init (0.7.9-19-ge987092-0ubuntu2) zesty; urgency=medium From cc179b38b3dff1d65d36813bbbd4c36159ac7be3 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 10 Feb 2017 15:24:31 -0500 Subject: [PATCH 0092/1174] update changelog (new upstream snapshot 0.7.9-25-g65529b6). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index ee36a4de3bf..41e32c6426c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (0.7.9-25-g65529b6-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - ds-identify: fix checking for filesystem label (LP: #1663735) + - ds-identify: read ds=nocloud properly (LP: #1663723) + + -- Scott Moser Fri, 10 Feb 2017 15:24:22 -0500 + cloud-init (0.7.9-23-g0df21b6-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From a262d8c0dd6cc2a7990deb2daebe491590e88e92 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 10 Feb 2017 15:25:28 -0500 Subject: [PATCH 0093/1174] releasing package cloud-init version 0.7.9-25-g65529b6-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 41e32c6426c..bd684d0f619 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.9-25-g65529b6-0ubuntu1) UNRELEASED; urgency=medium +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 Fri, 10 Feb 2017 15:24:22 -0500 + -- Scott Moser Fri, 10 Feb 2017 15:25:17 -0500 cloud-init (0.7.9-23-g0df21b6-0ubuntu1) zesty; urgency=medium From f9f78aa83795296fa05dbb0159ef4aa8a5e12a1a Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 14 Feb 2017 14:45:23 -0500 Subject: [PATCH 0094/1174] update changelog (new upstream snapshot 0.7.9-26-g1cd8cfa). --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index bd684d0f619..24f6fa8aa02 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (0.7.9-26-g1cd8cfa-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - apply the runtime configuration written by ds-identify. + + -- Scott Moser Tue, 14 Feb 2017 14:45:15 -0500 + cloud-init (0.7.9-25-g65529b6-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From e0b99e0527833c82e93733fbc316d812eb9e08de Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 14 Feb 2017 14:45:37 -0500 Subject: [PATCH 0095/1174] releasing package cloud-init version 0.7.9-26-g1cd8cfa-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 24f6fa8aa02..bf58559fff8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (0.7.9-26-g1cd8cfa-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-26-g1cd8cfa-0ubuntu1) zesty; urgency=medium * New upstream snapshot. - apply the runtime configuration written by ds-identify. - -- Scott Moser Tue, 14 Feb 2017 14:45:15 -0500 + -- Scott Moser Tue, 14 Feb 2017 14:45:25 -0500 cloud-init (0.7.9-25-g65529b6-0ubuntu1) zesty; urgency=medium From 64f74dfea7f022cf0ea865efa765be05b4afc7fb Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 17 Feb 2017 17:05:40 -0500 Subject: [PATCH 0096/1174] update changelog (new upstream snapshot 0.7.9-30-gf4e8eb0). --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index bf58559fff8..c18d5e5c0d9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (0.7.9-30-gf4e8eb0-0ubuntu1) UNRELEASED; 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 Fri, 17 Feb 2017 17:05:12 -0500 + cloud-init (0.7.9-26-g1cd8cfa-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 4b4ada257add8cfc3fc6857c214af1e9042802c0 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 17 Feb 2017 17:06:30 -0500 Subject: [PATCH 0097/1174] releasing package cloud-init version 0.7.9-30-gf4e8eb0-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index c18d5e5c0d9..8cb771f12d8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-30-gf4e8eb0-0ubuntu1) UNRELEASED; urgency=medium +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. @@ -6,7 +6,7 @@ cloud-init (0.7.9-30-gf4e8eb0-0ubuntu1) UNRELEASED; urgency=medium [Lars Kellogg-Stedman] (LP: #1665441) - ec2_utils: fix MetadataLeafDecoder that returned bytes on empty. - -- Scott Moser Fri, 17 Feb 2017 17:05:12 -0500 + -- Scott Moser Fri, 17 Feb 2017 17:05:47 -0500 cloud-init (0.7.9-26-g1cd8cfa-0ubuntu1) zesty; urgency=medium From 0bdae4133a8f061bad8699952bb008f344d2878c Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 24 Feb 2017 22:53:49 -0500 Subject: [PATCH 0098/1174] update changelog (new upstream snapshot 0.7.9-38-g83606ae). --- debian/changelog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/debian/changelog b/debian/changelog index 8cb771f12d8..de0b44e6ba7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,18 @@ +cloud-init (0.7.9-38-g83606ae-0ubuntu1) UNRELEASED; 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 Fri, 24 Feb 2017 22:52:39 -0500 + cloud-init (0.7.9-30-gf4e8eb0-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From a5f156b2afc206924b503c2863c209b98e0fc93b Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 24 Feb 2017 22:54:01 -0500 Subject: [PATCH 0099/1174] releasing package cloud-init version 0.7.9-38-g83606ae-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index de0b44e6ba7..cc2357eaf1d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-38-g83606ae-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-38-g83606ae-0ubuntu1) zesty; urgency=medium * New upstream snapshot. - tools/ds-identify: ovf identify vmware guest customization. @@ -11,7 +11,7 @@ cloud-init (0.7.9-38-g83606ae-0ubuntu1) UNRELEASED; urgency=medium - tools/ds-identify: use quotes in local declarations. - tools/ds-identify: fix documentation of policy setting in a comment. - -- Scott Moser Fri, 24 Feb 2017 22:52:39 -0500 + -- Scott Moser Fri, 24 Feb 2017 22:53:53 -0500 cloud-init (0.7.9-30-gf4e8eb0-0ubuntu1) zesty; urgency=medium From 0816812ffde10db691574a3a869686bd3c27fe2f Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 3 Mar 2017 01:53:11 -0500 Subject: [PATCH 0100/1174] update changelog (new upstream snapshot 0.7.9-47-gc81ea53). --- debian/changelog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/debian/changelog b/debian/changelog index cc2357eaf1d..d208bedd387 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,18 @@ +cloud-init (0.7.9-47-gc81ea53-0ubuntu1) UNRELEASED; urgency=medium + + * 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 Fri, 03 Mar 2017 01:47:49 -0500 + cloud-init (0.7.9-38-g83606ae-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 0a1ef875e9915658b523f36988e8902ed1a6f1e1 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 3 Mar 2017 01:54:07 -0500 Subject: [PATCH 0101/1174] debian/rules: install Z99-cloudinit-warnings.sh to /etc/profile.d This adds the necessary change to debian/rules for upstream commit 33518d7d. --- debian/rules | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/rules b/debian/rules index ef13251f073..f335b7f74fd 100755 --- a/debian/rules +++ b/debian/rules @@ -19,3 +19,4 @@ override_dh_auto_install: dh_auto_install --destdir=debian/cloud-init install -D ./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 From 5bb3a09c9ff493170d400ba122eaa655520c0ee2 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 3 Mar 2017 01:56:07 -0500 Subject: [PATCH 0102/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index d208bedd387..ff4f98b9be1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ cloud-init (0.7.9-47-gc81ea53-0ubuntu1) UNRELEASED; 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) From bf0ab4f9f6988f1edc1eac424e12919b1773f9ba Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 3 Mar 2017 01:56:30 -0500 Subject: [PATCH 0103/1174] releasing package cloud-init version 0.7.9-47-gc81ea53-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index ff4f98b9be1..29f791a3896 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-47-gc81ea53-0ubuntu1) UNRELEASED; urgency=medium +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. @@ -12,7 +12,7 @@ cloud-init (0.7.9-47-gc81ea53-0ubuntu1) UNRELEASED; urgency=medium - tools/ds-identify: fix bug that would mistakingly enable vmware guest customization. - -- Scott Moser Fri, 03 Mar 2017 01:47:49 -0500 + -- Scott Moser Fri, 03 Mar 2017 01:56:19 -0500 cloud-init (0.7.9-38-g83606ae-0ubuntu1) zesty; urgency=medium From 88db8327615b3ec0281da154e66f0b6f9966450c Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 6 Mar 2017 14:55:36 -0500 Subject: [PATCH 0104/1174] update changelog (new upstream snapshot 0.7.9-48-g1c795b9). --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 29f791a3896..a545466ee3d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (0.7.9-48-g1c795b9-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - ds-identify: report cleanups for config and exit value. (LP: #1669949) + + -- Scott Moser Mon, 06 Mar 2017 14:55:14 -0500 + cloud-init (0.7.9-47-gc81ea53-0ubuntu1) zesty; urgency=medium * debian/rules: install Z99-cloudinit-warnings.sh to /etc/profile.d From 456a41368d9af3f956b74ab3622a5645df64d37d Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 6 Mar 2017 14:56:38 -0500 Subject: [PATCH 0105/1174] releasing package cloud-init version 0.7.9-48-g1c795b9-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index a545466ee3d..f4d1e366364 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (0.7.9-48-g1c795b9-0ubuntu1) UNRELEASED; urgency=medium +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 Mon, 06 Mar 2017 14:55:14 -0500 + -- Scott Moser Mon, 06 Mar 2017 14:56:28 -0500 cloud-init (0.7.9-47-gc81ea53-0ubuntu1) zesty; urgency=medium From 90570f12fc815eb2e6cca716fd1226d690560b2c Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 17 Mar 2017 21:38:06 -0400 Subject: [PATCH 0106/1174] update changelog (new upstream snapshot 0.7.9-66-g5beecdf8). --- debian/changelog | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/debian/changelog b/debian/changelog index f4d1e366364..d8a2f59871b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,31 @@ +cloud-init (0.7.9-66-g5beecdf8-0ubuntu1) UNRELEASED; 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 Fri, 17 Mar 2017 21:36:34 -0400 + cloud-init (0.7.9-48-g1c795b9-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 200fa5a71686446cffec9d7f054b3ac18ba3deac Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 17 Mar 2017 21:41:50 -0400 Subject: [PATCH 0107/1174] releasing package cloud-init version 0.7.9-66-g5beecdf8-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d8a2f59871b..0a5d39e2144 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-66-g5beecdf8-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-66-g5beecdf8-0ubuntu1) zesty; urgency=medium * New upstream snapshot. - net: add renderers for automatically selecting the renderer. @@ -24,7 +24,7 @@ cloud-init (0.7.9-66-g5beecdf8-0ubuntu1) UNRELEASED; urgency=medium - net: do not raise exception for > 3 nameservers [Lars Kellogg-Stedman] (LP: #1670052) - -- Scott Moser Fri, 17 Mar 2017 21:36:34 -0400 + -- Scott Moser Fri, 17 Mar 2017 21:41:40 -0400 cloud-init (0.7.9-48-g1c795b9-0ubuntu1) zesty; urgency=medium From ee1f3e2a1917365a8f157d2afa936d5c0a3629ad Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 20 Mar 2017 16:21:48 -0400 Subject: [PATCH 0108/1174] update changelog (new upstream snapshot 0.7.9-68-gef18b8ac). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 0a5d39e2144..df34984bab7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (0.7.9-68-gef18b8ac-0ubuntu1) UNRELEASED; 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 Mon, 20 Mar 2017 16:21:36 -0400 + cloud-init (0.7.9-66-g5beecdf8-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 6c6e334f34c6af4a33fcd8a1fdda7c794cd76d6b Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 20 Mar 2017 16:22:10 -0400 Subject: [PATCH 0109/1174] releasing package cloud-init version 0.7.9-68-gef18b8ac-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index df34984bab7..7fc45ed94f2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.9-68-gef18b8ac-0ubuntu1) UNRELEASED; urgency=medium +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 Mon, 20 Mar 2017 16:21:36 -0400 + -- Scott Moser Mon, 20 Mar 2017 16:21:55 -0400 cloud-init (0.7.9-66-g5beecdf8-0ubuntu1) zesty; urgency=medium From ada682ee39b4a6bcd666eeaf2c3e2b285650c4eb Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 24 Mar 2017 16:50:49 -0400 Subject: [PATCH 0110/1174] update changelog (new upstream snapshot 0.7.9-77-g4a2b2f87). --- debian/changelog | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/debian/changelog b/debian/changelog index 7fc45ed94f2..df6e65b2186 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,21 @@ +cloud-init (0.7.9-77-g4a2b2f87-0ubuntu1) UNRELEASED; 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 Fri, 24 Mar 2017 16:49:49 -0400 + cloud-init (0.7.9-68-gef18b8ac-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 15bd5959026e139911b63264925c38052a6115ef Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 24 Mar 2017 16:51:02 -0400 Subject: [PATCH 0111/1174] releasing package cloud-init version 0.7.9-77-g4a2b2f87-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index df6e65b2186..4ba41dec7db 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-77-g4a2b2f87-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-77-g4a2b2f87-0ubuntu1) zesty; urgency=medium * New upstream snapshot. - Fix filesystem creation when using "partition: auto" [Jonathan Ballet] @@ -14,7 +14,7 @@ cloud-init (0.7.9-77-g4a2b2f87-0ubuntu1) UNRELEASED; urgency=medium - Bounce network interface for Azure when using the built-in path. [Brent Baude] (LP: #1674685) - -- Scott Moser Fri, 24 Mar 2017 16:49:49 -0400 + -- Scott Moser Fri, 24 Mar 2017 16:50:56 -0400 cloud-init (0.7.9-68-gef18b8ac-0ubuntu1) zesty; urgency=medium From 9107838513b84b77b939a1b80b75c4a61dc450d9 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 27 Mar 2017 10:45:04 -0400 Subject: [PATCH 0112/1174] debian/cloud-init.templates: allow selection of Bigstep datasource. This datasource was just never enabled in the templates. As a result, 'dpkg-reconfigure cloud-init' doesn't show Bigstep. LP: #1676460 --- debian/cloud-init.templates | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index 494c27a9a1d..c02aa3fffbf 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Ec2, CloudStack, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, 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, Ec2: reads data from EC2 Metadata service, CloudStack: Read from CloudStack metadata service, None: Failsafe datasource +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Ec2, CloudStack, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, 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, 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. From 0dac0ad686a6b8111941da7cd6319010da2c66ac Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 27 Mar 2017 10:51:50 -0400 Subject: [PATCH 0113/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 4ba41dec7db..167926d34c9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (0.7.9-77-g4a2b2f87-0ubuntu2) UNRELEASED; urgency=medium + + * debian/cloud-init.templates: add Bigstep to list of sources. (LP: #1676460) + + -- Scott Moser Mon, 27 Mar 2017 10:46:30 -0400 + cloud-init (0.7.9-77-g4a2b2f87-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 2478739ef75a7b34f99bb8581b111a35e950b977 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 29 Mar 2017 16:53:14 -0400 Subject: [PATCH 0114/1174] update changelog (new upstream snapshot 0.7.9-82-g0e2030ca). --- debian/changelog | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 167926d34c9..32d5f71af3e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,17 @@ -cloud-init (0.7.9-77-g4a2b2f87-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (0.7.9-82-g0e2030ca-0ubuntu1) UNRELEASED; urgency=medium * debian/cloud-init.templates: add Bigstep to list of sources. (LP: #1676460) + * New upstream snapshot. + - support resizing partition and rootfs on system booted without initramfs. + [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 Mon, 27 Mar 2017 10:46:30 -0400 + -- Scott Moser Wed, 29 Mar 2017 16:52:43 -0400 cloud-init (0.7.9-77-g4a2b2f87-0ubuntu1) zesty; urgency=medium From f08e8c1ad360f244f3f8980334020411b942ef91 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 29 Mar 2017 16:53:33 -0400 Subject: [PATCH 0115/1174] releasing package cloud-init version 0.7.9-82-g0e2030ca-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 32d5f71af3e..5beca44d84d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-82-g0e2030ca-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-82-g0e2030ca-0ubuntu1) zesty; urgency=medium * debian/cloud-init.templates: add Bigstep to list of sources. (LP: #1676460) * New upstream snapshot. @@ -11,7 +11,7 @@ cloud-init (0.7.9-82-g0e2030ca-0ubuntu1) UNRELEASED; urgency=medium (LP: #1674861) - Add support for setting hashed passwords [Tore S. Lonoy] (LP: #1570325) - -- Scott Moser Wed, 29 Mar 2017 16:52:43 -0400 + -- Scott Moser Wed, 29 Mar 2017 16:53:26 -0400 cloud-init (0.7.9-77-g4a2b2f87-0ubuntu1) zesty; urgency=medium From 60d779aad771007d5800300a07e57743cb3f4274 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 30 Mar 2017 10:42:22 -0400 Subject: [PATCH 0116/1174] update changelog: add bug number to changelog entry. --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 5beca44d84d..d4c8bbb9912 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,7 +3,7 @@ cloud-init (0.7.9-82-g0e2030ca-0ubuntu1) zesty; urgency=medium * debian/cloud-init.templates: add Bigstep to list of sources. (LP: #1676460) * New upstream snapshot. - support resizing partition and rootfs on system booted without initramfs. - [Steve Langasek] + (LP: #1677376) [Steve Langasek] - apt_configure: run only when needed. (LP: #1675185) - OpenStack: identify OpenStack by product 'OpenStack Compute'. (LP: #1675349) From 55f889d696895c897b5ed48923bd5e7ba573cf8f Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 30 Mar 2017 16:46:27 -0400 Subject: [PATCH 0117/1174] update changelog (new upstream snapshot 0.7.9-87-gd23543eb). --- debian/changelog | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d4c8bbb9912..f43c2ccb297 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,13 @@ -cloud-init (0.7.9-82-g0e2030ca-0ubuntu1) zesty; urgency=medium +cloud-init (0.7.9-87-gd23543eb-0ubuntu1) UNRELEASED; 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) From 310e8c79c1fa437c7c5778e61c1eb9df55b209d5 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 30 Mar 2017 16:46:50 -0400 Subject: [PATCH 0118/1174] releasing package cloud-init version 0.7.9-87-gd23543eb-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index f43c2ccb297..f3d216e82de 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-87-gd23543eb-0ubuntu1) UNRELEASED; urgency=medium +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. @@ -17,7 +17,7 @@ cloud-init (0.7.9-87-gd23543eb-0ubuntu1) UNRELEASED; urgency=medium (LP: #1674861) - Add support for setting hashed passwords [Tore S. Lonoy] (LP: #1570325) - -- Scott Moser Wed, 29 Mar 2017 16:53:26 -0400 + -- Scott Moser Thu, 30 Mar 2017 16:46:43 -0400 cloud-init (0.7.9-77-g4a2b2f87-0ubuntu1) zesty; urgency=medium From e2bc7437884d3f3117b81eb76ac6d3d6d45800a7 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 31 Mar 2017 17:02:24 -0400 Subject: [PATCH 0119/1174] update changelog (new upstream snapshot 0.7.9-89-gbf7723e8). --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index f3d216e82de..6d8b5eb1ebe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (0.7.9-89-gbf7723e8-0ubuntu1) UNRELEASED; 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 Fri, 31 Mar 2017 17:02:08 -0400 + cloud-init (0.7.9-87-gd23543eb-0ubuntu1) zesty; urgency=medium * debian/cloud-init.templates: add Bigstep to list of sources. (LP: #1676460) From a1276f23b49e036632e273ade11ef322b0aafe67 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 31 Mar 2017 17:02:35 -0400 Subject: [PATCH 0120/1174] releasing package cloud-init version 0.7.9-89-gbf7723e8-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6d8b5eb1ebe..c529bcebfab 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-89-gbf7723e8-0ubuntu1) UNRELEASED; urgency=medium +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. @@ -6,7 +6,7 @@ cloud-init (0.7.9-89-gbf7723e8-0ubuntu1) UNRELEASED; urgency=medium - tests: update OpenNebula and Digital Ocean to not rely on host interfaces. - -- Scott Moser Fri, 31 Mar 2017 17:02:08 -0400 + -- Scott Moser Fri, 31 Mar 2017 17:02:28 -0400 cloud-init (0.7.9-87-gd23543eb-0ubuntu1) zesty; urgency=medium From 41b44c91117eb0d897e2ff98ad89d7eb80962aab Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 3 Apr 2017 11:10:27 -0400 Subject: [PATCH 0121/1174] update changelog (new upstream snapshot 0.7.9-90-g61eb03fe). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index c529bcebfab..82bd89f9c8a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (0.7.9-90-g61eb03fe-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - OpenStack: add 'dvs' to the list of physical link types. + (LP: #1674946) + + -- Scott Moser Mon, 03 Apr 2017 11:10:13 -0400 + cloud-init (0.7.9-89-gbf7723e8-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 765bdae615c6caa25dd028b3c88622c11c2ba7ca Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 3 Apr 2017 11:10:39 -0400 Subject: [PATCH 0122/1174] releasing package cloud-init version 0.7.9-90-g61eb03fe-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 82bd89f9c8a..7f6859fea66 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.9-90-g61eb03fe-0ubuntu1) UNRELEASED; urgency=medium +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 Mon, 03 Apr 2017 11:10:13 -0400 + -- Scott Moser Mon, 03 Apr 2017 11:10:38 -0400 cloud-init (0.7.9-89-gbf7723e8-0ubuntu1) zesty; urgency=medium From fd9f362675411495cf57cbd167f691deec75474e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 12 Apr 2017 11:15:03 -0400 Subject: [PATCH 0123/1174] update-grub-legacy-ec2: fix early exit failure no /etc/fstab file. If /etc/fstab did not exist, then update-grub-legacy-ec2 would fail. That can cause upgrade or install of any kernel package to fail. LP: #1682160 --- debian/update-grub-legacy-ec2 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/update-grub-legacy-ec2 b/debian/update-grub-legacy-ec2 index 048fa63ed8e..fb44b6e4513 100755 --- a/debian/update-grub-legacy-ec2 +++ b/debian/update-grub-legacy-ec2 @@ -370,7 +370,10 @@ boot_device=$(find_device "/boot") device_map=$grub_dir/device.map # Default kernel options, overidden by the kopt statement in the menufile. -loop_file=$(awk '$2=="/" && $4~"loop" {print $1}' /etc/fstab) +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%;*}" From bbc29f992948c790de8f2c85ea820c73bc505c18 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 12 Apr 2017 11:17:19 -0400 Subject: [PATCH 0124/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 7f6859fea66..79798a133f8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +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 Wed, 12 Apr 2017 11:16:33 -0400 + cloud-init (0.7.9-90-g61eb03fe-0ubuntu1) zesty; urgency=medium * New upstream snapshot. From 6230020fca61db3801586f91dec718729d154c80 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 25 Apr 2017 16:33:56 -0400 Subject: [PATCH 0125/1174] update changelog (new upstream snapshot 0.7.9-113-g513e99e0). --- debian/changelog | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/debian/changelog b/debian/changelog index 79798a133f8..cf1ff3a20ce 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,44 @@ +cloud-init (0.7.9-113-g513e99e0-0ubuntu1) UNRELEASED; 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 Tue, 25 Apr 2017 16:07:39 -0400 + cloud-init (0.7.9-90-g61eb03fe-0ubuntu2) UNRELEASED; urgency=medium * debian/update-grub-legacy-ec2: fix early exit failure no /etc/fstab From b43f3326734a25f8d4a19cbbc9082a07b8254395 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 25 Apr 2017 16:34:32 -0400 Subject: [PATCH 0126/1174] releasing package cloud-init version 0.7.9-113-g513e99e0-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index cf1ff3a20ce..a17ccce9289 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-113-g513e99e0-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-113-g513e99e0-0ubuntu1) artful; urgency=medium * New upstream snapshot. - nova-lxd: read product_name from environment, not platform. @@ -37,7 +37,7 @@ cloud-init (0.7.9-113-g513e99e0-0ubuntu1) UNRELEASED; urgency=medium - DigitalOcean: bind resolvers to loopback interface. [Ben Howard] - tests: fix AltCloud tests to not rely on blkid (LP: #1636531) - -- Scott Moser Tue, 25 Apr 2017 16:07:39 -0400 + -- Scott Moser Tue, 25 Apr 2017 16:34:08 -0400 cloud-init (0.7.9-90-g61eb03fe-0ubuntu2) UNRELEASED; urgency=medium From 17480c6e7c32cfc3a63bcc82e92a06919422ca1e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 23 May 2017 17:04:38 -0400 Subject: [PATCH 0127/1174] update changelog (new upstream snapshot 0.7.9-144-g2825a917). --- debian/changelog | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/debian/changelog b/debian/changelog index a17ccce9289..bb9604a4d27 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,59 @@ +cloud-init (0.7.9-144-g2825a917-0ubuntu1) UNRELEASED; 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 Tue, 23 May 2017 17:02:06 -0400 + cloud-init (0.7.9-113-g513e99e0-0ubuntu1) artful; urgency=medium * New upstream snapshot. From 8d326aeaf065cccaf18cd3163009df8278936ff3 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 23 May 2017 17:04:50 -0400 Subject: [PATCH 0128/1174] releasing package cloud-init version 0.7.9-144-g2825a917-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index bb9604a4d27..a6f75921334 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-144-g2825a917-0ubuntu1) UNRELEASED; urgency=medium +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 @@ -52,7 +52,7 @@ cloud-init (0.7.9-144-g2825a917-0ubuntu1) UNRELEASED; urgency=medium [Felix Dreissig] - tests: Enable artful [Joshua Powers] - -- Scott Moser Tue, 23 May 2017 17:02:06 -0400 + -- Scott Moser Tue, 23 May 2017 17:04:40 -0400 cloud-init (0.7.9-113-g513e99e0-0ubuntu1) artful; urgency=medium From ac87f272276f5e52fe30fdc19ff7e513ac01df6c Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 26 May 2017 15:11:34 -0400 Subject: [PATCH 0129/1174] update changelog (new upstream snapshot 0.7.9-153-g16a7302f). --- debian/changelog | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/debian/changelog b/debian/changelog index a6f75921334..20297d30c4e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,22 @@ +cloud-init (0.7.9-153-g16a7302f-0ubuntu1) UNRELEASED; 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 Fri, 26 May 2017 15:10:54 -0400 + cloud-init (0.7.9-144-g2825a917-0ubuntu1) artful; urgency=medium * New upstream snapshot. From b47ae800fcceee9d1e1329c4fbe9381eae9c1a0f Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 26 May 2017 15:11:56 -0400 Subject: [PATCH 0130/1174] releasing package cloud-init version 0.7.9-153-g16a7302f-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 20297d30c4e..5732dbb75b7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-153-g16a7302f-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-153-g16a7302f-0ubuntu1) artful; urgency=medium * New upstream snapshot. - net: fix reading and rendering addresses in cidr format. @@ -15,7 +15,7 @@ cloud-init (0.7.9-153-g16a7302f-0ubuntu1) UNRELEASED; urgency=medium - tox/build: do not package depend on style requirements. - cc_ntp: Restructure cc_ntp unit tests. [Chad Smith] (LP: #1692794) - -- Scott Moser Fri, 26 May 2017 15:10:54 -0400 + -- Scott Moser Fri, 26 May 2017 15:11:48 -0400 cloud-init (0.7.9-144-g2825a917-0ubuntu1) artful; urgency=medium From c73e46bf060a2f4a97c562f53151f8e78be0eaf1 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 2 Jun 2017 16:45:40 -0400 Subject: [PATCH 0131/1174] debian/control: add build dependency on python3-jsonschema. Upstream commit 0a448dd0348 added unit tests that use jsonschema. Update the build-depends to match. LP: #1695318 --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index 10b8370da8b..11938896cf4 100644 --- a/debian/control +++ b/debian/control @@ -14,6 +14,7 @@ Build-Depends: debhelper (>= 9), python3-httpretty, python3-jinja2, python3-jsonpatch, + python3-jsonschema, python3-mock, python3-nose, python3-oauthlib, From 15046efc37f8f1f3409a09c870045bca723ee071 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 2 Jun 2017 16:47:39 -0400 Subject: [PATCH 0132/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5732dbb75b7..f606b83a5b8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (0.7.9-153-g16a7302f-0ubuntu2) UNRELEASED; urgency=medium + + * debian/control: add build dependency python3-jsonschema (LP: #1695318) + + -- Scott Moser Fri, 02 Jun 2017 16:44:34 -0400 + cloud-init (0.7.9-153-g16a7302f-0ubuntu1) artful; urgency=medium * New upstream snapshot. From 3c7d441b027ecf820e67fbc5fd723f74ffe54f03 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 27 Jun 2017 17:17:42 -0400 Subject: [PATCH 0133/1174] update changelog (new upstream snapshot 0.7.9-197-gebc9ecbc). --- debian/changelog | 72 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index f606b83a5b8..bd52f2a497a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,76 @@ -cloud-init (0.7.9-153-g16a7302f-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (0.7.9-197-gebc9ecbc-0ubuntu1) UNRELEASED; 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- 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 Fri, 02 Jun 2017 16:44:34 -0400 + -- Scott Moser Tue, 27 Jun 2017 17:14:09 -0400 cloud-init (0.7.9-153-g16a7302f-0ubuntu1) artful; urgency=medium From ead27c52e709d6cea00dc5b4ca658a99d2b8a830 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 27 Jun 2017 17:18:32 -0400 Subject: [PATCH 0134/1174] releasing package cloud-init version 0.7.9-197-gebc9ecbc-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index bd52f2a497a..c66be0e0ea8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-197-gebc9ecbc-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-197-gebc9ecbc-0ubuntu1) artful; urgency=medium * debian/control: add build dependency python3-jsonschema (LP: #1695318) * New upstream snapshot. @@ -70,7 +70,7 @@ cloud-init (0.7.9-197-gebc9ecbc-0ubuntu1) UNRELEASED; urgency=medium - AliYun: Enable platform identification and enable by default. [Junjie Wang] (LP: #1638931) - -- Scott Moser Tue, 27 Jun 2017 17:14:09 -0400 + -- Scott Moser Tue, 27 Jun 2017 17:18:24 -0400 cloud-init (0.7.9-153-g16a7302f-0ubuntu1) artful; urgency=medium From cc0ba3d800cf397b24f7632c1deeb55d912cb06b Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 28 Jun 2017 12:54:24 -0400 Subject: [PATCH 0135/1174] debian/cherry-pick: separate out changes to changelog --- debian/cherry-pick | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/cherry-pick b/debian/cherry-pick index 4906917f02b..dd557246a01 100755 --- a/debian/cherry-pick +++ b/debian/cherry-pick @@ -170,7 +170,7 @@ main() { } local commit_files="" - commit_files=( debian/changelog "$series" "$fpath" ) + commit_files=( "$series" "$fpath" ) git diff HEAD "${commit_files[@]}" echo -n "Commit this change? (Y/n): " @@ -187,6 +187,9 @@ main() { 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 } From 04a9c1f2e038baeff3812aed29e662001663f755 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 29 Jun 2017 18:01:18 -0400 Subject: [PATCH 0136/1174] update changelog. --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index c66be0e0ea8..60f686c1a29 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (0.7.9-199-g4d9f24f5-0ubuntu1) UNRELEASED; 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 Thu, 29 Jun 2017 18:00:54 -0400 + cloud-init (0.7.9-197-gebc9ecbc-0ubuntu1) artful; urgency=medium * debian/control: add build dependency python3-jsonschema (LP: #1695318) From 4122da21e529bfba822f898be8965ff0ac4ca806 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 29 Jun 2017 18:01:29 -0400 Subject: [PATCH 0137/1174] releasing package cloud-init version 0.7.9-199-g4d9f24f5-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 60f686c1a29..5f1b09d327f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.9-199-g4d9f24f5-0ubuntu1) UNRELEASED; urgency=medium +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 Thu, 29 Jun 2017 18:00:54 -0400 + -- Scott Moser Thu, 29 Jun 2017 18:01:21 -0400 cloud-init (0.7.9-197-gebc9ecbc-0ubuntu1) artful; urgency=medium From 7a2debea69e20e631e37e8bcd098e442e3465fca Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 18 Jul 2017 14:03:22 -0400 Subject: [PATCH 0138/1174] update changelog (new upstream snapshot 0.7.9-210-ge80517ae). --- debian/changelog | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5f1b09d327f..b375ff116ad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,25 @@ +cloud-init (0.7.9-210-ge80517ae-0ubuntu1) UNRELEASED; 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 Tue, 18 Jul 2017 14:01:46 -0400 + cloud-init (0.7.9-199-g4d9f24f5-0ubuntu1) artful; urgency=medium * New upstream snapshot. From 0c328011e755ed6fbfcfe9be84877d8d4945e5b6 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 18 Jul 2017 14:03:48 -0400 Subject: [PATCH 0139/1174] releasing package cloud-init version 0.7.9-210-ge80517ae-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index b375ff116ad..644fe9f89dc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-210-ge80517ae-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-210-ge80517ae-0ubuntu1) artful; urgency=medium * New upstream snapshot. - Scaleway: add datasource with user and vendor data for Scaleway. @@ -18,7 +18,7 @@ cloud-init (0.7.9-210-ge80517ae-0ubuntu1) UNRELEASED; urgency=medium [Andrew Jorgensen] - doc: document the cmdline options to NoCloud [Brian Candler] - -- Scott Moser Tue, 18 Jul 2017 14:01:46 -0400 + -- Scott Moser Tue, 18 Jul 2017 14:03:33 -0400 cloud-init (0.7.9-199-g4d9f24f5-0ubuntu1) artful; urgency=medium From e0c118135668a6f01342d92019d78c57ec3f428e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 19 Jul 2017 07:54:54 -0400 Subject: [PATCH 0140/1174] update changelog (new upstream snapshot 0.7.9-212-g865e941f). --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index 644fe9f89dc..c720525fb17 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (0.7.9-212-g865e941f-0ubuntu1) UNRELEASED; 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 Wed, 19 Jul 2017 07:54:36 -0400 + cloud-init (0.7.9-210-ge80517ae-0ubuntu1) artful; urgency=medium * New upstream snapshot. From a775f5ba13ab464bd91ab390e438815eae4f27c6 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 19 Jul 2017 07:55:03 -0400 Subject: [PATCH 0141/1174] releasing package cloud-init version 0.7.9-212-g865e941f-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index c720525fb17..e065ca31d26 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,11 @@ -cloud-init (0.7.9-212-g865e941f-0ubuntu1) UNRELEASED; urgency=medium +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 Wed, 19 Jul 2017 07:54:36 -0400 + -- Scott Moser Wed, 19 Jul 2017 07:54:57 -0400 cloud-init (0.7.9-210-ge80517ae-0ubuntu1) artful; urgency=medium From 2ca65aa9556fd56ae123ceff9d2a24cd8b65a7ff Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 20 Jul 2017 21:37:07 -0400 Subject: [PATCH 0142/1174] update changelog (new upstream snapshot 0.7.9-221-g7e41b2a7). --- debian/changelog | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/debian/changelog b/debian/changelog index e065ca31d26..3d77565535b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,23 @@ +cloud-init (0.7.9-221-g7e41b2a7-0ubuntu1) UNRELEASED; 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 Thu, 20 Jul 2017 21:36:19 -0400 + cloud-init (0.7.9-212-g865e941f-0ubuntu1) artful; urgency=medium * New upstream snapshot. From f7b4b25d594aee4cac983b5a9eafaeb4b7c535ab Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 20 Jul 2017 21:37:18 -0400 Subject: [PATCH 0143/1174] releasing package cloud-init version 0.7.9-221-g7e41b2a7-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3d77565535b..18167504f1d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-221-g7e41b2a7-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-221-g7e41b2a7-0ubuntu1) artful; urgency=medium * New upstream snapshot. - sysconfig: use MACADDR on bonds/bridges to configure mac_address @@ -16,7 +16,7 @@ cloud-init (0.7.9-221-g7e41b2a7-0ubuntu1) UNRELEASED; urgency=medium - net: fix renaming of nics to support mac addresses written in upper case. (LP: #1705147) - -- Scott Moser Thu, 20 Jul 2017 21:36:19 -0400 + -- Scott Moser Thu, 20 Jul 2017 21:37:12 -0400 cloud-init (0.7.9-212-g865e941f-0ubuntu1) artful; urgency=medium From 3134f1eededde8d46b34cb841f008245b672a420 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 21 Jul 2017 09:21:20 -0400 Subject: [PATCH 0144/1174] debian/cloud-init.templates: Enable Scaleway cloud. --- debian/cloud-init.templates | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index c02aa3fffbf..9e45879c767 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Ec2, CloudStack, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, 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, Ec2: reads data from EC2 Metadata service, CloudStack: Read from CloudStack metadata service, None: Failsafe datasource +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, Ec2, CloudStack, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, 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, 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. From fa75eded3f405082b04b63f57ab88c953ecea805 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 21 Jul 2017 09:25:09 -0400 Subject: [PATCH 0145/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 18167504f1d..329b40df4a2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (0.7.9-221-g7e41b2a7-0ubuntu2) UNRELEASED; urgency=medium + + * debian/cloud-init.templates: enable Scaleway cloud. + + -- Scott Moser Fri, 21 Jul 2017 09:16:52 -0400 + cloud-init (0.7.9-221-g7e41b2a7-0ubuntu1) artful; urgency=medium * New upstream snapshot. From 4f07e009153c66a5c07c4a4f8b33bfd14d725db9 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 21 Jul 2017 09:24:09 -0400 Subject: [PATCH 0146/1174] debian/cloud-init.templates: enable Aliyun/Alibaba cloud --- debian/cloud-init.templates | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index 9e45879c767..0a251e311dc 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, Ec2, CloudStack, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, 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, Ec2: reads data from EC2 Metadata service, CloudStack: Read from CloudStack metadata service, None: Failsafe datasource +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. From 37227d06761ae5f5ef4af15cd1f0789b228437ae Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 21 Jul 2017 09:25:26 -0400 Subject: [PATCH 0147/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 329b40df4a2..34fca2d81cf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ cloud-init (0.7.9-221-g7e41b2a7-0ubuntu2) UNRELEASED; urgency=medium * debian/cloud-init.templates: enable Scaleway cloud. + * debian/cloud-init.templates: enable Aliyun cloud. -- Scott Moser Fri, 21 Jul 2017 09:16:52 -0400 From 6d8d35f76b493d027b4f771d548e632e8d2b2197 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 21 Jul 2017 09:33:48 -0400 Subject: [PATCH 0148/1174] releasing package cloud-init version 0.7.9-221-g7e41b2a7-0ubuntu2 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 34fca2d81cf..d7f1721f56b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (0.7.9-221-g7e41b2a7-0ubuntu2) UNRELEASED; urgency=medium +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 Fri, 21 Jul 2017 09:16:52 -0400 + -- Scott Moser Fri, 21 Jul 2017 09:33:39 -0400 cloud-init (0.7.9-221-g7e41b2a7-0ubuntu1) artful; urgency=medium From 26ddb1b07f94309a215692eef2d733a8dadd2f0d Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 21 Jul 2017 12:23:48 -0400 Subject: [PATCH 0149/1174] debian/control: replace Depends on ifupdown with 'nplan | ifupdown'. cloud-init supports interaction with netplan (nplan) or ifupdown. Replace the Depends on ifupdown with 'nplan | ifupdown'. LP: #1705639 --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 11938896cf4..79d532e0b4f 100644 --- a/debian/control +++ b/debian/control @@ -35,7 +35,7 @@ Standards-Version: 3.9.8 Package: cloud-init Architecture: all Depends: cloud-guest-utils | cloud-utils, - ifupdown (>= 0.6.10ubuntu5), + nplan | ifupdown, procps, python3, python3-requests (>= 0.8.2), From 035e3de62a4b62403adb098793442df3f9d07723 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 21 Jul 2017 12:26:33 -0400 Subject: [PATCH 0150/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index d7f1721f56b..5382968866e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (0.7.9-221-g7e41b2a7-0ubuntu3) UNRELEASED; urgency=medium + + * debian/control: replace Depends on ifupdown with 'nplan | ifupdown'. + (LP: #1705639) + + -- Scott Moser Fri, 21 Jul 2017 12:25:54 -0400 + cloud-init (0.7.9-221-g7e41b2a7-0ubuntu2) artful; urgency=medium * debian/cloud-init.templates: enable Scaleway cloud. From 029c00e4bb8869d476a165d3b72610eff324d648 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 21 Jul 2017 12:26:44 -0400 Subject: [PATCH 0151/1174] debian/control: drop versioned dependencies on old packages. Remove the versioned dependencies on packages that are no longer in supported releases. debconf, util-linux, python-requests are all at suitable versions in all ubuntu releases. --- debian/control | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/control b/debian/control index 79d532e0b4f..731821e6dd9 100644 --- a/debian/control +++ b/debian/control @@ -38,7 +38,7 @@ Depends: cloud-guest-utils | cloud-utils, nplan | ifupdown, procps, python3, - python3-requests (>= 0.8.2), + python3-requests, python3-serial, ${misc:Depends}, ${python3:Depends} @@ -49,9 +49,9 @@ Description: Init scripts for cloud instances to retrieve and install ssh keys and to let the user run various scripts. Package: grub-legacy-ec2 -Depends: debconf (>= 1.5.19) | cdebconf, +Depends: debconf | cdebconf, ucf, - util-linux (>= 2.15-1), + util-linux, ${misc:Depends} Conflicts: grub Suggests: grub-legacy-doc From fa8fc184e2aa0fb36710a6a0c2b5464e8b8f5f60 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 21 Jul 2017 12:32:23 -0400 Subject: [PATCH 0152/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 5382968866e..609966d346f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ cloud-init (0.7.9-221-g7e41b2a7-0ubuntu3) UNRELEASED; urgency=medium * debian/control: replace Depends on ifupdown with 'nplan | ifupdown'. (LP: #1705639) + * debian/control: drop versioned dependencies on old packages. -- Scott Moser Fri, 21 Jul 2017 12:25:54 -0400 From 6575f56ffc1a531255ce1bba69f741f23428fa1f Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 21 Jul 2017 12:32:35 -0400 Subject: [PATCH 0153/1174] releasing package cloud-init version 0.7.9-221-g7e41b2a7-0ubuntu3 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 609966d346f..5dd5c4b920c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (0.7.9-221-g7e41b2a7-0ubuntu3) UNRELEASED; urgency=medium +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 Fri, 21 Jul 2017 12:25:54 -0400 + -- Scott Moser Fri, 21 Jul 2017 12:32:33 -0400 cloud-init (0.7.9-221-g7e41b2a7-0ubuntu2) artful; urgency=medium From f3c4519dd8db77dde02db5df984f56fe89dbe3eb Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 31 Jul 2017 09:47:10 -0400 Subject: [PATCH 0154/1174] update changelog (new upstream snapshot 0.7.9-231-g80bf98b9). --- debian/changelog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5dd5c4b920c..aa7e9036348 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,18 @@ +cloud-init (0.7.9-231-g80bf98b9-0ubuntu1) UNRELEASED; 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 Mon, 31 Jul 2017 09:45:57 -0400 + cloud-init (0.7.9-221-g7e41b2a7-0ubuntu3) artful; urgency=medium * debian/control: replace Depends on ifupdown with 'nplan | ifupdown'. From 8799cdfba2ed482328aba8f8d9b3641fa209cffa Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 31 Jul 2017 09:47:40 -0400 Subject: [PATCH 0155/1174] releasing package cloud-init version 0.7.9-231-g80bf98b9-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index aa7e9036348..c5f51364279 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-231-g80bf98b9-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-231-g80bf98b9-0ubuntu1) artful; urgency=medium * New upstream snapshot. - tests: remove 'yakkety' from releases as it is EOL. @@ -11,7 +11,7 @@ cloud-init (0.7.9-231-g80bf98b9-0ubuntu1) UNRELEASED; urgency=medium - Drop rand_str() usage in DNS redirection detection [Bob Aman] (LP: #1088611) - -- Scott Moser Mon, 31 Jul 2017 09:45:57 -0400 + -- Scott Moser Mon, 31 Jul 2017 09:47:34 -0400 cloud-init (0.7.9-221-g7e41b2a7-0ubuntu3) artful; urgency=medium From d8ff03d0f29ecb3df17d76ae64d504cb904b4c1c Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 31 Jul 2017 13:33:44 -0400 Subject: [PATCH 0156/1174] debian/new-upstream-snapshot: wrap changelog lines better. This just steamlines use of new-upstream-snapshot. It will now ignore Author of 'Scott Moser' and wrap long lines so that author entry in [] is not broken. --- debian/new-upstream-snapshot | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/debian/new-upstream-snapshot b/debian/new-upstream-snapshot index 6240de0d841..aee432e35d6 100755 --- a/debian/new-upstream-snapshot +++ b/debian/new-upstream-snapshot @@ -14,9 +14,27 @@ EOF } print_commit() { - local subject="$1" author="$2" bugs="$3" aname="" + local subject="$1" author="$2" bugs="$3" aname="" buf="" abugs="" + local indent=" - " indent2=" " ll=79 aname=${author% <*} - echo " - $subject [${aname}]${bugs:+ (LP: ${bugs})}" + [ "${aname}" = "Scott Moser" ] && aname="" + abugs="${aname:+ [${aname}]}${bugs:+ (LP: ${bugs})}" + if [ $((${#subject}+${#abugs})) -le $(($ll-${#indent})) ]; then + echo "${indent}${subject}" + 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() { From 5b43575df23322f55c437c591623ab09eeb5ab31 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 31 Jul 2017 14:41:11 -0400 Subject: [PATCH 0157/1174] debian/new-upstream-snapshot: fix bug in single line entries. --- debian/new-upstream-snapshot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/new-upstream-snapshot b/debian/new-upstream-snapshot index aee432e35d6..4e7aaa0e625 100755 --- a/debian/new-upstream-snapshot +++ b/debian/new-upstream-snapshot @@ -20,7 +20,7 @@ print_commit() { [ "${aname}" = "Scott Moser" ] && aname="" abugs="${aname:+ [${aname}]}${bugs:+ (LP: ${bugs})}" if [ $((${#subject}+${#abugs})) -le $(($ll-${#indent})) ]; then - echo "${indent}${subject}" + echo "${indent}${subject}${abugs}" elif [ ${#subject} -ge $(($ll-${#indent})) ]; then echo "${subject}${abugs}" | fmt --width=$(($ll-${#indent})) | From b777349f41ce4b8f312e57d8fe512aefd44a49b1 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Mon, 21 Aug 2017 15:09:18 -0500 Subject: [PATCH 0158/1174] update changelog (new upstream snapshot 0.7.9-243-ge74d775). --- debian/changelog | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/debian/changelog b/debian/changelog index c5f51364279..2af05c470d7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,31 @@ +cloud-init (0.7.9-243-ge74d775-0ubuntu1) UNRELEASED; 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 Mon, 21 Aug 2017 15:09:11 -0500 + cloud-init (0.7.9-231-g80bf98b9-0ubuntu1) artful; urgency=medium * New upstream snapshot. From 46afa1266e511cd3e48f4703fed49650e108a33b Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Mon, 21 Aug 2017 15:09:49 -0500 Subject: [PATCH 0159/1174] releasing package cloud-init version 0.7.9-243-ge74d775-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2af05c470d7..ea6872e88d3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-243-ge74d775-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-243-ge74d775-0ubuntu1) artful; urgency=medium * New upstream snapshot. - tools: Add tooling for basic cloud-init performance analysis. @@ -24,7 +24,7 @@ cloud-init (0.7.9-243-ge74d775-0ubuntu1) UNRELEASED; urgency=medium [Chad Smith] - makefile: fix ci-deps-ubuntu target [Chad Smith] - -- Ryan Harper Mon, 21 Aug 2017 15:09:11 -0500 + -- Ryan Harper Mon, 21 Aug 2017 15:09:36 -0500 cloud-init (0.7.9-231-g80bf98b9-0ubuntu1) artful; urgency=medium From 0aad73aa579de7d0d6d41864b36be4a70abbc7bd Mon Sep 17 00:00:00 2001 From: Dimitri John Ledkov Date: Thu, 24 Aug 2017 00:54:50 +0100 Subject: [PATCH 0160/1174] Disable upstart support, as upstart is no longer shipped in artful. --- debian/cloud-init.lintian-overrides | 3 --- debian/cloud-init.maintscript | 8 ++++++++ debian/cloud-init.postinst | 11 ++++++++--- debian/cloud-init.postrm | 2 -- debian/rules | 2 +- 5 files changed, 17 insertions(+), 9 deletions(-) delete mode 100644 debian/cloud-init.lintian-overrides create mode 100644 debian/cloud-init.maintscript diff --git a/debian/cloud-init.lintian-overrides b/debian/cloud-init.lintian-overrides deleted file mode 100644 index 591b651e979..00000000000 --- a/debian/cloud-init.lintian-overrides +++ /dev/null @@ -1,3 +0,0 @@ -# this explicitly diverts ureadahead.conf in ureadahead package -# see LP: #499520 for more discussion -cloud-init binary: diversion-for-unknown-file diff --git a/debian/cloud-init.maintscript b/debian/cloud-init.maintscript new file mode 100644 index 00000000000..93aff81c6a9 --- /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 index 420420b5b6e..f88d1c52ac1 100644 --- a/debian/cloud-init.postinst +++ b/debian/cloud-init.postinst @@ -276,11 +276,14 @@ fix_azure_upgrade_1611074() { 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 - # disable ureadahead (LP: #499520) - dpkg-divert --package cloud-init --rename --divert \ - /etc/init/ureadahead.conf.disabled --add /etc/init/ureadahead.conf if db_get cloud-init/datasources; then values="$RET" if [ "${values#*MaaS}" != "${values}" ]; then @@ -321,6 +324,8 @@ EOF disable_network_config_on_upgrade "$2" fix_azure_upgrade_1611074 "$2" + + cleanup_ureadahead "$2" fi #DEBHELPER# diff --git a/debian/cloud-init.postrm b/debian/cloud-init.postrm index 81b6681230d..4e20db1cabe 100644 --- a/debian/cloud-init.postrm +++ b/debian/cloud-init.postrm @@ -8,8 +8,6 @@ case "$1" in rm -f /etc/apt/apt.conf.d/90cloud-init-pipelining ;; remove) - dpkg-divert --package cloud-init --remove --rename --divert \ - /etc/init/ureadahead.conf.disabled /etc/init/ureadahead.conf rm -f /etc/cloud/cloud.cfg.d/90cloud-init-pipelining ;; esac diff --git a/debian/rules b/debian/rules index f335b7f74fd..ea815e43a57 100755 --- a/debian/rules +++ b/debian/rules @@ -1,5 +1,5 @@ #!/usr/bin/make -f -INIT_SYSTEM ?= upstart,systemd +INIT_SYSTEM ?= systemd export PYBUILD_INSTALL_ARGS=--init-system=$(INIT_SYSTEM) %: From e5bbf884d6f7c2df6d564dd49c7a2232cd2a6b98 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 30 Aug 2017 12:38:21 -0400 Subject: [PATCH 0161/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index ea6872e88d3..78eed58bd10 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (0.7.9-243-ge74d775-0ubuntu2) UNRELEASED; urgency=medium + + * Disable upstart support, as upstart is no longer shipped in artful. + + -- Dimitri John Ledkov Thu, 24 Aug 2017 00:29:30 +0100 + cloud-init (0.7.9-243-ge74d775-0ubuntu1) artful; urgency=medium * New upstream snapshot. From 8ddf13938112e283a81c576cc3b738855d8ab173 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 30 Aug 2017 21:16:32 -0400 Subject: [PATCH 0162/1174] update changelog (new upstream snapshot 0.7.9-259-g7e76c57b). --- debian/changelog | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 78eed58bd10..6516bed0596 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,36 @@ -cloud-init (0.7.9-243-ge74d775-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (0.7.9-259-g7e76c57b-0ubuntu1) UNRELEASED; 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) - -- Dimitri John Ledkov Thu, 24 Aug 2017 00:29:30 +0100 + -- Scott Moser Wed, 30 Aug 2017 21:15:42 -0400 cloud-init (0.7.9-243-ge74d775-0ubuntu1) artful; urgency=medium From f713c6e93419a5e4edc63fafd8f023713b60d08c Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 30 Aug 2017 21:18:12 -0400 Subject: [PATCH 0163/1174] releasing package cloud-init version 0.7.9-259-g7e76c57b-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6516bed0596..1bd8a5a2cf6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-259-g7e76c57b-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-259-g7e76c57b-0ubuntu1) artful; urgency=medium * Disable upstart support, as upstart is no longer shipped in artful. [Dimitri Ledkov] @@ -30,7 +30,7 @@ cloud-init (0.7.9-259-g7e76c57b-0ubuntu1) UNRELEASED; urgency=medium - Debian: Remove non-free repositories from apt sources template. [Joonas Kylmälä] (LP: #1700091) - -- Scott Moser Wed, 30 Aug 2017 21:15:42 -0400 + -- Scott Moser Wed, 30 Aug 2017 21:18:05 -0400 cloud-init (0.7.9-243-ge74d775-0ubuntu1) artful; urgency=medium From 658834ed6c93ccfc2dd8eb234fad61c30a1d9771 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 7 Sep 2017 16:59:01 -0400 Subject: [PATCH 0164/1174] update changelog (new upstream snapshot 0.7.9-267-g922c3c5c). --- debian/changelog | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1bd8a5a2cf6..f8530ff86a3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,22 @@ +cloud-init (0.7.9-267-g922c3c5c-0ubuntu1) UNRELEASED; 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 Thu, 07 Sep 2017 16:54:39 -0400 + cloud-init (0.7.9-259-g7e76c57b-0ubuntu1) artful; urgency=medium * Disable upstart support, as upstart is no longer shipped in artful. From aef1ed3ee58f6d005cd43917ed0b3c5a42a5b797 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 7 Sep 2017 16:59:14 -0400 Subject: [PATCH 0165/1174] releasing package cloud-init version 0.7.9-267-g922c3c5c-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index f8530ff86a3..a320cc78bd1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-267-g922c3c5c-0ubuntu1) UNRELEASED; urgency=medium +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. @@ -15,7 +15,7 @@ cloud-init (0.7.9-267-g922c3c5c-0ubuntu1) UNRELEASED; urgency=medium - tests: Stop leaking calls through unmocked metadata addresses [Chad Smith] (LP: #1714117) - -- Scott Moser Thu, 07 Sep 2017 16:54:39 -0400 + -- Scott Moser Thu, 07 Sep 2017 16:59:04 -0400 cloud-init (0.7.9-259-g7e76c57b-0ubuntu1) artful; urgency=medium From 2baa6bf9c314630ec29a192e1e81f0f4530cb102 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 15 Sep 2017 15:51:23 -0400 Subject: [PATCH 0166/1174] debian/rules: install rsyslog file with 0644 mode instead of 0755. The file /etc/rsyslog.d/21-cloudinit.conf was being installed with execute permission (due to use of 'install'). Change that to get 0644. --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index ea815e43a57..159dd04603a 100755 --- a/debian/rules +++ b/debian/rules @@ -17,6 +17,6 @@ override_dh_systemd_start: override_dh_auto_install: dh_auto_install --destdir=debian/cloud-init - install -D ./tools/21-cloudinit.conf debian/cloud-init/etc/rsyslog.d/21-cloudinit.conf + 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 From d9bae3913263ed2632cf48fa33b13ba9c07795da Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 15 Sep 2017 15:52:42 -0400 Subject: [PATCH 0167/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index a320cc78bd1..fff1419ac88 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (0.7.9-267-g922c3c5c-0ubuntu2) UNRELEASED; urgency=medium + + * debian/rules: install rsyslog file with 0644 mode instead of 0755. + + -- Scott Moser Fri, 15 Sep 2017 15:52:20 -0400 + cloud-init (0.7.9-267-g922c3c5c-0ubuntu1) artful; urgency=medium * New upstream snapshot. From fec2d4a87fcff72aa9cafbfb88fff013a17db665 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 15 Sep 2017 15:06:17 -0400 Subject: [PATCH 0168/1174] debian/rules, debian/apport-launcher.py: add an apport hook. Add the apport launcher that takes advantage of the newly added cloudinit.apport. LP: #1607345 --- debian/apport-launcher.py | 6 ++++++ debian/rules | 1 + 2 files changed, 7 insertions(+) create mode 100644 debian/apport-launcher.py diff --git a/debian/apport-launcher.py b/debian/apport-launcher.py new file mode 100644 index 00000000000..30fea31b4bc --- /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/rules b/debian/rules index 159dd04603a..3e03fed0f60 100755 --- a/debian/rules +++ b/debian/rules @@ -20,3 +20,4 @@ override_dh_auto_install: 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 From cd0c04e925af4f6a9ab6eaaceccbd6e4c648122e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 15 Sep 2017 16:07:41 -0400 Subject: [PATCH 0169/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index fff1419ac88..b9c38e4aa57 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ cloud-init (0.7.9-267-g922c3c5c-0ubuntu2) UNRELEASED; 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) -- Scott Moser Fri, 15 Sep 2017 15:52:20 -0400 From 7b454a35ded19a95be3249b143f6f4a1c8591eb2 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 15 Sep 2017 16:08:56 -0400 Subject: [PATCH 0170/1174] update changelog (new upstream snapshot 0.7.9-280-ge626966e). --- debian/changelog | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index b9c38e4aa57..fe567ebd1b0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,30 @@ -cloud-init (0.7.9-267-g922c3c5c-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (0.7.9-280-ge626966e-0ubuntu1) UNRELEASED; 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 Fri, 15 Sep 2017 15:52:20 -0400 + -- Scott Moser Fri, 15 Sep 2017 16:08:22 -0400 cloud-init (0.7.9-267-g922c3c5c-0ubuntu1) artful; urgency=medium From d389f2c77d5df6acc368f74c5b55f4df86cad7ac Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 15 Sep 2017 16:09:12 -0400 Subject: [PATCH 0171/1174] releasing package cloud-init version 0.7.9-280-ge626966e-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index fe567ebd1b0..6e890a1cee1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-280-ge626966e-0ubuntu1) UNRELEASED; urgency=medium +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) @@ -24,7 +24,7 @@ cloud-init (0.7.9-280-ge626966e-0ubuntu1) UNRELEASED; urgency=medium - vmware customization: return network config format [Sankar Tanguturi] (LP: #1675063) - -- Scott Moser Fri, 15 Sep 2017 16:08:22 -0400 + -- Scott Moser Fri, 15 Sep 2017 16:09:07 -0400 cloud-init (0.7.9-267-g922c3c5c-0ubuntu1) artful; urgency=medium From 827e82ae6acfa695c8546c7397261154481cc0a3 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 18 Sep 2017 17:03:15 -0400 Subject: [PATCH 0172/1174] update changelog (new upstream snapshot 0.7.9-281-g10f067d8). --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 6e890a1cee1..0ec0fbe627e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (0.7.9-281-g10f067d8-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - GCE: Fix usage of user-data. (LP: #1717598) + + -- Scott Moser Mon, 18 Sep 2017 17:03:10 -0400 + cloud-init (0.7.9-280-ge626966e-0ubuntu1) artful; urgency=medium * debian/rules: install rsyslog file with 0644 mode instead of 0755. From 86dddc497eee6fa6cd4df948a060d8717d7ab09e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 18 Sep 2017 17:03:28 -0400 Subject: [PATCH 0173/1174] releasing package cloud-init version 0.7.9-281-g10f067d8-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0ec0fbe627e..5a9e7ab4d44 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (0.7.9-281-g10f067d8-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (0.7.9-281-g10f067d8-0ubuntu1) artful; urgency=medium * New upstream snapshot. - GCE: Fix usage of user-data. (LP: #1717598) - -- Scott Moser Mon, 18 Sep 2017 17:03:10 -0400 + -- Scott Moser Mon, 18 Sep 2017 17:03:22 -0400 cloud-init (0.7.9-280-ge626966e-0ubuntu1) artful; urgency=medium From 65bc2b540b93ecb5fdcf367b3c77efac857a0be8 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 18 Sep 2017 20:41:48 -0400 Subject: [PATCH 0174/1174] update changelog (new upstream snapshot 0.7.9-283-g7eb3460b). --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5a9e7ab4d44..031269906be 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (0.7.9-283-g7eb3460b-0ubuntu1) UNRELEASED; 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 Mon, 18 Sep 2017 20:41:40 -0400 + cloud-init (0.7.9-281-g10f067d8-0ubuntu1) artful; urgency=medium * New upstream snapshot. From d81150148297abc0cb922f8d1fd1a71d86bf5846 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 18 Sep 2017 20:41:57 -0400 Subject: [PATCH 0175/1174] releasing package cloud-init version 0.7.9-283-g7eb3460b-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 031269906be..f5957900473 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (0.7.9-283-g7eb3460b-0ubuntu1) UNRELEASED; urgency=medium +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 @@ -6,7 +6,7 @@ cloud-init (0.7.9-283-g7eb3460b-0ubuntu1) UNRELEASED; urgency=medium - Azure: wait longer for SSH pub keys to arrive. [Paul Meyer] (LP: #1717611) - -- Scott Moser Mon, 18 Sep 2017 20:41:40 -0400 + -- Scott Moser Mon, 18 Sep 2017 20:41:53 -0400 cloud-init (0.7.9-281-g10f067d8-0ubuntu1) artful; urgency=medium From 22df2c22bf95d74bc6d01fc6e1e70b70794fc45b Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 22 Sep 2017 12:21:05 -0400 Subject: [PATCH 0176/1174] update changelog (new upstream snapshot 17.1). --- debian/changelog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/debian/changelog b/debian/changelog index f5957900473..e07af513f88 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,18 @@ +cloud-init (17.1-0ubuntu1) UNRELEASED; 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 Fri, 22 Sep 2017 12:19:39 -0400 + cloud-init (0.7.9-283-g7eb3460b-0ubuntu1) artful; urgency=medium * New upstream snapshot. From 2963ac9b810814f963bb4e58c910d4b993e47e53 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 22 Sep 2017 12:21:31 -0400 Subject: [PATCH 0177/1174] releasing package cloud-init version 17.1-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index e07af513f88..375b94daed7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.1-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.1-0ubuntu1) artful; urgency=medium * New upstream release. - doc: document GCE datasource. [Arnd Hannemann] @@ -11,7 +11,7 @@ cloud-init (17.1-0ubuntu1) UNRELEASED; urgency=medium - Makefile: No longer look for yaml files in obsolete ./bin/. - tests: fix ds-identify unit tests to set EC2_STRICT_ID_DEFAULT. - -- Scott Moser Fri, 22 Sep 2017 12:19:39 -0400 + -- Scott Moser Fri, 22 Sep 2017 12:21:18 -0400 cloud-init (0.7.9-283-g7eb3460b-0ubuntu1) artful; urgency=medium From 02b6994803bc3538964f7cbc8083cf8dd4e173e2 Mon Sep 17 00:00:00 2001 From: Joshua Powers Date: Thu, 21 Sep 2017 15:56:34 -0700 Subject: [PATCH 0178/1174] debian/copyright: dep5 updates, reorganize, add Apache 2.0 license. The copyright was updated to be lintian clean and reorganized to list the licenses at the bottom after declaring the metadata and file information. Also cloud-init license was updated to be dual-licensed under Apache 2.0 and GPL 3.0, however, the text of the Apache 2.0 license was not added to the debian/copyright file. LP: #1718681 --- debian/copyright | 49 ++++++++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/debian/copyright b/debian/copyright index cf4a76f8b2e..c223670221b 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,35 +1,48 @@ -Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135 -Name: cloud-init -Maintainer: Scott Moser +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: cloud-init +Upstream-Contact: cloud-init-dev@lists.launchpad.net Source: https://launchpad.net/cloud-init -This package was debianized by Soren Hansen on -Thu, 04 Sep 2008 12:49:15 +0200 as ec2-init. It was later renamed to -cloud-utils by Scott Moser - -Upstream Author: Scott Moser - Soren Hansen - Chuck Short - +Files: * Copyright: 2010, Canonical Ltd. License: GPL-3 or Apache-2.0 + +Files: cloudinit/boto_utils.py +Copyright: 2006,2007, Mitch Garnaat http://garnaat.org/ +License: MIT + +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 . - + . The complete text of the GPL version 3 can be seen in /usr/share/common-licenses/GPL-3. -Files: cloudinit/boto_utils.py -Copyright: 2006,2007, Mitch Garnaat http://garnaat.org/ +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'. + License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -38,10 +51,10 @@ License: MIT tribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the fol- lowing conditions: - + . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT From af499ce47af3a8336e0f31486ea6011dde60b65a Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 29 Sep 2017 08:44:58 -0400 Subject: [PATCH 0179/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 375b94daed7..2080def9e6e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (17.1-0ubuntu2) UNRELEASED; urgency=medium + + * debian/copyright: dep5 updates, reorganize, add Apache 2.0 license. + (LP: #1718681) + + -- Scott Moser Fri, 29 Sep 2017 08:44:15 -0400 + cloud-init (17.1-0ubuntu1) artful; urgency=medium * New upstream release. From 638a93bcca258c3903c78179314051932d44cdf9 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 2 Oct 2017 16:10:58 -0400 Subject: [PATCH 0180/1174] debian/copyright: remove mention of boto and MIT license boto_utils.py had been removed some time ago, and the current cloudinit/ec2_utils.py is not based on what was in boto_utils. We just failed to remove the mention of it from the upstream debian/copyright. And then put it back in everywhere in recent changes to get upstream and ubuntu in sync. --- debian/copyright | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/debian/copyright b/debian/copyright index c223670221b..598cda14cff 100644 --- a/debian/copyright +++ b/debian/copyright @@ -7,10 +7,6 @@ Files: * Copyright: 2010, Canonical Ltd. License: GPL-3 or Apache-2.0 -Files: cloudinit/boto_utils.py -Copyright: 2006,2007, Mitch Garnaat http://garnaat.org/ -License: MIT - 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 @@ -42,23 +38,3 @@ License: Apache-2.0 . 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'. - -License: MIT - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, dis- - tribute, sublicense, and/or sell copies of the Software, and to permit - persons to whom the Software is furnished to do so, subject to the fol- - lowing conditions: - . - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - . - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- - ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT - SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. From 48e0697a8d8ed38fed5c22afa6d495dbbaf2f51f Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Tue, 3 Oct 2017 10:56:42 -0500 Subject: [PATCH 0181/1174] update changelog (new upstream snapshot 17.1-13-g7fd0425). --- debian/changelog | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2080def9e6e..3b31d3c7ec3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,30 @@ -cloud-init (17.1-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (17.1-13-g7fd0425-0ubuntu1) UNRELEASED; urgency=medium * debian/copyright: dep5 updates, reorganize, add Apache 2.0 license. (LP: #1718681) - - -- Scott Moser Fri, 29 Sep 2017 08:44:15 -0400 + * 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 Tue, 03 Oct 2017 10:48:05 -0500 cloud-init (17.1-0ubuntu1) artful; urgency=medium From 833c9d6570dd2bfe695c596f744bc70c292a25e5 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Tue, 3 Oct 2017 10:57:37 -0500 Subject: [PATCH 0182/1174] debian/control: remove dependency on python3-prettytable This dependency was replaced with a builtin. --- debian/control | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/control b/debian/control index 731821e6dd9..3f46d7bf5b1 100644 --- a/debian/control +++ b/debian/control @@ -19,7 +19,6 @@ Build-Depends: debhelper (>= 9), python3-nose, python3-oauthlib, python3-pep8, - python3-prettytable, python3-pyflakes | pyflakes (<< 1.1.0-2), python3-requests, python3-serial, From 16e70213519c4483d9b11f757f7fb27fc411d871 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Tue, 3 Oct 2017 10:59:33 -0500 Subject: [PATCH 0183/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 3b31d3c7ec3..805b8059c04 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ cloud-init (17.1-13-g7fd0425-0ubuntu1) UNRELEASED; 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) From 39513265b4e37280f4a56040ae1029634444da19 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Tue, 3 Oct 2017 11:00:09 -0500 Subject: [PATCH 0184/1174] releasing package cloud-init version 17.1-13-g7fd0425-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 805b8059c04..1e1007d8525 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.1-13-g7fd0425-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.1-13-g7fd0425-0ubuntu1) artful; urgency=medium * debian/copyright: dep5 updates, reorganize, add Apache 2.0 license. (LP: #1718681) @@ -25,7 +25,7 @@ cloud-init (17.1-13-g7fd0425-0ubuntu1) UNRELEASED; urgency=medium [Ryan Harper] (LP: #1718287) - tests: remove a temp file used in bootcmd tests. - -- Ryan Harper Tue, 03 Oct 2017 10:48:05 -0500 + -- Ryan Harper Tue, 03 Oct 2017 10:59:52 -0500 cloud-init (17.1-0ubuntu1) artful; urgency=medium From 667c03c409d3b8f51ff5b3f48511475440ee4e84 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 3 Oct 2017 12:43:27 -0400 Subject: [PATCH 0185/1174] add an 8th char to the hash --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 1e1007d8525..d2207b606fc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.1-13-g7fd0425-0ubuntu1) artful; urgency=medium +cloud-init (17.1-13-g7fd04255-0ubuntu1) artful; urgency=medium * debian/copyright: dep5 updates, reorganize, add Apache 2.0 license. (LP: #1718681) From b0e42acbf1cbac9d5d63caf7bf3a07ea22b9c3cd Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 5 Oct 2017 14:25:59 -0400 Subject: [PATCH 0186/1174] debian/new-upstream-snapshot: use --abbrev=8 for git-describe. The tools that use "git describe" were just assuming a consisent number of characters in the hash. It seems ubuntu 16.04 would use 7 and later versions use 8. To avoid that discrepency in developer environments, set it to 8. --- debian/new-upstream-snapshot | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/debian/new-upstream-snapshot b/debian/new-upstream-snapshot index 4e7aaa0e625..6ad8af61e30 100755 --- a/debian/new-upstream-snapshot +++ b/debian/new-upstream-snapshot @@ -85,9 +85,8 @@ pkg_name=$(dpkg-parsechangelog --show-field Source) || t=${prev_pkg_ver%-*} prev_pkg_hash=${t##*-g} -new_pkg_upstream=$(git describe master) new_pkg_debian="0ubuntu1" -new_upstream_ver=$(git describe "${from_ref}") +new_upstream_ver=$(git describe --abbrev=8 "${from_ref}") new_pkg_ver="${new_upstream_ver}-${new_pkg_debian}" prev_upstream_ver=${prev_pkg_ver%-*} From 03167d4c979358200af5b2b219ade862919224e0 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Thu, 5 Oct 2017 16:12:02 -0500 Subject: [PATCH 0187/1174] update changelog (new upstream snapshot 17.1-17-g45d361cb). --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index d2207b606fc..bb0c8ef9786 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +cloud-init (17.1-17-g45d361cb-0ubuntu1) UNRELEASED; 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 Thu, 05 Oct 2017 16:11:54 -0500 + cloud-init (17.1-13-g7fd04255-0ubuntu1) artful; urgency=medium * debian/copyright: dep5 updates, reorganize, add Apache 2.0 license. From de4906205f58aa9b9a51514ba4266f976c1b2b76 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Thu, 5 Oct 2017 16:16:00 -0500 Subject: [PATCH 0188/1174] releasing package cloud-init version 17.1-17-g45d361cb-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index bb0c8ef9786..5e4d73017fd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.1-17-g45d361cb-0ubuntu1) UNRELEASED; urgency=medium +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 @@ -7,7 +7,7 @@ cloud-init (17.1-17-g45d361cb-0ubuntu1) UNRELEASED; urgency=medium - network: bridge_stp value not always correct [Ryan Harper] (LP: #1721157) - tests: re-enable tox with nocloud-kvm support [Joshua Powers] - -- Ryan Harper Thu, 05 Oct 2017 16:11:54 -0500 + -- Ryan Harper Thu, 05 Oct 2017 16:15:34 -0500 cloud-init (17.1-13-g7fd04255-0ubuntu1) artful; urgency=medium From 8db49d90a31e68731e28259683cd58c4844d13bc Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 10 Oct 2017 13:40:04 -0600 Subject: [PATCH 0189/1174] update changelog (new upstream snapshot 17.1-18-gd4f70470). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5e4d73017fd..8861f786677 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (17.1-18-gd4f70470-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - simpletable: Fix get_string method to return table-formatted string + (LP: #1722566) + + -- Tue, 10 Oct 2017 13:40:00 -0600 + cloud-init (17.1-17-g45d361cb-0ubuntu1) artful; urgency=medium * New upstream snapshot. From 27b9782b37d330a991539f843d459b5ca062c4f6 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 10 Oct 2017 13:40:33 -0600 Subject: [PATCH 0190/1174] releasing package cloud-init version 17.1-18-gd4f70470-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 8861f786677..26d1d458396 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (17.1-18-gd4f70470-0ubuntu1) UNRELEASED; urgency=medium +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) - -- Tue, 10 Oct 2017 13:40:00 -0600 + -- Chad Smith Tue, 10 Oct 2017 13:40:13 -0600 cloud-init (17.1-17-g45d361cb-0ubuntu1) artful; urgency=medium From fee1af864867a825439214964340733568dc574f Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Tue, 24 Oct 2017 10:39:36 -0500 Subject: [PATCH 0191/1174] update changelog (new upstream snapshot 17.1-25-g17a15f9e). --- debian/changelog | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/debian/changelog b/debian/changelog index 26d1d458396..5e7aaeff817 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +cloud-init (17.1-25-g17a15f9e-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - resizefs: Fix regression when system booted with root=PARTUUID= + [Chad Smith] (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 + [Chad Smith] (LP: #1724951) + - tools: disable fastestmirror if using proxy [Joshua Powers] + - schema: Log debug instead of warning when jsonschema is not available. + (LP: #1724354) + + -- Ryan Harper Tue, 24 Oct 2017 10:39:14 -0500 + cloud-init (17.1-18-gd4f70470-0ubuntu1) artful; urgency=medium * New upstream snapshot. From 3f81a4509e29a64d5e7b4648d600a82f0f89c649 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Tue, 24 Oct 2017 10:40:21 -0500 Subject: [PATCH 0192/1174] releasing package cloud-init version 17.1-25-g17a15f9e-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5e7aaeff817..bede4fe69bf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.1-25-g17a15f9e-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.1-25-g17a15f9e-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - resizefs: Fix regression when system booted with root=PARTUUID= @@ -12,7 +12,7 @@ cloud-init (17.1-25-g17a15f9e-0ubuntu1) UNRELEASED; urgency=medium - schema: Log debug instead of warning when jsonschema is not available. (LP: #1724354) - -- Ryan Harper Tue, 24 Oct 2017 10:39:14 -0500 + -- Ryan Harper Tue, 24 Oct 2017 10:40:00 -0500 cloud-init (17.1-18-gd4f70470-0ubuntu1) artful; urgency=medium From a2e0ade5f32907a86190ecb97b06da9c4b709625 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 31 Oct 2017 12:50:11 -0600 Subject: [PATCH 0193/1174] update changelog (new upstream snapshot 17.1-27-geb292c18). --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index bede4fe69bf..c6aecc05df3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (17.1-27-geb292c18-0ubuntu1) UNRELEASED; 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". + [ckonstanski] (LP: #1727121) + + -- Chad Smith Tue, 31 Oct 2017 12:49:13 -0600 + cloud-init (17.1-25-g17a15f9e-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 24452ef32a3be4d26bb0d551bea08b5b0d0df2fb Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 31 Oct 2017 12:51:31 -0600 Subject: [PATCH 0194/1174] releasing package cloud-init version 17.1-27-geb292c18-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index c6aecc05df3..a6f1f072e84 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.1-27-geb292c18-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.1-27-geb292c18-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - EC2: Limit network config to fallback nic, fix local-ipv4 only @@ -6,7 +6,7 @@ cloud-init (17.1-27-geb292c18-0ubuntu1) UNRELEASED; urgency=medium - Gentoo: Use "rc-service" rather than "service". [ckonstanski] (LP: #1727121) - -- Chad Smith Tue, 31 Oct 2017 12:49:13 -0600 + -- Chad Smith Tue, 31 Oct 2017 12:51:10 -0600 cloud-init (17.1-25-g17a15f9e-0ubuntu1) bionic; urgency=medium From 1110f30ee9b4703a3c66fc678c0df3f0862cc7eb Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 27 Oct 2017 22:26:58 -0400 Subject: [PATCH 0195/1174] debian/cloud-init.templates: Fix capitilazation in 'AliYun' name. The AliYun datasource is spelled 'AliYun' (capital Y) in the datasource name. The templatel had a lower case 'Y', causing it to never be found. LP: #1728186 --- debian/cloud-init.templates | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index 0a251e311dc..5ed37f73c3b 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ 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 +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. From 6e0a175afa3bb75462eed633222f3894f17dd13b Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 31 Oct 2017 17:11:50 -0400 Subject: [PATCH 0196/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index a6f1f072e84..51d71ee526c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (17.1-27-geb292c18-0ubuntu2) UNRELEASED; urgency=medium + + * debian/cloud-init.templates: Fix capitilazation in 'AliYun' name. + (LP: #1728186) + + -- Scott Moser Tue, 31 Oct 2017 17:11:17 -0400 + cloud-init (17.1-27-geb292c18-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From bb2be4be4d945933bfbf79c8d954e858889585a2 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 20 Nov 2017 15:18:29 -0700 Subject: [PATCH 0197/1174] update changelog (new upstream snapshot 17.1-41-g76243487). --- debian/changelog | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 51d71ee526c..4c1c09839c8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,31 @@ -cloud-init (17.1-27-geb292c18-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (17.1-41-g76243487-0ubuntu1) UNRELEASED; urgency=medium * debian/cloud-init.templates: Fix capitilazation in 'AliYun' name. (LP: #1728186) - - -- Scott Moser Tue, 31 Oct 2017 17:11:17 -0400 + * New upstream snapshot. + - integration test: replace curtin test ppa with cloud-init test ppa. + - EC2: Fix bug using fallback_nic and metadata when restoring from cache. + (LP: #1732917) + - EC2: Kill dhclient process used in sandbox dhclient. (LP: #1732964) + - ntp: fix configuration template rendering for openSUSE and SLES + (LP: #1726572) + - 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] (LP: #1731022) + - rh_subscription: Perform null checks for enabled and disabled repos. + [Dave Mulford] + - Improve warning message when a template is not found. + [Robert Schweikert] (LP: #1731035) + - Replace the temporary i9n.brickies.net with i9n.cloud-init.io. + - Azure: don't generate network configuration for SRIOV devices + (LP: #1721579) + - 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/ + [ckonstanski] (LP: #1727126) + + -- Chad Smith Mon, 20 Nov 2017 15:17:41 -0700 cloud-init (17.1-27-geb292c18-0ubuntu1) bionic; urgency=medium From 302c9e8fbc509abd104da40a23e597ef31c0f1e7 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 20 Nov 2017 15:19:07 -0700 Subject: [PATCH 0198/1174] releasing package cloud-init version 17.1-41-g76243487-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4c1c09839c8..a7cf970da0e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.1-41-g76243487-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.1-41-g76243487-0ubuntu1) bionic; urgency=medium * debian/cloud-init.templates: Fix capitilazation in 'AliYun' name. (LP: #1728186) @@ -25,7 +25,7 @@ cloud-init (17.1-41-g76243487-0ubuntu1) UNRELEASED; urgency=medium - Gentoo: chmod +x on all files in sysvinit/gentoo/ [ckonstanski] (LP: #1727126) - -- Chad Smith Mon, 20 Nov 2017 15:17:41 -0700 + -- Chad Smith Mon, 20 Nov 2017 15:18:52 -0700 cloud-init (17.1-27-geb292c18-0ubuntu1) bionic; urgency=medium From 657517698a884c0a6c5b309040fd4643e3566572 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 30 Nov 2017 21:59:52 -0500 Subject: [PATCH 0199/1174] update changelog (new upstream snapshot 17.1-46-g7acc9e68). --- debian/changelog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index a7cf970da0e..e159aac791c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +cloud-init (17.1-46-g7acc9e68-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - ec2: Fix sandboxed dhclient background process cleanup. + [Chad Smith] (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] (LP: #1705804) + + -- Scott Moser Thu, 30 Nov 2017 21:59:36 -0500 + cloud-init (17.1-41-g76243487-0ubuntu1) bionic; urgency=medium * debian/cloud-init.templates: Fix capitilazation in 'AliYun' name. From 6cb4dc082d38e2928a7b85b8e15ea2344865f2f8 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 30 Nov 2017 22:00:02 -0500 Subject: [PATCH 0200/1174] releasing package cloud-init version 17.1-46-g7acc9e68-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index e159aac791c..833dd1ddbd0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.1-46-g7acc9e68-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.1-46-g7acc9e68-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - ec2: Fix sandboxed dhclient background process cleanup. @@ -9,7 +9,7 @@ cloud-init (17.1-46-g7acc9e68-0ubuntu1) UNRELEASED; urgency=medium - sysconfig: Correctly render dns and dns search info. [Ryan McCabe] (LP: #1705804) - -- Scott Moser Thu, 30 Nov 2017 21:59:36 -0500 + -- Scott Moser Thu, 30 Nov 2017 21:59:55 -0500 cloud-init (17.1-41-g76243487-0ubuntu1) bionic; urgency=medium From 9c2869c8d11d776a4a335d67002db83879664afe Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 7 Dec 2017 22:58:37 -0500 Subject: [PATCH 0201/1174] update changelog (new upstream snapshot 17.1-51-g05b2308a). --- debian/changelog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index 833dd1ddbd0..89104dc2f55 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +cloud-init (17.1-51-g05b2308a-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - citest: In NoCloudKVM provide keys via metadata not userdata. + - pylint: Update pylint to 1.7.1, run on tests/ and tools and fix + complaints. [Ryan Harper] + - Datasources: Formalize DataSource get_data and related properties. + [Chad Smith] + - cli: Add clean and status subcommands [Chad Smith] + - tests: consolidate platforms into specific dirs + + -- Scott Moser Thu, 07 Dec 2017 22:58:20 -0500 + cloud-init (17.1-46-g7acc9e68-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 373ca2fae016bc79510f0092ffe31b585b5a404e Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Thu, 7 Dec 2017 22:58:48 -0500 Subject: [PATCH 0202/1174] releasing package cloud-init version 17.1-51-g05b2308a-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 89104dc2f55..b13bdea27b5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.1-51-g05b2308a-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.1-51-g05b2308a-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - citest: In NoCloudKVM provide keys via metadata not userdata. @@ -9,7 +9,7 @@ cloud-init (17.1-51-g05b2308a-0ubuntu1) UNRELEASED; urgency=medium - cli: Add clean and status subcommands [Chad Smith] - tests: consolidate platforms into specific dirs - -- Scott Moser Thu, 07 Dec 2017 22:58:20 -0500 + -- Scott Moser Thu, 07 Dec 2017 22:58:41 -0500 cloud-init (17.1-46-g7acc9e68-0ubuntu1) bionic; urgency=medium From a4f9afaf44ea818a0beaaa16a7471b7265df21b6 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 8 Dec 2017 14:45:41 -0700 Subject: [PATCH 0203/1174] update changelog (new upstream snapshot 17.1-53-ga5dc0f42). --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index b13bdea27b5..99a3b1c742c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (17.1-53-ga5dc0f42-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - OVF: improve ds-identify to support finding OVF iso transport. + (LP: #1731868) + - VMware: Support for user provided pre and post-customization scripts + [Maitreyee Saikia] + + -- Chad Smith Fri, 08 Dec 2017 14:45:27 -0700 + cloud-init (17.1-51-g05b2308a-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 5db31ce1e2b61cecb458d8c4984a8db4d474f4f5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 8 Dec 2017 14:46:49 -0700 Subject: [PATCH 0204/1174] releasing package cloud-init version 17.1-53-ga5dc0f42-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 99a3b1c742c..bbc29e5c553 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.1-53-ga5dc0f42-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.1-53-ga5dc0f42-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - OVF: improve ds-identify to support finding OVF iso transport. @@ -6,7 +6,7 @@ cloud-init (17.1-53-ga5dc0f42-0ubuntu1) UNRELEASED; urgency=medium - VMware: Support for user provided pre and post-customization scripts [Maitreyee Saikia] - -- Chad Smith Fri, 08 Dec 2017 14:45:27 -0700 + -- Chad Smith Fri, 08 Dec 2017 14:46:36 -0700 cloud-init (17.1-51-g05b2308a-0ubuntu1) bionic; urgency=medium From dd4e666d5b5a7716afbafd2098624c40e9d7bc46 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 11 Dec 2017 18:30:53 -0500 Subject: [PATCH 0205/1174] update changelog (new upstream snapshot 17.1-58-g703241a3). --- debian/changelog | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/debian/changelog b/debian/changelog index bbc29e5c553..505f0b4edae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +cloud-init (17.1-58-g703241a3-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - ec2: Use instance-identity doc for region and instance-id + [Andrew Jorgensen] + - tests: remove leaked tmp files in config drive tests. + - setup.py: Do not include rendered files in SOURCES.txt + - SUSE: remove delta in systemd local template for SUSE [Robert Schweikert] + - tests: move to using tox 1.7.5 + + -- Scott Moser Mon, 11 Dec 2017 18:30:47 -0500 + cloud-init (17.1-53-ga5dc0f42-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 69c82b4d9915e64ec7fe9f8a045ac5f67c146019 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 11 Dec 2017 18:31:01 -0500 Subject: [PATCH 0206/1174] releasing package cloud-init version 17.1-58-g703241a3-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 505f0b4edae..993bdffbbb5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.1-58-g703241a3-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.1-58-g703241a3-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - ec2: Use instance-identity doc for region and instance-id @@ -8,7 +8,7 @@ cloud-init (17.1-58-g703241a3-0ubuntu1) UNRELEASED; urgency=medium - SUSE: remove delta in systemd local template for SUSE [Robert Schweikert] - tests: move to using tox 1.7.5 - -- Scott Moser Mon, 11 Dec 2017 18:30:47 -0500 + -- Scott Moser Mon, 11 Dec 2017 18:30:56 -0500 cloud-init (17.1-53-ga5dc0f42-0ubuntu1) bionic; urgency=medium From 86cac9c3155b9b750a86c9bca48cc7c7b87b5406 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 12 Dec 2017 12:02:39 -0700 Subject: [PATCH 0207/1174] update changelog (new upstream snapshot 17.1-60-ga30a3bb5). --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index 993bdffbbb5..b97e2e9749c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (17.1-60-ga30a3bb5-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - ds-identify: failure in NoCloud due to unset variable usage. + (LP: #1737704) + - tests: fix collect_console when not implemented [Joshua Powers] + + -- Chad Smith Tue, 12 Dec 2017 12:02:22 -0700 + cloud-init (17.1-58-g703241a3-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From be7a4c209d227385a1fc89214c5a216c857ee9d7 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 12 Dec 2017 12:03:27 -0700 Subject: [PATCH 0208/1174] releasing package cloud-init version 17.1-60-ga30a3bb5-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index b97e2e9749c..c07ed7ecc9d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,11 @@ -cloud-init (17.1-60-ga30a3bb5-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.1-60-ga30a3bb5-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - ds-identify: failure in NoCloud due to unset variable usage. (LP: #1737704) - tests: fix collect_console when not implemented [Joshua Powers] - -- Chad Smith Tue, 12 Dec 2017 12:02:22 -0700 + -- Chad Smith Tue, 12 Dec 2017 12:03:08 -0700 cloud-init (17.1-58-g703241a3-0ubuntu1) bionic; urgency=medium From edeeadcb2ac77e04e051c995267046b2646a129f Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 15 Dec 2017 10:11:09 -0700 Subject: [PATCH 0209/1174] update changelog (new upstream snapshot 17.2-1-g4089e20c). --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index c07ed7ecc9d..999f1138e13 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (17.2-1-g4089e20c-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - cli: Fix error in cloud-init modules --mode=init. + (LP: #1736600) + - release 17.2 + + -- Chad Smith Fri, 15 Dec 2017 10:10:41 -0700 + cloud-init (17.1-60-ga30a3bb5-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 5cd6ba3f397e278c422154da26c8f34c08079256 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 15 Dec 2017 10:12:05 -0700 Subject: [PATCH 0210/1174] releasing package cloud-init version 17.2-1-g4089e20c-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 999f1138e13..e55527056c0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,11 @@ -cloud-init (17.2-1-g4089e20c-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.2-1-g4089e20c-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - cli: Fix error in cloud-init modules --mode=init. (LP: #1736600) - release 17.2 - -- Chad Smith Fri, 15 Dec 2017 10:10:41 -0700 + -- Chad Smith Fri, 15 Dec 2017 10:11:50 -0700 cloud-init (17.1-60-ga30a3bb5-0ubuntu1) bionic; urgency=medium From 865de77243ce38867b54d414627ac775a1177f3a Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 15 Jan 2018 06:41:03 -0500 Subject: [PATCH 0211/1174] update changelog (new upstream snapshot 17.2-9-gdf24daa8). --- debian/changelog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/debian/changelog b/debian/changelog index e55527056c0..ee76193559a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,18 @@ +cloud-init (17.2-9-gdf24daa8-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - tests: update apt sources list test [Joshua Powers] + - tests: clean up image properties [Joshua Powers] + - tests: rename test ssh keys to avoid appearance of leaking private keys. + [Joshua Powers] + - tests: Enable AWS EC2 Integration Testing [Joshua Powers] + - cli: cloud-init clean handles symlinks [Chad Smith] (LP: #1741093) + - SUSE: Add a basic test of network config rendering. [Robert Schweikert] + - Azure: Only bounce network when necessary. [Chad Smith] (LP: #1722668) + - lint: Fix lints seen by pylint version 1.8.1. [Chad Smith] + + -- Scott Moser Mon, 15 Jan 2018 06:40:43 -0500 + cloud-init (17.2-1-g4089e20c-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 9c0c436e543e9a1ace4be8a74567cff3d47660af Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 15 Jan 2018 06:42:38 -0500 Subject: [PATCH 0212/1174] releasing package cloud-init version 17.2-9-gdf24daa8-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index ee76193559a..9aafda6a8c9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.2-9-gdf24daa8-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.2-9-gdf24daa8-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - tests: update apt sources list test [Joshua Powers] @@ -11,7 +11,7 @@ cloud-init (17.2-9-gdf24daa8-0ubuntu1) UNRELEASED; urgency=medium - Azure: Only bounce network when necessary. [Chad Smith] (LP: #1722668) - lint: Fix lints seen by pylint version 1.8.1. [Chad Smith] - -- Scott Moser Mon, 15 Jan 2018 06:40:43 -0500 + -- Scott Moser Mon, 15 Jan 2018 06:42:30 -0500 cloud-init (17.2-1-g4089e20c-0ubuntu1) bionic; urgency=medium From 3e48de6fe3e867856567fee2b17ca9db8d9c2a03 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 15 Jan 2018 10:15:03 -0500 Subject: [PATCH 0213/1174] update changelog (new upstream snapshot 17.2-13-g6299e8d0). --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index 9aafda6a8c9..cb9f5142732 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (17.2-13-g6299e8d0-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Do not log warning on config files that represent None. (LP: #1742479) + - tests: Use git hash pip dependency format for pylxd. [Chad Smith] + - tests: add integration requirements text file [Joshua Powers] + - MAAS: add check_instance_id based off oauth tokens. (LP: #1712680) + + -- Scott Moser Mon, 15 Jan 2018 10:14:52 -0500 + cloud-init (17.2-9-gdf24daa8-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 448e2c8d7398ae35a5e393c4bb635e24c56fa141 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 15 Jan 2018 10:15:15 -0500 Subject: [PATCH 0214/1174] releasing package cloud-init version 17.2-13-g6299e8d0-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index cb9f5142732..fc0990876e5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.2-13-g6299e8d0-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.2-13-g6299e8d0-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - Do not log warning on config files that represent None. (LP: #1742479) @@ -6,7 +6,7 @@ cloud-init (17.2-13-g6299e8d0-0ubuntu1) UNRELEASED; urgency=medium - tests: add integration requirements text file [Joshua Powers] - MAAS: add check_instance_id based off oauth tokens. (LP: #1712680) - -- Scott Moser Mon, 15 Jan 2018 10:14:52 -0500 + -- Scott Moser Mon, 15 Jan 2018 10:15:05 -0500 cloud-init (17.2-9-gdf24daa8-0ubuntu1) bionic; urgency=medium From 95efebd1036bfdc52d7a452ee0ae2a7a23b33765 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 23 Jan 2018 20:08:00 -0700 Subject: [PATCH 0215/1174] update changelog (new upstream snapshot 17.2-20-g32a6a176). --- debian/changelog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index fc0990876e5..8bdaa93fa85 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +cloud-init (17.2-20-g32a6a176-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - tests: Fix EC2 Platform to return console output as bytes. + - tests: Fix attempted use of /run in a test case. + - GCE: Improvements and changes to ssh key behavior for default user. + [Max Illfelder] (LP: #1670456, #1707033, #1707037, #1707039) + - subp: make ProcessExecutionError have expected types in stderr, stdout. + - tests: when querying ntp server, do not do dns resolution. + - Recognize uppercase vfat disk labels [James Penick] (LP: #1598783) + - tests: remove zesty as supported OS to test + + -- Chad Smith Tue, 23 Jan 2018 20:06:14 -0700 + cloud-init (17.2-13-g6299e8d0-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 23919e31120edf37c7ff7f9cba3eda4f46b6f5cb Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 23 Jan 2018 20:11:03 -0700 Subject: [PATCH 0216/1174] releasing package cloud-init version 17.2-20-g32a6a176-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 8bdaa93fa85..093ed099c16 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.2-20-g32a6a176-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.2-20-g32a6a176-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - tests: Fix EC2 Platform to return console output as bytes. @@ -10,7 +10,7 @@ cloud-init (17.2-20-g32a6a176-0ubuntu1) UNRELEASED; urgency=medium - Recognize uppercase vfat disk labels [James Penick] (LP: #1598783) - tests: remove zesty as supported OS to test - -- Chad Smith Tue, 23 Jan 2018 20:06:14 -0700 + -- Chad Smith Tue, 23 Jan 2018 20:10:44 -0700 cloud-init (17.2-13-g6299e8d0-0ubuntu1) bionic; urgency=medium From 8459712e8d3b37d4efb5b89aab71f35e000daf6f Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 24 Jan 2018 19:33:50 -0700 Subject: [PATCH 0217/1174] update changelog (new upstream snapshot 17.2-25-gc03bdd3d). --- debian/changelog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index 093ed099c16..de5e5a69f3c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +cloud-init (17.2-25-gc03bdd3d-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Azure VM Preprovisioning support. [Douglas Jordan] (LP: #1734991) + - tools/read-version: Fix read-version when in a git worktree. + - docs: Fix typos in docs and one debug message. [Florian Grignon] + - btrfs: support resizing if root is mounted ro. + [Robert Schweikert] (LP: #1734787) + - OpenNebula: Improve network configuration support. + [Akihiko Ota] (LP: #1719157, #1716397, #1736750) + + -- Chad Smith Wed, 24 Jan 2018 16:39:23 -0700 + cloud-init (17.2-20-g32a6a176-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 262a9f1ebf5e36b1efa0fa421a418ff9f7a09355 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 24 Jan 2018 21:56:59 -0500 Subject: [PATCH 0218/1174] releasing package cloud-init version 17.2-25-gc03bdd3d-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index de5e5a69f3c..8879717b000 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.2-25-gc03bdd3d-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.2-25-gc03bdd3d-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - Azure VM Preprovisioning support. [Douglas Jordan] (LP: #1734991) From 2fa33cccf44ca9eb93c2663757753a4b9773b0f6 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 2 Feb 2018 09:50:59 -0700 Subject: [PATCH 0219/1174] update changelog (new upstream snapshot 17.2-30-gf7deaf15). --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index 8879717b000..0988cbbdaf0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +cloud-init (17.2-30-gf7deaf15-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - docs: Update RTD content for cloud-init subcommands. + - OVF: Extend well-known labels to include OVFENV. (LP: #1698669) + - Fix potential cases of uninitialized variables. (LP: #1744796) + - tests: Collect script output as binary, collect systemd journal, fix lxd. + - HACKING.rst: mention setting user name and email via git config. + + -- Chad Smith Fri, 02 Feb 2018 09:50:41 -0700 + cloud-init (17.2-25-gc03bdd3d-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From e4ea57a37ee1834199ba06235a75b12f2cd0f99f Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 2 Feb 2018 09:51:34 -0700 Subject: [PATCH 0220/1174] releasing package cloud-init version 17.2-30-gf7deaf15-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0988cbbdaf0..314d8d595c0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.2-30-gf7deaf15-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.2-30-gf7deaf15-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - docs: Update RTD content for cloud-init subcommands. @@ -7,7 +7,7 @@ cloud-init (17.2-30-gf7deaf15-0ubuntu1) UNRELEASED; urgency=medium - tests: Collect script output as binary, collect systemd journal, fix lxd. - HACKING.rst: mention setting user name and email via git config. - -- Chad Smith Fri, 02 Feb 2018 09:50:41 -0700 + -- Chad Smith Fri, 02 Feb 2018 09:51:14 -0700 cloud-init (17.2-25-gc03bdd3d-0ubuntu1) bionic; urgency=medium From b1b12c27818d2a8ab03a1046723617e9f5b83baa Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 9 Feb 2018 17:04:00 -0500 Subject: [PATCH 0221/1174] update changelog (new upstream snapshot 17.2-34-g644048e3). --- debian/changelog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index 314d8d595c0..f81e83dcbc4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +cloud-init (17.2-34-g644048e3-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - EC2: Fix get_instance_id called against cached datasource pickle. + [Chad Smith] (LP: #1748354) + - cli: fix cloud-init status to report running when before result.json + [Chad Smith] (LP: #1747965) + - net: accept network-config in netplan format for renaming interfaces + [Ryan Harper] (LP: #1709715) + - Fix ssh keys validation in ssh_util [Tatiana Kholkina] + + -- Scott Moser Fri, 09 Feb 2018 17:03:51 -0500 + cloud-init (17.2-30-gf7deaf15-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 4a98c84dcea4eca7032d41d4f049619b91d71295 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 9 Feb 2018 17:04:12 -0500 Subject: [PATCH 0222/1174] releasing package cloud-init version 17.2-34-g644048e3-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index f81e83dcbc4..abbd5a9f29c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (17.2-34-g644048e3-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (17.2-34-g644048e3-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - EC2: Fix get_instance_id called against cached datasource pickle. @@ -9,7 +9,7 @@ cloud-init (17.2-34-g644048e3-0ubuntu1) UNRELEASED; urgency=medium [Ryan Harper] (LP: #1709715) - Fix ssh keys validation in ssh_util [Tatiana Kholkina] - -- Scott Moser Fri, 09 Feb 2018 17:03:51 -0500 + -- Scott Moser Fri, 09 Feb 2018 17:04:03 -0500 cloud-init (17.2-30-gf7deaf15-0ubuntu1) bionic; urgency=medium From 61cd7addd9915c6e2164a36830e87ad234146e25 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 22 Feb 2018 15:41:48 -0700 Subject: [PATCH 0223/1174] update changelog (new upstream snapshot 18.1). --- debian/changelog | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/debian/changelog b/debian/changelog index abbd5a9f29c..a086393e6cc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +cloud-init (18.1-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - release 18.1 (LP: #1751145) + - OVF: Fix VMware support for 64-bit platforms. [Sankar Tanguturi] + - ds-identify: Fix searching for iso9660 OVF cdroms. (LP: #1749980) + - SUSE: Fix groups used for ownership of cloud-init.log [Robert Schweikert] + - ds-identify: check /writable/system-data/ for nocloud seed. + (LP: #1747070) + - tests: run nosetests in cloudinit/ directory, fix py26 fallout. + - tools: run-centos: git clone rather than tar. + - tests: add support for logs with lxd from snap and future lxd 3. + (LP: #1745663) + + -- Chad Smith Thu, 22 Feb 2018 15:41:25 -0700 + cloud-init (17.2-34-g644048e3-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 04abd70b222976007b07afc5b1fa70c0a4de882e Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 22 Feb 2018 15:42:26 -0700 Subject: [PATCH 0224/1174] releasing package cloud-init version 18.1-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index a086393e6cc..2552bb67733 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.1-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.1-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - release 18.1 (LP: #1751145) @@ -12,7 +12,7 @@ cloud-init (18.1-0ubuntu1) UNRELEASED; urgency=medium - tests: add support for logs with lxd from snap and future lxd 3. (LP: #1745663) - -- Chad Smith Thu, 22 Feb 2018 15:41:25 -0700 + -- Chad Smith Thu, 22 Feb 2018 15:42:11 -0700 cloud-init (17.2-34-g644048e3-0ubuntu1) bionic; urgency=medium From f19eecfd207a19c62b2a960334eb273da387dcbe Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 1 Mar 2018 15:46:56 -0700 Subject: [PATCH 0225/1174] update changelog (new upstream snapshot 18.1-5-g40e77380). --- debian/changelog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index 2552bb67733..d815099f842 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +cloud-init (18.1-5-g40e77380-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - GCE: fix reading of user-data that is not base64 encoded. (LP: #1752711) + - doc: fix chef install from apt packages example in RTD. + - Implement puppet 4 support [Romanos Skiadas] (LP: #1446804) + - subp: Fix subp usage with non-ascii characters when no system locale. + (LP: #1751051) + - salt: configure grains in grains file rather than in minion config. + [Daniel Wallace] + + -- Chad Smith Thu, 01 Mar 2018 15:46:49 -0700 + cloud-init (18.1-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 964c869024b422c3966975cc6d23981537084b0a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 1 Mar 2018 15:47:20 -0700 Subject: [PATCH 0226/1174] releasing package cloud-init version 18.1-5-g40e77380-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d815099f842..27dba2c1baf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.1-5-g40e77380-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.1-5-g40e77380-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - GCE: fix reading of user-data that is not base64 encoded. (LP: #1752711) @@ -9,7 +9,7 @@ cloud-init (18.1-5-g40e77380-0ubuntu1) UNRELEASED; urgency=medium - salt: configure grains in grains file rather than in minion config. [Daniel Wallace] - -- Chad Smith Thu, 01 Mar 2018 15:46:49 -0700 + -- Chad Smith Thu, 01 Mar 2018 15:47:04 -0700 cloud-init (18.1-0ubuntu1) bionic; urgency=medium From 4cc095afa2fdfc1ba13f9b6892d6c9782945f26c Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 15 Mar 2018 14:48:14 -0600 Subject: [PATCH 0227/1174] update changelog (new upstream snapshot 18.1-17-g97012fbb). --- debian/changelog | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/debian/changelog b/debian/changelog index 27dba2c1baf..74d7750fd9f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,25 @@ +cloud-init (18.1-17-g97012fbb-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - util: Fix subp regression. Allow specifying subp command as a string. + (LP: #1755965) + - doc: fix all warnings issued by 'tox -e doc' + - FreeBSD: Set hostname to FQDN. [Dominic Schlegel] (LP: #1753499) + - tests: fix run_tree and bddeb + - tests: Fix some warnings in tests that popped up with newer python. + - set_hostname: When present in metadata, set it before network bringup. + (LP: #1746455) + - tests: Centralize and re-use skipTest based on json schema presense. + - This commit fixes get_hostname on the AzureDataSource. + [Douglas Jordan] (LP: #1754495) + - shellify: raise TypeError on bad input. + - Make salt minion module work on FreeBSD. + [Dominic Schlegel] (LP: #1721503) + - Simplify some comparisions. [Rémy Léone] + - Change some list creation and population to literal. [Rémy Léone] + + -- Chad Smith Thu, 15 Mar 2018 14:47:46 -0600 + cloud-init (18.1-5-g40e77380-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From a6262577f56d32fb6005a55f9022309c5dc7dce5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 15 Mar 2018 14:48:39 -0600 Subject: [PATCH 0228/1174] releasing package cloud-init version 18.1-17-g97012fbb-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 74d7750fd9f..f1ba6efaa8f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.1-17-g97012fbb-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.1-17-g97012fbb-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - util: Fix subp regression. Allow specifying subp command as a string. @@ -18,7 +18,7 @@ cloud-init (18.1-17-g97012fbb-0ubuntu1) UNRELEASED; urgency=medium - Simplify some comparisions. [Rémy Léone] - Change some list creation and population to literal. [Rémy Léone] - -- Chad Smith Thu, 15 Mar 2018 14:47:46 -0600 + -- Chad Smith Thu, 15 Mar 2018 14:48:29 -0600 cloud-init (18.1-5-g40e77380-0ubuntu1) bionic; urgency=medium From 0014ae91353f01859e0533f588b8e3c7e8998f4a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 16 Mar 2018 15:47:41 -0600 Subject: [PATCH 0229/1174] update changelog (new upstream snapshot 18.1-23-gde34dc7c). --- debian/changelog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index f1ba6efaa8f..85a1e317814 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +cloud-init (18.1-23-gde34dc7c-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - net: recognize iscsi root cases without ip= on kernel command line. + (LP: #1752391) + - tests: fix flakes warning for unused variable + - tests: patch leaked stderr messages from snap unit tests + - cc_snap: Add new module to install and configure snapd and snap + packages. + - tests: Make pylint happy and fix python2.6 uses of assertRaisesRegex. + - netplan: render bridge port-priority values (LP: #1735821) + + -- Chad Smith Fri, 16 Mar 2018 15:47:10 -0600 + cloud-init (18.1-17-g97012fbb-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 5cf8586dd83b6b84cc4e3f061dc055e08e626703 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 16 Mar 2018 15:48:17 -0600 Subject: [PATCH 0230/1174] releasing package cloud-init version 18.1-23-gde34dc7c-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 85a1e317814..f225d529735 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.1-23-gde34dc7c-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.1-23-gde34dc7c-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - net: recognize iscsi root cases without ip= on kernel command line. @@ -10,7 +10,7 @@ cloud-init (18.1-23-gde34dc7c-0ubuntu1) UNRELEASED; urgency=medium - tests: Make pylint happy and fix python2.6 uses of assertRaisesRegex. - netplan: render bridge port-priority values (LP: #1735821) - -- Chad Smith Fri, 16 Mar 2018 15:47:10 -0600 + -- Chad Smith Fri, 16 Mar 2018 15:48:04 -0600 cloud-init (18.1-17-g97012fbb-0ubuntu1) bionic; urgency=medium From 76aeb4aacd7b966421988b00a9feaa51b1aefdaf Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 20 Mar 2018 16:40:36 -0600 Subject: [PATCH 0231/1174] update changelog (new upstream snapshot 18.1-26-g685f9901). --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index f225d529735..4eaf9951cf0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +cloud-init (18.1-26-g685f9901-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - datasources: fix DataSource subclass get_hostname method signature + (LP: #1757176) + - OpenNebula: Update network to return v2 config rather than ENI. + [Akihiko Ota] + - Add Hetzner Cloud DataSource [Markus Schade] + + -- Chad Smith Tue, 20 Mar 2018 16:39:07 -0600 + cloud-init (18.1-23-gde34dc7c-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 200e535c5797d8ed4ed33afc7734c662a505f4b7 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 19 Mar 2018 15:42:51 -0400 Subject: [PATCH 0232/1174] debian/cloud-init.templates: Enable Hetzner Cloud datasource. --- debian/cloud-init.templates | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index 5ed37f73c3b..ec773299f5e 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ 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 +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, 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, Hetzner: Hetzner Cloud, 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. From 800326530e9deb7cfd21ec8d008a85b1962b79b3 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 20 Mar 2018 21:58:42 -0400 Subject: [PATCH 0233/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 4eaf9951cf0..216ea22bed1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ cloud-init (18.1-26-g685f9901-0ubuntu1) UNRELEASED; urgency=medium + * debian/cloud-init.templates: Enable Hetzner Cloud datasource. * New upstream snapshot. - datasources: fix DataSource subclass get_hostname method signature (LP: #1757176) From f3fd0af35de9298d716a440cc316c9ed4aff90cf Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 20 Mar 2018 21:59:51 -0400 Subject: [PATCH 0234/1174] releasing package cloud-init version 18.1-26-g685f9901-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 216ea22bed1..c333306b00a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.1-26-g685f9901-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.1-26-g685f9901-0ubuntu1) bionic; urgency=medium * debian/cloud-init.templates: Enable Hetzner Cloud datasource. * New upstream snapshot. From 405e9518755df26f492252c143ae370429c1d6c8 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 23 Mar 2018 17:21:25 -0600 Subject: [PATCH 0235/1174] update changelog (new upstream snapshot 18.1-35-ge0f644b7). --- debian/changelog | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/debian/changelog b/debian/changelog index c333306b00a..27197d06f97 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,22 @@ +cloud-init (18.1-35-ge0f644b7-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - IBMCloud: Initial IBM Cloud datasource. + - tests: remove jsonschema from xenial tox environment. + - tests: Fix newly added schema unit tests to skip if no jsonschema. + - ec2: Adjust ec2 datasource after exception_cb change. + - Reduce AzurePreprovisioning HTTP timeouts. + [Douglas Jordan] (LP: #1752977) + - Revert the logic of exception_cb in read_url. + [Kurt Garloff] (LP: #1702160, #1298921) + - ubuntu-advantage: Add new config module to support + ubuntu-advantage-tools + - Handle global dns entries in netplan (LP: #1750884) + - Identify OpenTelekomCloud Xen as OpenStack DS. + [Kurt Garloff] (LP: #1756471) + + -- Chad Smith Fri, 23 Mar 2018 17:20:47 -0600 + cloud-init (18.1-26-g685f9901-0ubuntu1) bionic; urgency=medium * debian/cloud-init.templates: Enable Hetzner Cloud datasource. From 4f7bdee8cc37e0f36df888fbd79f0e68d6429431 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 23 Mar 2018 21:05:34 -0400 Subject: [PATCH 0236/1174] debian/cloud-init.templates: enable IBMCloud datasource. --- debian/cloud-init.templates | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index ec773299f5e..ae2ca93a977 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, 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, Hetzner: Hetzner Cloud, None: Failsafe datasource +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., 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. From 8a5a5f41c39400f2dfee3242de136abaeb882132 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 23 Mar 2018 21:09:10 -0400 Subject: [PATCH 0237/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 27197d06f97..fc7f37bdb3d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ cloud-init (18.1-35-ge0f644b7-0ubuntu1) UNRELEASED; urgency=medium + * debian/cloud-init.templates: enable IBMCloud datasource. * New upstream snapshot. - IBMCloud: Initial IBM Cloud datasource. - tests: remove jsonschema from xenial tox environment. From 03efe5fbccf2dab5f4cd4a7373a8abd0c9557e93 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 23 Mar 2018 21:09:30 -0400 Subject: [PATCH 0238/1174] releasing package cloud-init version 18.1-35-ge0f644b7-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index fc7f37bdb3d..4a65d4035c7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.1-35-ge0f644b7-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.1-35-ge0f644b7-0ubuntu1) bionic; urgency=medium * debian/cloud-init.templates: enable IBMCloud datasource. * New upstream snapshot. From bdfb4dabaea72adef196b99eda770a72c2e8decd Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 23 Mar 2018 16:32:21 -0400 Subject: [PATCH 0239/1174] Separate the grub-legacy-ec2 package. This drops the grub-legacy-ec2 package from cloud-init. LP: #1758420 --- debian/control | 13 - debian/grub-legacy-ec2.install | 4 - debian/grub-legacy-ec2.lintian-overrides | 6 - debian/grub-legacy-ec2.postinst | 10 - debian/grub-legacy-ec2.postrm | 17 - debian/grub-legacy-ec2.preinst | 9 - debian/grub-legacy-ec2.templates | 9 - debian/grub-set-default | 38 - debian/grub-set-default-legacy-ec2 | 141 -- debian/kernel/postinst.d/x-grub-legacy-ec2 | 18 - debian/kernel/postrm.d/x-grub-legacy-ec2 | 18 - debian/po/POTFILES.in | 1 - debian/po/ca.po | 80 - debian/po/cs.po | 89 -- debian/po/da.po | 86 -- debian/po/de.po | 92 -- debian/po/es.po | 105 -- debian/po/eu.po | 83 - debian/po/fi.po | 79 - debian/po/fr.po | 78 - debian/po/gl.po | 80 - debian/po/it.po | 81 - debian/po/ja.po | 90 -- debian/po/nl.po | 95 -- debian/po/pl.po | 100 -- debian/po/pt.po | 82 - debian/po/pt_BR.po | 89 -- debian/po/ru.po | 85 - debian/po/sv.po | 82 - debian/po/templates.pot | 80 - debian/po/vi.po | 91 -- debian/update-grub-legacy-ec2 | 1619 -------------------- 32 files changed, 3550 deletions(-) delete mode 100644 debian/grub-legacy-ec2.install delete mode 100644 debian/grub-legacy-ec2.lintian-overrides delete mode 100644 debian/grub-legacy-ec2.postinst delete mode 100644 debian/grub-legacy-ec2.postrm delete mode 100644 debian/grub-legacy-ec2.preinst delete mode 100644 debian/grub-legacy-ec2.templates delete mode 100755 debian/grub-set-default delete mode 100644 debian/grub-set-default-legacy-ec2 delete mode 100755 debian/kernel/postinst.d/x-grub-legacy-ec2 delete mode 100755 debian/kernel/postrm.d/x-grub-legacy-ec2 delete mode 100644 debian/po/POTFILES.in delete mode 100644 debian/po/ca.po delete mode 100644 debian/po/cs.po delete mode 100644 debian/po/da.po delete mode 100644 debian/po/de.po delete mode 100644 debian/po/es.po delete mode 100644 debian/po/eu.po delete mode 100644 debian/po/fi.po delete mode 100644 debian/po/fr.po delete mode 100644 debian/po/gl.po delete mode 100644 debian/po/it.po delete mode 100644 debian/po/ja.po delete mode 100644 debian/po/nl.po delete mode 100644 debian/po/pl.po delete mode 100644 debian/po/pt.po delete mode 100644 debian/po/pt_BR.po delete mode 100644 debian/po/ru.po delete mode 100644 debian/po/sv.po delete mode 100644 debian/po/templates.pot delete mode 100644 debian/po/vi.po delete mode 100755 debian/update-grub-legacy-ec2 diff --git a/debian/control b/debian/control index 3f46d7bf5b1..5e3a8ea5ee5 100644 --- a/debian/control +++ b/debian/control @@ -46,16 +46,3 @@ XB-Python-Version: ${python:Versions} Description: Init scripts for cloud instances Cloud instances need special scripts to run during initialisation to retrieve and install ssh keys and to let the user run various scripts. - -Package: grub-legacy-ec2 -Depends: debconf | 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/grub-legacy-ec2.install b/debian/grub-legacy-ec2.install deleted file mode 100644 index f9ac62816b0..00000000000 --- a/debian/grub-legacy-ec2.install +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index ed8c77f1cbf..00000000000 --- a/debian/grub-legacy-ec2.lintian-overrides +++ /dev/null @@ -1,6 +0,0 @@ -# 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 deleted file mode 100644 index 3c4aa5cdb95..00000000000 --- a/debian/grub-legacy-ec2.postinst +++ /dev/null @@ -1,10 +0,0 @@ -#!/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 deleted file mode 100644 index 50184234abf..00000000000 --- a/debian/grub-legacy-ec2.postrm +++ /dev/null @@ -1,17 +0,0 @@ -#!/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 deleted file mode 100644 index ac73b428927..00000000000 --- a/debian/grub-legacy-ec2.preinst +++ /dev/null @@ -1,9 +0,0 @@ -#!/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 deleted file mode 100644 index 0562c8cb569..00000000000 --- a/debian/grub-legacy-ec2.templates +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100755 index 8816bc7e11f..00000000000 --- a/debian/grub-set-default +++ /dev/null @@ -1,38 +0,0 @@ -#!/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 -} - -# 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 < $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 deleted file mode 100755 index 33436510704..00000000000 --- a/debian/kernel/postinst.d/x-grub-legacy-ec2 +++ /dev/null @@ -1,18 +0,0 @@ -#!/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 deleted file mode 100755 index 6f6aa4a4678..00000000000 --- a/debian/kernel/postrm.d/x-grub-legacy-ec2 +++ /dev/null @@ -1,18 +0,0 @@ -#!/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/po/POTFILES.in b/debian/po/POTFILES.in deleted file mode 100644 index 9dc1b8f67f6..00000000000 --- a/debian/po/POTFILES.in +++ /dev/null @@ -1 +0,0 @@ -[type: gettext/rfc822deb] grub.templates diff --git a/debian/po/ca.po b/debian/po/ca.po deleted file mode 100644 index e839a466494..00000000000 --- a/debian/po/ca.po +++ /dev/null @@ -1,80 +0,0 @@ -# ucf (debconf) translation to Catalan. -# Copyright (C) 2004 Free Software Foundation, Inc. -# Aleix Badia i Bosch , 2004 -# -msgid "" -msgstr "" -"Project-Id-Version: ucf_0.30_templates\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: Catalan \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 deleted file mode 100644 index 7d8db4a77bb..00000000000 --- a/debian/po/cs.po +++ /dev/null @@ -1,89 +0,0 @@ -# -# 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@packages.debian.org\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 \n" -"Language-Team: Czech \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 deleted file mode 100644 index 399439cf2a2..00000000000 --- a/debian/po/da.po +++ /dev/null @@ -1,86 +0,0 @@ -# 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 , 2005. -# Claus Hindsgaul , 2007. -msgid "" -msgstr "" -"Project-Id-Version: ucf debconf template\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \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 deleted file mode 100644 index 294f7390058..00000000000 --- a/debian/po/de.po +++ /dev/null @@ -1,92 +0,0 @@ -# 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 , 2004-2007. -msgid "" -msgstr "" -"Project-Id-Version: ucf_3.002_de\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: German \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 deleted file mode 100644 index 725d9e91ef1..00000000000 --- a/debian/po/es.po +++ /dev/null @@ -1,105 +0,0 @@ -# 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 , 2004 -# - Updated -# Javier Fernandez-Sanguino , 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@packages.debian.org\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 \n" -"Language-Team: Debian Spanish \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 deleted file mode 100644 index ddf7d2a731b..00000000000 --- a/debian/po/eu.po +++ /dev/null @@ -1,83 +0,0 @@ -# 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 , 2007. -# -msgid "" -msgstr "" -"Project-Id-Version: ucf-debconf\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: Euskara \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 deleted file mode 100644 index 62da4409350..00000000000 --- a/debian/po/fi.po +++ /dev/null @@ -1,79 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: ucf_3.003\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: Finnish \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 deleted file mode 100644 index 1598329c668..00000000000 --- a/debian/po/fr.po +++ /dev/null @@ -1,78 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: fr\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: French \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 deleted file mode 100644 index 6547ad32402..00000000000 --- a/debian/po/gl.po +++ /dev/null @@ -1,80 +0,0 @@ -# Galician translation of ucf's debconf templates. -# This file is distributed under the same license as the ucf package. -# Jacobo Tarrio , 2006, 2007. -# -msgid "" -msgstr "" -"Project-Id-Version: ucf\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: Galician \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 deleted file mode 100644 index f344e46302f..00000000000 --- a/debian/po/it.po +++ /dev/null @@ -1,81 +0,0 @@ -# translation of ucf_1.18_templates.po to italian -# Copyright Luca Bruno , 2005. -msgid "" -msgstr "" -"Project-Id-Version: ucf_1.18_templates\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: Italian \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 deleted file mode 100644 index 981ef2288a3..00000000000 --- a/debian/po/ja.po +++ /dev/null @@ -1,90 +0,0 @@ -# -# 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@packages.debian.org\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 \n" -"Language-Team: Japanese \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 deleted file mode 100644 index e8acf632d92..00000000000 --- a/debian/po/nl.po +++ /dev/null @@ -1,95 +0,0 @@ -# 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@packages.debian.org\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 \n" -"Language-Team: Nederlands \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 deleted file mode 100644 index a42099e1727..00000000000 --- a/debian/po/pl.po +++ /dev/null @@ -1,100 +0,0 @@ -# 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 , 2007. -msgid "" -msgstr "" -"Project-Id-Version: ucf3002\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: Polish \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 deleted file mode 100644 index 23c7f8f560e..00000000000 --- a/debian/po/pt.po +++ /dev/null @@ -1,82 +0,0 @@ -# Portuguese translation of ucf's debconf messages. -# 2007, Pedro Ribeiro -# Bruno Queiros , 2007. -# -msgid "" -msgstr "" -"Project-Id-Version: ucf 2.0020\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: Portuguese \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 deleted file mode 100644 index 9d736b9707e..00000000000 --- a/debian/po/pt_BR.po +++ /dev/null @@ -1,89 +0,0 @@ -# -# 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@packages.debian.org\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 \n" -"Language-Team: Debian-BR Project \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 deleted file mode 100644 index 6560fe3197d..00000000000 --- a/debian/po/ru.po +++ /dev/null @@ -1,85 +0,0 @@ -# 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 , 2006, 2007. -msgid "" -msgstr "" -"Project-Id-Version: 3.001\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: Russian \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 deleted file mode 100644 index 8a157dedaeb..00000000000 --- a/debian/po/sv.po +++ /dev/null @@ -1,82 +0,0 @@ -# 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 , 2007. -# -msgid "" -msgstr "" -"Project-Id-Version: ucf 2.002\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: Swedish \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 deleted file mode 100644 index f0b056afc25..00000000000 --- a/debian/po/templates.pot +++ /dev/null @@ -1,80 +0,0 @@ -# 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 , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: LANGUAGE \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 deleted file mode 100644 index a815be9abba..00000000000 --- a/debian/po/vi.po +++ /dev/null @@ -1,91 +0,0 @@ -# Vietnamese translation for UCF. -# Copyright © 2007 Free Software Foundation, Inc. -# Clytie Siddall , 2005-2007. -# -msgid "" -msgstr "" -"Project-Id-Version: ucf 3.002\n" -"Report-Msgid-Bugs-To: Source: grub@packages.debian.org\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 \n" -"Language-Team: Vietnamese \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/update-grub-legacy-ec2 b/debian/update-grub-legacy-ec2 deleted file mode 100755 index fb44b6e4513..00000000000 --- a/debian/update-grub-legacy-ec2 +++ /dev/null @@ -1,1619 +0,0 @@ -#!/bin/bash -# -# Insert a list of installed kernels in a grub config file -# Copyright 2001 Wichert Akkerman -# 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 -# David B.Harris -# Marc Haber -# Crispin Flowerday -# Steve Langasek - -# 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" <&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 AB -# 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 From bf5dc3ac0e3b68bd3a17ebbed62f9721d47f1c57 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 26 Mar 2018 16:49:29 -0400 Subject: [PATCH 0240/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 4a65d4035c7..1524170641c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (18.1-35-ge0f644b7-0ubuntu2) UNRELEASED; urgency=medium + + * debian/: drop grub-legacy-ec2 package, which is now in its own source + package (LP: #1758420). + + -- Scott Moser Mon, 26 Mar 2018 16:48:25 -0400 + cloud-init (18.1-35-ge0f644b7-0ubuntu1) bionic; urgency=medium * debian/cloud-init.templates: enable IBMCloud datasource. From 2e19d0821c9190b92f34492ce3dffc0ff640dad6 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 26 Mar 2018 16:54:50 -0400 Subject: [PATCH 0241/1174] releasing package cloud-init version 18.1-35-ge0f644b7-0ubuntu2 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1524170641c..936247d79ca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (18.1-35-ge0f644b7-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (18.1-35-ge0f644b7-0ubuntu2) bionic; urgency=medium * debian/: drop grub-legacy-ec2 package, which is now in its own source package (LP: #1758420). - -- Scott Moser Mon, 26 Mar 2018 16:48:25 -0400 + -- Scott Moser Mon, 26 Mar 2018 16:54:34 -0400 cloud-init (18.1-35-ge0f644b7-0ubuntu1) bionic; urgency=medium From 5b630c3419c5e28946cd1cd58091d78e89df354a Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 27 Mar 2018 11:50:40 -0400 Subject: [PATCH 0242/1174] Add missing dependency on isc-dhcp-client. This just correctly adds the missing dependency on isc-dhcp-client. That package is used via 'dhclient' from cloudinit/net/dhcp.py. LP: #1759307 --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index 5e3a8ea5ee5..2eb0eaadcca 100644 --- a/debian/control +++ b/debian/control @@ -6,6 +6,7 @@ Build-Depends: debhelper (>= 9), dh-python, dh-systemd, iproute2, + isc-dhcp-client, pep8, po-debconf, pyflakes, From cdb331f8ef0e0eda8dfbc80259103172f519369f Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 27 Mar 2018 12:21:06 -0400 Subject: [PATCH 0243/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 936247d79ca..6f022bba2f9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (18.1-35-ge0f644b7-0ubuntu3) UNRELEASED; urgency=medium + + * debian/control: Add missing dependency on isc-dhcp-client (LP: #1759307). + + -- Scott Moser Tue, 27 Mar 2018 12:19:44 -0400 + cloud-init (18.1-35-ge0f644b7-0ubuntu2) bionic; urgency=medium * debian/: drop grub-legacy-ec2 package, which is now in its own source From c503a17ea229131f270d8304baf6c3b484d5b407 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 27 Mar 2018 14:59:48 -0600 Subject: [PATCH 0244/1174] update changelog (new upstream snapshot 18.2). --- debian/changelog | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6f022bba2f9..de9d96ce63b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,17 @@ -cloud-init (18.1-35-ge0f644b7-0ubuntu3) UNRELEASED; urgency=medium +cloud-init (18.2-0ubuntu1) UNRELEASED; urgency=medium * debian/control: Add missing dependency on isc-dhcp-client (LP: #1759307). + * New upstream snapshot. + - release 18.2 (LP: #1759318) + - Hetzner: Exit early if dmi system-manufacturer is not Hetzner. + - Add missing dependency on isc-dhcp-client to trunk ubuntu packaging. + (LP: #1759307) + - FreeBSD: resizefs module now able to handle zfs/zpool. + [Dominic Schlegel] (LP: #1721243) + - cc_puppet: Revert regression of puppet creating ssl and ssl_cert dirs + - Enable IBMCloud datasource in settings.py. - -- Scott Moser Tue, 27 Mar 2018 12:19:44 -0400 + -- Chad Smith Tue, 27 Mar 2018 14:58:58 -0600 cloud-init (18.1-35-ge0f644b7-0ubuntu2) bionic; urgency=medium From 10ab9a7c231b6f7d01da3a3a4c08cf4db01f5a87 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 27 Mar 2018 15:00:09 -0600 Subject: [PATCH 0245/1174] releasing package cloud-init version 18.2-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index de9d96ce63b..cdfbf6aa675 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.2-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.2-0ubuntu1) bionic; urgency=medium * debian/control: Add missing dependency on isc-dhcp-client (LP: #1759307). * New upstream snapshot. @@ -11,7 +11,7 @@ cloud-init (18.2-0ubuntu1) UNRELEASED; urgency=medium - cc_puppet: Revert regression of puppet creating ssl and ssl_cert dirs - Enable IBMCloud datasource in settings.py. - -- Chad Smith Tue, 27 Mar 2018 14:58:58 -0600 + -- Chad Smith Tue, 27 Mar 2018 14:59:58 -0600 cloud-init (18.1-35-ge0f644b7-0ubuntu2) bionic; urgency=medium From d419a551a4bbbc054127e39a2910057dc9e7a461 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 3 Apr 2018 16:54:39 -0600 Subject: [PATCH 0246/1174] update changelog (New upstream snapshot 18.2-4-g05926e48). --- debian/changelog | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/debian/changelog b/debian/changelog index cdfbf6aa675..08f03eb7d9d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +cloud-init (18.2-4-g05926e48-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - tests: fix integration tests to support lxd 3.0 release + - correct documentation to match correct attribute name usage. + [Dominic Schlegel] (LP: #1420018) + - cc_resizefs, util: handle no /dev/zfs + - doc: Fix links in OpenStack datasource documentation. + [Dominic Schlegel] (LP: #1721660) + + -- Chad Smith Tue, 03 Apr 2018 16:54:30 -0600 + cloud-init (18.2-0ubuntu1) bionic; urgency=medium * debian/control: Add missing dependency on isc-dhcp-client (LP: #1759307). From 676a55166bab940cd1e8dfe69f8ebe187c186bdc Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 3 Apr 2018 16:54:53 -0600 Subject: [PATCH 0247/1174] releasing cloud-init version 18.2-4-g05926e48-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 08f03eb7d9d..091d59e9188 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.2-4-g05926e48-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.2-4-g05926e48-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - tests: fix integration tests to support lxd 3.0 release @@ -8,7 +8,7 @@ cloud-init (18.2-4-g05926e48-0ubuntu1) UNRELEASED; urgency=medium - doc: Fix links in OpenStack datasource documentation. [Dominic Schlegel] (LP: #1721660) - -- Chad Smith Tue, 03 Apr 2018 16:54:30 -0600 + -- Chad Smith Tue, 03 Apr 2018 16:54:45 -0600 cloud-init (18.2-0ubuntu1) bionic; urgency=medium From abe6bcdfacdf2f6745e3acf5c76b332380b9c493 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 10 Apr 2018 11:37:21 -0400 Subject: [PATCH 0248/1174] debian/cloud-init.templates: enable IBMCloud by default. A previous commit to enable IBM cloud accidently did not add it to the default list. That meant that images would not have IBMCloud enabled by default (though dpkg-reconfigure could select it). This just adds it to the default. LP: #1762773 --- debian/cloud-init.templates | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index ae2ca93a977..ef3c3a795b8 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,6 +1,6 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, None +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, None Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., None: Failsafe datasource Description: Which data sources should be searched? From 8fc628121353758313ac5afdb39e9c56bb7bdfd8 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 10 Apr 2018 11:39:13 -0400 Subject: [PATCH 0249/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 091d59e9188..2594b37c4c6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (18.2-4-g05926e48-0ubuntu2) UNRELEASED; urgency=medium + + * debian/cloud-init.templates: enable IBMCloud by default (LP: #1762773). + + -- Scott Moser Tue, 10 Apr 2018 11:38:46 -0400 + cloud-init (18.2-4-g05926e48-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 8694f86f2de8882bed29a0604c40c53485d8c2aa Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 10 Apr 2018 21:21:26 -0400 Subject: [PATCH 0250/1174] releasing package cloud-init version 18.2-4-g05926e48-0ubuntu2 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2594b37c4c6..390f345927d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,8 @@ -cloud-init (18.2-4-g05926e48-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (18.2-4-g05926e48-0ubuntu2) bionic; urgency=medium * debian/cloud-init.templates: enable IBMCloud by default (LP: #1762773). - -- Scott Moser Tue, 10 Apr 2018 11:38:46 -0400 + -- Scott Moser Tue, 10 Apr 2018 21:21:17 -0400 cloud-init (18.2-4-g05926e48-0ubuntu1) bionic; urgency=medium From b7a520f612241ce8dd35205fd76864d11d3552d7 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 12 Apr 2018 16:06:11 -0600 Subject: [PATCH 0251/1174] update changelog (New upstream snapshot 18.2-9-g49b562c9). --- debian/changelog | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/debian/changelog b/debian/changelog index 390f345927d..3c90a6c2be3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +cloud-init (18.2-9-g49b562c9-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - tools: Fix make-tarball cli tool usage for development + - renderer: support unicode in render_from_file. + - Implement ntp client spec with auto support for distro selection + (LP: #1749722) + - Apport: add Brightbox, IBM, LXD, and OpenTelekomCloud to list of clouds. + - tests: fix ec2 integration network metadata validation + + -- Chad Smith Thu, 12 Apr 2018 15:56:01 -0600 + cloud-init (18.2-4-g05926e48-0ubuntu2) bionic; urgency=medium * debian/cloud-init.templates: enable IBMCloud by default (LP: #1762773). From b602a10c0620f77882113e14c145b0877a455b02 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 12 Apr 2018 16:06:36 -0600 Subject: [PATCH 0252/1174] releasing cloud-init version 18.2-9-g49b562c9-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3c90a6c2be3..d3a4234b5d3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.2-9-g49b562c9-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.2-9-g49b562c9-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - tools: Fix make-tarball cli tool usage for development @@ -8,7 +8,7 @@ cloud-init (18.2-9-g49b562c9-0ubuntu1) UNRELEASED; urgency=medium - Apport: add Brightbox, IBM, LXD, and OpenTelekomCloud to list of clouds. - tests: fix ec2 integration network metadata validation - -- Chad Smith Thu, 12 Apr 2018 15:56:01 -0600 + -- Chad Smith Thu, 12 Apr 2018 16:06:24 -0600 cloud-init (18.2-4-g05926e48-0ubuntu2) bionic; urgency=medium From d4af04043ef893b926640af52a9ac8610af47f9f Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 Apr 2018 15:25:48 -0600 Subject: [PATCH 0253/1174] update changelog (New upstream snapshot 18.2-14-g6d48d265). --- debian/changelog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index d3a4234b5d3..6138d1b1f46 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +cloud-init (18.2-14-g6d48d265-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - net: Depend on iproute2's ip instead of net-tools ifconfig or route + - DataSourceSmartOS: fix hang when metadata service is down + [Mike Gerdts] (LP: #1667735) + - DataSourceSmartOS: change default fs on ephemeral disk from ext3 to + ext4. [Mike Gerdts] (LP: #1763511) + - pycodestyle: Fix invalid escape sequences in string literals. + - Implement bash completion script for cloud-init command line + + -- Chad Smith Wed, 18 Apr 2018 15:24:40 -0600 + cloud-init (18.2-9-g49b562c9-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From 555b756bde681bcabd68cc5fab5a177bd73c6049 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 Apr 2018 15:26:04 -0600 Subject: [PATCH 0254/1174] releasing cloud-init version 18.2-14-g6d48d265-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6138d1b1f46..45016a5e084 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.2-14-g6d48d265-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.2-14-g6d48d265-0ubuntu1) bionic; urgency=medium * New upstream snapshot. - net: Depend on iproute2's ip instead of net-tools ifconfig or route @@ -9,7 +9,7 @@ cloud-init (18.2-14-g6d48d265-0ubuntu1) UNRELEASED; urgency=medium - pycodestyle: Fix invalid escape sequences in string literals. - Implement bash completion script for cloud-init command line - -- Chad Smith Wed, 18 Apr 2018 15:24:40 -0600 + -- Chad Smith Wed, 18 Apr 2018 15:25:53 -0600 cloud-init (18.2-9-g49b562c9-0ubuntu1) bionic; urgency=medium From 85ff391b29ec8ea2168371498ffe083c51258ef3 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 24 Apr 2018 15:22:37 -0600 Subject: [PATCH 0255/1174] debian/control: add missing dependency on isc-dhcp-client. Replace Build-Depends with Depends. The Build-Depends was incorrectly added under bug 1759307. LP: #1766714 --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 2eb0eaadcca..fd91bd6da47 100644 --- a/debian/control +++ b/debian/control @@ -6,7 +6,6 @@ Build-Depends: debhelper (>= 9), dh-python, dh-systemd, iproute2, - isc-dhcp-client, pep8, po-debconf, pyflakes, @@ -35,6 +34,7 @@ Standards-Version: 3.9.8 Package: cloud-init Architecture: all Depends: cloud-guest-utils | cloud-utils, + isc-dhcp-client, nplan | ifupdown, procps, python3, From b12e781a8f982170d99b42e8f7399464609ceafa Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 24 Apr 2018 19:29:39 -0600 Subject: [PATCH 0256/1174] debian/control: add missing dependency on iproute2. Ubuntu minimal images do not have iproute2, so correctly identify our dependency on it. LP: #1766711 --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index fd91bd6da47..282304a9829 100644 --- a/debian/control +++ b/debian/control @@ -35,6 +35,7 @@ Package: cloud-init Architecture: all Depends: cloud-guest-utils | cloud-utils, isc-dhcp-client, + iproute2, nplan | ifupdown, procps, python3, From 03bbb6fd8d80e3268d1b9b040a82a554637c78e5 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 27 Apr 2018 11:59:46 -0400 Subject: [PATCH 0257/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 45016a5e084..43de0b8a543 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (18.2-14-g6d48d265-0ubuntu2~18.04.1) UNRELEASED; urgency=medium + + * debian/control: add missing dependency on iproute2. (LP: #1766711) + * debian/control: add missing dependency on isc-dhcp-client. (LP: #1766714) + + -- Scott Moser Fri, 27 Apr 2018 11:56:54 -0400 + cloud-init (18.2-14-g6d48d265-0ubuntu1) bionic; urgency=medium * New upstream snapshot. From a70eb9b12d0ca94052494862d76ac958646e5e5c Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 27 Apr 2018 12:29:33 -0400 Subject: [PATCH 0258/1174] update changelog (New upstream snapshot 18.2-27-g6ef92c98). --- debian/changelog | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 43de0b8a543..b18ef60cf19 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,24 @@ -cloud-init (18.2-14-g6d48d265-0ubuntu2~18.04.1) UNRELEASED; urgency=medium +cloud-init (18.2-27-g6ef92c98-0ubuntu1~18.04.1) UNRELEASED; urgency=medium * debian/control: add missing dependency on iproute2. (LP: #1766711) * debian/control: add missing dependency on isc-dhcp-client. (LP: #1766714) - - -- Scott Moser Fri, 27 Apr 2018 11:56:54 -0400 + * New upstream snapshot. (LP: #1767412) + - IBMCloud: recognize provisioning environment during debug boots. + - net: detect unstable network names and trigger a settle if needed + - IBMCloud: improve documentation in datasource. + - sysconfig: dhcp6 subnet type should not imply dhcpv4 [Vitaly Kuznetsov] + - packages/debian/control.in: add missing dependency on iproute2. + - DataSourceSmartOS: add locking of serial device. [Mike Gerdts] + - DataSourceSmartOS: sdc:hostname is ignored [Mike Gerdts] + - DataSourceSmartOS: list() should always return a list [Mike Gerdts] + - schema: in validation, raise ImportError if strict but no jsonschema. + - set_passwords: Add newline to end of sshd config, only restart if + updated. + - pylint: pay attention to unused variable warnings. + - doc: Add documentation for AliYun datasource. [Junjie Wang] + - Schema: do not warn on duplicate items in commands. + + -- Scott Moser Fri, 27 Apr 2018 12:29:24 -0400 cloud-init (18.2-14-g6d48d265-0ubuntu1) bionic; urgency=medium From c1927537b1a41f04c0134d738386f646628b9cae Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 27 Apr 2018 12:30:38 -0400 Subject: [PATCH 0259/1174] releasing cloud-init version 18.2-27-g6ef92c98-0ubuntu1~18.04.1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index b18ef60cf19..0989d738be0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.2-27-g6ef92c98-0ubuntu1~18.04.1) UNRELEASED; urgency=medium +cloud-init (18.2-27-g6ef92c98-0ubuntu1~18.04.1) bionic; urgency=medium * debian/control: add missing dependency on iproute2. (LP: #1766711) * debian/control: add missing dependency on isc-dhcp-client. (LP: #1766714) @@ -18,7 +18,7 @@ cloud-init (18.2-27-g6ef92c98-0ubuntu1~18.04.1) UNRELEASED; urgency=medium - doc: Add documentation for AliYun datasource. [Junjie Wang] - Schema: do not warn on duplicate items in commands. - -- Scott Moser Fri, 27 Apr 2018 12:29:24 -0400 + -- Scott Moser Fri, 27 Apr 2018 12:30:21 -0400 cloud-init (18.2-14-g6d48d265-0ubuntu1) bionic; urgency=medium From dfb744ec12bf255cfe226de0480d8264503fa34d Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Wed, 28 Mar 2018 16:05:45 -0400 Subject: [PATCH 0260/1174] debian/new-upstream-snapshot: remove from package. This is no longer managed in the packaging branches. --- debian/README.source | 7 +- debian/new-upstream-snapshot | 170 ----------------------------------- 2 files changed, 4 insertions(+), 173 deletions(-) delete mode 100755 debian/new-upstream-snapshot diff --git a/debian/README.source b/debian/README.source index df79a3ebbd0..3db12bd8e42 100644 --- a/debian/README.source +++ b/debian/README.source @@ -18,9 +18,10 @@ Stable release branches are also available in ubuntu/ Patches in debian/patches are stored un-applied. == New snapshot == -To pull a new upstream snapshot: - - ./debian/new-upstream-snapshot ../trunk +Upstream maintains a script to handle new upstream snapshots at: + https://github.com/cloud-init/qa-scripts/ +Its usage is like: + new-upstream-snapshot master == Cherry Pick == To cherry pick an upstream commit: diff --git a/debian/new-upstream-snapshot b/debian/new-upstream-snapshot deleted file mode 100755 index 6ad8af61e30..00000000000 --- a/debian/new-upstream-snapshot +++ /dev/null @@ -1,170 +0,0 @@ -#!/bin/sh - -TEMP_D="" -CR=' -' -error() { echo "$@" 1>&2; } -fail() { [ $# -eq 0 ] || error "$@"; exit 1; } -Usage() { -cat <&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" <> "$clog" || - fail "failed git_log_to_dch" -cat >> "$clog" < $(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'" From 64e41ba143a75beb318b58d4deb9168620c7af93 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 30 Apr 2018 15:50:09 -0400 Subject: [PATCH 0261/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 0989d738be0..bb2e3fa68c9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (18.2-27-g6ef92c98-0ubuntu2) UNRELEASED; urgency=medium + + * debian/new-upstream-snapshot: Remove script, now maintained elsewhere. + + -- Scott Moser Mon, 30 Apr 2018 15:49:20 -0400 + cloud-init (18.2-27-g6ef92c98-0ubuntu1~18.04.1) bionic; urgency=medium * debian/control: add missing dependency on iproute2. (LP: #1766711) From 183fd2d2a08d1d8b32362a364e29e3fe904f2218 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 11 May 2018 16:37:20 -0400 Subject: [PATCH 0262/1174] update changelog (New upstream snapshot 18.2-41-g3b712fce). --- debian/changelog | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index bb2e3fa68c9..4e6e96d52cc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,28 @@ -cloud-init (18.2-27-g6ef92c98-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (18.2-41-g3b712fce-0ubuntu1) UNRELEASED; urgency=medium * debian/new-upstream-snapshot: Remove script, now maintained elsewhere. - - -- Scott Moser Mon, 30 Apr 2018 15:49:20 -0400 + * New upstream snapshot. + - tests: do not rely on host /proc/cmdline in test_net.py + [Lars Kellogg-Stedman] (LP: #1769952) + - ds-identify: Remove dupe call to is_ds_enabled, improve debug message. + - SmartOS: fix get_interfaces for nics that do not have addr_assign_type. + - tests: fix package and ca_cert cloud_tests on bionic (LP: #1769985) + - ds-identify: make shellcheck 0.4.6 happy with ds-identify. + - pycodestyle: Fix deprecated string literals, move away from flake8. + - azure: Add reported ready marker file. [Joshua Chan] (LP: #1765214) + - tools: Support adding a release suffix through packages/bddeb. + - FreeBSD: Invoke growfs on ufs filesystems such that it does not prompt. + [Harm Weites] (LP: #1404745) + - tools: Re-use the orig tarball in packages/bddeb if it is around. + - netinfo: fix netdev_pformat when a nic does not have an address + assigned. (LP: #1766302) + - collect-logs: add -v flag, write to stderr, limit journal to single + boot. (LP: #1766335) + - IBMCloud: Disable config-drive and nocloud only if IBMCloud is enabled. + (LP: #1766401) + - Add reporting events and log_time around early source of blocking time + + -- Scott Moser Fri, 11 May 2018 16:37:02 -0400 cloud-init (18.2-27-g6ef92c98-0ubuntu1~18.04.1) bionic; urgency=medium From 7335b7d8965934d3e783d6bfe42c6159c544d661 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 11 May 2018 16:37:48 -0400 Subject: [PATCH 0263/1174] releasing cloud-init version 18.2-41-g3b712fce-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4e6e96d52cc..1d203e74c84 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.2-41-g3b712fce-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.2-41-g3b712fce-0ubuntu1) cosmic; urgency=medium * debian/new-upstream-snapshot: Remove script, now maintained elsewhere. * New upstream snapshot. From df3d5b1311520c14479a2daaf93c98fe655639fd Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 23 May 2018 16:17:23 -0600 Subject: [PATCH 0264/1174] update changelog (New upstream snapshot 18.2-59-gcd1de5f4). --- debian/changelog | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1d203e74c84..c6d6e25aedb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,31 @@ +cloud-init (18.2-59-gcd1de5f4-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - openstack: Allow discovery in init-local using dhclient in a sandbox. + (LP: #1749717) + - tests: Avoid using https in httpretty, improve HttPretty test case. + (LP: #1771659) + - yaml_load/schema: Add invalid line and column nums to error message + - Azure: Ignore NTFS mount errors when checking ephemeral drive + [Paul Meyer] + - packages/brpm: Get proper dependencies for cmdline distro. + - packages: Make rpm spec files patch in package version like in debs. + - tools/run-container: replace tools/run-centos with more generic. + - Update version.version_string to contain packaged version. (LP: #1770712) + - cc_mounts: Do not add devices to fstab that are already present. + [Lars Kellogg-Stedman] + - ds-identify: ensure that we have certain tokens in PATH. (LP: #1771382) + - tests: enable Ubuntu Cosmic in integration tests [Joshua Powers] + - read_file_or_url: move to url_helper, fix bug in its FileResponse. + - cloud_tests: help pylint + - flake8: fix flake8 errors in previous commit. + - typos: Fix spelling mistakes in cc_mounts.py log messages [Stephen Ford] + - tests: restructure SSH and initial connections [Joshua Powers] + - ds-identify: recognize container-other as a container, test SmartOS. + - cloud-config.service: run After snap.seeded.service. (LP: #1767131) + + + -- Chad Smith Wed, 23 May 2018 16:16:53 -0600 cloud-init (18.2-41-g3b712fce-0ubuntu1) cosmic; urgency=medium * debian/new-upstream-snapshot: Remove script, now maintained elsewhere. From af157b0381406efbd389ea952952e92358638797 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 23 May 2018 16:17:45 -0600 Subject: [PATCH 0265/1174] releasing cloud-init version 18.2-59-gcd1de5f4-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index c6d6e25aedb..b9cadefc77f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.2-59-gcd1de5f4-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.2-59-gcd1de5f4-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - openstack: Allow discovery in init-local using dhclient in a sandbox. From 672326d48d759f9477f5cbb9d8088ceeac96aa23 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 4 Jun 2018 09:56:59 -0400 Subject: [PATCH 0266/1174] debian/rules: update version.version_string to contain packaged version. This is the debian packaging portion of upstream commit 5446c7881604. The end result is that we will see the debian package and full upstream version wherever cloud-init reports its version. LP: #1770712 --- debian/rules | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/rules b/debian/rules index 3e03fed0f60..c5c873d2fe1 100755 --- a/debian/rules +++ b/debian/rules @@ -1,6 +1,7 @@ #!/usr/bin/make -f INIT_SYSTEM ?= systemd export PYBUILD_INSTALL_ARGS=--init-system=$(INIT_SYSTEM) +DEB_VERSION := $(shell dpkg-parsechangelog --show-field=Version) %: dh $@ --with python3,systemd --buildsystem pybuild @@ -21,3 +22,4 @@ override_dh_auto_install: install -D ./tools/Z99-cloud-locale-test.sh debian/cloud-init/etc/profile.d/Z99-cloud-locale-test.sh install -D ./tools/Z99-cloudinit-warnings.sh debian/cloud-init/etc/profile.d/Z99-cloudinit-warnings.sh install -m 0644 -D debian/apport-launcher.py debian/cloud-init/usr/share/apport/package-hooks/cloud-init.py + flist=$$(find $(CURDIR)/debian/ -type f -name version.py) && sed -i 's,@@PACKAGED_VERSION@@,$(DEB_VERSION),' $${flist:-did-not-find-version-py-for-replacement} From 28758016509e8c140fd96d63c2a7a396b20fcdbf Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 4 Jun 2018 10:01:48 -0400 Subject: [PATCH 0267/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index b9cadefc77f..a78aae35e7a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (18.2-59-gcd1de5f4-0ubuntu2) UNRELEASED; urgency=medium + + * debian/rules: update version.version_string to contain packaged version. + (LP: #1770712) + + -- Scott Moser Mon, 04 Jun 2018 10:00:57 -0400 + cloud-init (18.2-59-gcd1de5f4-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From b485af7391776919cd048327a644d7090ca1f0a0 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 4 Jun 2018 12:18:42 -0600 Subject: [PATCH 0268/1174] update changelog (New upstream snapshot 18.2-64-gbbcc5e82). --- debian/changelog | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index a78aae35e7a..cf960cd37c4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,18 @@ -cloud-init (18.2-59-gcd1de5f4-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (18.2-64-gbbcc5e82-0ubuntu1) UNRELEASED; urgency=medium * debian/rules: update version.version_string to contain packaged version. (LP: #1770712) + * New upstream snapshot. + - util: add get_linux_distro function to replace platform.dist + [Robert Schweikert] (LP: #1745235) + - pyflakes: fix unused variable references identified by pyflakes 2.0.0. + - - Do not use the systemd_prefix macro, not available in this environment + [Robert Schweikert] + - doc: Add config info to ec2, openstack and cloudstack datasource docs + - Enable SmartOS network metadata to work with netplan via per-subnet + routes [Dan McDonald] (LP: #1763512) - -- Scott Moser Mon, 04 Jun 2018 10:00:57 -0400 + -- Chad Smith Mon, 04 Jun 2018 12:18:16 -0600 cloud-init (18.2-59-gcd1de5f4-0ubuntu1) cosmic; urgency=medium From 6838d91891b31b79f06ada7253cce675d56983dc Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 4 Jun 2018 12:19:10 -0600 Subject: [PATCH 0269/1174] releasing cloud-init version 18.2-64-gbbcc5e82-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index cf960cd37c4..b529b78ffab 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.2-64-gbbcc5e82-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.2-64-gbbcc5e82-0ubuntu1) cosmic; urgency=medium * debian/rules: update version.version_string to contain packaged version. (LP: #1770712) From e8449e044e137ab101567063a0fde728adfde307 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 15 Jun 2018 20:05:27 -0600 Subject: [PATCH 0270/1174] update changelog (New upstream snapshot 18.2-77-g4ce67201). --- debian/changelog | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/debian/changelog b/debian/changelog index b529b78ffab..51e1dda553b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,28 @@ +cloud-init (18.2-77-g4ce67201-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - lxd: Delete default network and detach device if lxd-init created them. + (LP: #1776958) + - openstack: avoid unneeded metadata probe on non-openstack platforms + (LP: #1776701) + - stages: fix tracebacks if a module stage is undefined or empty + [Robert Schweikert] (LP: #1770462) + - Be more safe on string/bytes when writing multipart user-data to disk. + (LP: #1768600) + - Fix get_proc_env for pids that have non-utf8 content in environment. + (LP: #1775371) + - tests: fix salt_minion integration test on bionic and later + - tests: provide human-readable integration test summary when --verbose + - tests: skip chrony integration tests on lxd running artful or older + - test: add optional --preserve-instance arg to integraiton tests + - netplan: fix mtu if provided by network config for all rendered types + (LP: #1774666) + - tests: remove pip install workarounds for pylxd, take upstream fix. + - subp: support combine_capture argument. + - tests: ordered tox dependencies for pylxd install + + -- Chad Smith Fri, 15 Jun 2018 20:05:07 -0600 + cloud-init (18.2-64-gbbcc5e82-0ubuntu1) cosmic; urgency=medium * debian/rules: update version.version_string to contain packaged version. From e0b108e961515e19f720b77b15b56daa63150f1a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 15 Jun 2018 20:05:41 -0600 Subject: [PATCH 0271/1174] releasing cloud-init version 18.2-77-g4ce67201-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 51e1dda553b..e419f47d2f3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.2-77-g4ce67201-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.2-77-g4ce67201-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - lxd: Delete default network and detach device if lxd-init created them. From 8178da12a7f0c55dc0d53740c2c3d782982cdeea Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 20 Jun 2018 11:34:05 -0600 Subject: [PATCH 0272/1174] update changelog (New upstream release 18.3). --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index e419f47d2f3..bd37660a9f8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (18.3-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream release. + - release 18.3 (LP: #1777743) + - docs: represent sudo:false in docs for user_groups config module + - Explicitly prevent `sudo` access for user module + [Jacob Bednarz] (LP: #1771468) + + -- Chad Smith Wed, 20 Jun 2018 11:33:36 -0600 + cloud-init (18.2-77-g4ce67201-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From b901d2b09f8e93c84c6ecd66b716a43364de24bf Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 20 Jun 2018 11:34:12 -0600 Subject: [PATCH 0273/1174] releasing cloud-init version 18.3-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index bd37660a9f8..4817495bea7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.3-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.3-0ubuntu1) cosmic; urgency=medium * New upstream release. - release 18.3 (LP: #1777743) From 08c6be403bd66adba7cb708fae500968b51d6fda Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 9 Jul 2018 14:16:19 -0600 Subject: [PATCH 0274/1174] update changelog (New upstream snapshot 18.3-9-g2e62cb8a). --- debian/changelog | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/debian/changelog b/debian/changelog index 4817495bea7..d38ce00a398 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +cloud-init (18.3-9-g2e62cb8a-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - docs: note in rtd about avoiding /tmp when writing files + - ubuntu,centos,debian: get_linux_distro to align with platform.dist + - Fix boothook docs on environment variable name (INSTANCE_I -> + INSTANCE_ID) [Marc Tamsky] + - update_metadata: a datasource can support network re-config every boot + - tests: drop salt-minion integration test + - Retry on failed import of gpg receive keys. + - tools: Fix run-container when neither source or binary package requested. + - docs: Fix a small spelling error. [Oz N Tiram] + - tox: use simplestreams from git repository rather than bzr. + + -- Chad Smith Mon, 09 Jul 2018 14:16:03 -0600 + cloud-init (18.3-0ubuntu1) cosmic; urgency=medium * New upstream release. From 00788259dcd75df126bccfe5e86012344d50f762 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 9 Jul 2018 14:16:40 -0600 Subject: [PATCH 0275/1174] releasing cloud-init version 18.3-9-g2e62cb8a-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d38ce00a398..d6a89e42d61 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.3-9-g2e62cb8a-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.3-9-g2e62cb8a-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - docs: note in rtd about avoiding /tmp when writing files From 51a13a658085629d1b47a672ab8665b0ea0dfdf1 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 31 Jul 2018 12:50:56 -0600 Subject: [PATCH 0276/1174] update changelog (New upstream snapshot 18.3-18-g3cee0bf8). --- debian/changelog | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/debian/changelog b/debian/changelog index d6a89e42d61..aef5824cecc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +cloud-init (18.3-18-g3cee0bf8-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - oracle: fix detect_openstack to report True on OracleCloud.com DMI data + - tests: improve LXDInstance trying to workaround or catch bug. + - update_metadata re-config on every boot comments and tests not quite + right [Mike Gerdts] + - tests: Collect build_info from system if available. + - pylint: Fix pylint warnings reported in pylint 2.0.0. + - get_linux_distro: add support for rhel via redhat-release. + - get_linux_distro: add support for centos6 and rawhide flavors of redhat + - tools: add '--debug' to tools/net-convert.py + - tests: bump the version of paramiko to 2.4.1. + + -- Chad Smith Tue, 31 Jul 2018 12:50:28 -0600 + cloud-init (18.3-9-g2e62cb8a-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From c4c6301f2e5f6fe9960ceb7f670224f87b27e091 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 31 Jul 2018 12:51:02 -0600 Subject: [PATCH 0277/1174] releasing cloud-init version 18.3-18-g3cee0bf8-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index aef5824cecc..05932be30ee 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.3-18-g3cee0bf8-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.3-18-g3cee0bf8-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - oracle: fix detect_openstack to report True on OracleCloud.com DMI data From ff0a1c7cdb89c5815428fcee5a0f54fca6367925 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 9 Aug 2018 10:27:55 -0600 Subject: [PATCH 0278/1174] update changelog (New upstream snapshot 18.3-24-gf6249277). --- debian/changelog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index 05932be30ee..7620ce921ee 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +cloud-init (18.3-24-gf6249277-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - docs: Fix example cloud-init analyze command to match output. + [Wesley Gao] + - netplan: Correctly render macaddress on a bonds and bridges when + provided. + - tools: Add 'net-convert' subcommand command to 'cloud-init devel'. + - redhat: remove ssh keys on new instance. + - Use typeset or local in profile.d scripts. + - OpenNebula: Fix null gateway6 [Akihiko Ota] + + -- Chad Smith Thu, 09 Aug 2018 10:27:29 -0600 + cloud-init (18.3-18-g3cee0bf8-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From 271ecd5169f0f89944b1c2faaf88c931d90681f1 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 17 Aug 2018 22:17:50 -0600 Subject: [PATCH 0279/1174] Add oracle datasource to debian/cloud-init.templates --- debian/cloud-init.templates | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index ef3c3a795b8..ece53a049ac 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., None: Failsafe datasource +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, 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. From 8069367cd100149f9086c6521a683f19c313db23 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 17 Aug 2018 22:17:28 -0600 Subject: [PATCH 0280/1174] update changelog --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 7620ce921ee..4eb3cb29147 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,7 @@ cloud-init (18.3-24-gf6249277-0ubuntu1) UNRELEASED; urgency=medium + * debian/cloud-init.templates: enable Oracle Compute Infrastructure by + default * New upstream snapshot. - docs: Fix example cloud-init analyze command to match output. [Wesley Gao] From 5ffb1cd9bd30f669a136f26c031cafe7d6a67836 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 9 Aug 2018 10:28:04 -0600 Subject: [PATCH 0281/1174] releasing cloud-init version 18.3-24-gf6249277-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4eb3cb29147..ea3832f2676 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.3-24-gf6249277-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.3-24-gf6249277-0ubuntu1) cosmic; urgency=medium * debian/cloud-init.templates: enable Oracle Compute Infrastructure by default From 95e232f37b8d2b2a2b88f42c1fc3a8cda61ce151 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 24 Aug 2018 16:13:31 -0400 Subject: [PATCH 0282/1174] update changelog (New upstream snapshot 18.3-29-gdab59087). --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index ea3832f2676..2c41424922c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +cloud-init (18.3-29-gdab59087-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - tests: disable other snap test as well [Joshua Powers] + - tests: disable snap, fix write_files binary [Joshua Powers] + - Add datasource Oracle Compute Infrastructure (OCI). + - azure: allow azure to generate network configuration from IMDS per boot. + - Scaleway: Add network configuration to the DataSource [Louis Bouchard] + + -- Scott Moser Fri, 24 Aug 2018 16:13:28 -0400 + cloud-init (18.3-24-gf6249277-0ubuntu1) cosmic; urgency=medium * debian/cloud-init.templates: enable Oracle Compute Infrastructure by From b02fe525de2a25a1849641c0860f6df8693fca8f Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Fri, 24 Aug 2018 16:13:45 -0400 Subject: [PATCH 0283/1174] releasing package cloud-init version 18.3-29-gdab59087-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2c41424922c..ea38c3b8079 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.3-29-gdab59087-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.3-29-gdab59087-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - tests: disable other snap test as well [Joshua Powers] @@ -7,7 +7,7 @@ cloud-init (18.3-29-gdab59087-0ubuntu1) UNRELEASED; urgency=medium - azure: allow azure to generate network configuration from IMDS per boot. - Scaleway: Add network configuration to the DataSource [Louis Bouchard] - -- Scott Moser Fri, 24 Aug 2018 16:13:28 -0400 + -- Scott Moser Fri, 24 Aug 2018 16:13:36 -0400 cloud-init (18.3-24-gf6249277-0ubuntu1) cosmic; urgency=medium From b1fae7314d507f3d11aa1a5c36ccb1f47a24ce31 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Sat, 1 Sep 2018 12:08:58 -0600 Subject: [PATCH 0284/1174] update changelog (New upstream snapshot 18.3-35-g3f6d0972). --- debian/changelog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index ea38c3b8079..e4109fbadff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +cloud-init (18.3-35-g3f6d0972-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Add unit tests for config/cc_ssh.py [Francis Ginther] + - Fix the built-in cloudinit/tests/helpers:skipIf + - read-version: enhance error message [Joshua Powers] + - hyperv_reporting_handler: simplify threaded publisher + - VMWare: Fix a network config bug in vm with static IPv4 and no gateway. + [Pengpeng Sun] + - logging: Add logging config type hyperv for reporting via Azure KVP + [Andy Liu] + + -- Chad Smith Sat, 01 Sep 2018 12:08:52 -0600 + cloud-init (18.3-29-gdab59087-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From 1c047bd2a9661be9a82e072723f15560eebcafdd Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Sat, 1 Sep 2018 12:09:03 -0600 Subject: [PATCH 0285/1174] releasing cloud-init version 18.3-35-g3f6d0972-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index e4109fbadff..f303d709ddc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.3-35-g3f6d0972-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.3-35-g3f6d0972-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - Add unit tests for config/cc_ssh.py [Francis Ginther] From 85408164411de5422db63a055793e61727441e8c Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Wed, 5 Sep 2018 16:04:30 -0500 Subject: [PATCH 0286/1174] update changelog (New upstream snapshot 18.3-38-gd47d404e). --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index f303d709ddc..6fc2c85a362 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (18.3-38-gd47d404e-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - tests: print failed testname instead of docstring upon failure + - tests: Disallow use of util.subp except for where needed. + - sysconfig: refactor sysconfig to accept distro specific templates paths + + -- Ryan Harper Wed, 05 Sep 2018 16:03:46 -0500 + cloud-init (18.3-35-g3f6d0972-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From c8fc29a269402fb9b0feaa87f93185f7d47a47fd Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Wed, 5 Sep 2018 16:04:55 -0500 Subject: [PATCH 0287/1174] releasing cloud-init version 18.3-38-gd47d404e-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6fc2c85a362..5f738e9ef1f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.3-38-gd47d404e-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.3-38-gd47d404e-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - tests: print failed testname instead of docstring upon failure From 344f69a2a55102fd8612edfe13804c4641da312a Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Mon, 10 Sep 2018 17:12:10 -0500 Subject: [PATCH 0288/1174] update changelog (New upstream snapshot 18.3-39-g757247f9). --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5f738e9ef1f..abcd0b2a274 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (18.3-39-g757247f9-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - config: disable ssh access to a configured user account + + -- Ryan Harper Mon, 10 Sep 2018 17:11:51 -0500 + cloud-init (18.3-38-gd47d404e-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From 0e8a1bc3cf31b78c492dffe4d47eca63ec3f6c49 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Mon, 10 Sep 2018 17:12:30 -0500 Subject: [PATCH 0289/1174] releasing cloud-init version 18.3-39-g757247f9-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index abcd0b2a274..6b1a35f42b8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.3-39-g757247f9-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.3-39-g757247f9-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - config: disable ssh access to a configured user account From be7f59ad5aaf62b27e9dc23370e3487a331cc586 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Fri, 14 Sep 2018 14:06:35 -0500 Subject: [PATCH 0290/1174] update changelog (New upstream snapshot 18.3-44-g84bf2482). --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index 6b1a35f42b8..7673b2ec26d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +cloud-init (18.3-44-g84bf2482-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - bash_completion/cloud-init: fix shell syntax error. + - EphemeralIPv4Network: Be more explicit when adding default route. + - OpenStack: support reading of newer versions of metdata. + - OpenStack: fix bug causing 'latest' version to be used from network. + - user-data: jinja template to render instance-data.json in cloud-config + + -- Ryan Harper Fri, 14 Sep 2018 14:06:29 -0500 + cloud-init (18.3-39-g757247f9-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From d418088c4cb2176ee4e1e73e3a3aa7f91e8436e1 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Fri, 14 Sep 2018 14:06:50 -0500 Subject: [PATCH 0291/1174] releasing cloud-init version 18.3-44-g84bf2482-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 7673b2ec26d..4ad887764b4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.3-44-g84bf2482-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.3-44-g84bf2482-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - bash_completion/cloud-init: fix shell syntax error. From 1a1459fcd0fb75de3b191699d2952c944fa639e2 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Fri, 14 Sep 2018 16:13:27 -0500 Subject: [PATCH 0292/1174] update changelog (New upstream snapshot 18.3-46-gbb60f61b). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 4ad887764b4..4a76c2ed791 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (18.3-46-gbb60f61b-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - ds-identify: doc string cleanup. + - OpenStack: Support setting mac address on bond. [Fabian Wiesel] + + -- Ryan Harper Fri, 14 Sep 2018 16:13:19 -0500 + cloud-init (18.3-44-g84bf2482-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From 39c02e79b33202846aca3af7b1a4549a627f4576 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Fri, 14 Sep 2018 16:13:39 -0500 Subject: [PATCH 0293/1174] releasing cloud-init version 18.3-46-gbb60f61b-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4a76c2ed791..86f8a53fc84 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.3-46-gbb60f61b-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.3-46-gbb60f61b-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - ds-identify: doc string cleanup. From d48477250f4ff9477d91c19cf332f260492e05be Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 2 Oct 2018 19:55:33 -0600 Subject: [PATCH 0294/1174] update changelog (New upstream release 18.4). --- debian/changelog | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/debian/changelog b/debian/changelog index 86f8a53fc84..1eaa5a508b5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,27 @@ +cloud-init (18.4-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream release. + - release 18.4 + - tests: allow skipping an entire cloud_test without running. + - tests: disable lxd tests on cosmic + - cii-tests: use unittest2.SkipTest in ntp_chrony due to new deps + - lxd: adjust to snap installed lxd. + - docs: surface experimental doc in instance-data.json + - tests: fix ec2 integration tests. process meta_data instead of meta-data + - Add support for Infiniband network interfaces (IPoIB). [Mark Goddard] + - cli: add cloud-init query subcommand to query instance metadata + - tools/tox-venv: update for new features. + - pylint: ignore warning assignment-from-no-return for _write_network + - stages: Fix bug causing datasource to have incorrect sys_cfg. + - Remove dead-code _write_network distro implementations. + - net_util: ensure static configs have netmask in translate_network result + [Thomas Berger] + - Fall back to root:root on syslog permissions if other options fail. + [Robert Schweikert] + - tests: Add mock for util.get_hostname. [Robert Schweikert] + + -- Chad Smith Tue, 02 Oct 2018 19:55:23 -0600 + cloud-init (18.3-46-gbb60f61b-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From 33bea3b56b9bbc1e7a191309190336f7167b11e3 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 2 Oct 2018 19:55:38 -0600 Subject: [PATCH 0295/1174] releasing cloud-init version 18.4-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 1eaa5a508b5..8dd1c4e2698 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.4-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.4-0ubuntu1) cosmic; urgency=medium * New upstream release. - release 18.4 From 1c9ce318aad0cdcd3734e510e96e4cc3c1c611b1 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 9 Oct 2018 16:56:39 -0600 Subject: [PATCH 0296/1174] update changelog (New upstream snapshot 18.4-5-g6ee8a2c5). --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index 8dd1c4e2698..d8decd3118f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +cloud-init (18.4-5-g6ee8a2c5-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - tools: Add cloud-id command line utility + - instance-data: Add standard keys platform and subplatform. Refactor ec2. + - net: ignore nics that have "zero" mac address. (LP: #1796917) + - tests: fix apt_configure_primary to be more flexible + - Ubuntu: update sources.list to comment out deb-src entries. (LP: #74747) + + -- Chad Smith Tue, 09 Oct 2018 16:56:35 -0600 + cloud-init (18.4-0ubuntu1) cosmic; urgency=medium * New upstream release. From f70a09ff2acd4da1c40e23dcadbd686cf83d2fce Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 9 Oct 2018 16:56:45 -0600 Subject: [PATCH 0297/1174] releasing cloud-init version 18.4-5-g6ee8a2c5-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d8decd3118f..1ebc3c4488c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.4-5-g6ee8a2c5-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.4-5-g6ee8a2c5-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - tools: Add cloud-id command line utility From 6a502da76baed9b2592033c5a95df6b108224e6a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 11 Oct 2018 09:24:51 -0600 Subject: [PATCH 0298/1174] update changelog (New upstream snapshot 18.4-7-g4652b196). --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1ebc3c4488c..a90dfa61f82 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (18.4-7-g4652b196-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - tests: meta_data key changed to meta-data in ec2 instance-data.json + (LP: #1797231) + - tests: fix kvm integration test to assert flexible config-disk path + (LP: #1797199) + + -- Chad Smith Thu, 11 Oct 2018 09:24:46 -0600 + cloud-init (18.4-5-g6ee8a2c5-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From 52aff7cfd5fa7df62d25e5ad853b112c49c1f600 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 11 Oct 2018 09:24:54 -0600 Subject: [PATCH 0299/1174] releasing cloud-init version 18.4-7-g4652b196-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index a90dfa61f82..117fd16d7ba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.4-7-g4652b196-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.4-7-g4652b196-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. - tests: meta_data key changed to meta-data in ec2 instance-data.json From efa51f1a35bb0999ba9d44076ce2fc8671ea5776 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 12 Nov 2018 20:33:30 -0700 Subject: [PATCH 0300/1174] update changelog (New upstream snapshot 18.4-22-g6062595b). --- debian/changelog | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/debian/changelog b/debian/changelog index 117fd16d7ba..064ed8c8a3a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,31 @@ +cloud-init (18.4-22-g6062595b-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - azure: retry imds polling on requests.Timeout (LP: LP:1800223) + - azure: Accept variation in error msg from mount for ntfs volumes + [Jason Zions] (LP: #1799338) + - azure: fix regression introduced when persisting ephemeral dhcp lease + [Aswin Rajamannar] + - azure: add udev rules to create cloud-init Gen2 disk name symlinks + (LP: #1797480) + - tests: ec2 mock missing httpretty user-data and instance-identity routes + - azure: remove /etc/netplan/90-hotplug-azure.yaml when net from IMDS + - azure: report ready to fabric after reprovision and reduce logging + [Aswin Rajamannar] (LP: #1799594) + - query: better error when missing read permission on instance-data + - instance-data: fallback to instance-data.json if sensitive is absent. + (LP: #1798189) + - docs: remove colon from network v1 config example. [Tomer Cohen] + - Add cloud-id binary to packages for SUSE [Jason Zions] + - systemd: On SUSE ensure cloud-init.service runs before wicked + [Robert Schweikert] (LP: #1799709) + - update detection of openSUSE variants [Robert Schweikert] + - azure: Add apply_network_config option to disable network from IMDS + (LP: #1798424) + - Correct spelling in an error message (udevadm). [Katie McLaughlin] + + -- Chad Smith Mon, 12 Nov 2018 20:33:12 -0700 + cloud-init (18.4-7-g4652b196-0ubuntu1) cosmic; urgency=medium * New upstream snapshot. From 5e4916bdc4f7be6bcbf5650e93ea8835cc495b95 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 12 Nov 2018 20:33:44 -0700 Subject: [PATCH 0301/1174] releasing cloud-init version 18.4-22-g6062595b-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 064ed8c8a3a..a85c8cc3a56 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,7 @@ -cloud-init (18.4-22-g6062595b-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.4-22-g6062595b-0ubuntu1) disco; urgency=medium * New upstream snapshot. - - azure: retry imds polling on requests.Timeout (LP: LP:1800223) + - azure: retry imds polling on requests.Timeout (LP: #1800223) - azure: Accept variation in error msg from mount for ntfs volumes [Jason Zions] (LP: #1799338) - azure: fix regression introduced when persisting ephemeral dhcp lease From e6cbdae3acaf39f5c442eabb14b849e947d3b573 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 15 Nov 2018 16:11:39 -0700 Subject: [PATCH 0302/1174] update changelog (New upstream snapshot 18.4-24-g8f812a15). --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index a85c8cc3a56..3b6575e2cc1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (18.4-24-g8f812a15-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - azure: _poll_imds only retry on 404. Fail on Timeout (LP: #1803598) + - resizefs: Prefix discovered devpath with '/dev/' when path does not + exist [Igor Galić] + + -- Chad Smith Thu, 15 Nov 2018 16:11:20 -0700 + cloud-init (18.4-22-g6062595b-0ubuntu1) disco; urgency=medium * New upstream snapshot. From 51bc1f6a58d13fee344d2f52e16dcec38368f3be Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 15 Nov 2018 16:11:47 -0700 Subject: [PATCH 0303/1174] releasing cloud-init version 18.4-24-g8f812a15-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 3b6575e2cc1..f93ba9c3ea9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.4-24-g8f812a15-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.4-24-g8f812a15-0ubuntu1) disco; urgency=medium * New upstream snapshot. - azure: _poll_imds only retry on 404. Fail on Timeout (LP: #1803598) From f06878bd040205c992b2411c0d8d837cdb75a7d2 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 29 Nov 2018 16:25:55 -0700 Subject: [PATCH 0304/1174] update changelog (New upstream snapshot 18.4-31-gbf791715). --- debian/changelog | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/debian/changelog b/debian/changelog index f93ba9c3ea9..ff07596dfd8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,20 @@ +cloud-init (18.4-31-gbf791715-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - azure: detect vnet migration via netlink media change event + [Tamilmani Manoharan] + - Azure: fix copy/paste error in error handling when reading azure ovf. + [Adam DePue] + - tests: fix incorrect order of mocks in test_handle_zfs_root. + - doc: Change dns_nameserver property to dns_nameservers. [Tomer Cohen] + - OVF: identify label iso9660 filesystems with label 'OVF ENV'. + - logs: collect-logs ignore instance-data-sensitive.json on non-root user + (LP: #1805201) + - net: Ephemeral*Network: add connectivity check via URL + [Igor Galić] + + -- Chad Smith Thu, 29 Nov 2018 16:23:24 -0700 + cloud-init (18.4-24-g8f812a15-0ubuntu1) disco; urgency=medium * New upstream snapshot. From bc8f41c9c80b47b60f94b0f9b2cdae8b54a2563e Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 29 Nov 2018 16:26:04 -0700 Subject: [PATCH 0305/1174] releasing cloud-init version 18.4-31-gbf791715-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index ff07596dfd8..283bcd834a8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.4-31-gbf791715-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.4-31-gbf791715-0ubuntu1) disco; urgency=medium * New upstream snapshot. - azure: detect vnet migration via netlink media change event From 1fb1604bedf5913bc181de053f8762f68c34cf31 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Fri, 14 Dec 2018 14:46:10 -0600 Subject: [PATCH 0306/1174] update changelog (New upstream snapshot 18.5-1-g5b065316). --- debian/changelog | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/debian/changelog b/debian/changelog index 283bcd834a8..4486a174889 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +cloud-init (18.5-1-g5b065316-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Update to pylint 2.2.2. + - Release 18.5 (LP: #1808380) + - tests: add Disco release [Joshua Powers] + - net: render 'metric' values in per-subnet routes (LP: #1805871) + - write_files: add support for appending to files. [James Baxter] + - config: On ubuntu select cloud archive mirrors for armel, armhf, arm64. + (LP: #1805854) + - dhclient-hook: cleanups, tests and fix a bug on 'down' event. + - NoCloud: Allow top level 'network' key in network-config. (LP: #1798117) + - ovf: Fix ovf network config generation gateway/routes (LP: #1806103) + + -- Ryan Harper Fri, 14 Dec 2018 14:45:46 -0600 + cloud-init (18.4-31-gbf791715-0ubuntu1) disco; urgency=medium * New upstream snapshot. From 47a4d44a244aefb55e2a192bd069ae830c6d176e Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Fri, 14 Dec 2018 14:46:25 -0600 Subject: [PATCH 0307/1174] releasing cloud-init version 18.5-1-g5b065316-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4486a174889..09a00348bdf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.5-1-g5b065316-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.5-1-g5b065316-0ubuntu1) disco; urgency=medium * New upstream snapshot. - Update to pylint 2.2.2. From 44bfb49682c521db309786fe523365127330b5fd Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Sat, 26 Jan 2019 08:28:01 -0700 Subject: [PATCH 0308/1174] update changelog (New upstream snapshot 18.5-17-gd1a2fe73). --- debian/changelog | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/debian/changelog b/debian/changelog index 09a00348bdf..d5fd8b39a4b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,34 @@ +cloud-init (18.5-17-gd1a2fe73-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - opennebula: exclude EPOCHREALTIME as known bash env variable with a + delta (LP: #1813383) + - tox: fix disco httpretty dependencies for py37 (LP: #1813361) + - run-container: uncomment baseurl in yum.repos.d/*.repo when using a + proxy [Paride Legovini] + - lxd: install zfs-linux instead of zfs meta package + [Johnson Shi] (LP: #1799779) + - net/sysconfig: do not write a resolv.conf file with only the header. + [Robert Schweikert] + - net: Make sysconfig renderer compatible with Network Manager. + [Eduardo Otubo] + - cc_set_passwords: Fix regex when parsing hashed passwords + [Marlin Cremers] (LP: #1811446) + - net: Wait for dhclient to daemonize before reading lease file + [Jason Zions] (LP: #1794399) + - [Azure] Increase retries when talking to Wireserver during metadata walk + [Jason Zions] + - Add documentation on adding a datasource. + - doc: clean up some datasource documentation. + - ds-identify: fix wrong variable name in ovf_vmware_transport_guestinfo. + - Scaleway: Support ssh keys provided inside an instance tag. [PORTE Loïc] + - OVF: simplify expected return values of transport functions. + - Vmware: Add support for the com.vmware.guestInfo OVF transport. + (LP: #1807466) + - HACKING.rst: change contact info to Josh Powers + + -- Chad Smith Sat, 26 Jan 2019 08:27:35 -0700 + cloud-init (18.5-1-g5b065316-0ubuntu1) disco; urgency=medium * New upstream snapshot. From 87237281a822481764992b9c75dda1dc4ce21a34 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Sat, 26 Jan 2019 08:28:15 -0700 Subject: [PATCH 0309/1174] releasing cloud-init version 18.5-17-gd1a2fe73-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d5fd8b39a4b..26655fc9028 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.5-17-gd1a2fe73-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.5-17-gd1a2fe73-0ubuntu1) disco; urgency=medium * New upstream snapshot. - opennebula: exclude EPOCHREALTIME as known bash env variable with a From 91026e00916983b4a8b7f38e1f72be561e4aa228 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 28 Jan 2019 17:02:10 -0700 Subject: [PATCH 0310/1174] update changelog (New upstream snapshot 18.5-21-g8ee294d5). --- debian/changelog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index 26655fc9028..dd01eef08b5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +cloud-init (18.5-21-g8ee294d5-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - opennebula: also exclude epochseconds from changed environment vars + (LP: #1813641) + - systemd: Render generator from template to account for system + differences. [Robert Schweikert] + - sysconfig: On SUSE, use STARTMODE instead of ONBOOT + [Robert Schweikert] (LP: #1799540) + - flake8: use ==/!= to compare str, bytes, and int literals + [Paride Legovini] + + -- Chad Smith Mon, 28 Jan 2019 17:01:53 -0700 + cloud-init (18.5-17-gd1a2fe73-0ubuntu1) disco; urgency=medium * New upstream snapshot. From aed04150c6eee1eb791305decc00a1edba51b492 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 28 Jan 2019 17:02:15 -0700 Subject: [PATCH 0311/1174] releasing cloud-init version 18.5-21-g8ee294d5-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index dd01eef08b5..70f1879f2ff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.5-21-g8ee294d5-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.5-21-g8ee294d5-0ubuntu1) disco; urgency=medium * New upstream snapshot. - opennebula: also exclude epochseconds from changed environment vars From f6f37cee432474ca41f53b2bb59366660100d3b6 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 7 Mar 2019 10:33:08 -0500 Subject: [PATCH 0312/1174] update changelog (New upstream snapshot 18.5-44-g7c07af28). --- debian/changelog | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/debian/changelog b/debian/changelog index 70f1879f2ff..3410310463e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,42 @@ +cloud-init (18.5-44-g7c07af28-0ubuntu1) disco; urgency=medium + + * New upstream snapshot. + - Support locking user with usermod if passwd is not available. + [Scott Moser] + - Example for Microsoft Azure data disk added. [Anton Olifir] + - clean: correctly determine the path for excluding seed directory + (LP: #1818571) + - helpers/openstack: Treat unknown link types as physical (LP: #1639263) + - drop Python 2.6 support and our NIH version detection + - tip-pylint: Fix assignment-from-return-none errors + - net: append type:dhcp[46] only if dhcp[46] is True in v2 netconfig + [Kurt Stieger] (LP: #1818032) + - cc_apt_pipelining: stop disabling pipelining by default (LP: #1794982) + - tests: fix some slow tests and some leaking state + - util: don't determine string_types ourselves + - cc_rsyslog: Escape possible nested set (LP: #1816967) + - Enable encrypted_data_bag_secret support for Chef + [Eric Williams] (LP: #1817082) + - azure: Filter list of ssh keys pulled from fabric [Jason Zions (MSFT)] + - doc: update merging doc with fixes and some additional details/examples + - tests: integration test failure summary to use traceback if empty error + - This is to fix https://bugs.launchpad.net/cloud-init/+bug/1812676 + [Vitaly Kuznetsov] + - EC2: Rewrite network config on AWS Classic instances every boot + [Guilherme G. Piccoli] (LP: #1802073) + - netinfo: Adjust ifconfig output parsing for FreeBSD ipv6 entries + (LP: #1779672) + - netplan: Don't render yaml aliases when dumping netplan (LP: #1815051) + - add PyCharm IDE .idea/ path to .gitignore [Dominic Schlegel] + - correct grammar issue in instance metadata documentation + [Dominic Schlegel] (LP: #1802188) + - clean: cloud-init clean should not trace when run from within cloud_dir + (LP: #1795508) + - Resolve flake8 comparison and pycodestyle over-ident issues + [Paride Legovini] + + -- Daniel Watkins Thu, 07 Mar 2019 10:32:26 -0500 + cloud-init (18.5-21-g8ee294d5-0ubuntu1) disco; urgency=medium * New upstream snapshot. From 8a0521081e045944233b49eca1b9fc09cffb033e Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 7 Mar 2019 10:34:41 -0500 Subject: [PATCH 0313/1174] Update netplan dependency package (LP: #1813667) --- debian/changelog | 1 + debian/control | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 3410310463e..cf73f426208 100644 --- a/debian/changelog +++ b/debian/changelog @@ -34,6 +34,7 @@ cloud-init (18.5-44-g7c07af28-0ubuntu1) disco; urgency=medium (LP: #1795508) - Resolve flake8 comparison and pycodestyle over-ident issues [Paride Legovini] + * Update netplan dependency package (LP: #1813667) -- Daniel Watkins Thu, 07 Mar 2019 10:32:26 -0500 diff --git a/debian/control b/debian/control index 282304a9829..db00e385a6c 100644 --- a/debian/control +++ b/debian/control @@ -36,7 +36,7 @@ Architecture: all Depends: cloud-guest-utils | cloud-utils, isc-dhcp-client, iproute2, - nplan | ifupdown, + netplan.io | ifupdown, procps, python3, python3-requests, From d78d4d09dfda2e53057b72f485cd26657a044649 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 7 Mar 2019 12:17:37 -0500 Subject: [PATCH 0314/1174] Fix build-depends-on-obsolete-package for dh-systemd --- debian/changelog | 1 + debian/control | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index cf73f426208..a5d6dd5feba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -35,6 +35,7 @@ cloud-init (18.5-44-g7c07af28-0ubuntu1) disco; urgency=medium - Resolve flake8 comparison and pycodestyle over-ident issues [Paride Legovini] * Update netplan dependency package (LP: #1813667) + * Fix build-depends-on-obsolete-package for dh-systemd -- Daniel Watkins Thu, 07 Mar 2019 10:32:26 -0500 diff --git a/debian/control b/debian/control index db00e385a6c..58cce0ea3d1 100644 --- a/debian/control +++ b/debian/control @@ -2,9 +2,8 @@ Source: cloud-init Section: admin Priority: extra Maintainer: Scott Moser -Build-Depends: debhelper (>= 9), +Build-Depends: debhelper (>= 9.20160709), dh-python, - dh-systemd, iproute2, pep8, po-debconf, From 587388fcf221d56359e6d7bca49fb9e0bb4afd5b Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 7 Mar 2019 12:39:37 -0500 Subject: [PATCH 0315/1174] Change Priority from extra to optional --- debian/changelog | 1 + debian/control | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index a5d6dd5feba..d70cd650687 100644 --- a/debian/changelog +++ b/debian/changelog @@ -36,6 +36,7 @@ cloud-init (18.5-44-g7c07af28-0ubuntu1) disco; urgency=medium [Paride Legovini] * Update netplan dependency package (LP: #1813667) * Fix build-depends-on-obsolete-package for dh-systemd + * Change Priority from extra to optional -- Daniel Watkins Thu, 07 Mar 2019 10:32:26 -0500 diff --git a/debian/control b/debian/control index 58cce0ea3d1..66a905290ab 100644 --- a/debian/control +++ b/debian/control @@ -1,6 +1,6 @@ Source: cloud-init Section: admin -Priority: extra +Priority: optional Maintainer: Scott Moser Build-Depends: debhelper (>= 9.20160709), dh-python, From 8f319b3aeff1323481fcc5510a2c6515897f6272 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 7 Mar 2019 12:40:19 -0500 Subject: [PATCH 0316/1174] Override lintian warnings about WantedBy=cloud-init.target --- debian/changelog | 1 + debian/cloud-init.lintian-overrides | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 debian/cloud-init.lintian-overrides diff --git a/debian/changelog b/debian/changelog index d70cd650687..ba80b06f808 100644 --- a/debian/changelog +++ b/debian/changelog @@ -37,6 +37,7 @@ cloud-init (18.5-44-g7c07af28-0ubuntu1) disco; urgency=medium * Update netplan dependency package (LP: #1813667) * Fix build-depends-on-obsolete-package for dh-systemd * Change Priority from extra to optional + * Override lintian warnings about WantedBy=cloud-init.target -- Daniel Watkins Thu, 07 Mar 2019 10:32:26 -0500 diff --git a/debian/cloud-init.lintian-overrides b/debian/cloud-init.lintian-overrides new file mode 100644 index 00000000000..58fac0d2c02 --- /dev/null +++ b/debian/cloud-init.lintian-overrides @@ -0,0 +1,4 @@ +cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/systemd/system/cloud-config.service cloud-init.target +cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/systemd/system/cloud-final.service cloud-init.target +cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/systemd/system/cloud-init-local.service cloud-init.target +cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/systemd/system/cloud-init.service cloud-init.target From 1639758c62b57cbe38afbf583472aaf67cbf6616 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 7 Mar 2019 12:57:52 -0500 Subject: [PATCH 0317/1174] Change Maintainer to Ubuntu Developers --- debian/changelog | 1 + debian/control | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index ba80b06f808..61f09d73fbb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -38,6 +38,7 @@ cloud-init (18.5-44-g7c07af28-0ubuntu1) disco; urgency=medium * Fix build-depends-on-obsolete-package for dh-systemd * Change Priority from extra to optional * Override lintian warnings about WantedBy=cloud-init.target + * Change Maintainer to Ubuntu Developers -- Daniel Watkins Thu, 07 Mar 2019 10:32:26 -0500 diff --git a/debian/control b/debian/control index 66a905290ab..b1e2e8ff02a 100644 --- a/debian/control +++ b/debian/control @@ -1,7 +1,7 @@ Source: cloud-init Section: admin Priority: optional -Maintainer: Scott Moser +Maintainer: Ubuntu Developers Build-Depends: debhelper (>= 9.20160709), dh-python, iproute2, From c45d5f2cc27236a2038ee5f6bd28e90bea0f1f26 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Fri, 8 Mar 2019 09:58:06 -0500 Subject: [PATCH 0318/1174] d/postinst: remove now-incorrect apt pipelining configuration --- debian/changelog | 6 ++++++ debian/cloud-init.postinst | 14 -------------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/debian/changelog b/debian/changelog index 61f09d73fbb..c17e38b67b4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (18.5-44-g7c07af28-0ubuntu2) disco; urgency=medium + + * d/postinst: remove now-incorrect apt pipelining configuration + + -- Daniel Watkins Fri, 08 Mar 2019 09:56:42 -0500 + cloud-init (18.5-44-g7c07af28-0ubuntu1) disco; urgency=medium * New upstream snapshot. diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst index f88d1c52ac1..93d58e2e769 100644 --- a/debian/cloud-init.postinst +++ b/debian/cloud-init.postinst @@ -297,20 +297,6 @@ 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" < Date: Fri, 8 Mar 2019 17:42:48 -0500 Subject: [PATCH 0319/1174] update changelog (New upstream snapshot 18.5-45-g3554ffe8). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index c17e38b67b4..a9a16693f4d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (18.5-45-g3554ffe8-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - cloud-init-per: POSIX sh does not support string subst, use sed + (LP: #1819222) + + -- Daniel Watkins Fri, 08 Mar 2019 17:42:34 -0500 + cloud-init (18.5-44-g7c07af28-0ubuntu2) disco; urgency=medium * d/postinst: remove now-incorrect apt pipelining configuration From 79991dc45b64ad9f16cb6f33987864a090b04372 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Fri, 8 Mar 2019 17:58:57 -0500 Subject: [PATCH 0320/1174] s/UNRELEASED/disco/ --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index a9a16693f4d..ac376ab1e7c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.5-45-g3554ffe8-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.5-45-g3554ffe8-0ubuntu1) disco; urgency=medium * New upstream snapshot. - cloud-init-per: POSIX sh does not support string subst, use sed From 07965cbc03000ef9ee3bc2144db158ba132f0f59 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Wed, 10 Apr 2019 11:48:27 -0400 Subject: [PATCH 0321/1174] update changelog (New upstream snapshot 18.5-61-gb76714c3). --- debian/changelog | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/debian/changelog b/debian/changelog index ac376ab1e7c..16306eb9f6d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,32 @@ +cloud-init (18.5-61-gb76714c3-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Change DataSourceNoCloud to ignore file system label's case. + [Risto Oikarinen] + - cmd:main.py: Fix missing 'modules-init' key in modes dict + [Antonio Romito] (LP: #1815109) + - ubuntu_advantage: rewrite cloud-config module + - Azure: Treat _unset network configuration as if it were absent + [Jason Zions (MSFT)] (LP: #1823084) + - DatasourceAzure: add additional logging for azure datasource [Anh Vo] + - cloud_tests: fix apt_pipelining test-cases + - Azure: Ensure platform random_seed is always serializable as JSON. + [Jason Zions (MSFT)] + - net/sysconfig: write out SUSE-compatible IPv6 config [Robert Schweikert] + - tox: Update testenv for openSUSE Leap to 15.0 [Thomas Bechtold] + - net: Fix ipv6 static routes when using eni renderer + [Raphael Glon] (LP: #1818669) + - Add ubuntu_drivers config module + - doc: Refresh Azure walinuxagent docs + - tox: bump pylint version to latest (2.3.1) + - DataSource: move update_events from a class to an instance attribute + (LP: #1819913) + - net/sysconfig: Handle default route setup for dhcp configured NICs + [Robert Schweikert] (LP: #1812117) + - DataSourceEc2: update RELEASE_BLOCKER to be more accurate + + -- Daniel Watkins Wed, 10 Apr 2019 11:48:21 -0400 + cloud-init (18.5-45-g3554ffe8-0ubuntu1) disco; urgency=medium * New upstream snapshot. From 6380e13bb69e77f6684e89ff59c467e59a6b8b7f Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Wed, 10 Apr 2019 11:49:21 -0400 Subject: [PATCH 0322/1174] releasing cloud-init version 18.5-61-gb76714c3-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 16306eb9f6d..f8692785052 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (18.5-61-gb76714c3-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.5-61-gb76714c3-0ubuntu1) disco; urgency=medium * New upstream snapshot. - Change DataSourceNoCloud to ignore file system label's case. @@ -25,7 +25,7 @@ cloud-init (18.5-61-gb76714c3-0ubuntu1) UNRELEASED; urgency=medium [Robert Schweikert] (LP: #1812117) - DataSourceEc2: update RELEASE_BLOCKER to be more accurate - -- Daniel Watkins Wed, 10 Apr 2019 11:48:21 -0400 + -- Daniel Watkins Wed, 10 Apr 2019 11:49:03 -0400 cloud-init (18.5-45-g3554ffe8-0ubuntu1) disco; urgency=medium From 9501c03bc311206db5604f22b11224c457019ce9 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Wed, 10 Apr 2019 16:23:21 -0400 Subject: [PATCH 0323/1174] update changelog (New upstream snapshot 18.5-62-g6322c2dd). --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index f8692785052..463d1638445 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (18.5-62-g6322c2dd-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Revert "DataSource: move update_events from a class to an instance..." + + -- Daniel Watkins Wed, 10 Apr 2019 16:23:05 -0400 + cloud-init (18.5-61-gb76714c3-0ubuntu1) disco; urgency=medium * New upstream snapshot. From 8324a10706100364f45c5486fc4cb04fdba71bdd Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Wed, 10 Apr 2019 16:23:40 -0400 Subject: [PATCH 0324/1174] releasing cloud-init version 18.5-62-g6322c2dd-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 463d1638445..06308541cec 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (18.5-62-g6322c2dd-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (18.5-62-g6322c2dd-0ubuntu1) disco; urgency=medium * New upstream snapshot. - Revert "DataSource: move update_events from a class to an instance..." - -- Daniel Watkins Wed, 10 Apr 2019 16:23:05 -0400 + -- Daniel Watkins Wed, 10 Apr 2019 16:23:25 -0400 cloud-init (18.5-61-gb76714c3-0ubuntu1) disco; urgency=medium From 50f92534d91b661e968a95756456a8dc8c2cd909 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 10 May 2019 12:17:59 -0600 Subject: [PATCH 0325/1174] update changelog (New upstream release 19.1). --- debian/changelog | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/debian/changelog b/debian/changelog index 06308541cec..b4de6de207d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,28 @@ +cloud-init (19.1-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream release. + - release 19.1 (LP: #1828479) + - freebsd: add chpasswd pkg in the image [Gonéri Le Bouder] + - tests: add Eoan release [Paride Legovini] + - cc_mounts: check if mount -a on no-change fstab path + [Jason Zions (MSFT)] (LP: #1825596) + - replace remaining occurrences of LOG.warn + - DataSourceAzure: Adjust timeout for polling IMDS [Anh Vo] + - Azure: Changes to the Hyper-V KVP Reporter [Anh Vo] + - git tests: no longer show warning about safe yaml. [Scott Moser] + - tools/read-version: handle errors [Chad Miller] + - net/sysconfig: only indicate available on known sysconfig distros + (LP: #1819994) + - packages: update rpm specs for new bash completion path (LP: #1825444) + - test_azure: mock util.SeLinuxGuard where needed + [Jason Zions (MSFT)] (LP: #1825253) + - setup.py: install bash completion script in new location + - mount_cb: do not pass sync and rw options to mount + [Gonéri Le Bouder] (LP: #1645824) + - cc_apt_configure: fix typo in apt documentation [Dominic Schlegel] + + -- Chad Smith Fri, 10 May 2019 12:11:06 -0600 + cloud-init (18.5-62-g6322c2dd-0ubuntu1) disco; urgency=medium * New upstream snapshot. From 396a5cf524349dcb4653590cc799689c3535ef5f Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 10 May 2019 12:18:05 -0600 Subject: [PATCH 0326/1174] releasing cloud-init version 19.1-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index b4de6de207d..6e62259ce64 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.1-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.1-0ubuntu1) eoan; urgency=medium * New upstream release. - release 19.1 (LP: #1828479) From 3e0fde93e7ed3f08c72dd8e2b0aebdb49f4569e6 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 10 May 2019 15:34:25 -0600 Subject: [PATCH 0327/1174] update changelog (New upstream snapshot 19.1-1-gbaa47854). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 6e62259ce64..841fa9dfea5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (19.1-1-gbaa47854-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Azure: Return static fallback address as if failed to find endpoint + [Jason Zions (MSFT)] + + -- Chad Smith Fri, 10 May 2019 15:34:21 -0600 + cloud-init (19.1-0ubuntu1) eoan; urgency=medium * New upstream release. From 9e2a589ca50e7111452068b10eb95c3773d568d1 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 10 May 2019 15:34:29 -0600 Subject: [PATCH 0328/1174] releasing cloud-init version 19.1-1-gbaa47854-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 841fa9dfea5..5646a6ae1e7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.1-1-gbaa47854-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.1-1-gbaa47854-0ubuntu1) eoan; urgency=medium * New upstream snapshot. - Azure: Return static fallback address as if failed to find endpoint From e892de9b5afaf44f4bc766385100c1842018165f Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Wed, 17 Jul 2019 12:44:20 -0500 Subject: [PATCH 0329/1174] update changelog (New upstream release 19.2). --- debian/changelog | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5646a6ae1e7..cbf4ade9b4d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,42 @@ +cloud-init (19.2-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream release. + - Release 19.2 (LP: #1836921) + - net: add rfc3442 (classless static routes) to EphemeralDHCP + (LP: #1821102) + - templates/ntp.conf.debian.tmpl: fix missing newline for pools + (LP: #1836598) + - Support netplan renderer in Arch Linux [Conrad Hoffmann] + - Fix typo in publicly viewable documentation. [David Medberry] + - Add a cdrom size checker for OVF ds to ds-identify + [Pengpeng Sun] (LP: #1806701) + - VMWare: Trigger the post customization script via cc_scripts module. + [Xiaofeng Wang] (LP: #1833192) + - Cloud-init analyze module: Added ability to analyze boot events. + [Sam Gilson] + - Update debian eni network configuration location, retain Ubuntu setting + [Janos Lenart] + - net: skip bond interfaces in get_interfaces + [Stanislav Makar] (LP: #1812857) + - Fix a couple of issues raised by a coverity scan + - Add missing dsname for Hetzner Cloud datasource [Markus Schade] + - doc: indicate that netplan is default in Ubuntu now + - azure: add region and AZ properties from imds compute location metadata + - sysconfig: support more bonding options [Penghui Liao] + - cloud-init-generator: use libexec path to ds-identify on redhat systems + (LP: #1833264) + - tools/build-on-freebsd: update to python3 [Gonéri Le Bouder] + - Allow identification of OpenStack by Asset Tag + [Mark T. Voelker] (LP: #1669875) + - Fix spelling error making 'an Ubuntu' consistent. [Brian Murray] + - run-container: centos: comment out the repo mirrorlist [Paride Legovini] + - netplan: update netplan key mappings for gratuitous-arp (LP: #1827238) + - freebsd: fix the name of cloudcfg VARIANT [Gonéri Le Bouder] + - freebsd: ability to grow root file system [Gonéri Le Bouder] + - freebsd: NoCloud data source support [Gonéri Le Bouder] (LP: #1645824) + + -- Ryan Harper Wed, 17 Jul 2019 12:43:15 -0500 + cloud-init (19.1-1-gbaa47854-0ubuntu1) eoan; urgency=medium * New upstream snapshot. From c9cc900d5bba1d4b632eec8547667cd84fa724ca Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Wed, 17 Jul 2019 12:44:38 -0500 Subject: [PATCH 0330/1174] releasing cloud-init version 19.2-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index cbf4ade9b4d..070aa902b6b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.2-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.2-0ubuntu1) eoan; urgency=medium * New upstream release. - Release 19.2 (LP: #1836921) From ed92ba2bbc5fa5027b0669d1e5c6dc3bcf9f3e04 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 6 Aug 2019 13:56:35 -0600 Subject: [PATCH 0331/1174] update changelog (New upstream snapshot 19.2-5-g496aaa94). --- debian/changelog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index 070aa902b6b..948fc5f76b2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +cloud-init (19.2-5-g496aaa94-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - net/cmdline: split interfaces_by_mac and init network config + determination + - stages: allow data sources to override network config source order + - cloud_tests: updates and fixes + - Fix bug rendering MTU on bond or vlan when input was netplan. + [Scott Moser] (LP: #1836949) + - net: update net sequence, include wait on netdevs, opensuse netrules + path (LP: #1817368) + + -- Chad Smith Tue, 06 Aug 2019 13:56:18 -0600 + cloud-init (19.2-0ubuntu1) eoan; urgency=medium * New upstream release. From 88961a00167e52a138add8c1c5268340d5601160 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 6 Aug 2019 13:56:51 -0600 Subject: [PATCH 0332/1174] releasing cloud-init version 19.2-5-g496aaa94-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 948fc5f76b2..671dad7f4e2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.2-5-g496aaa94-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.2-5-g496aaa94-0ubuntu1) eoan; urgency=medium * New upstream snapshot. - net/cmdline: split interfaces_by_mac and init network config From 71f2f778ec39e979f6339ef1c71bb0f8dabc215c Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Fri, 9 Aug 2019 12:51:47 -0400 Subject: [PATCH 0333/1174] cloud-init.templates: add Exoscale datasource --- debian/cloud-init.templates | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index ece53a049ac..e5efdad3f8f 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, None: Failsafe datasource +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, 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. From e3bbfab5c917cfcccc0865c7c4bd255c62c5f540 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Fri, 9 Aug 2019 13:58:16 -0400 Subject: [PATCH 0334/1174] update changelog (New upstream snapshot 19.2-9-g15584720). --- debian/changelog | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/debian/changelog b/debian/changelog index 671dad7f4e2..a9e9966eb44 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +cloud-init (19.2-9-g15584720-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Add support for publishing host keys to GCE guest attributes + [Rick Wright] + - New data source for the Exoscale.com cloud platform [Chris Glass] + - doc: remove intersphinx extension + - cc_set_passwords: rewrite documentation (LP: #1838794) + * d/cloud-init.templates: add Exoscale data source + + -- Daniel Watkins Fri, 09 Aug 2019 13:57:28 -0400 + cloud-init (19.2-5-g496aaa94-0ubuntu1) eoan; urgency=medium * New upstream snapshot. From ba7b33b48d5dfc9f786f55778877922625cac00a Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Fri, 9 Aug 2019 13:58:33 -0400 Subject: [PATCH 0335/1174] releasing cloud-init version 19.2-9-g15584720-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index a9e9966eb44..2cda24cb3cb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.2-9-g15584720-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.2-9-g15584720-0ubuntu1) eoan; urgency=medium * New upstream snapshot. - Add support for publishing host keys to GCE guest attributes From bd094c20d59537c2708dbbaf3c4cb1871f488f86 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 15 Aug 2019 09:42:30 -0600 Subject: [PATCH 0336/1174] update changelog (New upstream snapshot 19.2-13-g2f3bb764). --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index 2cda24cb3cb..4346acb312e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +cloud-init (19.2-13-g2f3bb764-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Azure: Record boot timestamps, system information, and diagnostic events + [Anh Vo] + - DataSourceOracle: configure secondary NICs on Virtual Machines + - distros: fix confusing variable names + - azure/net: generate_fallback_nic emits network v2 config instead of v1 + + -- Chad Smith Thu, 15 Aug 2019 09:42:20 -0600 + cloud-init (19.2-9-g15584720-0ubuntu1) eoan; urgency=medium * New upstream snapshot. From 3e0e402d3283348aa07d0ce6282db51af0b9c6ff Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 15 Aug 2019 09:42:37 -0600 Subject: [PATCH 0337/1174] releasing cloud-init version 19.2-13-g2f3bb764-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4346acb312e..0a31157afc9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.2-13-g2f3bb764-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.2-13-g2f3bb764-0ubuntu1) eoan; urgency=medium * New upstream snapshot. - Azure: Record boot timestamps, system information, and diagnostic events From e9de7e2a71cdd9590779c52079bd599f60f8ef76 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 22 Aug 2019 11:15:39 -0600 Subject: [PATCH 0338/1174] update changelog (New upstream snapshot 19.2-21-ge6383719). --- debian/changelog | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/debian/changelog b/debian/changelog index 0a31157afc9..7506a70790e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,20 @@ +cloud-init (19.2-21-ge6383719-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - ubuntu-drivers: call db_x_loadtemplatefile to accept NVIDIA EULA + (LP: #1840080) + - Add missing #cloud-config comment on first example in documentation. + [Florian Müller] + - ubuntu-drivers: emit latelink=true debconf to accept nvidia eula + (LP: #1840080) + - DataSourceOracle: prefer DS network config over initramfs + - format.rst: add text/jinja2 to list of content types (+ cleanups) + - Add GitHub pull request template to point people at hacking doc + - cloudinit/distros/parsers/sys_conf: add docstring to SysConf + - pyflakes: remove unused variable [Joshua Powers] + + -- Chad Smith Thu, 22 Aug 2019 11:15:08 -0600 + cloud-init (19.2-13-g2f3bb764-0ubuntu1) eoan; urgency=medium * New upstream snapshot. From 7ab616acea34d94e00d578ee346b1d98a1c5e7c8 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 22 Aug 2019 11:15:44 -0600 Subject: [PATCH 0339/1174] releasing cloud-init version 19.2-21-ge6383719-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 7506a70790e..84b106d3a12 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.2-21-ge6383719-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.2-21-ge6383719-0ubuntu1) eoan; urgency=medium * New upstream snapshot. - ubuntu-drivers: call db_x_loadtemplatefile to accept NVIDIA EULA From 7de6af842ac4a72b528b110720778e9d7670c6d5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 28 Aug 2019 14:45:54 -0600 Subject: [PATCH 0340/1174] update changelog (New upstream snapshot 19.2-24-ge7881d5c). --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index 84b106d3a12..9ade6b04641 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (19.2-24-ge7881d5c-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Oracle: Render secondary vnic IP and MTU values only + - exoscale: fix sysconfig cloud_config_modules overrides (LP: #1841454) + - net/cmdline: refactor to allow multiple initramfs network config sources + + -- Chad Smith Wed, 28 Aug 2019 14:44:36 -0600 + cloud-init (19.2-21-ge6383719-0ubuntu1) eoan; urgency=medium * New upstream snapshot. From 5d916a3286c4a187aa10b8fc2831938a8af4b290 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 28 Aug 2019 14:45:58 -0600 Subject: [PATCH 0341/1174] releasing cloud-init version 19.2-24-ge7881d5c-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9ade6b04641..89997511236 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.2-24-ge7881d5c-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.2-24-ge7881d5c-0ubuntu1) eoan; urgency=medium * New upstream snapshot. - Oracle: Render secondary vnic IP and MTU values only From 8bded9f079422e7f59932d1b9d3a7706c4a1c7fc Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Mon, 9 Sep 2019 17:44:49 +0000 Subject: [PATCH 0342/1174] debian/cloud-init.config: fix yaml parsing with whitespace Users may rewrite valid yaml adding or omitting additional white space when defining the 'datasources_list' variable. If the yaml did not include a space between the start of the list '[' and the members and the end ']' then this would break the shell yaml parsing and produce invalid yaml on dpkg-reconfigure cloud-init. Fix this issue by updating the sed matching expression to allow for zero or more spaces after the leading bracket and before the trailing bracket. For example, this branch now accepts: datasources_list: [NoCloud, None] LP: #1841697 --- debian/cloud-init.config | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/debian/cloud-init.config b/debian/cloud-init.config index 6e9c6f73b19..af38ffb2e75 100644 --- a/debian/cloud-init.config +++ b/debian/cloud-init.config @@ -32,13 +32,14 @@ hasEc2Md() { 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. + # only really supports 'key: [ en1, en2 ]' or 'key: [en1, en2]' formats. 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") + # strip all whitespace, delete lines not matching key:, + # strip key: and [] and replace ',' with ', ' + LISTVAL="$(sed -e "s/\s//g" -e "/^$key:/"'!'d \ + -e "s/$key:\[//" -e "s/]//" -e "s/,/, /g" "$file")" + RET="$key: [ ${LISTVAL} ]" [ -n "$RET" ] || RET="$default" } From 6492551b478abc50ad220ea84872754f7002bfff Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Tue, 17 Sep 2019 12:12:47 +0200 Subject: [PATCH 0343/1174] update changelog (New upstream snapshot 19.2-36-g059d049c). --- debian/changelog | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/debian/changelog b/debian/changelog index 89997511236..097beb04c75 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,23 @@ +cloud-init (19.2-36-g059d049c-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - net: add is_master check for filtering device list (LP: #1844191) + - docs: more complete list of availability [Joshua Powers] + - docs: start FAQ page [Joshua Powers] + - docs: cleanup output & order of datasource page [Joshua Powers] + - Brightbox: restrict detection to require full domain match + .brightbox.com [Scott Moser] + - VMWware: add option into VMTools config to enable/disable custom script. + [Xiaofeng Wang] + - net,Oracle: Add support for netfailover detection + - atomic_helper: add DEBUG logging to write_file (LP: #1843276) + - doc: document doc, create makefile and tox target [Joshua Powers] + - .gitignore: ignore files produced by package builds + - docs: fix whitespace, spelling, and line length [Joshua Powers] + - docs: remove unnecessary file in doc directory [Joshua Powers] + + -- Daniel Watkins Tue, 17 Sep 2019 12:12:27 +0200 + cloud-init (19.2-24-ge7881d5c-0ubuntu1) eoan; urgency=medium * New upstream snapshot. From 8acfb2ee407f8611ac54ddce2ebb470769df0e6e Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Tue, 17 Sep 2019 12:12:54 +0200 Subject: [PATCH 0344/1174] releasing cloud-init version 19.2-36-g059d049c-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 097beb04c75..4195d2c37cd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.2-36-g059d049c-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.2-36-g059d049c-0ubuntu1) eoan; urgency=medium * New upstream snapshot. - net: add is_master check for filtering device list (LP: #1844191) From 45181f57e1be33cda7f3eec2a1be5e3c3337c5c8 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Fri, 4 Oct 2019 11:42:29 -0400 Subject: [PATCH 0345/1174] cherry pick a7d8d032 LP: #1846535 --- ...aces-don-t-exclude-bridge-and-bond-members | 150 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 151 insertions(+) create mode 100644 debian/patches/cpick-a7d8d032-get_interfaces-don-t-exclude-bridge-and-bond-members create mode 100644 debian/patches/series diff --git a/debian/patches/cpick-a7d8d032-get_interfaces-don-t-exclude-bridge-and-bond-members b/debian/patches/cpick-a7d8d032-get_interfaces-don-t-exclude-bridge-and-bond-members new file mode 100644 index 00000000000..4415fcb9eea --- /dev/null +++ b/debian/patches/cpick-a7d8d032-get_interfaces-don-t-exclude-bridge-and-bond-members @@ -0,0 +1,150 @@ +From a7d8d032a65e807007f1467a9220b7f161625668 Mon Sep 17 00:00:00 2001 +From: Daniel Watkins +Date: Fri, 4 Oct 2019 15:34:41 +0000 +Subject: [PATCH] get_interfaces: don't exclude bridge and bond members + +The change that introduced this issue was handling interfaces that are +bonded in the kernel, in a way that doesn't present as "a bond" to +userspace in the normal way. Both members of this "bond" will share a +MAC address, so we filter one of them out to avoid incorrect MAC address +collision warnings. + +Unfortunately, the matching condition was too broad, so that change also +affected normal bonds and bridges. This change specifically excludes +bonds and bridges from that determination, to address that regression. + +LP: #1846535 +--- + cloudinit/net/__init__.py | 24 ++++++++++--- + cloudinit/net/tests/test_init.py | 59 +++++++++++++++++++++++++++++--- + 2 files changed, 73 insertions(+), 10 deletions(-) + +--- a/cloudinit/net/__init__.py ++++ b/cloudinit/net/__init__.py +@@ -109,8 +109,22 @@ def is_bond(devname): + return os.path.exists(sys_dev_path(devname, "bonding")) + + +-def has_master(devname): +- return os.path.exists(sys_dev_path(devname, path="master")) ++def get_master(devname): ++ """Return the master path for devname, or None if no master""" ++ path = sys_dev_path(devname, path="master") ++ if os.path.exists(path): ++ return path ++ return None ++ ++ ++def master_is_bridge_or_bond(devname): ++ """Return a bool indicating if devname's master is a bridge or bond""" ++ master_path = get_master(devname) ++ if master_path is None: ++ return False ++ bonding_path = os.path.join(master_path, "bonding") ++ bridge_path = os.path.join(master_path, "bridge") ++ return (os.path.exists(bonding_path) or os.path.exists(bridge_path)) + + + def is_netfailover(devname, driver=None): +@@ -158,7 +172,7 @@ def is_netfail_master(devname, driver=No + + Return True if all of the above is True. + """ +- if has_master(devname): ++ if get_master(devname) is not None: + return False + + if driver is None: +@@ -215,7 +229,7 @@ def is_netfail_standby(devname, driver=N + + Return True if all of the above is True. + """ +- if not has_master(devname): ++ if get_master(devname) is None: + return False + + if driver is None: +@@ -790,7 +804,7 @@ def get_interfaces(): + continue + if is_bond(name): + continue +- if has_master(name): ++ if get_master(name) is not None and not master_is_bridge_or_bond(name): + continue + if is_netfailover(name): + continue +--- a/cloudinit/net/tests/test_init.py ++++ b/cloudinit/net/tests/test_init.py +@@ -157,11 +157,40 @@ class TestReadSysNet(CiTestCase): + ensure_file(os.path.join(self.sysdir, 'eth0', 'bonding')) + self.assertTrue(net.is_bond('eth0')) + +- def test_has_master(self): +- """has_master is True when /sys/net/devname/master exists.""" +- self.assertFalse(net.has_master('enP1s1')) +- ensure_file(os.path.join(self.sysdir, 'enP1s1', 'master')) +- self.assertTrue(net.has_master('enP1s1')) ++ def test_get_master(self): ++ """get_master returns the path when /sys/net/devname/master exists.""" ++ self.assertIsNone(net.get_master('enP1s1')) ++ master_path = os.path.join(self.sysdir, 'enP1s1', 'master') ++ ensure_file(master_path) ++ self.assertEqual(master_path, net.get_master('enP1s1')) ++ ++ def test_master_is_bridge_or_bond(self): ++ bridge_mac = 'aa:bb:cc:aa:bb:cc' ++ bond_mac = 'cc:bb:aa:cc:bb:aa' ++ ++ # No master => False ++ write_file(os.path.join(self.sysdir, 'eth1', 'address'), bridge_mac) ++ write_file(os.path.join(self.sysdir, 'eth2', 'address'), bond_mac) ++ ++ self.assertFalse(net.master_is_bridge_or_bond('eth1')) ++ self.assertFalse(net.master_is_bridge_or_bond('eth2')) ++ ++ # masters without bridge/bonding => False ++ write_file(os.path.join(self.sysdir, 'br0', 'address'), bridge_mac) ++ write_file(os.path.join(self.sysdir, 'bond0', 'address'), bond_mac) ++ ++ os.symlink('../br0', os.path.join(self.sysdir, 'eth1', 'master')) ++ os.symlink('../bond0', os.path.join(self.sysdir, 'eth2', 'master')) ++ ++ self.assertFalse(net.master_is_bridge_or_bond('eth1')) ++ self.assertFalse(net.master_is_bridge_or_bond('eth2')) ++ ++ # masters with bridge/bonding => True ++ write_file(os.path.join(self.sysdir, 'br0', 'bridge'), '') ++ write_file(os.path.join(self.sysdir, 'bond0', 'bonding'), '') ++ ++ self.assertTrue(net.master_is_bridge_or_bond('eth1')) ++ self.assertTrue(net.master_is_bridge_or_bond('eth2')) + + def test_is_vlan(self): + """is_vlan is True when /sys/net/devname/uevent has DEVTYPE=vlan.""" +@@ -461,6 +490,26 @@ class TestGetInterfaceMAC(CiTestCase): + expected = [('ens3', mac, None, None)] + self.assertEqual(expected, net.get_interfaces()) + ++ def test_get_interfaces_does_not_skip_phys_members_of_bridges_and_bonds( ++ self ++ ): ++ bridge_mac = 'aa:bb:cc:aa:bb:cc' ++ bond_mac = 'cc:bb:aa:cc:bb:aa' ++ write_file(os.path.join(self.sysdir, 'br0', 'address'), bridge_mac) ++ write_file(os.path.join(self.sysdir, 'br0', 'bridge'), '') ++ ++ write_file(os.path.join(self.sysdir, 'bond0', 'address'), bond_mac) ++ write_file(os.path.join(self.sysdir, 'bond0', 'bonding'), '') ++ ++ write_file(os.path.join(self.sysdir, 'eth1', 'address'), bridge_mac) ++ os.symlink('../br0', os.path.join(self.sysdir, 'eth1', 'master')) ++ ++ write_file(os.path.join(self.sysdir, 'eth2', 'address'), bond_mac) ++ os.symlink('../bond0', os.path.join(self.sysdir, 'eth2', 'master')) ++ ++ interface_names = [interface[0] for interface in net.get_interfaces()] ++ self.assertEqual(['eth1', 'eth2'], sorted(interface_names)) ++ + + class TestInterfaceHasOwnMAC(CiTestCase): + diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 00000000000..7922451ab0a --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +cpick-a7d8d032-get_interfaces-don-t-exclude-bridge-and-bond-members From f0fe64e8f75a238ff56614f03b7364922a7a311a Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Fri, 4 Oct 2019 11:42:29 -0400 Subject: [PATCH 0346/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 4195d2c37cd..043d831f009 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (19.2-36-g059d049c-0ubuntu2) UNRELEASED; urgency=medium + + * cherry-pick a7d8d032: get_interfaces: don't exclude bridge and bond + members (LP: #1846535) + + -- Daniel Watkins Fri, 04 Oct 2019 11:42:12 -0400 + cloud-init (19.2-36-g059d049c-0ubuntu1) eoan; urgency=medium * New upstream snapshot. From 1fb33a840f9b9f01f9caf21c0984ce4e710d2557 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Fri, 4 Oct 2019 11:42:48 -0400 Subject: [PATCH 0347/1174] releasing cloud-init version 19.2-36-g059d049c-0ubuntu2 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 043d831f009..cfe1e0f7a36 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.2-36-g059d049c-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (19.2-36-g059d049c-0ubuntu2) eoan; urgency=medium * cherry-pick a7d8d032: get_interfaces: don't exclude bridge and bond members (LP: #1846535) From bc88f2ca66d982de720a55b31c13335074a72ed6 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Wed, 9 Oct 2019 14:56:01 -0500 Subject: [PATCH 0348/1174] debian/cloud-init.config get_yaml_list should return only the value When fixing LP: #1841697 we mistakely added the key and list brackets to the return value of the get_yaml_list function. This resulted in cloud-init.postinst which creates 90_dpkg.cfg to duplicate the key and brackets resulting in an invalid yaml file. This commit removes the emitted $key and [ ] portions resulting in valid yaml when cloud-init.postinst renders 90_dpkg.cfg. LP: #1846511 --- debian/cloud-init.config | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/debian/cloud-init.config b/debian/cloud-init.config index af38ffb2e75..aacb1bfc53b 100644 --- a/debian/cloud-init.config +++ b/debian/cloud-init.config @@ -37,9 +37,8 @@ get_yaml_list() { [ -f "$file" ] || return 1 # strip all whitespace, delete lines not matching key:, # strip key: and [] and replace ',' with ', ' - LISTVAL="$(sed -e "s/\s//g" -e "/^$key:/"'!'d \ + RET="$(sed -e "s/\s//g" -e "/^$key:/"'!'d \ -e "s/$key:\[//" -e "s/]//" -e "s/,/, /g" "$file")" - RET="$key: [ ${LISTVAL} ]" [ -n "$RET" ] || RET="$default" } From 8dcdd78614517871638dd5aef037beeaba850271 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Wed, 9 Oct 2019 16:32:14 -0500 Subject: [PATCH 0349/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index cfe1e0f7a36..71de8d88e7e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (19.2-36-g059d049c-0ubuntu3) UNRELEASED; urgency=medium + + * debian/cloud-init.config get_yaml_list should return only the value + (LP: #1846511) + + -- Ryan Harper Wed, 09 Oct 2019 16:31:09 -0500 + cloud-init (19.2-36-g059d049c-0ubuntu2) eoan; urgency=medium * cherry-pick a7d8d032: get_interfaces: don't exclude bridge and bond From 92242430b5e77a42228f9594311ea362f8c417c1 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Wed, 9 Oct 2019 16:32:58 -0500 Subject: [PATCH 0350/1174] releasing cloud-init version 19.2-36-g059d049c-0ubuntu3 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 71de8d88e7e..41e806b98b0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (19.2-36-g059d049c-0ubuntu3) UNRELEASED; urgency=medium +cloud-init (19.2-36-g059d049c-0ubuntu3) eoan; urgency=medium * debian/cloud-init.config get_yaml_list should return only the value (LP: #1846511) - -- Ryan Harper Wed, 09 Oct 2019 16:31:09 -0500 + -- Ryan Harper Wed, 09 Oct 2019 16:32:17 -0500 cloud-init (19.2-36-g059d049c-0ubuntu2) eoan; urgency=medium From c6e13d17bbe597d3c325a66dec1c542ed053a7db Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Thu, 10 Oct 2019 14:09:05 -0500 Subject: [PATCH 0351/1174] drop cherry picks included in upstream/master commit d3b1c4ae drop the following cherry picks: cpick-a7d8d032-get_interfaces-don-t-exclude-bridge-and-bond-members --- ...aces-don-t-exclude-bridge-and-bond-members | 150 ------------------ debian/patches/series | 1 - 2 files changed, 151 deletions(-) delete mode 100644 debian/patches/cpick-a7d8d032-get_interfaces-don-t-exclude-bridge-and-bond-members delete mode 100644 debian/patches/series diff --git a/debian/patches/cpick-a7d8d032-get_interfaces-don-t-exclude-bridge-and-bond-members b/debian/patches/cpick-a7d8d032-get_interfaces-don-t-exclude-bridge-and-bond-members deleted file mode 100644 index 4415fcb9eea..00000000000 --- a/debian/patches/cpick-a7d8d032-get_interfaces-don-t-exclude-bridge-and-bond-members +++ /dev/null @@ -1,150 +0,0 @@ -From a7d8d032a65e807007f1467a9220b7f161625668 Mon Sep 17 00:00:00 2001 -From: Daniel Watkins -Date: Fri, 4 Oct 2019 15:34:41 +0000 -Subject: [PATCH] get_interfaces: don't exclude bridge and bond members - -The change that introduced this issue was handling interfaces that are -bonded in the kernel, in a way that doesn't present as "a bond" to -userspace in the normal way. Both members of this "bond" will share a -MAC address, so we filter one of them out to avoid incorrect MAC address -collision warnings. - -Unfortunately, the matching condition was too broad, so that change also -affected normal bonds and bridges. This change specifically excludes -bonds and bridges from that determination, to address that regression. - -LP: #1846535 ---- - cloudinit/net/__init__.py | 24 ++++++++++--- - cloudinit/net/tests/test_init.py | 59 +++++++++++++++++++++++++++++--- - 2 files changed, 73 insertions(+), 10 deletions(-) - ---- a/cloudinit/net/__init__.py -+++ b/cloudinit/net/__init__.py -@@ -109,8 +109,22 @@ def is_bond(devname): - return os.path.exists(sys_dev_path(devname, "bonding")) - - --def has_master(devname): -- return os.path.exists(sys_dev_path(devname, path="master")) -+def get_master(devname): -+ """Return the master path for devname, or None if no master""" -+ path = sys_dev_path(devname, path="master") -+ if os.path.exists(path): -+ return path -+ return None -+ -+ -+def master_is_bridge_or_bond(devname): -+ """Return a bool indicating if devname's master is a bridge or bond""" -+ master_path = get_master(devname) -+ if master_path is None: -+ return False -+ bonding_path = os.path.join(master_path, "bonding") -+ bridge_path = os.path.join(master_path, "bridge") -+ return (os.path.exists(bonding_path) or os.path.exists(bridge_path)) - - - def is_netfailover(devname, driver=None): -@@ -158,7 +172,7 @@ def is_netfail_master(devname, driver=No - - Return True if all of the above is True. - """ -- if has_master(devname): -+ if get_master(devname) is not None: - return False - - if driver is None: -@@ -215,7 +229,7 @@ def is_netfail_standby(devname, driver=N - - Return True if all of the above is True. - """ -- if not has_master(devname): -+ if get_master(devname) is None: - return False - - if driver is None: -@@ -790,7 +804,7 @@ def get_interfaces(): - continue - if is_bond(name): - continue -- if has_master(name): -+ if get_master(name) is not None and not master_is_bridge_or_bond(name): - continue - if is_netfailover(name): - continue ---- a/cloudinit/net/tests/test_init.py -+++ b/cloudinit/net/tests/test_init.py -@@ -157,11 +157,40 @@ class TestReadSysNet(CiTestCase): - ensure_file(os.path.join(self.sysdir, 'eth0', 'bonding')) - self.assertTrue(net.is_bond('eth0')) - -- def test_has_master(self): -- """has_master is True when /sys/net/devname/master exists.""" -- self.assertFalse(net.has_master('enP1s1')) -- ensure_file(os.path.join(self.sysdir, 'enP1s1', 'master')) -- self.assertTrue(net.has_master('enP1s1')) -+ def test_get_master(self): -+ """get_master returns the path when /sys/net/devname/master exists.""" -+ self.assertIsNone(net.get_master('enP1s1')) -+ master_path = os.path.join(self.sysdir, 'enP1s1', 'master') -+ ensure_file(master_path) -+ self.assertEqual(master_path, net.get_master('enP1s1')) -+ -+ def test_master_is_bridge_or_bond(self): -+ bridge_mac = 'aa:bb:cc:aa:bb:cc' -+ bond_mac = 'cc:bb:aa:cc:bb:aa' -+ -+ # No master => False -+ write_file(os.path.join(self.sysdir, 'eth1', 'address'), bridge_mac) -+ write_file(os.path.join(self.sysdir, 'eth2', 'address'), bond_mac) -+ -+ self.assertFalse(net.master_is_bridge_or_bond('eth1')) -+ self.assertFalse(net.master_is_bridge_or_bond('eth2')) -+ -+ # masters without bridge/bonding => False -+ write_file(os.path.join(self.sysdir, 'br0', 'address'), bridge_mac) -+ write_file(os.path.join(self.sysdir, 'bond0', 'address'), bond_mac) -+ -+ os.symlink('../br0', os.path.join(self.sysdir, 'eth1', 'master')) -+ os.symlink('../bond0', os.path.join(self.sysdir, 'eth2', 'master')) -+ -+ self.assertFalse(net.master_is_bridge_or_bond('eth1')) -+ self.assertFalse(net.master_is_bridge_or_bond('eth2')) -+ -+ # masters with bridge/bonding => True -+ write_file(os.path.join(self.sysdir, 'br0', 'bridge'), '') -+ write_file(os.path.join(self.sysdir, 'bond0', 'bonding'), '') -+ -+ self.assertTrue(net.master_is_bridge_or_bond('eth1')) -+ self.assertTrue(net.master_is_bridge_or_bond('eth2')) - - def test_is_vlan(self): - """is_vlan is True when /sys/net/devname/uevent has DEVTYPE=vlan.""" -@@ -461,6 +490,26 @@ class TestGetInterfaceMAC(CiTestCase): - expected = [('ens3', mac, None, None)] - self.assertEqual(expected, net.get_interfaces()) - -+ def test_get_interfaces_does_not_skip_phys_members_of_bridges_and_bonds( -+ self -+ ): -+ bridge_mac = 'aa:bb:cc:aa:bb:cc' -+ bond_mac = 'cc:bb:aa:cc:bb:aa' -+ write_file(os.path.join(self.sysdir, 'br0', 'address'), bridge_mac) -+ write_file(os.path.join(self.sysdir, 'br0', 'bridge'), '') -+ -+ write_file(os.path.join(self.sysdir, 'bond0', 'address'), bond_mac) -+ write_file(os.path.join(self.sysdir, 'bond0', 'bonding'), '') -+ -+ write_file(os.path.join(self.sysdir, 'eth1', 'address'), bridge_mac) -+ os.symlink('../br0', os.path.join(self.sysdir, 'eth1', 'master')) -+ -+ write_file(os.path.join(self.sysdir, 'eth2', 'address'), bond_mac) -+ os.symlink('../bond0', os.path.join(self.sysdir, 'eth2', 'master')) -+ -+ interface_names = [interface[0] for interface in net.get_interfaces()] -+ self.assertEqual(['eth1', 'eth2'], sorted(interface_names)) -+ - - class TestInterfaceHasOwnMAC(CiTestCase): - diff --git a/debian/patches/series b/debian/patches/series deleted file mode 100644 index 7922451ab0a..00000000000 --- a/debian/patches/series +++ /dev/null @@ -1 +0,0 @@ -cpick-a7d8d032-get_interfaces-don-t-exclude-bridge-and-bond-members From ebb6dab16f438906e8d3da8c3d1468ffd36e0bdb Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Fri, 1 Nov 2019 11:01:27 -0500 Subject: [PATCH 0352/1174] update changelog (New upstream snapshot 19.2-78-ge8138959). --- debian/changelog | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/debian/changelog b/debian/changelog index 41e806b98b0..9e91fb4e3bd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,63 @@ +cloud-init (19.2-78-ge8138959-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - DataSourceSmartOS: reconfigure network on each boot + [Mike Gerdts] (LP: #1765801) + - Add config for ssh-key import and consuming user-data [Pavel Zakharov] + - net: fix subnet_is_ipv6() for stateless|stateful + [Harald JensÃ¥s] (LP: #1848690) + - OVF: disable custom script execution by default [Xiaofeng Wang] + - cc_puppet: Implement csr_attributes.yaml support [Matthias Baur] + - cloud-init.service: on centos/fedora/redhat wait on + NetworkManager.service (LP: #1843334) + - azure: Do not lock user on instance id change + [Sam Eiderman] (LP: #1849677) + - net/netplan: use ipv6-mtu key for specifying ipv6 mtu values + - Fix usages of yaml, and move yaml_dump to safeyaml.dumps. + [Scott Moser] (LP: #1849640) + - exoscale: Increase url_max_wait to 120s. [Chris Glass] + - net/sysconfig: fix available check on SUSE distros + [Robert Schweikert] (LP: #1849378) + - docs: Fix incorrect Azure IMDS IP address [Joshua Powers] (LP: #1849508) + - introduce .travis.yml + - net: enable infiniband support in eni and sysconfig renderers + [Darren Birkett] (LP: #1847114) + - guestcust_util: handle special characters in config file [Xiaofeng Wang] + - fix some more typos in comments [Dominic Schlegel] + - replace any deprecated log.warn with log.warning + [Dominic Schlegel] (LP: #1508442) + - net: handle openstack dhcpv6-stateless configuration + [Harald JensÃ¥s] (LP: #1847517) + - Add .venv/ to .gitignore [Dominic Schlegel] + - Small typo fixes in code comments. [Dominic Schlegel] + - cloud_test/lxd: Retry container delete a few times + - Add Support for e24cloud to Ec2 datasource. [Scott Moser] (LP: #1696476) + - Add RbxCloud datasource [Adam Dobrawy] + - get_interfaces: don't exclude bridge and bond members (LP: #1846535) + - Add support for Arch Linux in render-cloudcfg [Conrad Hoffmann] + - util: json.dumps on python 2.7 will handle UnicodeDecodeError on binary + (LP: #1801364) + - debian/ubuntu: add missing word to netplan/ENI header (LP: #1845669) + - ovf: do not generate random instance-id for IMC customization path + - sysconfig: only write resolv.conf if network_state has DNS values + (LP: #1843634) + - sysconfig: use distro variant to check if available (LP: #1843584) + - systemd/cloud-init.service.tmpl: start after wicked.service + [Robert Schweikert] + - docs: fix zstack documentation lints + - analyze/show: remove trailing space in output + - Add missing space in warning: "not avalid seed" [Brian Candler] + - pylintrc: add 'enter_context' to generated-members list + - Add datasource for ZStack platform. [Shixin Ruan] (LP: #1841181) + - docs: organize TOC and update summary of project [Joshua Powers] + - tools: make clean now cleans the dev directory, not the system + - docs: create cli specific page [Joshua Powers] + - docs: added output examples to analyze.rst [Joshua Powers] + - docs: doc8 fixes for instancedata page [Joshua Powers] + - docs: clean up formatting, organize boot page [Joshua Powers] + + -- Ryan Harper Fri, 01 Nov 2019 11:01:15 -0500 + cloud-init (19.2-36-g059d049c-0ubuntu3) eoan; urgency=medium * debian/cloud-init.config get_yaml_list should return only the value From bdec90b8efc3fed9890f0d1c4f7966c493f0ef4c Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Fri, 1 Nov 2019 11:03:38 -0500 Subject: [PATCH 0353/1174] releasing cloud-init version 19.2-78-ge8138959-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9e91fb4e3bd..0ffa02d9849 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.2-78-ge8138959-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.2-78-ge8138959-0ubuntu1) focal; urgency=medium * New upstream snapshot. - DataSourceSmartOS: reconfigure network on each boot From c1d129e24b8db6b1b721c9e3fb5102f0b16afe58 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 5 Nov 2019 14:51:11 -0700 Subject: [PATCH 0354/1174] update changelog (New upstream release 19.3). --- debian/changelog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/debian/changelog b/debian/changelog index 0ffa02d9849..3a45066be87 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +cloud-init (19.3-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream release. + - Release 19.3 (LP: #1851428) + - azure: support matching dhcp route-metrics for dual-stack ipv4 ipv6 + (LP: #1850308) + - configdrive: fix subplatform config-drive for /config-drive source + [David Kindred] (LP: #1849731) + + -- Chad Smith Tue, 05 Nov 2019 14:50:06 -0700 + cloud-init (19.2-78-ge8138959-0ubuntu1) focal; urgency=medium * New upstream snapshot. From f19fb531204c521c0640e982bd7f1a874338c0d4 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 5 Nov 2019 14:51:19 -0700 Subject: [PATCH 0355/1174] releasing cloud-init version 19.3-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 3a45066be87..68076ccdc93 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.3-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.3-0ubuntu1) focal; urgency=medium * New upstream release. - Release 19.3 (LP: #1851428) From 1558bf07838c7e52e8206ae99a11dbcc37f8aea6 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 22 Nov 2019 20:09:20 -0700 Subject: [PATCH 0356/1174] update changelog (New upstream snapshot 19.3-30-g4bc399e0). --- debian/changelog | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/debian/changelog b/debian/changelog index 68076ccdc93..33f6065df30 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,44 @@ +cloud-init (19.3-30-g4bc399e0-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - ec2: Add support for AWS IMDS v2 (session-oriented) (#55) + - tests: Fix cloudsigma tests when no dmidecode data is present. (#57) + [Scott Moser] + - net: IPv6, accept_ra, slaac, stateless (#51) + [Harald] (LP: #1806014, #1808647) + - docs: Update the configdrive datasource links (#44) + [Joshua Powers] (LP: #1852461) + - lp-to-git-users: adding PengpengSun [Pengpeng Sun] + - lp-to-git-users: adding trstringer [Thomas Stringer] + - lp-to-git-users: adding hjensas [Harald JensÃ¥s] + - distro: correctly set usr_lib_exec path for FreeBSD distro (#40) + [Igor Galić] (LP: #1852491) + - azure: support secondary ipv6 addresses (#33) + - Fix metadata check when local-hostname is null (#32) + [Mark Goddard] (LP: #1852100) + - Merge pull request #38 from blackboxsw/cleanup/run-ci-on-pull-request + - switch default FreeBSD salt minion pkg from py27 to py36 + [Dominic Schlegel] + - lp-to-git-users: adding igalic [Igor Galić] + - add data-server dns entry as new metadata server detection + [Joshua Hügli] + - lp-to-git-users: adding chrisglass [Chris Glass] + - lp-to-git-users: adding larsks [Lars Kellogg-Stedman] + - Merge pull request #31 from raharper/fix/pycodestyle-tip + - reporting: Using a uuid to enforce uniqueness on the KVP keys. [momousta] + - lp-to-git-users: adding paride [Paride Legovini] + - lp-to-git-users: adding powersj [Joshua Powers] + - lp-to-git-users: adding blackboxsw + - lp-to-git-users: adding raharper + - docs: touchups in rtd intro and README.md + - doc: update launchpad git refs to github + - tools: migrate script needs to write tools/.lp-to-git-user + - github: drop pull-request template to prepare for migration + - tools: add migrate-lp-user-to-github script to link LP to github + - github: new basic project readme + + -- Chad Smith Fri, 22 Nov 2019 20:09:10 -0700 + cloud-init (19.3-0ubuntu1) focal; urgency=medium * New upstream release. From 54b2dea6bbc8b981126938377e0cd11720de4630 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 22 Nov 2019 20:09:24 -0700 Subject: [PATCH 0357/1174] releasing cloud-init version 19.3-30-g4bc399e0-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 33f6065df30..b3e07370d6a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.3-30-g4bc399e0-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.3-30-g4bc399e0-0ubuntu1) focal; urgency=medium * New upstream snapshot. - ec2: Add support for AWS IMDS v2 (session-oriented) (#55) From 7c6432541524cf4e0159d3a7ab4c94d3ccdaaf0d Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 12:31:25 +0100 Subject: [PATCH 0358/1174] d/changelog: remove trailing whitespaces Fixes lintian tag: file-contains-trailing-whitespace --- debian/changelog | 99 ++++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/debian/changelog b/debian/changelog index b3e07370d6a..5ae5436e55a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1370,7 +1370,7 @@ 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 + - sysconfig: include GATEWAY value if set in subnet [Ryan Harper] (LP: #1686856) -- Scott Moser Wed, 19 Jul 2017 07:54:57 -0400 @@ -1605,7 +1605,7 @@ cloud-init (0.7.9-90-g61eb03fe-0ubuntu2) UNRELEASED; urgency=medium cloud-init (0.7.9-90-g61eb03fe-0ubuntu1) zesty; urgency=medium * New upstream snapshot. - - OpenStack: add 'dvs' to the list of physical link types. + - OpenStack: add 'dvs' to the list of physical link types. (LP: #1674946) -- Scott Moser Mon, 03 Apr 2017 11:10:38 -0400 @@ -1613,7 +1613,7 @@ cloud-init (0.7.9-90-g61eb03fe-0ubuntu1) zesty; urgency=medium 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. + - 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. @@ -1670,20 +1670,20 @@ cloud-init (0.7.9-68-gef18b8ac-0ubuntu1) zesty; urgency=medium cloud-init (0.7.9-66-g5beecdf8-0ubuntu1) zesty; urgency=medium * New upstream snapshot. - - net: add renderers for automatically selecting the renderer. + - 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. + - 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. + - 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 + - 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. @@ -2171,7 +2171,7 @@ 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 + - 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 @@ -2239,7 +2239,7 @@ cloud-init (0.7.7~bzr1212-0ubuntu1) xenial; urgency=medium cloud-init (0.7.7~bzr1209-0ubuntu1) xenial; urgency=medium * New upstream snapshot. - - fallback net config: do not consider devices starting with + - fallback net config: do not consider devices starting with 'veth' (LP: #1569064) -- Scott Moser Thu, 14 Apr 2016 16:24:38 -0400 @@ -2254,7 +2254,7 @@ cloud-init (0.7.7~bzr1208-0ubuntu1) xenial; urgency=medium - 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 + - 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) @@ -2306,7 +2306,7 @@ cloud-init (0.7.7~bzr1189-0ubuntu1) xenial; urgency=medium 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 + * do not rely on network metadata service on every boot for ConfigDrive Openstack Azure (LP: #1553815) -- Scott Moser Thu, 24 Mar 2016 17:36:40 -0400 @@ -2553,7 +2553,7 @@ 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 + networking service. The requirement for network needs to be expressed as a dependency on network-online.target. LP: #1440180. -- Steve Langasek Thu, 09 Apr 2015 07:35:55 -0700 @@ -2696,7 +2696,7 @@ cloud-init (0.7.6~bzr1020-0ubuntu1) utopic; urgency=medium * New upstream snapshot. * cc_grub_dpkg: consider /dev/xvda as candidate for grub installation (LP: #1336855) - * resizefs: fix backgrounding of resizefs (LP: #1338614) + * resizefs: fix backgrounding of resizefs (LP: #1338614) * cloud-init-blocknet: remove debug code -- Scott Moser Tue, 23 Sep 2014 14:20:09 -0400 @@ -2977,7 +2977,7 @@ cloud-init (0.7.3~bzr850-0ubuntu1) saucy; urgency=low cloud-init (0.7.3~bzr849-0ubuntu2) saucy; urgency=low - * debian/control: fix bad dependency on python-jsonpatch + * 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). @@ -3094,14 +3094,14 @@ cloud-init (0.7.2~bzr795-0ubuntu1) raring; urgency=low 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 + * 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 + 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 + 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) @@ -3163,7 +3163,7 @@ cloud-init (0.7.1-0ubuntu1) raring; urgency=low 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 + * 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 @@ -3217,7 +3217,7 @@ cloud-init (0.7.0~bzr659-0ubuntu1) quantal; urgency=low * 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 + * 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) @@ -3278,7 +3278,7 @@ cloud-init (0.7.0~bzr633-0ubuntu1) quantal; urgency=low 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: + * improve mirror selection for a distro: * support arm mirrors (LP: #1028501) * support seeding security mirror (LP: #1006963) * support dns mirrors including availability-zone reference @@ -3295,7 +3295,7 @@ 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) + * emit the cloud-config event (LP: #1028674) * write timestamps to console on reboot and shutdown (LP: #1018554) -- Scott Moser Fri, 03 Aug 2012 14:55:37 -0400 @@ -3396,7 +3396,7 @@ 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 + * 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 @@ -3427,7 +3427,7 @@ cloud-init (0.6.3~bzr539-0ubuntu1) precise; urgency=low * run-parts now uses internal implementation rather than separate command. * add MaaS datasource (LP: #942061) - * debian/cloud-init.postinst: address population of apt_pipeline + * 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 @@ -3575,7 +3575,7 @@ 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 + * 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 Mon, 08 Aug 2011 12:46:56 -0500 @@ -3603,7 +3603,7 @@ cloud-init (0.6.1-0ubuntu12) oneiric; urgency=low [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) @@ -3720,7 +3720,7 @@ cloud-init (0.6.1-0ubuntu1) natty; urgency=low cloud-init (0.6.0-0ubuntu4) natty; urgency=low - * fix running of user scripts (LP: #711480) (cherry pick 344) + * fix running of user scripts (LP: #711480) (cherry pick 344) * fix 2 lintian warnings -- Scott Moser Tue, 01 Feb 2011 16:15:30 -0500 @@ -3763,7 +3763,7 @@ cloud-init (0.6.0-0ubuntu1) natty; urgency=low * 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, + * 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 @@ -3775,7 +3775,7 @@ cloud-init (0.6.0-0ubuntu1) natty; urgency=low (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 + * do not require public key if private is given in ssh cloud-config (LP: #648905) -- Scott Moser Wed, 26 Jan 2011 17:28:36 -0500 @@ -3878,7 +3878,7 @@ cloud-init (0.5.12-0ubuntu8) maverick; urgency=low cloud-init (0.5.12-0ubuntu7) maverick; urgency=low - * update-grub-legacy-ec2: + * 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 @@ -3889,7 +3889,7 @@ cloud-init (0.5.12-0ubuntu7) maverick; urgency=low cloud-init (0.5.12-0ubuntu6) maverick; urgency=low * fix installation error - * add quilt-setup rule for package development + * add quilt-setup rule for package development -- Scott Moser Tue, 13 Jul 2010 12:04:21 -0400 @@ -3925,7 +3925,7 @@ 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 support for setting debconf selections * add cloud-config support for debconf selections (LP: #582667), byobu enablement, and ssh-import-lp-id @@ -4115,7 +4115,7 @@ ec2-init (0.4.999-0ubuntu5) karmic; urgency=low ec2-init (0.4.999-0ubuntu4) karmic; urgency=low - * set locale to en_US.UTF-8 if get_location_from_availability_zone + * set locale to en_US.UTF-8 if get_location_from_availability_zone doesn't have a match (LP: #407949) -- Scott Moser Tue, 20 Oct 2009 09:57:49 -0400 @@ -4199,9 +4199,9 @@ ec2-init (0.3.4ubuntu6) karmic; urgency=low ec2-init (0.3.4ubuntu5) karmic; urgency=low - * debian/init: Move instance reboot detection out of python + * debian/init: Move instance reboot detection out of python scripts and move them to the init script. - * debian/ec2-set-defaults.py: + * 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 @@ -4224,7 +4224,7 @@ 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: + * ec2-set-apt-sources.py: - Move sources.list to /var/ec2 so it doesnt get removed after user reboots. * ec2-set-defaults.py: @@ -4236,7 +4236,7 @@ ec2-init (0.3.4ubuntu3) karmic; urgency=low ec2-init (0.3.4ubuntu2) karmic; urgency=low - * Really change the locale when setting up an instance. (LP: #341066) + * 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) @@ -4250,7 +4250,7 @@ ec2-init (0.3.4ubuntu1) karmic; urgency=low ec2-init (0.3.3ubuntu12) jaunty; urgency=low - * ec2-run-user-data.py: Fix error. + * ec2-run-user-data.py: Fix error. -- Chuck Short Tue, 07 Apr 2009 08:14:07 -0400 @@ -4271,27 +4271,27 @@ 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) + - Dont use public_hostname in /etc/hosts. (LP: #352745) -- Chuck Short 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. + - Use a template to generate the sources.list and generate it based on the lsb_release. -- Chuck Short 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. + - Add the ubuntu-on-ec2 ppa. -- Chuck Short Tue, 31 Mar 2009 09:37:13 -0400 ec2-init (0.3.3ubuntu7) jaunty; urgency=low - * debian/rules: Fix typo. + * debian/rules: Fix typo. -- Chuck Short Sun, 22 Mar 2009 17:14:16 -0400 @@ -4299,7 +4299,7 @@ ec2-init (0.3.3ubuntu6) jaunty; urgency=low * Set the configuration file to jaunty. * ec2-fetch-credentials: Fix typo. - * ec2-set-defaults.py: + * ec2-set-defaults.py: - Remove timezone change when booting the instance. - Redirect output to /dev/null. * ec2-set-apt-sources.py: @@ -4343,8 +4343,8 @@ ec2-init (0.3.3ubuntu3~intrepid4) intrepid; urgency=low 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. + * ec2-run-user-data.py :Dont leave files around and log the + output to syslog. -- Chuck Short Thu, 26 Feb 2009 10:24:35 -0500 @@ -4360,7 +4360,7 @@ ec2-init (0.3.3ubuntu2) jaunty; urgency=low ec2-init (0.3.3ubuntu1) jaunty; urgency=low - * debian/init: Fix init script. + * debian/init: Fix init script. -- Chuck Short Fri, 20 Feb 2009 09:22:54 -0500 @@ -4379,7 +4379,7 @@ ec2-init (0.3.3) jaunty; urgency=low - Add python-configobj as a dependency. * debian/{install,dirs} - Create an /etc/ec2-init to read the configuration file and install it. - + -- Chuck Short Mon, 09 Feb 2009 10:35:56 -0500 ec2-init (0.3.2) jaunty; urgency=low @@ -4393,7 +4393,7 @@ ec2-init (0.3.2) jaunty; urgency=low 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 + - 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 @@ -4412,7 +4412,7 @@ ec2-init (0.3.1) jaunty; urgency=low ec2-init (0.3) jaunty; urgency=low - * ec2-run-user-data: Fix python error when writing a file to the disk. + * ec2-run-user-data: Fix python error when writing a file to the disk. -- Chuck Short Thu, 15 Jan 2009 11:49:08 -0500 @@ -4430,4 +4430,3 @@ ec2-init (0.1) intrepid; urgency=low * Initial release (LP: #269434). -- Soren Hansen Fri, 12 Sep 2008 15:30:32 +0200 - From 914ed4faf74645362c8de07a720183370450c433 Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 12:55:05 +0100 Subject: [PATCH 0359/1174] d/cloud-init.postinst use 'command -v' to check if grub-install exists This avoid the need to specify the full path of grub-install in the postinst script. Fixes lintian tag: command-with-path-in-maintainer-script --- debian/cloud-init.postinst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst index 93d58e2e769..de42c712fdb 100644 --- a/debian/cloud-init.postinst +++ b/debian/cloud-init.postinst @@ -138,7 +138,7 @@ fix_1336855() { [ -r /proc/cmdline ] || return 0 # Don't do anything unless we have grub - [ -x /usr/sbin/grub-install ] || return 0 + command -v grub-install > /dev/null 2>&1 || return 0 # First, identify the kernel device for the parent. for parm in $(cat /proc/cmdline); do From d06a4b2e6281d662d054477ac9641677a98e8cc5 Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 12:58:24 +0100 Subject: [PATCH 0360/1174] debian maint scripts: replace the '-e' in the shebang with a 'set -e' Fixes lintian tag: maintainer-script-without-set-e --- debian/cloud-init.config | 4 +++- debian/cloud-init.postinst | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/debian/cloud-init.config b/debian/cloud-init.config index aacb1bfc53b..67fa084ff4a 100644 --- a/debian/cloud-init.config +++ b/debian/cloud-init.config @@ -1,4 +1,6 @@ -#!/bin/sh -e +#!/bin/sh + +set -e . /usr/share/debconf/confmodule diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst index de42c712fdb..94039d18e3c 100644 --- a/debian/cloud-init.postinst +++ b/debian/cloud-init.postinst @@ -1,4 +1,6 @@ -#!/bin/sh -e +#!/bin/sh + +set -e . /usr/share/debconf/confmodule From 03293f54609ecfad4389fc0d2b6da63961e6853b Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 13:00:37 +0100 Subject: [PATCH 0361/1174] d/control: add a Homepage field (https://cloud-init.io/) Fixes lintian tag: no-homepage-field --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index b1e2e8ff02a..6840aea6bcd 100644 --- a/debian/control +++ b/debian/control @@ -1,6 +1,7 @@ Source: cloud-init Section: admin Priority: optional +Homepage: https://cloud-init.io/ Maintainer: Ubuntu Developers Build-Depends: debhelper (>= 9.20160709), dh-python, From d6aadb8399f5653cf8474e40b8fe4dfbd51bf546 Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 13:02:08 +0100 Subject: [PATCH 0362/1174] d/control: add Rules-Requires-Root: no The package doesn't need root/fakeroot to build Fixes lintian tag: rules-requires-root-missing --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index 6840aea6bcd..1f204b16d67 100644 --- a/debian/control +++ b/debian/control @@ -30,6 +30,7 @@ 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 +Rules-Requires-Root: no Package: cloud-init Architecture: all From fea85c45a79017e5e01f74424e228090fff738e2 Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 13:12:20 +0100 Subject: [PATCH 0363/1174] d/control: rewrite the package description The previous one wasn't really informative, plus fixes lintian tag: extended-description-is-probably-too-short. --- debian/control | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/debian/control b/debian/control index 1f204b16d67..28f4284d032 100644 --- a/debian/control +++ b/debian/control @@ -46,6 +46,21 @@ Depends: cloud-guest-utils | cloud-utils, ${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. +Description: initialization and customization tool for cloud instances + Cloud-init is the industry standard multi-distribution method for + cross-platform cloud instance initialization. It is supported across all major + public cloud providers, provisioning systems for private cloud infrastructure, + and bare-metal installations. + . + Cloud instances are initialized from a disk image and instance data: + . + * Cloud metadata + * User data (optional) + * Vendor data (optional) + . + Cloud-init will identify the cloud it is running on during boot, read any + provided metadata from the cloud and initialize the system accordingly. This + may involve setting up the network and storage devices to configuring SSH + access key and many other aspects of a system. Later on the cloud-init will + also parse and process any optional user or vendor data that was passed to + the instance. From 886b3b34279d8eade07e781fa47ec025653c93a6 Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 13:16:53 +0100 Subject: [PATCH 0364/1174] d/rules: do not use dpkg-parsechangelog to get DEB_VERSION Since dpkg 1.16.1, this could be replaced by including the /usr/share/dpkg/pkg-info.mk Makefile library. dpkg 1.16.1 was already present in Precise. Fixes lintian tag: debian-rules-parses-dpkg-parsechangelog --- debian/rules | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index c5c873d2fe1..90f98bb5c7f 100755 --- a/debian/rules +++ b/debian/rules @@ -1,7 +1,9 @@ #!/usr/bin/make -f + +include /usr/share/dpkg/pkg-info.mk + INIT_SYSTEM ?= systemd export PYBUILD_INSTALL_ARGS=--init-system=$(INIT_SYSTEM) -DEB_VERSION := $(shell dpkg-parsechangelog --show-field=Version) %: dh $@ --with python3,systemd --buildsystem pybuild From 2285a9bfa2e579c0d598d670d6a559ece2c503fd Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 13:31:59 +0100 Subject: [PATCH 0365/1174] d/cloud-init.postinst: guard the udevadm call Fixes lintian tag: udevadm-called-without-guard This was not really needed, as sanity checks are done before and after callind udevadm. The only effect of this change will be making lintian happy. --- debian/cloud-init.postinst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst index 94039d18e3c..acd45fd1776 100644 --- a/debian/cloud-init.postinst +++ b/debian/cloud-init.postinst @@ -180,7 +180,7 @@ fix_1336855() { # 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}') + block_path=$(udevadm info -q path -n $root_dev | awk '-Fblock/' '{print$NF}') || return 0 # Extract the parent device name. This works where the device is a block device # example output: /dev/sda From ea85960e1baf75f8ccc6c398d6f14e939d2f57fd Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 13:35:57 +0100 Subject: [PATCH 0366/1174] d/control: switch from git:// to https:// in the Vcs-Git field Fixes lintian tag: vcs-field-uses-insecure-uri. A git+ssh URI would trigger: vcs-field-uses-not-recommended-uri-format. --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 28f4284d032..d7e315f2671 100644 --- a/debian/control +++ b/debian/control @@ -28,7 +28,7 @@ Build-Depends: debhelper (>= 9.20160709), 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 +Vcs-Git: https://git.launchpad.net/cloud-init -b ubuntu/devel Standards-Version: 3.9.8 Rules-Requires-Root: no From 1d88413b4e22408c0db24eed09c7a8daa84d0cb4 Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 14:00:34 +0100 Subject: [PATCH 0367/1174] debian: add i18n support to the debconf template files Fixes lintian tags: - untranslatable-debconf-templates - not-using-po-debconf --- debian/cloud-init.templates | 4 +- debian/po/POTFILES.in | 1 + debian/po/templates.pot | 173 ++++++++++++++++++++++++++++++++++++ 3 files changed, 176 insertions(+), 2 deletions(-) create mode 100644 debian/po/POTFILES.in create mode 100644 debian/po/templates.pot diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index e5efdad3f8f..b8d4c6c4490 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -2,8 +2,8 @@ Template: cloud-init/datasources Type: multiselect Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, None Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, None: Failsafe datasource -Description: Which data sources should be searched? +__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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, 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. . diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in new file mode 100644 index 00000000000..ef9231b19fa --- /dev/null +++ b/debian/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] cloud-init.templates diff --git a/debian/po/templates.pot b/debian/po/templates.pot new file mode 100644 index 00000000000..c6254cada91 --- /dev/null +++ b/debian/po/templates.pot @@ -0,0 +1,173 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the cloud-init package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: cloud-init\n" +"Report-Msgid-Bugs-To: cloud-init@packages.debian.org\n" +"POT-Creation-Date: 2019-11-29 13:59+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "NoCloud: Reads info from /var/lib/cloud/seed only" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "ConfigDrive: Reads data from Openstack Config Drive" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "OpenNebula: read from OpenNebula context disk" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "DigitalOcean: reads data from Droplet datasource" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "Azure: read from MS Azure cdrom. Requires walinux-agent" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "AltCloud: config disks for RHEVm and vSphere" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "OVF: Reads data from OVF Transports" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "MAAS: Reads data from Ubuntu MAAS" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "GCE: google compute metadata service" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "OpenStack: native openstack metadata service" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "CloudSigma: metadata over serial for cloudsigma.com" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "SmartOS: Read from SmartOS metadata service" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "Bigstep: Bigstep metadata service" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "Scaleway: Scaleway metadata service" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "AliYun: Alibaba metadata service" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "Ec2: reads data from EC2 Metadata service" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "CloudStack: Read from CloudStack metadata service" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "Hetzner: Hetzner Cloud" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "IBMCloud: IBM Cloud. Previously softlayer or bluemix." +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "Oracle: Oracle Compute Infrastructure" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "Exoscale: Exoscale" +msgstr "" + +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "None: Failsafe datasource" +msgstr "" + +#. Type: multiselect +#. Description +#: ../cloud-init.templates:1002 +msgid "Which data sources should be searched?" +msgstr "" + +#. Type: multiselect +#. Description +#: ../cloud-init.templates:1002 +msgid "" +"Cloud-init supports searching different \"Data Sources\" for information " +"that it uses to configure a cloud instance." +msgstr "" + +#. Type: multiselect +#. Description +#: ../cloud-init.templates:1002 +msgid "" +"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." +msgstr "" From 536768f7722a1eb187312a9003dfd0a739854ddd Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 14:06:15 +0100 Subject: [PATCH 0368/1174] debian: add upstream metadata file Fixes lintian tag: upstream-metadata-file-is-missing --- debian/upstream/metadata | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 debian/upstream/metadata diff --git a/debian/upstream/metadata b/debian/upstream/metadata new file mode 100644 index 00000000000..46b4cd69004 --- /dev/null +++ b/debian/upstream/metadata @@ -0,0 +1,5 @@ +Name: cloud-init +Contact: Josh Powers +Repository: https://github.com/canonical/cloud-init.git +Repository-Browse: https://github.com/canonical/cloud-init +Bug-Submit: https://bugs.launchpad.net/cloud-init From ca59111dbb5e3b10a60c681590b4e8351aa9e7ba Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 14:09:48 +0100 Subject: [PATCH 0369/1174] d/cloud-init.preinst: remove support for ancient versions Remove support for versions so old they don't even trigger the maintainer-script-supports-ancient-package-version lintian tag. --- debian/cloud-init.preinst | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/debian/cloud-init.preinst b/debian/cloud-init.preinst index c8406e31e79..588db85482b 100644 --- a/debian/cloud-init.preinst +++ b/debian/cloud-init.preinst @@ -183,31 +183,6 @@ cleanup_lp1552999() { 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 From 9b6830d670d65b14104a7c6e68704d45cfcb966b Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 14:15:35 +0100 Subject: [PATCH 0370/1174] d/cherry-pick: always indent with spaces (remove stray tabs) --- debian/cherry-pick | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/cherry-pick b/debian/cherry-pick index dd557246a01..0a5cea39b34 100755 --- a/debian/cherry-pick +++ b/debian/cherry-pick @@ -102,10 +102,10 @@ main() { shift; done - [ -n "$TEMP_D" ] || + [ -n "$TEMP_D" ] || TEMP_D=$(mktemp -d "${TMPDIR:-/tmp}/${0##*/}.XXXXXX") || - { error "failed to make tempdir"; return 1; } - trap cleanup EXIT + { error "failed to make tempdir"; return 1; } + trap cleanup EXIT [ $# -gt 0 ] || { bad_Usage "must provide commit-ish"; return; } From 3588738fa057c6852c576b5b4ab86e5e0f71532d Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 14:44:56 +0100 Subject: [PATCH 0371/1174] d/control: Bump Standards-Version to 4.4.1 (no changes needed) Fixes lintian tag: ancient-standards-version --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index d7e315f2671..9c5a0cfe7d1 100644 --- a/debian/control +++ b/debian/control @@ -29,7 +29,7 @@ Build-Depends: debhelper (>= 9.20160709), XS-Python-Version: all Vcs-Browser: https://git.launchpad.net/cloud-init/?h=ubuntu/devel Vcs-Git: https://git.launchpad.net/cloud-init -b ubuntu/devel -Standards-Version: 3.9.8 +Standards-Version: 4.4.1 Rules-Requires-Root: no Package: cloud-init From 40e5812426f0a394970802f78814d63322cb2566 Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 14:50:30 +0100 Subject: [PATCH 0372/1174] debian: override package-supports-alternative-init-but-no-init.d-script Add override for package-supports-alternative-init-but-no-init.d-script. Systemd is not an alternate but the only init system supported by cloud-init on Ubuntu and Debian. --- debian/cloud-init.lintian-overrides | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/cloud-init.lintian-overrides b/debian/cloud-init.lintian-overrides index 58fac0d2c02..45037735b69 100644 --- a/debian/cloud-init.lintian-overrides +++ b/debian/cloud-init.lintian-overrides @@ -2,3 +2,4 @@ cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/sy cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/systemd/system/cloud-final.service cloud-init.target cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/systemd/system/cloud-init-local.service cloud-init.target cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/systemd/system/cloud-init.service cloud-init.target +cloud-init binary: package-supports-alternative-init-but-no-init.d-script From ba07024bc039a8a04fac31bc04f87fc2b9906b63 Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 29 Nov 2019 17:29:29 +0100 Subject: [PATCH 0373/1174] debian: always indent with spaces in the maintainer scripts --- debian/cloud-init.config | 101 +++++++++++++++++++------------------- debian/cloud-init.preinst | 86 ++++++++++++++++---------------- 2 files changed, 93 insertions(+), 94 deletions(-) diff --git a/debian/cloud-init.config b/debian/cloud-init.config index 67fa084ff4a..abaefbbb6a9 100644 --- a/debian/cloud-init.config +++ b/debian/cloud-init.config @@ -5,43 +5,43 @@ set -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 + 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 + # 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 ]' or 'key: [en1, en2]' formats. - local file="$1" key="$2" default="$3" - [ -f "$file" ] || return 1 - # strip all whitespace, delete lines not matching key:, - # strip key: and [] and replace ',' with ', ' - RET="$(sed -e "s/\s//g" -e "/^$key:/"'!'d \ - -e "s/$key:\[//" -e "s/]//" -e "s/,/, /g" "$file")" - [ -n "$RET" ] || RET="$default" + # 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 ]' or 'key: [en1, en2]' formats. + local file="$1" key="$2" default="$3" + [ -f "$file" ] || return 1 + # strip all whitespace, delete lines not matching key:, + # strip key: and [] and replace ',' with ', ' + RET="$(sed -e "s/\s//g" -e "/^$key:/"'!'d \ + -e "s/$key:\[//" -e "s/]//" -e "s/,/, /g" "$file")" + [ -n "$RET" ] || RET="$default" } # old_dpkg_cfg is very old file that is no longer read by cloud-init. @@ -49,32 +49,31 @@ get_yaml_list() { 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}" + 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 + 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 + [ "${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.preinst b/debian/cloud-init.preinst index 588db85482b..6168aecf2a0 100644 --- a/debian/cloud-init.preinst +++ b/debian/cloud-init.preinst @@ -3,41 +3,41 @@ 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 + 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 + 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 } @@ -182,20 +182,20 @@ cleanup_lp1552999() { } case "$1" in - install|upgrade) - 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 + install|upgrade) + 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 From a906ecad4d40c896a81a5ef6fded4acdf3abec29 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 2 Dec 2019 16:26:28 -0700 Subject: [PATCH 0374/1174] update changelog (New upstream snapshot 19.3-40-gf69d33a7). --- debian/changelog | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5ae5436e55a..4305e8087b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,23 @@ +cloud-init (19.3-40-gf69d33a7-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - url_helper: read_file_or_url should pass headers param into readurl + (#66) (LP: #1854084) + - lp-to-git-users: adding elafontaine (#74) [Eric Lafontaine] + - lp-to-git-users: adding xiaofengw-vmware [Xiaofeng Wang] + - dmidecode: log result *after* stripping [Igor Galić] + - cloud_tests: add azure platform support to integration tests + [ahosmanmsft] + - set_passwords: support for FreeBSD (#46) [Igor Galić] + - tools: migrate-lp-user-to-github removes repo_dir if created (#35) + - Correct jumbled documentation for cc_set_hostname module (#64) + [do3meli] (LP: #1853543) + - FreeBSD: fix for get_linux_distro() and lru_cache (#59) + [Igor Galić] (LP: #1815030) + - lp-to-git-users: adding do3meli [Dominic Schlegel] + + -- Chad Smith Mon, 02 Dec 2019 16:26:24 -0700 + cloud-init (19.3-30-g4bc399e0-0ubuntu1) focal; urgency=medium * New upstream snapshot. From 5480a85d7f4f13ad7418d2cd4d780f301f7221d5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 2 Dec 2019 16:26:35 -0700 Subject: [PATCH 0375/1174] releasing cloud-init version 19.3-40-gf69d33a7-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4305e8087b1..c7b7f375ee7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.3-40-gf69d33a7-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.3-40-gf69d33a7-0ubuntu1) focal; urgency=medium * New upstream snapshot. - url_helper: read_file_or_url should pass headers param into readurl From 39bd31bf476f51b2a3487be9235626bb049470e0 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 3 Dec 2019 14:46:32 -0700 Subject: [PATCH 0376/1174] update changelog (New upstream snapshot 19.3-41-gc4735dd3). --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index c7b7f375ee7..1e64e49e2c4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (19.3-41-gc4735dd3-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Fix linting failure in test_url_helper (#83) [Eric Lafontaine] + + -- Chad Smith Tue, 03 Dec 2019 14:46:25 -0700 + cloud-init (19.3-40-gf69d33a7-0ubuntu1) focal; urgency=medium * New upstream snapshot. From f8b5ef099c82bb5b4aa4a067b8e23d48ffbe0e88 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 3 Dec 2019 14:46:36 -0700 Subject: [PATCH 0377/1174] releasing cloud-init version 19.3-41-gc4735dd3-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 1e64e49e2c4..ce326791c00 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.3-41-gc4735dd3-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.3-41-gc4735dd3-0ubuntu1) focal; urgency=medium * New upstream snapshot. - Fix linting failure in test_url_helper (#83) [Eric Lafontaine] From 8143518ad3ae2b00d49cf6bec47ff1bd558a22bd Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Thu, 12 Dec 2019 17:32:56 +0100 Subject: [PATCH 0378/1174] d/control: drop alternate dependency on ifupdown Drop alternate dependency on ifupdown as it is no longer supported in Ubuntu. LP: #1855557 --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 9c5a0cfe7d1..a9f0a3e5492 100644 --- a/debian/control +++ b/debian/control @@ -37,7 +37,7 @@ Architecture: all Depends: cloud-guest-utils | cloud-utils, isc-dhcp-client, iproute2, - netplan.io | ifupdown, + netplan.io, procps, python3, python3-requests, From d37d5241592d7c568e78b0d819826311e29f5d75 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 12 Dec 2019 16:05:41 -0700 Subject: [PATCH 0379/1174] update changelog (New upstream snapshot 19.3-74-g129b1c4e). --- debian/changelog | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/debian/changelog b/debian/changelog index ce326791c00..7c08eee65a1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,36 @@ +cloud-init (19.3-74-g129b1c4e-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - azure: avoid re-running cloud-init when instance-id is byte-swapped + (#84) [AOhassan] + - fix unlocking method on FreeBSD [Igor Galić] (LP: #1854594) + - debian: add reference to the manpages [Joshua Powers] + - ds_identify: if /sys is not available use dmidecode (#42) + [Igor Galić] (LP: #1852442) + - docs: add cloud-id manpage [Joshua Powers] + - docs: add cloud-init-per manpage [Joshua Powers] + - docs: add cloud-init manpage [Joshua Powers] + - docs: add additional details to per-instance/once [Joshua Powers] + - Merge pull request #96 from fred-lefebvre/master [Joshua Powers] + - Update doc-requirements.txt [Joshua Powers] + - doc-requirements: add missing dep [Joshua Powers] + - Merge pull request #95 from powersj/docs/bugs [Joshua Powers] + - dhcp: Support RedHat dhcp rfc3442 lease format for option 121 (#76) + [Eric Lafontaine] (LP: #1850642) + - network_state: handle empty v1 config (#45) (LP: #1852496) + - Merge pull request #94 from gaughen/patch-1 [Joshua Powers] + - docs: fix line length and remove highlighting [Joshua Powers] + - docs: Add security.md to readthedocs [Joshua Powers] + - Multiple file fix for AuthorizedKeysFile config (#60) [Eduardo Otubo] + - Merge pull request #88 from OddBloke/travis [Joshua Powers] + - doc: update links on README.md [Joshua Powers] + - doc: Updates to wording of README.md [Joshua Powers] + - Add security.md [Joshua Powers] + - setup.py: Amazon Linux sets libexec to /usr/libexec (#52) + [Frederick Lefebvre] + + -- Chad Smith Thu, 12 Dec 2019 16:05:35 -0700 + cloud-init (19.3-41-gc4735dd3-0ubuntu1) focal; urgency=medium * New upstream snapshot. From 94494450e1b2984a93ff4b541a29fc8aaae0ade2 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 12 Dec 2019 16:05:44 -0700 Subject: [PATCH 0380/1174] releasing cloud-init version 19.3-74-g129b1c4e-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 7c08eee65a1..ddeed027c73 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.3-74-g129b1c4e-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.3-74-g129b1c4e-0ubuntu1) focal; urgency=medium * New upstream snapshot. - azure: avoid re-running cloud-init when instance-id is byte-swapped From fba17291d4dabc2ae4e718f4112e260ec776f22e Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 Dec 2019 11:02:53 -0700 Subject: [PATCH 0381/1174] update changelog (New upstream snapshot 19.4-1-g8c96cbc1). --- debian/changelog | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/debian/changelog b/debian/changelog index ddeed027c73..0a6cb5247ef 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,29 @@ +cloud-init (19.4-1-g8c96cbc1-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - ci: emit names of tests run in Travis (#120) + - Release 19.4 (LP: #1856761) + - rbxcloud: fix dsname in RbxCloud [Adam Dobrawy] (LP: #1855196) + - tests: Add tests for value of dsname in datasources [Adam Dobrawy] + - apport: Add RbxCloud ds [Adam Dobrawy] + - docs: Updating index of datasources [Adam Dobrawy] + - docs: Fix anchor of datasource_rbx [Adam Dobrawy] + - settings: Add RbxCloud [Adam Dobrawy] + - doc: specify _ over - in cloud config modules + [Joshua Powers] (LP: #1293254) + - tools: Detect python to use via env in migrate-lp-user-to-github + [Adam Dobrawy] + - Partially revert "fix unlocking method on FreeBSD" (#116) + - tests: mock uid when running as root (#113) + [Joshua Powers] (LP: #1856096) + - cloudinit/netinfo: remove unused getgateway (#111) + - docs: clear up apt config sections (#107) [Joshua Powers] (LP: #1832823) + - doc: add kernel command line option to user data (#105) + [Joshua Powers] (LP: #1846524) + - config/cloud.cfg.d: update README [Joshua Powers] (LP: #1855006) + + -- Chad Smith Wed, 18 Dec 2019 11:02:04 -0700 + cloud-init (19.3-74-g129b1c4e-0ubuntu1) focal; urgency=medium * New upstream snapshot. From 2775092b18c4c1eb780d8d0d3940502f2de4f200 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 Dec 2019 11:43:43 -0700 Subject: [PATCH 0382/1174] Add RbxCloud datasource to debian/cloud-init.templates to enable detection --- debian/cloud-init.templates | 4 ++-- debian/po/templates.pot | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index b8d4c6c4490..e55f7726dbf 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, None +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, None Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, None: Failsafe datasource +__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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, 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. diff --git a/debian/po/templates.pot b/debian/po/templates.pot index c6254cada91..2ec850edc92 100644 --- a/debian/po/templates.pot +++ b/debian/po/templates.pot @@ -143,6 +143,12 @@ msgstr "" msgid "Exoscale: Exoscale" msgstr "" +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "RbxCloud: HyperOne and Rootbox platforms" +msgstr "" + #. Type: multiselect #. Choices #: ../cloud-init.templates:1001 From 36652a50a3446440ad335c1bce43fe31026fe3bb Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 Dec 2019 11:45:08 -0700 Subject: [PATCH 0383/1174] update changelog for enabling RbxCloud --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 0a6cb5247ef..6239caf378e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,7 @@ cloud-init (19.4-1-g8c96cbc1-0ubuntu1) UNRELEASED; urgency=medium + * debian/cloud-init.templates: enable RbxCloud: HypeOne and Rootbox detection + by default * New upstream snapshot. - ci: emit names of tests run in Travis (#120) - Release 19.4 (LP: #1856761) From 665d107c71e92e1519c315b0cb6f858e72766434 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 Dec 2019 11:02:58 -0700 Subject: [PATCH 0384/1174] releasing cloud-init version 19.4-1-g8c96cbc1-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6239caf378e..b55492d6d6e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.4-1-g8c96cbc1-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.4-1-g8c96cbc1-0ubuntu1) focal; urgency=medium * debian/cloud-init.templates: enable RbxCloud: HypeOne and Rootbox detection by default From 30468ec73419a3c7a4312031b4b0f0bfad044440 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 6 Jan 2020 09:52:43 -0700 Subject: [PATCH 0385/1174] update changelog (New upstream snapshot 19.4-16-gf8950d63). --- debian/changelog | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/debian/changelog b/debian/changelog index b55492d6d6e..04bc5c3117b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,24 @@ +cloud-init (19.4-16-gf8950d63-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Add support for the amazon variant in cloud.cfg.tmpl (#119) + [Frederick Lefebvre] + - ci: remove Python 2.7 from CI runs (#137) + - modules: drop cc_snap_config config module (#134) + - migrate-lp-user-to-github: ensure Launchpad repo exists (#136) + - docs: add initial troubleshooting to FAQ (#104) [Joshua Powers] + - doc: update cc_set_hostname frequency and descrip (#109) + [Joshua Powers] (LP: #1827021) + - freebsd: introduce the freebsd renderer (#61) [Gonéri Le Bouder] + - cc_snappy: remove deprecated module (#127) + - HACKING.rst: clarify that everyone needs to do the LP->GH dance (#130) + - freebsd: cloudinit service requires devd (#132) [Gonéri Le Bouder] + - cloud-init: fix capitalisation of SSH (#126) + - doc: update cc_ssh clarify host and auth keys + [Joshua Powers] (LP: #1827021) + + -- Chad Smith Mon, 06 Jan 2020 09:52:22 -0700 + cloud-init (19.4-1-g8c96cbc1-0ubuntu1) focal; urgency=medium * debian/cloud-init.templates: enable RbxCloud: HypeOne and Rootbox detection From 4e53dc56acd3003103f4fdf12572c25945e61953 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 6 Jan 2020 09:52:51 -0700 Subject: [PATCH 0386/1174] releasing cloud-init version 19.4-16-gf8950d63-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 04bc5c3117b..1e9889d57c0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.4-16-gf8950d63-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.4-16-gf8950d63-0ubuntu1) focal; urgency=medium * New upstream snapshot. - Add support for the amazon variant in cloud.cfg.tmpl (#119) From af6197fe8e19972a1c4847d1435562c1a467cd36 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 13 Jan 2020 20:22:21 -0700 Subject: [PATCH 0387/1174] update changelog (New upstream snapshot 19.4-31-g3f6192b3). --- debian/changelog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1e9889d57c0..1cd781de0d9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +cloud-init (19.4-31-g3f6192b3-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - ssh_auth_key_fingerprints_disable test: fix capitalization (#165) + [Paride Legovini] + - util: move uptime's else branch into its own boottime function (#53) + [Igor Galić] (LP: #1853160) + - net: fix rendering of 'static6' in network config (#77) (LP: #1850988) + - fixed minor bug with mkswap in cc_disk_setup.py (#143) [andreaf74] + - freebsd: fix create_group() cmd (#146) [Gonéri Le Bouder] + + -- Chad Smith Mon, 13 Jan 2020 20:21:09 -0700 + cloud-init (19.4-16-gf8950d63-0ubuntu1) focal; urgency=medium * New upstream snapshot. From ea12878c9a9f443ac9b113839e3b3194cf8129a3 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 13 Jan 2020 20:22:26 -0700 Subject: [PATCH 0388/1174] releasing cloud-init version 19.4-31-g3f6192b3-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 1cd781de0d9..d7a0f790525 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.4-31-g3f6192b3-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.4-31-g3f6192b3-0ubuntu1) focal; urgency=medium * New upstream snapshot. - ssh_auth_key_fingerprints_disable test: fix capitalization (#165) From 23aa9a65d723fe5b7915a28d85bf59aade093433 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 14 Jan 2020 14:02:37 -0700 Subject: [PATCH 0389/1174] update changelog (New upstream snapshot 19.4-33-gbb4131a2). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index d7a0f790525..4542a038a74 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (19.4-33-gbb4131a2-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Only use gpart if it is the BSD gpart (#131) [Conrad Hoffmann] + - freebsd: remove superfluous exception mapping (#166) [Gonéri Le Bouder] + + -- Chad Smith Tue, 14 Jan 2020 14:02:06 -0700 + cloud-init (19.4-31-g3f6192b3-0ubuntu1) focal; urgency=medium * New upstream snapshot. From a20772a95fa86b4077d7c9b76b3c0fa5b55f9fe6 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 14 Jan 2020 14:02:42 -0700 Subject: [PATCH 0390/1174] releasing cloud-init version 19.4-33-gbb4131a2-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4542a038a74..2548988ab35 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.4-33-gbb4131a2-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.4-33-gbb4131a2-0ubuntu1) focal; urgency=medium * New upstream snapshot. - Only use gpart if it is the BSD gpart (#131) [Conrad Hoffmann] From 8a7991a5437994e38d251a55707c71d79e22578e Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 5 Feb 2020 13:57:59 -0700 Subject: [PATCH 0391/1174] update changelog (New upstream snapshot 19.4-56-g06e324ff). --- debian/changelog | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/debian/changelog b/debian/changelog index 2548988ab35..9a3cfeaaf70 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,40 @@ +cloud-init (19.4-56-g06e324ff-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - sysconfig: distro-specific config rendering for BOOTPROTO option (#162) + [Robert Schweikert] (LP: #1800854) + - cloudinit: replace "from six import X" imports (except in util.py) (#183) + - run-container: use 'test -n' instead of 'test ! -z' (#202) + [Paride Legovini] + - net/cmdline: correctly handle static ip= config (#201) + [Dimitri John Ledkov] (LP: #1861412) + - Replace mock library with unittest.mock (#186) + - HACKING.rst: update CLA link (#199) + - Scaleway: Fix DatasourceScaleway to avoid backtrace (#128) + [Louis Bouchard] + - cloudinit/cmd/devel/net_convert.py: add missing space (#191) + - tools/run-container: drop support for python2 (#192) [Paride Legovini] + - Print ssh key fingerprints using sha256 hash (#188) (LP: #1860789) + - Make the RPM build use Python 3 (#190) [Paride Legovini] + - cc_set_password: increase random pwlength from 9 to 20 (#189) + (LP: #1860795) (CVE-2020-8632) + - .travis.yml: use correct Python version for xenial tests (#185) + - cloudinit: remove ImportError handling for mock imports (#182) + - Do not use fallocate in swap file creation on xfs. (#70) + [Eduardo Otubo] (LP: #1781781) + - .readthedocs.yaml: install cloud-init when building docs (#181) + (LP: #1860450) + - Introduce an RTD config file, and pin the Sphinx version to the RTD + default (#180) + - Drop most of the remaining use of six (#179) + - Start removing dependency on six (#178) + - Add Rootbox & HyperOne to list of cloud in README (#176) [Adam Dobrawy] + - docs: add proposed SRU testing procedure (#167) + - util: rename get_architecture to get_dpkg_architecture (#173) + - Ensure util.get_architecture() runs only once (#172) + + -- Chad Smith Wed, 05 Feb 2020 13:56:17 -0700 + cloud-init (19.4-33-gbb4131a2-0ubuntu1) focal; urgency=medium * New upstream snapshot. From 7d3c615c3f5d776493c58cd8a38aa7db2f09166c Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 5 Feb 2020 13:58:05 -0700 Subject: [PATCH 0392/1174] releasing cloud-init version 19.4-56-g06e324ff-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9a3cfeaaf70..a40d3f3628e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (19.4-56-g06e324ff-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (19.4-56-g06e324ff-0ubuntu1) focal; urgency=medium * New upstream snapshot. - sysconfig: distro-specific config rendering for BOOTPROTO option (#162) From a69212e061038023c0112d87a5dd7a21c3dfc77a Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Mon, 10 Feb 2020 14:55:48 -0500 Subject: [PATCH 0393/1174] debian/control: Update vcs fields after move to github. (#210) --- debian/control | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/control b/debian/control index a9f0a3e5492..76930bf1c80 100644 --- a/debian/control +++ b/debian/control @@ -27,8 +27,8 @@ Build-Depends: debhelper (>= 9.20160709), python3-unittest2, python3-yaml XS-Python-Version: all -Vcs-Browser: https://git.launchpad.net/cloud-init/?h=ubuntu/devel -Vcs-Git: https://git.launchpad.net/cloud-init -b ubuntu/devel +Vcs-Browser: https://github.com/canonical/cloud-init/tree/ubuntu/devel +Vcs-Git: https://github.com/canonical/cloud-init -b ubuntu/devel Standards-Version: 4.4.1 Rules-Requires-Root: no From 9bb26f106a7d88f62ec88b1180d535adf98ba008 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 20 Feb 2020 16:36:56 -0500 Subject: [PATCH 0394/1174] update changelog (New upstream release 20.1). --- debian/changelog | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/debian/changelog b/debian/changelog index a40d3f3628e..9a7c2710841 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,22 @@ +cloud-init (20.1-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream release. + - Release 20.1 (#222) (LP: #1863954) + - Update tooling for GitHub-based new releases (#223) + - ec2: Do not log IMDSv2 token values, instead use REDACTED (#219) + (LP: #1863943) + - utils: use SystemRandom when generating random password. (#204) + [Dimitri John Ledkov] + - docs: mount_default_files is a list of 6 items, not 7 (#212) + - azurecloud: fix issues with instances not starting (#205) (LP: #1861921) + - unittest: fix stderr leak in cc_set_password random unittest + output. (#208) + - cc_disk_setup: add swap filesystem force flag (#207) + - import sysvinit patches from freebsd-ports tree (#161) [Igor Galić] + - docs: fix typo (#195) [Edwin Kofler] + + -- Daniel Watkins Thu, 20 Feb 2020 16:36:44 -0500 + cloud-init (19.4-56-g06e324ff-0ubuntu1) focal; urgency=medium * New upstream snapshot. From 2a08c66e0e5b3b23d110b8736246bed9b90576ca Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 20 Feb 2020 16:37:06 -0500 Subject: [PATCH 0395/1174] releasing cloud-init version 20.1-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9a7c2710841..b5ff1eb88f9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.1-0ubuntu1) focal; urgency=medium * New upstream release. - Release 20.1 (#222) (LP: #1863954) From 24093d1e3513e2b8c3a3721e6e80d47c40456f88 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 27 Feb 2020 16:56:31 -0700 Subject: [PATCH 0396/1174] update changelog (New upstream snapshot 20.1-5-g67c8e53c). --- debian/changelog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index b5ff1eb88f9..9c37d06fdc5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +cloud-init (20.1-5-g67c8e53c-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - docs: typo fixed: dta → data [Alexey Vazhnov] + - Fixes typo on Amazon Web Services (#217) [Nick Wales] + - Fix docs for OpenStack DMI Asset Tag (#228) + [Mark T. Voelker] (LP: #1669875) + - Add physical network type: cascading to openstack helpers (#200) + [sab-systems] + - tests: add focal integration tests for ubuntu (#225) + + -- Chad Smith Thu, 27 Feb 2020 16:56:16 -0700 + cloud-init (20.1-0ubuntu1) focal; urgency=medium * New upstream release. From 497627356f208354e3c0d7ee1ea509e3c8a6bfe0 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 27 Feb 2020 16:56:36 -0700 Subject: [PATCH 0397/1174] releasing cloud-init version 20.1-5-g67c8e53c-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9c37d06fdc5..c140b0941ef 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-5-g67c8e53c-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.1-5-g67c8e53c-0ubuntu1) focal; urgency=medium * New upstream snapshot. - docs: typo fixed: dta → data [Alexey Vazhnov] From 1de7b7d07a0cf72840f3e3614ad99a3e09a6a246 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 6 Mar 2020 11:06:39 -0700 Subject: [PATCH 0398/1174] update changelog (New upstream snapshot 20.1-9-g1f860e5a). --- debian/changelog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index c140b0941ef..aed2842956d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +cloud-init (20.1-9-g1f860e5a-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot: bug-fix-only during feature freeze + - ec2: Do not fallback to IMDSv1 on EC2 (#216) + [Frederick Lefebvre] (LP: #1866290) + - instance-data: write redacted cfg to instance-data.json (#233) + (LP: #1865947) + - net: support network-config:disabled on the kernel commandline (#232) + (LP: #1862702) + - ec2: only redact token request headers in logs, avoid altering request + (#230) (LP: #1865882) + + -- Chad Smith Fri, 06 Mar 2020 11:01:15 -0700 + cloud-init (20.1-5-g67c8e53c-0ubuntu1) focal; urgency=medium * New upstream snapshot. From d9cbef7fc0a08acedb59eb040fbbde7f014d8248 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 6 Mar 2020 11:06:43 -0700 Subject: [PATCH 0399/1174] releasing cloud-init version 20.1-9-g1f860e5a-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index aed2842956d..316047a5bf6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-9-g1f860e5a-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.1-9-g1f860e5a-0ubuntu1) focal; urgency=medium * New upstream snapshot: bug-fix-only during feature freeze - ec2: Do not fallback to IMDSv1 on EC2 (#216) From a414f9eec8c1211e08f09dfcdc28ec39f146b0af Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 10 Mar 2020 11:14:58 -0600 Subject: [PATCH 0400/1174] update changelog (New upstream snapshot 20.1-10-g71af48df). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 316047a5bf6..06ee0fea499 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (20.1-10-g71af48df-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - instance-data: add cloud-init merged_cfg and sys_info keys to json + (#214) (LP: #1865969) + + -- Chad Smith Tue, 10 Mar 2020 11:14:53 -0600 + cloud-init (20.1-9-g1f860e5a-0ubuntu1) focal; urgency=medium * New upstream snapshot: bug-fix-only during feature freeze From 5b0a2dddf72d656ef6a9f3dea082a7fa4f19212a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 10 Mar 2020 11:15:01 -0600 Subject: [PATCH 0401/1174] releasing cloud-init version 20.1-10-g71af48df-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 06ee0fea499..6d09b31b126 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-10-g71af48df-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu1) focal; urgency=medium * New upstream snapshot. - instance-data: add cloud-init merged_cfg and sys_info keys to json From fa9a060c76d813bbd46fe1cf50f11ab1b3cf34ac Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Wed, 11 Mar 2020 15:26:43 -0400 Subject: [PATCH 0402/1174] d/control: add python3-pytest to Build-Depends This fixes upstream daily builds. python3-nose is not removed from Build-Depends because, currently, the Ubuntu package builds will still use it for testing. --- debian/changelog | 9 +++++++++ debian/control | 1 + 2 files changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index 6d09b31b126..51e0dff62c2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (20.1-10-g71af48df-0ubuntu2) UNRELEASED; urgency=medium + + * d/control: add python3-pytest to Build-Depends + - This fixes upstream daily builds. python3-nose is not removed from + Build-Depends because, currently, the Ubuntu package builds will still + use it for testing. + + -- Daniel Watkins Wed, 11 Mar 2020 15:24:42 -0400 + cloud-init (20.1-10-g71af48df-0ubuntu1) focal; urgency=medium * New upstream snapshot. diff --git a/debian/control b/debian/control index 76930bf1c80..828558e897b 100644 --- a/debian/control +++ b/debian/control @@ -20,6 +20,7 @@ Build-Depends: debhelper (>= 9.20160709), python3-oauthlib, python3-pep8, python3-pyflakes | pyflakes (<< 1.1.0-2), + python3-pytest, python3-requests, python3-serial, python3-setuptools, From 874b39ddbad740d7fb5c428fb3f3254e088b574d Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 Mar 2020 14:01:02 -0600 Subject: [PATCH 0403/1174] cherry pick 6600c642 LP: #1866930 --- ...twork-on-all-NICs-and-add-secondary-IPs-as | 706 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 707 insertions(+) create mode 100644 debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as create mode 100644 debian/patches/series diff --git a/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as b/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as new file mode 100644 index 00000000000..47bf46ab97b --- /dev/null +++ b/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as @@ -0,0 +1,706 @@ +From 6600c642af3817fe5e0170cb7b4eeac4be3c60eb Mon Sep 17 00:00:00 2001 +From: Chad Smith +Date: Wed, 18 Mar 2020 13:33:37 -0600 +Subject: [PATCH] ec2: render network on all NICs and add secondary IPs as + static (#114) + +Add support for rendering secondary static IPv4/IPv6 addresses on +any NIC attached to the machine. In order to see secondary IP +addresses in Ec2 IMDS network config, cloud-init now reads metadata +version 2018-09-24. Metadata services which do not support the Ec2 +API version will not get secondary IP addresses configured. + +In order to discover secondary IP address config, cloud-init now +relies on metadata API Parse local-ipv4s, ipv6s, +subnet-ipv4-cidr-block and subnet-ipv6-cidr-block metadata keys to +determine additional IPs and appropriate subnet prefix to set for a +nic. + +Also add the datasource config option apply_full_imds_netork_config +which defaults to true to allow cloud-init to automatically configure +secondary IP addresses. Setting this option to false will tell +cloud-init to avoid setting up secondary IP addresses. + +Also in this branch: + - Shift Ec2 datasource to emit network config v2 instead of v1. + +LP: #1866930 +--- + cloudinit/sources/DataSourceEc2.py | 116 +++++-- + doc/rtd/topics/datasources/ec2.rst | 19 ++ + tests/unittests/test_datasource/test_ec2.py | 329 ++++++++++++++++---- + 3 files changed, 379 insertions(+), 85 deletions(-) + +--- a/cloudinit/sources/DataSourceEc2.py ++++ b/cloudinit/sources/DataSourceEc2.py +@@ -62,7 +62,7 @@ class DataSourceEc2(sources.DataSource): + + # Priority ordered list of additional metadata versions which will be tried + # for extended metadata content. IPv6 support comes in 2016-09-02 +- extended_metadata_versions = ['2016-09-02'] ++ extended_metadata_versions = ['2018-09-24', '2016-09-02'] + + # Setup read_url parameters per get_url_params. + url_max_wait = 120 +@@ -405,13 +405,16 @@ class DataSourceEc2(sources.DataSource): + logfunc=LOG.debug, msg='Re-crawl of metadata service', + func=self.get_data) + +- # Limit network configuration to only the primary/fallback nic + iface = self.fallback_interface +- macs_to_nics = {net.get_interface_mac(iface): iface} + net_md = self.metadata.get('network') + if isinstance(net_md, dict): ++ # SRU_BLOCKER: xenial, bionic and eoan should default ++ # apply_full_imds_network_config to False to retain original ++ # behavior on those releases. + result = convert_ec2_metadata_network_config( +- net_md, macs_to_nics=macs_to_nics, fallback_nic=iface) ++ net_md, fallback_nic=iface, ++ full_network_config=util.get_cfg_option_bool( ++ self.ds_cfg, 'apply_full_imds_network_config', True)) + + # RELEASE_BLOCKER: xenial should drop the below if statement, + # because the issue being addressed doesn't exist pre-netplan. +@@ -719,9 +722,10 @@ def _collect_platform_data(): + return data + + +-def convert_ec2_metadata_network_config(network_md, macs_to_nics=None, +- fallback_nic=None): +- """Convert ec2 metadata to network config version 1 data dict. ++def convert_ec2_metadata_network_config( ++ network_md, macs_to_nics=None, fallback_nic=None, ++ full_network_config=True): ++ """Convert ec2 metadata to network config version 2 data dict. + + @param: network_md: 'network' portion of EC2 metadata. + generally formed as {"interfaces": {"macs": {}} where +@@ -731,28 +735,104 @@ def convert_ec2_metadata_network_config( + not provided, get_interfaces_by_mac is called to get it from the OS. + @param: fallback_nic: Optionally provide the primary nic interface name. + This nic will be guaranteed to minimally have a dhcp4 configuration. ++ @param: full_network_config: Boolean set True to configure all networking ++ presented by IMDS. This includes rendering secondary IPv4 and IPv6 ++ addresses on all NICs and rendering network config on secondary NICs. ++ If False, only the primary nic will be configured and only with dhcp ++ (IPv4/IPv6). + +- @return A dict of network config version 1 based on the metadata and macs. ++ @return A dict of network config version 2 based on the metadata and macs. + """ +- netcfg = {'version': 1, 'config': []} ++ netcfg = {'version': 2, 'ethernets': {}} + if not macs_to_nics: + macs_to_nics = net.get_interfaces_by_mac() + macs_metadata = network_md['interfaces']['macs'] +- for mac, nic_name in macs_to_nics.items(): ++ ++ if not full_network_config: ++ for mac, nic_name in macs_to_nics.items(): ++ if nic_name == fallback_nic: ++ break ++ dev_config = {'dhcp4': True, ++ 'dhcp6': False, ++ 'match': {'macaddress': mac.lower()}, ++ 'set-name': nic_name} ++ nic_metadata = macs_metadata.get(mac) ++ if nic_metadata.get('ipv6s'): # Any IPv6 addresses configured ++ dev_config['dhcp6'] = True ++ netcfg['ethernets'][nic_name] = dev_config ++ return netcfg ++ # Apply network config for all nics and any secondary IPv4/v6 addresses ++ nic_idx = 1 ++ for mac, nic_name in sorted(macs_to_nics.items()): + nic_metadata = macs_metadata.get(mac) + if not nic_metadata: + continue # Not a physical nic represented in metadata +- nic_cfg = {'type': 'physical', 'name': nic_name, 'subnets': []} +- nic_cfg['mac_address'] = mac +- if (nic_name == fallback_nic or nic_metadata.get('public-ipv4s') or +- nic_metadata.get('local-ipv4s')): +- nic_cfg['subnets'].append({'type': 'dhcp4'}) +- if nic_metadata.get('ipv6s'): +- nic_cfg['subnets'].append({'type': 'dhcp6'}) +- netcfg['config'].append(nic_cfg) ++ dhcp_override = {'route-metric': nic_idx * 100} ++ nic_idx += 1 ++ dev_config = {'dhcp4': True, 'dhcp4-overrides': dhcp_override, ++ 'dhcp6': False, ++ 'match': {'macaddress': mac.lower()}, ++ 'set-name': nic_name} ++ if nic_metadata.get('ipv6s'): # Any IPv6 addresses configured ++ dev_config['dhcp6'] = True ++ dev_config['dhcp6-overrides'] = dhcp_override ++ dev_config['addresses'] = get_secondary_addresses(nic_metadata, mac) ++ if not dev_config['addresses']: ++ dev_config.pop('addresses') # Since we found none configured ++ netcfg['ethernets'][nic_name] = dev_config ++ # Remove route-metric dhcp overrides if only one nic configured ++ if len(netcfg['ethernets']) == 1: ++ for nic_name in netcfg['ethernets'].keys(): ++ netcfg['ethernets'][nic_name].pop('dhcp4-overrides') ++ netcfg['ethernets'][nic_name].pop('dhcp6-overrides', None) + return netcfg + + ++def get_secondary_addresses(nic_metadata, mac): ++ """Parse interface-specific nic metadata and return any secondary IPs ++ ++ :return: List of secondary IPv4 or IPv6 addresses to configure on the ++ interface ++ """ ++ ipv4s = nic_metadata.get('local-ipv4s') ++ ipv6s = nic_metadata.get('ipv6s') ++ addresses = [] ++ # In version < 2018-09-24 local_ipv4s or ipv6s is a str with one IP ++ if bool(isinstance(ipv4s, list) and len(ipv4s) > 1): ++ addresses.extend( ++ _get_secondary_addresses( ++ nic_metadata, 'subnet-ipv4-cidr-block', mac, ipv4s, '24')) ++ if bool(isinstance(ipv6s, list) and len(ipv6s) > 1): ++ addresses.extend( ++ _get_secondary_addresses( ++ nic_metadata, 'subnet-ipv6-cidr-block', mac, ipv6s, '128')) ++ return sorted(addresses) ++ ++ ++def _get_secondary_addresses(nic_metadata, cidr_key, mac, ips, default_prefix): ++ """Return list of IP addresses as CIDRs for secondary IPs ++ ++ The CIDR prefix will be default_prefix if cidr_key is absent or not ++ parseable in nic_metadata. ++ """ ++ addresses = [] ++ cidr = nic_metadata.get(cidr_key) ++ prefix = default_prefix ++ if not cidr or len(cidr.split('/')) != 2: ++ ip_type = 'ipv4' if 'ipv4' in cidr_key else 'ipv6' ++ LOG.warning( ++ 'Could not parse %s %s for mac %s. %s network' ++ ' config prefix defaults to /%s', ++ cidr_key, cidr, mac, ip_type, prefix) ++ else: ++ prefix = cidr.split('/')[1] ++ # We know we have > 1 ips for in metadata for this IP type ++ for ip in ips[1:]: ++ addresses.append( ++ '{ip}/{prefix}'.format(ip=ip, prefix=prefix)) ++ return addresses ++ ++ + # Used to match classes to dependencies + datasources = [ + (DataSourceEc2Local, (sources.DEP_FILESYSTEM,)), # Run at init-local +--- a/doc/rtd/topics/datasources/ec2.rst ++++ b/doc/rtd/topics/datasources/ec2.rst +@@ -42,6 +42,7 @@ Note that there are multiple versions of + by default uses **2009-04-04** but newer versions can be supported with + relative ease (newer versions have more data exposed, while maintaining + backward compatibility with the previous versions). ++Version **2016-09-02** is required for secondary IP address support. + + To see which versions are supported from your cloud provider use the following + URL: +@@ -80,6 +81,15 @@ The settings that may be configured are: + * **timeout**: the timeout value provided to urlopen for each individual http + request. This is used both when selecting a metadata_url and when crawling + the metadata service. (default: 50) ++ * **apply_full_imds_network_config**: Boolean (default: True) to allow ++ cloud-init to configure any secondary NICs and secondary IPs described by ++ the metadata service. All network interfaces are configured with DHCP (v4) ++ to obtain an primary IPv4 address and route. Interfaces which have a ++ non-empty 'ipv6s' list will also enable DHCPv6 to obtain a primary IPv6 ++ address and route. The DHCP response (v4 and v6) return an IP that matches ++ the first element of local-ipv4s and ipv6s lists respectively. All ++ additional values (secondary addresses) in the static ip lists will be ++ added to interface. + + An example configuration with the default values is provided below: + +@@ -90,6 +100,7 @@ An example configuration with the defaul + metadata_urls: ["http://169.254.169.254:80", "http://instance-data:8773"] + max_wait: 120 + timeout: 50 ++ apply_full_imds_network_config: true + + Notes + ----- +@@ -102,4 +113,12 @@ Notes + The check for the instance type is performed by is_classic_instance() + method. + ++ * For EC2 instances with multiple network interfaces (NICs) attached, dhcp4 ++ will be enabled to obtain the primary private IPv4 address of those NICs. ++ Wherever dhcp4 or dhcp6 is enabled for a NIC, a dhcp route-metric will be ++ added with the value of `` * 100`` to ensure dhcp ++ routes on the primary NIC are preferred to any secondary NICs. ++ For example: the primary NIC will have a DHCP route-metric of 100, ++ the next NIC will be 200. ++ + .. vi: textwidth=78 +--- a/tests/unittests/test_datasource/test_ec2.py ++++ b/tests/unittests/test_datasource/test_ec2.py +@@ -113,6 +113,122 @@ DEFAULT_METADATA = { + "services": {"domain": "amazonaws.com", "partition": "aws"}, + } + ++# collected from api version 2018-09-24/ with ++# python3 -c 'import json ++# from cloudinit.ec2_utils import get_instance_metadata as gm ++# print(json.dumps(gm("2018-09-24"), indent=1, sort_keys=True))' ++ ++NIC1_MD_IPV4_IPV6_MULTI_IP = { ++ "device-number": "0", ++ "interface-id": "eni-0d6335689899ce9cc", ++ "ipv4-associations": { ++ "18.218.219.181": "172.31.44.13" ++ }, ++ "ipv6s": [ ++ "2600:1f16:292:100:c187:593c:4349:136", ++ "2600:1f16:292:100:f153:12a3:c37c:11f9", ++ "2600:1f16:292:100:f152:2222:3333:4444" ++ ], ++ "local-hostname": ("ip-172-31-44-13.us-east-2." ++ "compute.internal"), ++ "local-ipv4s": [ ++ "172.31.44.13", ++ "172.31.45.70" ++ ], ++ "mac": "0a:07:84:3d:6e:38", ++ "owner-id": "329910648901", ++ "public-hostname": ("ec2-18-218-219-181.us-east-2." ++ "compute.amazonaws.com"), ++ "public-ipv4s": "18.218.219.181", ++ "security-group-ids": "sg-0c387755222ba8d2e", ++ "security-groups": "launch-wizard-4", ++ "subnet-id": "subnet-9d7ba0d1", ++ "subnet-ipv4-cidr-block": "172.31.32.0/20", ++ "subnet_ipv6_cidr_blocks": "2600:1f16:292:100::/64", ++ "vpc-id": "vpc-a07f62c8", ++ "vpc-ipv4-cidr-block": "172.31.0.0/16", ++ "vpc-ipv4-cidr-blocks": "172.31.0.0/16", ++ "vpc_ipv6_cidr_blocks": "2600:1f16:292:100::/56" ++} ++ ++NIC2_MD = { ++ "device_number": "1", ++ "interface_id": "eni-043cdce36ded5e79f", ++ "local_hostname": "ip-172-31-47-221.us-east-2.compute.internal", ++ "local_ipv4s": "172.31.47.221", ++ "mac": "0a:75:69:92:e2:16", ++ "owner_id": "329910648901", ++ "security_group_ids": "sg-0d68fef37d8cc9b77", ++ "security_groups": "launch-wizard-17", ++ "subnet_id": "subnet-9d7ba0d1", ++ "subnet_ipv4_cidr_block": "172.31.32.0/20", ++ "vpc_id": "vpc-a07f62c8", ++ "vpc_ipv4_cidr_block": "172.31.0.0/16", ++ "vpc_ipv4_cidr_blocks": "172.31.0.0/16" ++} ++ ++SECONDARY_IP_METADATA_2018_09_24 = { ++ "ami-id": "ami-0986c2ac728528ac2", ++ "ami-launch-index": "0", ++ "ami-manifest-path": "(unknown)", ++ "block-device-mapping": { ++ "ami": "/dev/sda1", ++ "root": "/dev/sda1" ++ }, ++ "events": { ++ "maintenance": { ++ "history": "[]", ++ "scheduled": "[]" ++ } ++ }, ++ "hostname": "ip-172-31-44-13.us-east-2.compute.internal", ++ "identity-credentials": { ++ "ec2": { ++ "info": { ++ "AccountId": "329910648901", ++ "Code": "Success", ++ "LastUpdated": "2019-07-06T14:22:56Z" ++ } ++ } ++ }, ++ "instance-action": "none", ++ "instance-id": "i-069e01e8cc43732f8", ++ "instance-type": "t2.micro", ++ "local-hostname": "ip-172-31-44-13.us-east-2.compute.internal", ++ "local-ipv4": "172.31.44.13", ++ "mac": "0a:07:84:3d:6e:38", ++ "metrics": { ++ "vhostmd": "" ++ }, ++ "network": { ++ "interfaces": { ++ "macs": { ++ "0a:07:84:3d:6e:38": NIC1_MD_IPV4_IPV6_MULTI_IP, ++ } ++ } ++ }, ++ "placement": { ++ "availability-zone": "us-east-2c" ++ }, ++ "profile": "default-hvm", ++ "public-hostname": ( ++ "ec2-18-218-219-181.us-east-2.compute.amazonaws.com"), ++ "public-ipv4": "18.218.219.181", ++ "public-keys": { ++ "yourkeyname,e": [ ++ "ssh-rsa AAAAW...DZ yourkeyname" ++ ] ++ }, ++ "reservation-id": "r-09b4917135cdd33be", ++ "security-groups": "launch-wizard-4", ++ "services": { ++ "domain": "amazonaws.com", ++ "partition": "aws" ++ } ++} ++ ++M_PATH_NET = 'cloudinit.sources.DataSourceEc2.net.' ++ + + def _register_ssh_keys(rfunc, base_url, keys_data): + """handle ssh key inconsistencies. +@@ -267,30 +383,23 @@ class TestEc2(test_helpers.HttprettyTest + register_mock_metaserver(instance_id_url, None) + return ds + +- def test_network_config_property_returns_version_1_network_data(self): +- """network_config property returns network version 1 for metadata. +- +- Only one device is configured even when multiple exist in metadata. +- """ ++ def test_network_config_property_returns_version_2_network_data(self): ++ """network_config property returns network version 2 for metadata""" + ds = self._setup_ds( + platform_data=self.valid_platform_data, + sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, + md={'md': DEFAULT_METADATA}) +- find_fallback_path = ( +- 'cloudinit.sources.DataSourceEc2.net.find_fallback_nic') ++ find_fallback_path = M_PATH_NET + 'find_fallback_nic' + with mock.patch(find_fallback_path) as m_find_fallback: + m_find_fallback.return_value = 'eth9' + ds.get_data() + + mac1 = '06:17:04:d7:26:09' # Defined in DEFAULT_METADATA +- expected = {'version': 1, 'config': [ +- {'mac_address': '06:17:04:d7:26:09', 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}], +- 'type': 'physical'}]} +- patch_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') +- get_interface_mac_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': '06:17:04:d7:26:09'}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': True}}} ++ patch_path = M_PATH_NET + 'get_interfaces_by_mac' ++ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' + with mock.patch(patch_path) as m_get_interfaces_by_mac: + with mock.patch(find_fallback_path) as m_find_fallback: + with mock.patch(get_interface_mac_path) as m_get_mac: +@@ -299,30 +408,59 @@ class TestEc2(test_helpers.HttprettyTest + m_get_mac.return_value = mac1 + self.assertEqual(expected, ds.network_config) + +- def test_network_config_property_set_dhcp4_on_private_ipv4(self): +- """network_config property configures dhcp4 on private ipv4 nics. ++ def test_network_config_property_set_dhcp4(self): ++ """network_config property configures dhcp4 on nics with local-ipv4s. + +- Only one device is configured even when multiple exist in metadata. ++ Only one device is configured based on get_interfaces_by_mac even when ++ multiple MACs exist in metadata. + """ + ds = self._setup_ds( + platform_data=self.valid_platform_data, + sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, + md={'md': DEFAULT_METADATA}) +- find_fallback_path = ( +- 'cloudinit.sources.DataSourceEc2.net.find_fallback_nic') ++ find_fallback_path = M_PATH_NET + 'find_fallback_nic' + with mock.patch(find_fallback_path) as m_find_fallback: + m_find_fallback.return_value = 'eth9' + ds.get_data() + + mac1 = '06:17:04:d7:26:0A' # IPv4 only in DEFAULT_METADATA +- expected = {'version': 1, 'config': [ +- {'mac_address': '06:17:04:d7:26:0A', 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}], +- 'type': 'physical'}]} +- patch_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') +- get_interface_mac_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': mac1.lower()}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': False}}} ++ patch_path = M_PATH_NET + 'get_interfaces_by_mac' ++ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' ++ with mock.patch(patch_path) as m_get_interfaces_by_mac: ++ with mock.patch(find_fallback_path) as m_find_fallback: ++ with mock.patch(get_interface_mac_path) as m_get_mac: ++ m_get_interfaces_by_mac.return_value = {mac1: 'eth9'} ++ m_find_fallback.return_value = 'eth9' ++ m_get_mac.return_value = mac1 ++ self.assertEqual(expected, ds.network_config) ++ ++ def test_network_config_property_secondary_private_ips(self): ++ """network_config property configures any secondary ipv4 addresses. ++ ++ Only one device is configured based on get_interfaces_by_mac even when ++ multiple MACs exist in metadata. ++ """ ++ ds = self._setup_ds( ++ platform_data=self.valid_platform_data, ++ sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, ++ md={'md': SECONDARY_IP_METADATA_2018_09_24}) ++ find_fallback_path = M_PATH_NET + 'find_fallback_nic' ++ with mock.patch(find_fallback_path) as m_find_fallback: ++ m_find_fallback.return_value = 'eth9' ++ ds.get_data() ++ ++ mac1 = '0a:07:84:3d:6e:38' # 1 secondary IPv4 and 2 secondary IPv6 ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': mac1}, 'set-name': 'eth9', ++ 'addresses': ['172.31.45.70/20', ++ '2600:1f16:292:100:f152:2222:3333:4444/128', ++ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], ++ 'dhcp4': True, 'dhcp6': True}}} ++ patch_path = M_PATH_NET + 'get_interfaces_by_mac' ++ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' + with mock.patch(patch_path) as m_get_interfaces_by_mac: + with mock.patch(find_fallback_path) as m_find_fallback: + with mock.patch(get_interface_mac_path) as m_get_mac: +@@ -358,21 +496,18 @@ class TestEc2(test_helpers.HttprettyTest + register_mock_metaserver( + 'http://169.254.169.254/2009-04-04/meta-data/', DEFAULT_METADATA) + mac1 = '06:17:04:d7:26:09' # Defined in DEFAULT_METADATA +- get_interface_mac_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') ++ get_interface_mac_path = M_PATH_NET + 'get_interfaces_by_mac' + ds.fallback_nic = 'eth9' +- with mock.patch(get_interface_mac_path) as m_get_interface_mac: +- m_get_interface_mac.return_value = mac1 ++ with mock.patch(get_interface_mac_path) as m_get_interfaces_by_mac: ++ m_get_interfaces_by_mac.return_value = {mac1: 'eth9'} + nc = ds.network_config # Will re-crawl network metadata + self.assertIsNotNone(nc) + self.assertIn( + 'Refreshing stale metadata from prior to upgrade', + self.logs.getvalue()) +- expected = {'version': 1, 'config': [ +- {'mac_address': '06:17:04:d7:26:09', +- 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}], +- 'type': 'physical'}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': True}}} + self.assertEqual(expected, ds.network_config) + + def test_ec2_get_instance_id_refreshes_identity_on_upgrade(self): +@@ -491,7 +626,7 @@ class TestEc2(test_helpers.HttprettyTest + logs_with_redacted = [log for log in all_logs if REDACT_TOK in log] + logs_with_token = [log for log in all_logs if 'API-TOKEN' in log] + self.assertEqual(1, len(logs_with_redacted_ttl)) +- self.assertEqual(79, len(logs_with_redacted)) ++ self.assertEqual(81, len(logs_with_redacted)) + self.assertEqual(0, len(logs_with_token)) + + @mock.patch('cloudinit.net.dhcp.maybe_perform_dhcp_discovery') +@@ -612,6 +747,44 @@ class TestEc2(test_helpers.HttprettyTest + self.assertIn('Crawl of metadata service took', self.logs.getvalue()) + + ++class TestGetSecondaryAddresses(test_helpers.CiTestCase): ++ ++ mac = '06:17:04:d7:26:ff' ++ with_logs = True ++ ++ def test_md_with_no_secondary_addresses(self): ++ """Empty list is returned when nic metadata contains no secondary ip""" ++ self.assertEqual([], ec2.get_secondary_addresses(NIC2_MD, self.mac)) ++ ++ def test_md_with_secondary_v4_and_v6_addresses(self): ++ """All secondary addresses are returned from nic metadata""" ++ self.assertEqual( ++ ['172.31.45.70/20', '2600:1f16:292:100:f152:2222:3333:4444/128', ++ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], ++ ec2.get_secondary_addresses(NIC1_MD_IPV4_IPV6_MULTI_IP, self.mac)) ++ ++ def test_invalid_ipv4_ipv6_cidr_metadata_logged_with_defaults(self): ++ """Any invalid subnet-ipv(4|6)-cidr-block values use defaults""" ++ invalid_cidr_md = copy.deepcopy(NIC1_MD_IPV4_IPV6_MULTI_IP) ++ invalid_cidr_md['subnet-ipv4-cidr-block'] = "something-unexpected" ++ invalid_cidr_md['subnet-ipv6-cidr-block'] = "not/sure/what/this/is" ++ self.assertEqual( ++ ['172.31.45.70/24', '2600:1f16:292:100:f152:2222:3333:4444/128', ++ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], ++ ec2.get_secondary_addresses(invalid_cidr_md, self.mac)) ++ expected_logs = [ ++ "WARNING: Could not parse subnet-ipv4-cidr-block" ++ " something-unexpected for mac 06:17:04:d7:26:ff." ++ " ipv4 network config prefix defaults to /24", ++ "WARNING: Could not parse subnet-ipv6-cidr-block" ++ " not/sure/what/this/is for mac 06:17:04:d7:26:ff." ++ " ipv6 network config prefix defaults to /128" ++ ] ++ logs = self.logs.getvalue() ++ for log in expected_logs: ++ self.assertIn(log, logs) ++ ++ + class TestConvertEc2MetadataNetworkConfig(test_helpers.CiTestCase): + + def setUp(self): +@@ -619,16 +792,16 @@ class TestConvertEc2MetadataNetworkConfi + self.mac1 = '06:17:04:d7:26:09' + self.network_metadata = { + 'interfaces': {'macs': { +- self.mac1: {'public-ipv4s': '172.31.2.16'}}}} ++ self.mac1: {'mac': self.mac1, 'public-ipv4s': '172.31.2.16'}}}} + + def test_convert_ec2_metadata_network_config_skips_absent_macs(self): + """Any mac absent from metadata is skipped by network config.""" + macs_to_nics = {self.mac1: 'eth9', 'DE:AD:BE:EF:FF:FF': 'vitualnic2'} + + # DE:AD:BE:EF:FF:FF represented by OS but not in metadata +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': False}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( +@@ -642,15 +815,15 @@ class TestConvertEc2MetadataNetworkConfi + network_metadata_ipv6['interfaces']['macs'][self.mac1]) + nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' + nic1_metadata.pop('public-ipv4s') +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', 'subnets': [{'type': 'dhcp6'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': True}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( + network_metadata_ipv6, macs_to_nics)) + +- def test_convert_ec2_metadata_network_config_handles_local_dhcp4(self): ++ def test_convert_ec2_metadata_network_config_local_only_dhcp4(self): + """Config dhcp4 when there are no public addresses in public-ipv4s.""" + macs_to_nics = {self.mac1: 'eth9'} + network_metadata_ipv6 = copy.deepcopy(self.network_metadata) +@@ -658,9 +831,9 @@ class TestConvertEc2MetadataNetworkConfi + network_metadata_ipv6['interfaces']['macs'][self.mac1]) + nic1_metadata['local-ipv4s'] = '172.3.3.15' + nic1_metadata.pop('public-ipv4s') +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': False}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( +@@ -675,16 +848,16 @@ class TestConvertEc2MetadataNetworkConfi + nic1_metadata['public-ipv4s'] = '' + + # When no ipv4 or ipv6 content but fallback_nic set, set dhcp4 config. +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': False}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( + network_metadata_ipv6, macs_to_nics, fallback_nic='eth9')) + + def test_convert_ec2_metadata_network_config_handles_local_v4_and_v6(self): +- """When dhcp6 is public and dhcp4 is set to local enable both.""" ++ """When ipv6s and local-ipv4s are non-empty, enable dhcp6 and dhcp4.""" + macs_to_nics = {self.mac1: 'eth9'} + network_metadata_both = copy.deepcopy(self.network_metadata) + nic1_metadata = ( +@@ -692,10 +865,35 @@ class TestConvertEc2MetadataNetworkConfi + nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' + nic1_metadata.pop('public-ipv4s') + nic1_metadata['local-ipv4s'] = '10.0.0.42' # Local ipv4 only on vpc +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': True}}} ++ self.assertEqual( ++ expected, ++ ec2.convert_ec2_metadata_network_config( ++ network_metadata_both, macs_to_nics)) ++ ++ def test_convert_ec2_metadata_network_config_handles_multiple_nics(self): ++ """DHCP route-metric increases on secondary NICs for IPv4 and IPv6.""" ++ mac2 = '06:17:04:d7:26:0a' ++ macs_to_nics = {self.mac1: 'eth9', mac2: 'eth10'} ++ network_metadata_both = copy.deepcopy(self.network_metadata) ++ # Add 2nd nic info ++ network_metadata_both['interfaces']['macs'][mac2] = NIC2_MD ++ nic1_metadata = ( ++ network_metadata_both['interfaces']['macs'][self.mac1]) ++ nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' ++ nic1_metadata.pop('public-ipv4s') # No public-ipv4 IPs in cfg ++ nic1_metadata['local-ipv4s'] = '10.0.0.42' # Local ipv4 only on vpc ++ expected = {'version': 2, 'ethernets': { ++ 'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp4-overrides': {'route-metric': 100}, ++ 'dhcp6': True, 'dhcp6-overrides': {'route-metric': 100}}, ++ 'eth10': { ++ 'match': {'macaddress': mac2}, 'set-name': 'eth10', ++ 'dhcp4': True, 'dhcp4-overrides': {'route-metric': 200}, ++ 'dhcp6': False}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( +@@ -708,10 +906,9 @@ class TestConvertEc2MetadataNetworkConfi + nic1_metadata = ( + network_metadata_both['interfaces']['macs'][self.mac1]) + nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': True}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( +@@ -719,12 +916,10 @@ class TestConvertEc2MetadataNetworkConfi + + def test_convert_ec2_metadata_gets_macs_from_get_interfaces_by_mac(self): + """Convert Ec2 Metadata calls get_interfaces_by_mac by default.""" +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}]}]} +- patch_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, ++ 'set-name': 'eth9', 'dhcp4': True, 'dhcp6': False}}} ++ patch_path = M_PATH_NET + 'get_interfaces_by_mac' + with mock.patch(patch_path) as m_get_interfaces_by_mac: + m_get_interfaces_by_mac.return_value = {self.mac1: 'eth9'} + self.assertEqual( diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 00000000000..d65a3307e59 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as From 419438d104a756a77d0156f216b9a99242889f0a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 Mar 2020 14:01:02 -0600 Subject: [PATCH 0404/1174] update changelog --- debian/changelog | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 51e0dff62c2..5f64980fd2d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,8 +4,10 @@ cloud-init (20.1-10-g71af48df-0ubuntu2) UNRELEASED; urgency=medium - This fixes upstream daily builds. python3-nose is not removed from Build-Depends because, currently, the Ubuntu package builds will still use it for testing. + * cherry-pick 6600c642: ec2: render network on all NICs and add + secondary IPs as (LP: #1866930) - -- Daniel Watkins Wed, 11 Mar 2020 15:24:42 -0400 + -- Chad Smith Wed, 18 Mar 2020 13:59:54 -0600 cloud-init (20.1-10-g71af48df-0ubuntu1) focal; urgency=medium From ce1e6a6be8b6dd344db1296cb1a0f02fca27652a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 Mar 2020 14:03:25 -0600 Subject: [PATCH 0405/1174] releasing cloud-init version 20.1-10-g71af48df-0ubuntu2 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5f64980fd2d..b4fb48fa5e4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-10-g71af48df-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium * d/control: add python3-pytest to Build-Depends - This fixes upstream daily builds. python3-nose is not removed from @@ -7,7 +7,7 @@ cloud-init (20.1-10-g71af48df-0ubuntu2) UNRELEASED; urgency=medium * cherry-pick 6600c642: ec2: render network on all NICs and add secondary IPs as (LP: #1866930) - -- Chad Smith Wed, 18 Mar 2020 13:59:54 -0600 + -- Chad Smith Wed, 18 Mar 2020 14:01:37 -0600 cloud-init (20.1-10-g71af48df-0ubuntu1) focal; urgency=medium From 8d14cd852b13ede764b10704f14e5ea8792b6da9 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 23 Mar 2020 14:35:10 -0600 Subject: [PATCH 0406/1174] recipe: drop upstream cpick ec2-multi-nic so daily builds succeed --- ...twork-on-all-NICs-and-add-secondary-IPs-as | 706 ------------------ debian/patches/series | 1 - 2 files changed, 707 deletions(-) delete mode 100644 debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as delete mode 100644 debian/patches/series diff --git a/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as b/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as deleted file mode 100644 index 47bf46ab97b..00000000000 --- a/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as +++ /dev/null @@ -1,706 +0,0 @@ -From 6600c642af3817fe5e0170cb7b4eeac4be3c60eb Mon Sep 17 00:00:00 2001 -From: Chad Smith -Date: Wed, 18 Mar 2020 13:33:37 -0600 -Subject: [PATCH] ec2: render network on all NICs and add secondary IPs as - static (#114) - -Add support for rendering secondary static IPv4/IPv6 addresses on -any NIC attached to the machine. In order to see secondary IP -addresses in Ec2 IMDS network config, cloud-init now reads metadata -version 2018-09-24. Metadata services which do not support the Ec2 -API version will not get secondary IP addresses configured. - -In order to discover secondary IP address config, cloud-init now -relies on metadata API Parse local-ipv4s, ipv6s, -subnet-ipv4-cidr-block and subnet-ipv6-cidr-block metadata keys to -determine additional IPs and appropriate subnet prefix to set for a -nic. - -Also add the datasource config option apply_full_imds_netork_config -which defaults to true to allow cloud-init to automatically configure -secondary IP addresses. Setting this option to false will tell -cloud-init to avoid setting up secondary IP addresses. - -Also in this branch: - - Shift Ec2 datasource to emit network config v2 instead of v1. - -LP: #1866930 ---- - cloudinit/sources/DataSourceEc2.py | 116 +++++-- - doc/rtd/topics/datasources/ec2.rst | 19 ++ - tests/unittests/test_datasource/test_ec2.py | 329 ++++++++++++++++---- - 3 files changed, 379 insertions(+), 85 deletions(-) - ---- a/cloudinit/sources/DataSourceEc2.py -+++ b/cloudinit/sources/DataSourceEc2.py -@@ -62,7 +62,7 @@ class DataSourceEc2(sources.DataSource): - - # Priority ordered list of additional metadata versions which will be tried - # for extended metadata content. IPv6 support comes in 2016-09-02 -- extended_metadata_versions = ['2016-09-02'] -+ extended_metadata_versions = ['2018-09-24', '2016-09-02'] - - # Setup read_url parameters per get_url_params. - url_max_wait = 120 -@@ -405,13 +405,16 @@ class DataSourceEc2(sources.DataSource): - logfunc=LOG.debug, msg='Re-crawl of metadata service', - func=self.get_data) - -- # Limit network configuration to only the primary/fallback nic - iface = self.fallback_interface -- macs_to_nics = {net.get_interface_mac(iface): iface} - net_md = self.metadata.get('network') - if isinstance(net_md, dict): -+ # SRU_BLOCKER: xenial, bionic and eoan should default -+ # apply_full_imds_network_config to False to retain original -+ # behavior on those releases. - result = convert_ec2_metadata_network_config( -- net_md, macs_to_nics=macs_to_nics, fallback_nic=iface) -+ net_md, fallback_nic=iface, -+ full_network_config=util.get_cfg_option_bool( -+ self.ds_cfg, 'apply_full_imds_network_config', True)) - - # RELEASE_BLOCKER: xenial should drop the below if statement, - # because the issue being addressed doesn't exist pre-netplan. -@@ -719,9 +722,10 @@ def _collect_platform_data(): - return data - - --def convert_ec2_metadata_network_config(network_md, macs_to_nics=None, -- fallback_nic=None): -- """Convert ec2 metadata to network config version 1 data dict. -+def convert_ec2_metadata_network_config( -+ network_md, macs_to_nics=None, fallback_nic=None, -+ full_network_config=True): -+ """Convert ec2 metadata to network config version 2 data dict. - - @param: network_md: 'network' portion of EC2 metadata. - generally formed as {"interfaces": {"macs": {}} where -@@ -731,28 +735,104 @@ def convert_ec2_metadata_network_config( - not provided, get_interfaces_by_mac is called to get it from the OS. - @param: fallback_nic: Optionally provide the primary nic interface name. - This nic will be guaranteed to minimally have a dhcp4 configuration. -+ @param: full_network_config: Boolean set True to configure all networking -+ presented by IMDS. This includes rendering secondary IPv4 and IPv6 -+ addresses on all NICs and rendering network config on secondary NICs. -+ If False, only the primary nic will be configured and only with dhcp -+ (IPv4/IPv6). - -- @return A dict of network config version 1 based on the metadata and macs. -+ @return A dict of network config version 2 based on the metadata and macs. - """ -- netcfg = {'version': 1, 'config': []} -+ netcfg = {'version': 2, 'ethernets': {}} - if not macs_to_nics: - macs_to_nics = net.get_interfaces_by_mac() - macs_metadata = network_md['interfaces']['macs'] -- for mac, nic_name in macs_to_nics.items(): -+ -+ if not full_network_config: -+ for mac, nic_name in macs_to_nics.items(): -+ if nic_name == fallback_nic: -+ break -+ dev_config = {'dhcp4': True, -+ 'dhcp6': False, -+ 'match': {'macaddress': mac.lower()}, -+ 'set-name': nic_name} -+ nic_metadata = macs_metadata.get(mac) -+ if nic_metadata.get('ipv6s'): # Any IPv6 addresses configured -+ dev_config['dhcp6'] = True -+ netcfg['ethernets'][nic_name] = dev_config -+ return netcfg -+ # Apply network config for all nics and any secondary IPv4/v6 addresses -+ nic_idx = 1 -+ for mac, nic_name in sorted(macs_to_nics.items()): - nic_metadata = macs_metadata.get(mac) - if not nic_metadata: - continue # Not a physical nic represented in metadata -- nic_cfg = {'type': 'physical', 'name': nic_name, 'subnets': []} -- nic_cfg['mac_address'] = mac -- if (nic_name == fallback_nic or nic_metadata.get('public-ipv4s') or -- nic_metadata.get('local-ipv4s')): -- nic_cfg['subnets'].append({'type': 'dhcp4'}) -- if nic_metadata.get('ipv6s'): -- nic_cfg['subnets'].append({'type': 'dhcp6'}) -- netcfg['config'].append(nic_cfg) -+ dhcp_override = {'route-metric': nic_idx * 100} -+ nic_idx += 1 -+ dev_config = {'dhcp4': True, 'dhcp4-overrides': dhcp_override, -+ 'dhcp6': False, -+ 'match': {'macaddress': mac.lower()}, -+ 'set-name': nic_name} -+ if nic_metadata.get('ipv6s'): # Any IPv6 addresses configured -+ dev_config['dhcp6'] = True -+ dev_config['dhcp6-overrides'] = dhcp_override -+ dev_config['addresses'] = get_secondary_addresses(nic_metadata, mac) -+ if not dev_config['addresses']: -+ dev_config.pop('addresses') # Since we found none configured -+ netcfg['ethernets'][nic_name] = dev_config -+ # Remove route-metric dhcp overrides if only one nic configured -+ if len(netcfg['ethernets']) == 1: -+ for nic_name in netcfg['ethernets'].keys(): -+ netcfg['ethernets'][nic_name].pop('dhcp4-overrides') -+ netcfg['ethernets'][nic_name].pop('dhcp6-overrides', None) - return netcfg - - -+def get_secondary_addresses(nic_metadata, mac): -+ """Parse interface-specific nic metadata and return any secondary IPs -+ -+ :return: List of secondary IPv4 or IPv6 addresses to configure on the -+ interface -+ """ -+ ipv4s = nic_metadata.get('local-ipv4s') -+ ipv6s = nic_metadata.get('ipv6s') -+ addresses = [] -+ # In version < 2018-09-24 local_ipv4s or ipv6s is a str with one IP -+ if bool(isinstance(ipv4s, list) and len(ipv4s) > 1): -+ addresses.extend( -+ _get_secondary_addresses( -+ nic_metadata, 'subnet-ipv4-cidr-block', mac, ipv4s, '24')) -+ if bool(isinstance(ipv6s, list) and len(ipv6s) > 1): -+ addresses.extend( -+ _get_secondary_addresses( -+ nic_metadata, 'subnet-ipv6-cidr-block', mac, ipv6s, '128')) -+ return sorted(addresses) -+ -+ -+def _get_secondary_addresses(nic_metadata, cidr_key, mac, ips, default_prefix): -+ """Return list of IP addresses as CIDRs for secondary IPs -+ -+ The CIDR prefix will be default_prefix if cidr_key is absent or not -+ parseable in nic_metadata. -+ """ -+ addresses = [] -+ cidr = nic_metadata.get(cidr_key) -+ prefix = default_prefix -+ if not cidr or len(cidr.split('/')) != 2: -+ ip_type = 'ipv4' if 'ipv4' in cidr_key else 'ipv6' -+ LOG.warning( -+ 'Could not parse %s %s for mac %s. %s network' -+ ' config prefix defaults to /%s', -+ cidr_key, cidr, mac, ip_type, prefix) -+ else: -+ prefix = cidr.split('/')[1] -+ # We know we have > 1 ips for in metadata for this IP type -+ for ip in ips[1:]: -+ addresses.append( -+ '{ip}/{prefix}'.format(ip=ip, prefix=prefix)) -+ return addresses -+ -+ - # Used to match classes to dependencies - datasources = [ - (DataSourceEc2Local, (sources.DEP_FILESYSTEM,)), # Run at init-local ---- a/doc/rtd/topics/datasources/ec2.rst -+++ b/doc/rtd/topics/datasources/ec2.rst -@@ -42,6 +42,7 @@ Note that there are multiple versions of - by default uses **2009-04-04** but newer versions can be supported with - relative ease (newer versions have more data exposed, while maintaining - backward compatibility with the previous versions). -+Version **2016-09-02** is required for secondary IP address support. - - To see which versions are supported from your cloud provider use the following - URL: -@@ -80,6 +81,15 @@ The settings that may be configured are: - * **timeout**: the timeout value provided to urlopen for each individual http - request. This is used both when selecting a metadata_url and when crawling - the metadata service. (default: 50) -+ * **apply_full_imds_network_config**: Boolean (default: True) to allow -+ cloud-init to configure any secondary NICs and secondary IPs described by -+ the metadata service. All network interfaces are configured with DHCP (v4) -+ to obtain an primary IPv4 address and route. Interfaces which have a -+ non-empty 'ipv6s' list will also enable DHCPv6 to obtain a primary IPv6 -+ address and route. The DHCP response (v4 and v6) return an IP that matches -+ the first element of local-ipv4s and ipv6s lists respectively. All -+ additional values (secondary addresses) in the static ip lists will be -+ added to interface. - - An example configuration with the default values is provided below: - -@@ -90,6 +100,7 @@ An example configuration with the defaul - metadata_urls: ["http://169.254.169.254:80", "http://instance-data:8773"] - max_wait: 120 - timeout: 50 -+ apply_full_imds_network_config: true - - Notes - ----- -@@ -102,4 +113,12 @@ Notes - The check for the instance type is performed by is_classic_instance() - method. - -+ * For EC2 instances with multiple network interfaces (NICs) attached, dhcp4 -+ will be enabled to obtain the primary private IPv4 address of those NICs. -+ Wherever dhcp4 or dhcp6 is enabled for a NIC, a dhcp route-metric will be -+ added with the value of `` * 100`` to ensure dhcp -+ routes on the primary NIC are preferred to any secondary NICs. -+ For example: the primary NIC will have a DHCP route-metric of 100, -+ the next NIC will be 200. -+ - .. vi: textwidth=78 ---- a/tests/unittests/test_datasource/test_ec2.py -+++ b/tests/unittests/test_datasource/test_ec2.py -@@ -113,6 +113,122 @@ DEFAULT_METADATA = { - "services": {"domain": "amazonaws.com", "partition": "aws"}, - } - -+# collected from api version 2018-09-24/ with -+# python3 -c 'import json -+# from cloudinit.ec2_utils import get_instance_metadata as gm -+# print(json.dumps(gm("2018-09-24"), indent=1, sort_keys=True))' -+ -+NIC1_MD_IPV4_IPV6_MULTI_IP = { -+ "device-number": "0", -+ "interface-id": "eni-0d6335689899ce9cc", -+ "ipv4-associations": { -+ "18.218.219.181": "172.31.44.13" -+ }, -+ "ipv6s": [ -+ "2600:1f16:292:100:c187:593c:4349:136", -+ "2600:1f16:292:100:f153:12a3:c37c:11f9", -+ "2600:1f16:292:100:f152:2222:3333:4444" -+ ], -+ "local-hostname": ("ip-172-31-44-13.us-east-2." -+ "compute.internal"), -+ "local-ipv4s": [ -+ "172.31.44.13", -+ "172.31.45.70" -+ ], -+ "mac": "0a:07:84:3d:6e:38", -+ "owner-id": "329910648901", -+ "public-hostname": ("ec2-18-218-219-181.us-east-2." -+ "compute.amazonaws.com"), -+ "public-ipv4s": "18.218.219.181", -+ "security-group-ids": "sg-0c387755222ba8d2e", -+ "security-groups": "launch-wizard-4", -+ "subnet-id": "subnet-9d7ba0d1", -+ "subnet-ipv4-cidr-block": "172.31.32.0/20", -+ "subnet_ipv6_cidr_blocks": "2600:1f16:292:100::/64", -+ "vpc-id": "vpc-a07f62c8", -+ "vpc-ipv4-cidr-block": "172.31.0.0/16", -+ "vpc-ipv4-cidr-blocks": "172.31.0.0/16", -+ "vpc_ipv6_cidr_blocks": "2600:1f16:292:100::/56" -+} -+ -+NIC2_MD = { -+ "device_number": "1", -+ "interface_id": "eni-043cdce36ded5e79f", -+ "local_hostname": "ip-172-31-47-221.us-east-2.compute.internal", -+ "local_ipv4s": "172.31.47.221", -+ "mac": "0a:75:69:92:e2:16", -+ "owner_id": "329910648901", -+ "security_group_ids": "sg-0d68fef37d8cc9b77", -+ "security_groups": "launch-wizard-17", -+ "subnet_id": "subnet-9d7ba0d1", -+ "subnet_ipv4_cidr_block": "172.31.32.0/20", -+ "vpc_id": "vpc-a07f62c8", -+ "vpc_ipv4_cidr_block": "172.31.0.0/16", -+ "vpc_ipv4_cidr_blocks": "172.31.0.0/16" -+} -+ -+SECONDARY_IP_METADATA_2018_09_24 = { -+ "ami-id": "ami-0986c2ac728528ac2", -+ "ami-launch-index": "0", -+ "ami-manifest-path": "(unknown)", -+ "block-device-mapping": { -+ "ami": "/dev/sda1", -+ "root": "/dev/sda1" -+ }, -+ "events": { -+ "maintenance": { -+ "history": "[]", -+ "scheduled": "[]" -+ } -+ }, -+ "hostname": "ip-172-31-44-13.us-east-2.compute.internal", -+ "identity-credentials": { -+ "ec2": { -+ "info": { -+ "AccountId": "329910648901", -+ "Code": "Success", -+ "LastUpdated": "2019-07-06T14:22:56Z" -+ } -+ } -+ }, -+ "instance-action": "none", -+ "instance-id": "i-069e01e8cc43732f8", -+ "instance-type": "t2.micro", -+ "local-hostname": "ip-172-31-44-13.us-east-2.compute.internal", -+ "local-ipv4": "172.31.44.13", -+ "mac": "0a:07:84:3d:6e:38", -+ "metrics": { -+ "vhostmd": "" -+ }, -+ "network": { -+ "interfaces": { -+ "macs": { -+ "0a:07:84:3d:6e:38": NIC1_MD_IPV4_IPV6_MULTI_IP, -+ } -+ } -+ }, -+ "placement": { -+ "availability-zone": "us-east-2c" -+ }, -+ "profile": "default-hvm", -+ "public-hostname": ( -+ "ec2-18-218-219-181.us-east-2.compute.amazonaws.com"), -+ "public-ipv4": "18.218.219.181", -+ "public-keys": { -+ "yourkeyname,e": [ -+ "ssh-rsa AAAAW...DZ yourkeyname" -+ ] -+ }, -+ "reservation-id": "r-09b4917135cdd33be", -+ "security-groups": "launch-wizard-4", -+ "services": { -+ "domain": "amazonaws.com", -+ "partition": "aws" -+ } -+} -+ -+M_PATH_NET = 'cloudinit.sources.DataSourceEc2.net.' -+ - - def _register_ssh_keys(rfunc, base_url, keys_data): - """handle ssh key inconsistencies. -@@ -267,30 +383,23 @@ class TestEc2(test_helpers.HttprettyTest - register_mock_metaserver(instance_id_url, None) - return ds - -- def test_network_config_property_returns_version_1_network_data(self): -- """network_config property returns network version 1 for metadata. -- -- Only one device is configured even when multiple exist in metadata. -- """ -+ def test_network_config_property_returns_version_2_network_data(self): -+ """network_config property returns network version 2 for metadata""" - ds = self._setup_ds( - platform_data=self.valid_platform_data, - sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, - md={'md': DEFAULT_METADATA}) -- find_fallback_path = ( -- 'cloudinit.sources.DataSourceEc2.net.find_fallback_nic') -+ find_fallback_path = M_PATH_NET + 'find_fallback_nic' - with mock.patch(find_fallback_path) as m_find_fallback: - m_find_fallback.return_value = 'eth9' - ds.get_data() - - mac1 = '06:17:04:d7:26:09' # Defined in DEFAULT_METADATA -- expected = {'version': 1, 'config': [ -- {'mac_address': '06:17:04:d7:26:09', 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}], -- 'type': 'physical'}]} -- patch_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') -- get_interface_mac_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': '06:17:04:d7:26:09'}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': True}}} -+ patch_path = M_PATH_NET + 'get_interfaces_by_mac' -+ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' - with mock.patch(patch_path) as m_get_interfaces_by_mac: - with mock.patch(find_fallback_path) as m_find_fallback: - with mock.patch(get_interface_mac_path) as m_get_mac: -@@ -299,30 +408,59 @@ class TestEc2(test_helpers.HttprettyTest - m_get_mac.return_value = mac1 - self.assertEqual(expected, ds.network_config) - -- def test_network_config_property_set_dhcp4_on_private_ipv4(self): -- """network_config property configures dhcp4 on private ipv4 nics. -+ def test_network_config_property_set_dhcp4(self): -+ """network_config property configures dhcp4 on nics with local-ipv4s. - -- Only one device is configured even when multiple exist in metadata. -+ Only one device is configured based on get_interfaces_by_mac even when -+ multiple MACs exist in metadata. - """ - ds = self._setup_ds( - platform_data=self.valid_platform_data, - sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, - md={'md': DEFAULT_METADATA}) -- find_fallback_path = ( -- 'cloudinit.sources.DataSourceEc2.net.find_fallback_nic') -+ find_fallback_path = M_PATH_NET + 'find_fallback_nic' - with mock.patch(find_fallback_path) as m_find_fallback: - m_find_fallback.return_value = 'eth9' - ds.get_data() - - mac1 = '06:17:04:d7:26:0A' # IPv4 only in DEFAULT_METADATA -- expected = {'version': 1, 'config': [ -- {'mac_address': '06:17:04:d7:26:0A', 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}], -- 'type': 'physical'}]} -- patch_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') -- get_interface_mac_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': mac1.lower()}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': False}}} -+ patch_path = M_PATH_NET + 'get_interfaces_by_mac' -+ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' -+ with mock.patch(patch_path) as m_get_interfaces_by_mac: -+ with mock.patch(find_fallback_path) as m_find_fallback: -+ with mock.patch(get_interface_mac_path) as m_get_mac: -+ m_get_interfaces_by_mac.return_value = {mac1: 'eth9'} -+ m_find_fallback.return_value = 'eth9' -+ m_get_mac.return_value = mac1 -+ self.assertEqual(expected, ds.network_config) -+ -+ def test_network_config_property_secondary_private_ips(self): -+ """network_config property configures any secondary ipv4 addresses. -+ -+ Only one device is configured based on get_interfaces_by_mac even when -+ multiple MACs exist in metadata. -+ """ -+ ds = self._setup_ds( -+ platform_data=self.valid_platform_data, -+ sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, -+ md={'md': SECONDARY_IP_METADATA_2018_09_24}) -+ find_fallback_path = M_PATH_NET + 'find_fallback_nic' -+ with mock.patch(find_fallback_path) as m_find_fallback: -+ m_find_fallback.return_value = 'eth9' -+ ds.get_data() -+ -+ mac1 = '0a:07:84:3d:6e:38' # 1 secondary IPv4 and 2 secondary IPv6 -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': mac1}, 'set-name': 'eth9', -+ 'addresses': ['172.31.45.70/20', -+ '2600:1f16:292:100:f152:2222:3333:4444/128', -+ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], -+ 'dhcp4': True, 'dhcp6': True}}} -+ patch_path = M_PATH_NET + 'get_interfaces_by_mac' -+ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' - with mock.patch(patch_path) as m_get_interfaces_by_mac: - with mock.patch(find_fallback_path) as m_find_fallback: - with mock.patch(get_interface_mac_path) as m_get_mac: -@@ -358,21 +496,18 @@ class TestEc2(test_helpers.HttprettyTest - register_mock_metaserver( - 'http://169.254.169.254/2009-04-04/meta-data/', DEFAULT_METADATA) - mac1 = '06:17:04:d7:26:09' # Defined in DEFAULT_METADATA -- get_interface_mac_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') -+ get_interface_mac_path = M_PATH_NET + 'get_interfaces_by_mac' - ds.fallback_nic = 'eth9' -- with mock.patch(get_interface_mac_path) as m_get_interface_mac: -- m_get_interface_mac.return_value = mac1 -+ with mock.patch(get_interface_mac_path) as m_get_interfaces_by_mac: -+ m_get_interfaces_by_mac.return_value = {mac1: 'eth9'} - nc = ds.network_config # Will re-crawl network metadata - self.assertIsNotNone(nc) - self.assertIn( - 'Refreshing stale metadata from prior to upgrade', - self.logs.getvalue()) -- expected = {'version': 1, 'config': [ -- {'mac_address': '06:17:04:d7:26:09', -- 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}], -- 'type': 'physical'}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': True}}} - self.assertEqual(expected, ds.network_config) - - def test_ec2_get_instance_id_refreshes_identity_on_upgrade(self): -@@ -491,7 +626,7 @@ class TestEc2(test_helpers.HttprettyTest - logs_with_redacted = [log for log in all_logs if REDACT_TOK in log] - logs_with_token = [log for log in all_logs if 'API-TOKEN' in log] - self.assertEqual(1, len(logs_with_redacted_ttl)) -- self.assertEqual(79, len(logs_with_redacted)) -+ self.assertEqual(81, len(logs_with_redacted)) - self.assertEqual(0, len(logs_with_token)) - - @mock.patch('cloudinit.net.dhcp.maybe_perform_dhcp_discovery') -@@ -612,6 +747,44 @@ class TestEc2(test_helpers.HttprettyTest - self.assertIn('Crawl of metadata service took', self.logs.getvalue()) - - -+class TestGetSecondaryAddresses(test_helpers.CiTestCase): -+ -+ mac = '06:17:04:d7:26:ff' -+ with_logs = True -+ -+ def test_md_with_no_secondary_addresses(self): -+ """Empty list is returned when nic metadata contains no secondary ip""" -+ self.assertEqual([], ec2.get_secondary_addresses(NIC2_MD, self.mac)) -+ -+ def test_md_with_secondary_v4_and_v6_addresses(self): -+ """All secondary addresses are returned from nic metadata""" -+ self.assertEqual( -+ ['172.31.45.70/20', '2600:1f16:292:100:f152:2222:3333:4444/128', -+ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], -+ ec2.get_secondary_addresses(NIC1_MD_IPV4_IPV6_MULTI_IP, self.mac)) -+ -+ def test_invalid_ipv4_ipv6_cidr_metadata_logged_with_defaults(self): -+ """Any invalid subnet-ipv(4|6)-cidr-block values use defaults""" -+ invalid_cidr_md = copy.deepcopy(NIC1_MD_IPV4_IPV6_MULTI_IP) -+ invalid_cidr_md['subnet-ipv4-cidr-block'] = "something-unexpected" -+ invalid_cidr_md['subnet-ipv6-cidr-block'] = "not/sure/what/this/is" -+ self.assertEqual( -+ ['172.31.45.70/24', '2600:1f16:292:100:f152:2222:3333:4444/128', -+ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], -+ ec2.get_secondary_addresses(invalid_cidr_md, self.mac)) -+ expected_logs = [ -+ "WARNING: Could not parse subnet-ipv4-cidr-block" -+ " something-unexpected for mac 06:17:04:d7:26:ff." -+ " ipv4 network config prefix defaults to /24", -+ "WARNING: Could not parse subnet-ipv6-cidr-block" -+ " not/sure/what/this/is for mac 06:17:04:d7:26:ff." -+ " ipv6 network config prefix defaults to /128" -+ ] -+ logs = self.logs.getvalue() -+ for log in expected_logs: -+ self.assertIn(log, logs) -+ -+ - class TestConvertEc2MetadataNetworkConfig(test_helpers.CiTestCase): - - def setUp(self): -@@ -619,16 +792,16 @@ class TestConvertEc2MetadataNetworkConfi - self.mac1 = '06:17:04:d7:26:09' - self.network_metadata = { - 'interfaces': {'macs': { -- self.mac1: {'public-ipv4s': '172.31.2.16'}}}} -+ self.mac1: {'mac': self.mac1, 'public-ipv4s': '172.31.2.16'}}}} - - def test_convert_ec2_metadata_network_config_skips_absent_macs(self): - """Any mac absent from metadata is skipped by network config.""" - macs_to_nics = {self.mac1: 'eth9', 'DE:AD:BE:EF:FF:FF': 'vitualnic2'} - - # DE:AD:BE:EF:FF:FF represented by OS but not in metadata -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': False}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( -@@ -642,15 +815,15 @@ class TestConvertEc2MetadataNetworkConfi - network_metadata_ipv6['interfaces']['macs'][self.mac1]) - nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' - nic1_metadata.pop('public-ipv4s') -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', 'subnets': [{'type': 'dhcp6'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': True}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( - network_metadata_ipv6, macs_to_nics)) - -- def test_convert_ec2_metadata_network_config_handles_local_dhcp4(self): -+ def test_convert_ec2_metadata_network_config_local_only_dhcp4(self): - """Config dhcp4 when there are no public addresses in public-ipv4s.""" - macs_to_nics = {self.mac1: 'eth9'} - network_metadata_ipv6 = copy.deepcopy(self.network_metadata) -@@ -658,9 +831,9 @@ class TestConvertEc2MetadataNetworkConfi - network_metadata_ipv6['interfaces']['macs'][self.mac1]) - nic1_metadata['local-ipv4s'] = '172.3.3.15' - nic1_metadata.pop('public-ipv4s') -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': False}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( -@@ -675,16 +848,16 @@ class TestConvertEc2MetadataNetworkConfi - nic1_metadata['public-ipv4s'] = '' - - # When no ipv4 or ipv6 content but fallback_nic set, set dhcp4 config. -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': False}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( - network_metadata_ipv6, macs_to_nics, fallback_nic='eth9')) - - def test_convert_ec2_metadata_network_config_handles_local_v4_and_v6(self): -- """When dhcp6 is public and dhcp4 is set to local enable both.""" -+ """When ipv6s and local-ipv4s are non-empty, enable dhcp6 and dhcp4.""" - macs_to_nics = {self.mac1: 'eth9'} - network_metadata_both = copy.deepcopy(self.network_metadata) - nic1_metadata = ( -@@ -692,10 +865,35 @@ class TestConvertEc2MetadataNetworkConfi - nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' - nic1_metadata.pop('public-ipv4s') - nic1_metadata['local-ipv4s'] = '10.0.0.42' # Local ipv4 only on vpc -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': True}}} -+ self.assertEqual( -+ expected, -+ ec2.convert_ec2_metadata_network_config( -+ network_metadata_both, macs_to_nics)) -+ -+ def test_convert_ec2_metadata_network_config_handles_multiple_nics(self): -+ """DHCP route-metric increases on secondary NICs for IPv4 and IPv6.""" -+ mac2 = '06:17:04:d7:26:0a' -+ macs_to_nics = {self.mac1: 'eth9', mac2: 'eth10'} -+ network_metadata_both = copy.deepcopy(self.network_metadata) -+ # Add 2nd nic info -+ network_metadata_both['interfaces']['macs'][mac2] = NIC2_MD -+ nic1_metadata = ( -+ network_metadata_both['interfaces']['macs'][self.mac1]) -+ nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' -+ nic1_metadata.pop('public-ipv4s') # No public-ipv4 IPs in cfg -+ nic1_metadata['local-ipv4s'] = '10.0.0.42' # Local ipv4 only on vpc -+ expected = {'version': 2, 'ethernets': { -+ 'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp4-overrides': {'route-metric': 100}, -+ 'dhcp6': True, 'dhcp6-overrides': {'route-metric': 100}}, -+ 'eth10': { -+ 'match': {'macaddress': mac2}, 'set-name': 'eth10', -+ 'dhcp4': True, 'dhcp4-overrides': {'route-metric': 200}, -+ 'dhcp6': False}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( -@@ -708,10 +906,9 @@ class TestConvertEc2MetadataNetworkConfi - nic1_metadata = ( - network_metadata_both['interfaces']['macs'][self.mac1]) - nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': True}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( -@@ -719,12 +916,10 @@ class TestConvertEc2MetadataNetworkConfi - - def test_convert_ec2_metadata_gets_macs_from_get_interfaces_by_mac(self): - """Convert Ec2 Metadata calls get_interfaces_by_mac by default.""" -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}]}]} -- patch_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, -+ 'set-name': 'eth9', 'dhcp4': True, 'dhcp6': False}}} -+ patch_path = M_PATH_NET + 'get_interfaces_by_mac' - with mock.patch(patch_path) as m_get_interfaces_by_mac: - m_get_interfaces_by_mac.return_value = {self.mac1: 'eth9'} - self.assertEqual( diff --git a/debian/patches/series b/debian/patches/series deleted file mode 100644 index d65a3307e59..00000000000 --- a/debian/patches/series +++ /dev/null @@ -1 +0,0 @@ -cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as From d65ca87cad96ecb280ce40eb78dbf8fec3a980ca Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 23 Mar 2020 14:37:21 -0600 Subject: [PATCH 0407/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index b4fb48fa5e4..ad4ec884d08 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (20.1-10-g71af48df-0ubuntu3) UNRELEASED; urgency=medium + + * drop cherry pick included in master commit c4be3c60eb + - ec2-render-network-on-all-NICs-and-add-secondary-IPs-as + + -- Chad Smith Mon, 23 Mar 2020 14:35:12 -0600 + cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium * d/control: add python3-pytest to Build-Depends From d219b4bc59865110b4cae9b4d166e460cd76e3b2 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:21 -0600 Subject: [PATCH 0408/1174] cherry pick 6600c642 LP: #1866930 --- ...twork-on-all-NICs-and-add-secondary-IPs-as | 706 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 707 insertions(+) create mode 100644 debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as create mode 100644 debian/patches/series diff --git a/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as b/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as new file mode 100644 index 00000000000..47bf46ab97b --- /dev/null +++ b/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as @@ -0,0 +1,706 @@ +From 6600c642af3817fe5e0170cb7b4eeac4be3c60eb Mon Sep 17 00:00:00 2001 +From: Chad Smith +Date: Wed, 18 Mar 2020 13:33:37 -0600 +Subject: [PATCH] ec2: render network on all NICs and add secondary IPs as + static (#114) + +Add support for rendering secondary static IPv4/IPv6 addresses on +any NIC attached to the machine. In order to see secondary IP +addresses in Ec2 IMDS network config, cloud-init now reads metadata +version 2018-09-24. Metadata services which do not support the Ec2 +API version will not get secondary IP addresses configured. + +In order to discover secondary IP address config, cloud-init now +relies on metadata API Parse local-ipv4s, ipv6s, +subnet-ipv4-cidr-block and subnet-ipv6-cidr-block metadata keys to +determine additional IPs and appropriate subnet prefix to set for a +nic. + +Also add the datasource config option apply_full_imds_netork_config +which defaults to true to allow cloud-init to automatically configure +secondary IP addresses. Setting this option to false will tell +cloud-init to avoid setting up secondary IP addresses. + +Also in this branch: + - Shift Ec2 datasource to emit network config v2 instead of v1. + +LP: #1866930 +--- + cloudinit/sources/DataSourceEc2.py | 116 +++++-- + doc/rtd/topics/datasources/ec2.rst | 19 ++ + tests/unittests/test_datasource/test_ec2.py | 329 ++++++++++++++++---- + 3 files changed, 379 insertions(+), 85 deletions(-) + +--- a/cloudinit/sources/DataSourceEc2.py ++++ b/cloudinit/sources/DataSourceEc2.py +@@ -62,7 +62,7 @@ class DataSourceEc2(sources.DataSource): + + # Priority ordered list of additional metadata versions which will be tried + # for extended metadata content. IPv6 support comes in 2016-09-02 +- extended_metadata_versions = ['2016-09-02'] ++ extended_metadata_versions = ['2018-09-24', '2016-09-02'] + + # Setup read_url parameters per get_url_params. + url_max_wait = 120 +@@ -405,13 +405,16 @@ class DataSourceEc2(sources.DataSource): + logfunc=LOG.debug, msg='Re-crawl of metadata service', + func=self.get_data) + +- # Limit network configuration to only the primary/fallback nic + iface = self.fallback_interface +- macs_to_nics = {net.get_interface_mac(iface): iface} + net_md = self.metadata.get('network') + if isinstance(net_md, dict): ++ # SRU_BLOCKER: xenial, bionic and eoan should default ++ # apply_full_imds_network_config to False to retain original ++ # behavior on those releases. + result = convert_ec2_metadata_network_config( +- net_md, macs_to_nics=macs_to_nics, fallback_nic=iface) ++ net_md, fallback_nic=iface, ++ full_network_config=util.get_cfg_option_bool( ++ self.ds_cfg, 'apply_full_imds_network_config', True)) + + # RELEASE_BLOCKER: xenial should drop the below if statement, + # because the issue being addressed doesn't exist pre-netplan. +@@ -719,9 +722,10 @@ def _collect_platform_data(): + return data + + +-def convert_ec2_metadata_network_config(network_md, macs_to_nics=None, +- fallback_nic=None): +- """Convert ec2 metadata to network config version 1 data dict. ++def convert_ec2_metadata_network_config( ++ network_md, macs_to_nics=None, fallback_nic=None, ++ full_network_config=True): ++ """Convert ec2 metadata to network config version 2 data dict. + + @param: network_md: 'network' portion of EC2 metadata. + generally formed as {"interfaces": {"macs": {}} where +@@ -731,28 +735,104 @@ def convert_ec2_metadata_network_config( + not provided, get_interfaces_by_mac is called to get it from the OS. + @param: fallback_nic: Optionally provide the primary nic interface name. + This nic will be guaranteed to minimally have a dhcp4 configuration. ++ @param: full_network_config: Boolean set True to configure all networking ++ presented by IMDS. This includes rendering secondary IPv4 and IPv6 ++ addresses on all NICs and rendering network config on secondary NICs. ++ If False, only the primary nic will be configured and only with dhcp ++ (IPv4/IPv6). + +- @return A dict of network config version 1 based on the metadata and macs. ++ @return A dict of network config version 2 based on the metadata and macs. + """ +- netcfg = {'version': 1, 'config': []} ++ netcfg = {'version': 2, 'ethernets': {}} + if not macs_to_nics: + macs_to_nics = net.get_interfaces_by_mac() + macs_metadata = network_md['interfaces']['macs'] +- for mac, nic_name in macs_to_nics.items(): ++ ++ if not full_network_config: ++ for mac, nic_name in macs_to_nics.items(): ++ if nic_name == fallback_nic: ++ break ++ dev_config = {'dhcp4': True, ++ 'dhcp6': False, ++ 'match': {'macaddress': mac.lower()}, ++ 'set-name': nic_name} ++ nic_metadata = macs_metadata.get(mac) ++ if nic_metadata.get('ipv6s'): # Any IPv6 addresses configured ++ dev_config['dhcp6'] = True ++ netcfg['ethernets'][nic_name] = dev_config ++ return netcfg ++ # Apply network config for all nics and any secondary IPv4/v6 addresses ++ nic_idx = 1 ++ for mac, nic_name in sorted(macs_to_nics.items()): + nic_metadata = macs_metadata.get(mac) + if not nic_metadata: + continue # Not a physical nic represented in metadata +- nic_cfg = {'type': 'physical', 'name': nic_name, 'subnets': []} +- nic_cfg['mac_address'] = mac +- if (nic_name == fallback_nic or nic_metadata.get('public-ipv4s') or +- nic_metadata.get('local-ipv4s')): +- nic_cfg['subnets'].append({'type': 'dhcp4'}) +- if nic_metadata.get('ipv6s'): +- nic_cfg['subnets'].append({'type': 'dhcp6'}) +- netcfg['config'].append(nic_cfg) ++ dhcp_override = {'route-metric': nic_idx * 100} ++ nic_idx += 1 ++ dev_config = {'dhcp4': True, 'dhcp4-overrides': dhcp_override, ++ 'dhcp6': False, ++ 'match': {'macaddress': mac.lower()}, ++ 'set-name': nic_name} ++ if nic_metadata.get('ipv6s'): # Any IPv6 addresses configured ++ dev_config['dhcp6'] = True ++ dev_config['dhcp6-overrides'] = dhcp_override ++ dev_config['addresses'] = get_secondary_addresses(nic_metadata, mac) ++ if not dev_config['addresses']: ++ dev_config.pop('addresses') # Since we found none configured ++ netcfg['ethernets'][nic_name] = dev_config ++ # Remove route-metric dhcp overrides if only one nic configured ++ if len(netcfg['ethernets']) == 1: ++ for nic_name in netcfg['ethernets'].keys(): ++ netcfg['ethernets'][nic_name].pop('dhcp4-overrides') ++ netcfg['ethernets'][nic_name].pop('dhcp6-overrides', None) + return netcfg + + ++def get_secondary_addresses(nic_metadata, mac): ++ """Parse interface-specific nic metadata and return any secondary IPs ++ ++ :return: List of secondary IPv4 or IPv6 addresses to configure on the ++ interface ++ """ ++ ipv4s = nic_metadata.get('local-ipv4s') ++ ipv6s = nic_metadata.get('ipv6s') ++ addresses = [] ++ # In version < 2018-09-24 local_ipv4s or ipv6s is a str with one IP ++ if bool(isinstance(ipv4s, list) and len(ipv4s) > 1): ++ addresses.extend( ++ _get_secondary_addresses( ++ nic_metadata, 'subnet-ipv4-cidr-block', mac, ipv4s, '24')) ++ if bool(isinstance(ipv6s, list) and len(ipv6s) > 1): ++ addresses.extend( ++ _get_secondary_addresses( ++ nic_metadata, 'subnet-ipv6-cidr-block', mac, ipv6s, '128')) ++ return sorted(addresses) ++ ++ ++def _get_secondary_addresses(nic_metadata, cidr_key, mac, ips, default_prefix): ++ """Return list of IP addresses as CIDRs for secondary IPs ++ ++ The CIDR prefix will be default_prefix if cidr_key is absent or not ++ parseable in nic_metadata. ++ """ ++ addresses = [] ++ cidr = nic_metadata.get(cidr_key) ++ prefix = default_prefix ++ if not cidr or len(cidr.split('/')) != 2: ++ ip_type = 'ipv4' if 'ipv4' in cidr_key else 'ipv6' ++ LOG.warning( ++ 'Could not parse %s %s for mac %s. %s network' ++ ' config prefix defaults to /%s', ++ cidr_key, cidr, mac, ip_type, prefix) ++ else: ++ prefix = cidr.split('/')[1] ++ # We know we have > 1 ips for in metadata for this IP type ++ for ip in ips[1:]: ++ addresses.append( ++ '{ip}/{prefix}'.format(ip=ip, prefix=prefix)) ++ return addresses ++ ++ + # Used to match classes to dependencies + datasources = [ + (DataSourceEc2Local, (sources.DEP_FILESYSTEM,)), # Run at init-local +--- a/doc/rtd/topics/datasources/ec2.rst ++++ b/doc/rtd/topics/datasources/ec2.rst +@@ -42,6 +42,7 @@ Note that there are multiple versions of + by default uses **2009-04-04** but newer versions can be supported with + relative ease (newer versions have more data exposed, while maintaining + backward compatibility with the previous versions). ++Version **2016-09-02** is required for secondary IP address support. + + To see which versions are supported from your cloud provider use the following + URL: +@@ -80,6 +81,15 @@ The settings that may be configured are: + * **timeout**: the timeout value provided to urlopen for each individual http + request. This is used both when selecting a metadata_url and when crawling + the metadata service. (default: 50) ++ * **apply_full_imds_network_config**: Boolean (default: True) to allow ++ cloud-init to configure any secondary NICs and secondary IPs described by ++ the metadata service. All network interfaces are configured with DHCP (v4) ++ to obtain an primary IPv4 address and route. Interfaces which have a ++ non-empty 'ipv6s' list will also enable DHCPv6 to obtain a primary IPv6 ++ address and route. The DHCP response (v4 and v6) return an IP that matches ++ the first element of local-ipv4s and ipv6s lists respectively. All ++ additional values (secondary addresses) in the static ip lists will be ++ added to interface. + + An example configuration with the default values is provided below: + +@@ -90,6 +100,7 @@ An example configuration with the defaul + metadata_urls: ["http://169.254.169.254:80", "http://instance-data:8773"] + max_wait: 120 + timeout: 50 ++ apply_full_imds_network_config: true + + Notes + ----- +@@ -102,4 +113,12 @@ Notes + The check for the instance type is performed by is_classic_instance() + method. + ++ * For EC2 instances with multiple network interfaces (NICs) attached, dhcp4 ++ will be enabled to obtain the primary private IPv4 address of those NICs. ++ Wherever dhcp4 or dhcp6 is enabled for a NIC, a dhcp route-metric will be ++ added with the value of `` * 100`` to ensure dhcp ++ routes on the primary NIC are preferred to any secondary NICs. ++ For example: the primary NIC will have a DHCP route-metric of 100, ++ the next NIC will be 200. ++ + .. vi: textwidth=78 +--- a/tests/unittests/test_datasource/test_ec2.py ++++ b/tests/unittests/test_datasource/test_ec2.py +@@ -113,6 +113,122 @@ DEFAULT_METADATA = { + "services": {"domain": "amazonaws.com", "partition": "aws"}, + } + ++# collected from api version 2018-09-24/ with ++# python3 -c 'import json ++# from cloudinit.ec2_utils import get_instance_metadata as gm ++# print(json.dumps(gm("2018-09-24"), indent=1, sort_keys=True))' ++ ++NIC1_MD_IPV4_IPV6_MULTI_IP = { ++ "device-number": "0", ++ "interface-id": "eni-0d6335689899ce9cc", ++ "ipv4-associations": { ++ "18.218.219.181": "172.31.44.13" ++ }, ++ "ipv6s": [ ++ "2600:1f16:292:100:c187:593c:4349:136", ++ "2600:1f16:292:100:f153:12a3:c37c:11f9", ++ "2600:1f16:292:100:f152:2222:3333:4444" ++ ], ++ "local-hostname": ("ip-172-31-44-13.us-east-2." ++ "compute.internal"), ++ "local-ipv4s": [ ++ "172.31.44.13", ++ "172.31.45.70" ++ ], ++ "mac": "0a:07:84:3d:6e:38", ++ "owner-id": "329910648901", ++ "public-hostname": ("ec2-18-218-219-181.us-east-2." ++ "compute.amazonaws.com"), ++ "public-ipv4s": "18.218.219.181", ++ "security-group-ids": "sg-0c387755222ba8d2e", ++ "security-groups": "launch-wizard-4", ++ "subnet-id": "subnet-9d7ba0d1", ++ "subnet-ipv4-cidr-block": "172.31.32.0/20", ++ "subnet_ipv6_cidr_blocks": "2600:1f16:292:100::/64", ++ "vpc-id": "vpc-a07f62c8", ++ "vpc-ipv4-cidr-block": "172.31.0.0/16", ++ "vpc-ipv4-cidr-blocks": "172.31.0.0/16", ++ "vpc_ipv6_cidr_blocks": "2600:1f16:292:100::/56" ++} ++ ++NIC2_MD = { ++ "device_number": "1", ++ "interface_id": "eni-043cdce36ded5e79f", ++ "local_hostname": "ip-172-31-47-221.us-east-2.compute.internal", ++ "local_ipv4s": "172.31.47.221", ++ "mac": "0a:75:69:92:e2:16", ++ "owner_id": "329910648901", ++ "security_group_ids": "sg-0d68fef37d8cc9b77", ++ "security_groups": "launch-wizard-17", ++ "subnet_id": "subnet-9d7ba0d1", ++ "subnet_ipv4_cidr_block": "172.31.32.0/20", ++ "vpc_id": "vpc-a07f62c8", ++ "vpc_ipv4_cidr_block": "172.31.0.0/16", ++ "vpc_ipv4_cidr_blocks": "172.31.0.0/16" ++} ++ ++SECONDARY_IP_METADATA_2018_09_24 = { ++ "ami-id": "ami-0986c2ac728528ac2", ++ "ami-launch-index": "0", ++ "ami-manifest-path": "(unknown)", ++ "block-device-mapping": { ++ "ami": "/dev/sda1", ++ "root": "/dev/sda1" ++ }, ++ "events": { ++ "maintenance": { ++ "history": "[]", ++ "scheduled": "[]" ++ } ++ }, ++ "hostname": "ip-172-31-44-13.us-east-2.compute.internal", ++ "identity-credentials": { ++ "ec2": { ++ "info": { ++ "AccountId": "329910648901", ++ "Code": "Success", ++ "LastUpdated": "2019-07-06T14:22:56Z" ++ } ++ } ++ }, ++ "instance-action": "none", ++ "instance-id": "i-069e01e8cc43732f8", ++ "instance-type": "t2.micro", ++ "local-hostname": "ip-172-31-44-13.us-east-2.compute.internal", ++ "local-ipv4": "172.31.44.13", ++ "mac": "0a:07:84:3d:6e:38", ++ "metrics": { ++ "vhostmd": "" ++ }, ++ "network": { ++ "interfaces": { ++ "macs": { ++ "0a:07:84:3d:6e:38": NIC1_MD_IPV4_IPV6_MULTI_IP, ++ } ++ } ++ }, ++ "placement": { ++ "availability-zone": "us-east-2c" ++ }, ++ "profile": "default-hvm", ++ "public-hostname": ( ++ "ec2-18-218-219-181.us-east-2.compute.amazonaws.com"), ++ "public-ipv4": "18.218.219.181", ++ "public-keys": { ++ "yourkeyname,e": [ ++ "ssh-rsa AAAAW...DZ yourkeyname" ++ ] ++ }, ++ "reservation-id": "r-09b4917135cdd33be", ++ "security-groups": "launch-wizard-4", ++ "services": { ++ "domain": "amazonaws.com", ++ "partition": "aws" ++ } ++} ++ ++M_PATH_NET = 'cloudinit.sources.DataSourceEc2.net.' ++ + + def _register_ssh_keys(rfunc, base_url, keys_data): + """handle ssh key inconsistencies. +@@ -267,30 +383,23 @@ class TestEc2(test_helpers.HttprettyTest + register_mock_metaserver(instance_id_url, None) + return ds + +- def test_network_config_property_returns_version_1_network_data(self): +- """network_config property returns network version 1 for metadata. +- +- Only one device is configured even when multiple exist in metadata. +- """ ++ def test_network_config_property_returns_version_2_network_data(self): ++ """network_config property returns network version 2 for metadata""" + ds = self._setup_ds( + platform_data=self.valid_platform_data, + sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, + md={'md': DEFAULT_METADATA}) +- find_fallback_path = ( +- 'cloudinit.sources.DataSourceEc2.net.find_fallback_nic') ++ find_fallback_path = M_PATH_NET + 'find_fallback_nic' + with mock.patch(find_fallback_path) as m_find_fallback: + m_find_fallback.return_value = 'eth9' + ds.get_data() + + mac1 = '06:17:04:d7:26:09' # Defined in DEFAULT_METADATA +- expected = {'version': 1, 'config': [ +- {'mac_address': '06:17:04:d7:26:09', 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}], +- 'type': 'physical'}]} +- patch_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') +- get_interface_mac_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': '06:17:04:d7:26:09'}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': True}}} ++ patch_path = M_PATH_NET + 'get_interfaces_by_mac' ++ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' + with mock.patch(patch_path) as m_get_interfaces_by_mac: + with mock.patch(find_fallback_path) as m_find_fallback: + with mock.patch(get_interface_mac_path) as m_get_mac: +@@ -299,30 +408,59 @@ class TestEc2(test_helpers.HttprettyTest + m_get_mac.return_value = mac1 + self.assertEqual(expected, ds.network_config) + +- def test_network_config_property_set_dhcp4_on_private_ipv4(self): +- """network_config property configures dhcp4 on private ipv4 nics. ++ def test_network_config_property_set_dhcp4(self): ++ """network_config property configures dhcp4 on nics with local-ipv4s. + +- Only one device is configured even when multiple exist in metadata. ++ Only one device is configured based on get_interfaces_by_mac even when ++ multiple MACs exist in metadata. + """ + ds = self._setup_ds( + platform_data=self.valid_platform_data, + sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, + md={'md': DEFAULT_METADATA}) +- find_fallback_path = ( +- 'cloudinit.sources.DataSourceEc2.net.find_fallback_nic') ++ find_fallback_path = M_PATH_NET + 'find_fallback_nic' + with mock.patch(find_fallback_path) as m_find_fallback: + m_find_fallback.return_value = 'eth9' + ds.get_data() + + mac1 = '06:17:04:d7:26:0A' # IPv4 only in DEFAULT_METADATA +- expected = {'version': 1, 'config': [ +- {'mac_address': '06:17:04:d7:26:0A', 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}], +- 'type': 'physical'}]} +- patch_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') +- get_interface_mac_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': mac1.lower()}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': False}}} ++ patch_path = M_PATH_NET + 'get_interfaces_by_mac' ++ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' ++ with mock.patch(patch_path) as m_get_interfaces_by_mac: ++ with mock.patch(find_fallback_path) as m_find_fallback: ++ with mock.patch(get_interface_mac_path) as m_get_mac: ++ m_get_interfaces_by_mac.return_value = {mac1: 'eth9'} ++ m_find_fallback.return_value = 'eth9' ++ m_get_mac.return_value = mac1 ++ self.assertEqual(expected, ds.network_config) ++ ++ def test_network_config_property_secondary_private_ips(self): ++ """network_config property configures any secondary ipv4 addresses. ++ ++ Only one device is configured based on get_interfaces_by_mac even when ++ multiple MACs exist in metadata. ++ """ ++ ds = self._setup_ds( ++ platform_data=self.valid_platform_data, ++ sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, ++ md={'md': SECONDARY_IP_METADATA_2018_09_24}) ++ find_fallback_path = M_PATH_NET + 'find_fallback_nic' ++ with mock.patch(find_fallback_path) as m_find_fallback: ++ m_find_fallback.return_value = 'eth9' ++ ds.get_data() ++ ++ mac1 = '0a:07:84:3d:6e:38' # 1 secondary IPv4 and 2 secondary IPv6 ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': mac1}, 'set-name': 'eth9', ++ 'addresses': ['172.31.45.70/20', ++ '2600:1f16:292:100:f152:2222:3333:4444/128', ++ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], ++ 'dhcp4': True, 'dhcp6': True}}} ++ patch_path = M_PATH_NET + 'get_interfaces_by_mac' ++ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' + with mock.patch(patch_path) as m_get_interfaces_by_mac: + with mock.patch(find_fallback_path) as m_find_fallback: + with mock.patch(get_interface_mac_path) as m_get_mac: +@@ -358,21 +496,18 @@ class TestEc2(test_helpers.HttprettyTest + register_mock_metaserver( + 'http://169.254.169.254/2009-04-04/meta-data/', DEFAULT_METADATA) + mac1 = '06:17:04:d7:26:09' # Defined in DEFAULT_METADATA +- get_interface_mac_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') ++ get_interface_mac_path = M_PATH_NET + 'get_interfaces_by_mac' + ds.fallback_nic = 'eth9' +- with mock.patch(get_interface_mac_path) as m_get_interface_mac: +- m_get_interface_mac.return_value = mac1 ++ with mock.patch(get_interface_mac_path) as m_get_interfaces_by_mac: ++ m_get_interfaces_by_mac.return_value = {mac1: 'eth9'} + nc = ds.network_config # Will re-crawl network metadata + self.assertIsNotNone(nc) + self.assertIn( + 'Refreshing stale metadata from prior to upgrade', + self.logs.getvalue()) +- expected = {'version': 1, 'config': [ +- {'mac_address': '06:17:04:d7:26:09', +- 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}], +- 'type': 'physical'}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': True}}} + self.assertEqual(expected, ds.network_config) + + def test_ec2_get_instance_id_refreshes_identity_on_upgrade(self): +@@ -491,7 +626,7 @@ class TestEc2(test_helpers.HttprettyTest + logs_with_redacted = [log for log in all_logs if REDACT_TOK in log] + logs_with_token = [log for log in all_logs if 'API-TOKEN' in log] + self.assertEqual(1, len(logs_with_redacted_ttl)) +- self.assertEqual(79, len(logs_with_redacted)) ++ self.assertEqual(81, len(logs_with_redacted)) + self.assertEqual(0, len(logs_with_token)) + + @mock.patch('cloudinit.net.dhcp.maybe_perform_dhcp_discovery') +@@ -612,6 +747,44 @@ class TestEc2(test_helpers.HttprettyTest + self.assertIn('Crawl of metadata service took', self.logs.getvalue()) + + ++class TestGetSecondaryAddresses(test_helpers.CiTestCase): ++ ++ mac = '06:17:04:d7:26:ff' ++ with_logs = True ++ ++ def test_md_with_no_secondary_addresses(self): ++ """Empty list is returned when nic metadata contains no secondary ip""" ++ self.assertEqual([], ec2.get_secondary_addresses(NIC2_MD, self.mac)) ++ ++ def test_md_with_secondary_v4_and_v6_addresses(self): ++ """All secondary addresses are returned from nic metadata""" ++ self.assertEqual( ++ ['172.31.45.70/20', '2600:1f16:292:100:f152:2222:3333:4444/128', ++ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], ++ ec2.get_secondary_addresses(NIC1_MD_IPV4_IPV6_MULTI_IP, self.mac)) ++ ++ def test_invalid_ipv4_ipv6_cidr_metadata_logged_with_defaults(self): ++ """Any invalid subnet-ipv(4|6)-cidr-block values use defaults""" ++ invalid_cidr_md = copy.deepcopy(NIC1_MD_IPV4_IPV6_MULTI_IP) ++ invalid_cidr_md['subnet-ipv4-cidr-block'] = "something-unexpected" ++ invalid_cidr_md['subnet-ipv6-cidr-block'] = "not/sure/what/this/is" ++ self.assertEqual( ++ ['172.31.45.70/24', '2600:1f16:292:100:f152:2222:3333:4444/128', ++ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], ++ ec2.get_secondary_addresses(invalid_cidr_md, self.mac)) ++ expected_logs = [ ++ "WARNING: Could not parse subnet-ipv4-cidr-block" ++ " something-unexpected for mac 06:17:04:d7:26:ff." ++ " ipv4 network config prefix defaults to /24", ++ "WARNING: Could not parse subnet-ipv6-cidr-block" ++ " not/sure/what/this/is for mac 06:17:04:d7:26:ff." ++ " ipv6 network config prefix defaults to /128" ++ ] ++ logs = self.logs.getvalue() ++ for log in expected_logs: ++ self.assertIn(log, logs) ++ ++ + class TestConvertEc2MetadataNetworkConfig(test_helpers.CiTestCase): + + def setUp(self): +@@ -619,16 +792,16 @@ class TestConvertEc2MetadataNetworkConfi + self.mac1 = '06:17:04:d7:26:09' + self.network_metadata = { + 'interfaces': {'macs': { +- self.mac1: {'public-ipv4s': '172.31.2.16'}}}} ++ self.mac1: {'mac': self.mac1, 'public-ipv4s': '172.31.2.16'}}}} + + def test_convert_ec2_metadata_network_config_skips_absent_macs(self): + """Any mac absent from metadata is skipped by network config.""" + macs_to_nics = {self.mac1: 'eth9', 'DE:AD:BE:EF:FF:FF': 'vitualnic2'} + + # DE:AD:BE:EF:FF:FF represented by OS but not in metadata +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': False}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( +@@ -642,15 +815,15 @@ class TestConvertEc2MetadataNetworkConfi + network_metadata_ipv6['interfaces']['macs'][self.mac1]) + nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' + nic1_metadata.pop('public-ipv4s') +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', 'subnets': [{'type': 'dhcp6'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': True}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( + network_metadata_ipv6, macs_to_nics)) + +- def test_convert_ec2_metadata_network_config_handles_local_dhcp4(self): ++ def test_convert_ec2_metadata_network_config_local_only_dhcp4(self): + """Config dhcp4 when there are no public addresses in public-ipv4s.""" + macs_to_nics = {self.mac1: 'eth9'} + network_metadata_ipv6 = copy.deepcopy(self.network_metadata) +@@ -658,9 +831,9 @@ class TestConvertEc2MetadataNetworkConfi + network_metadata_ipv6['interfaces']['macs'][self.mac1]) + nic1_metadata['local-ipv4s'] = '172.3.3.15' + nic1_metadata.pop('public-ipv4s') +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': False}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( +@@ -675,16 +848,16 @@ class TestConvertEc2MetadataNetworkConfi + nic1_metadata['public-ipv4s'] = '' + + # When no ipv4 or ipv6 content but fallback_nic set, set dhcp4 config. +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': False}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( + network_metadata_ipv6, macs_to_nics, fallback_nic='eth9')) + + def test_convert_ec2_metadata_network_config_handles_local_v4_and_v6(self): +- """When dhcp6 is public and dhcp4 is set to local enable both.""" ++ """When ipv6s and local-ipv4s are non-empty, enable dhcp6 and dhcp4.""" + macs_to_nics = {self.mac1: 'eth9'} + network_metadata_both = copy.deepcopy(self.network_metadata) + nic1_metadata = ( +@@ -692,10 +865,35 @@ class TestConvertEc2MetadataNetworkConfi + nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' + nic1_metadata.pop('public-ipv4s') + nic1_metadata['local-ipv4s'] = '10.0.0.42' # Local ipv4 only on vpc +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': True}}} ++ self.assertEqual( ++ expected, ++ ec2.convert_ec2_metadata_network_config( ++ network_metadata_both, macs_to_nics)) ++ ++ def test_convert_ec2_metadata_network_config_handles_multiple_nics(self): ++ """DHCP route-metric increases on secondary NICs for IPv4 and IPv6.""" ++ mac2 = '06:17:04:d7:26:0a' ++ macs_to_nics = {self.mac1: 'eth9', mac2: 'eth10'} ++ network_metadata_both = copy.deepcopy(self.network_metadata) ++ # Add 2nd nic info ++ network_metadata_both['interfaces']['macs'][mac2] = NIC2_MD ++ nic1_metadata = ( ++ network_metadata_both['interfaces']['macs'][self.mac1]) ++ nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' ++ nic1_metadata.pop('public-ipv4s') # No public-ipv4 IPs in cfg ++ nic1_metadata['local-ipv4s'] = '10.0.0.42' # Local ipv4 only on vpc ++ expected = {'version': 2, 'ethernets': { ++ 'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp4-overrides': {'route-metric': 100}, ++ 'dhcp6': True, 'dhcp6-overrides': {'route-metric': 100}}, ++ 'eth10': { ++ 'match': {'macaddress': mac2}, 'set-name': 'eth10', ++ 'dhcp4': True, 'dhcp4-overrides': {'route-metric': 200}, ++ 'dhcp6': False}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( +@@ -708,10 +906,9 @@ class TestConvertEc2MetadataNetworkConfi + nic1_metadata = ( + network_metadata_both['interfaces']['macs'][self.mac1]) + nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}]}]} ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', ++ 'dhcp4': True, 'dhcp6': True}}} + self.assertEqual( + expected, + ec2.convert_ec2_metadata_network_config( +@@ -719,12 +916,10 @@ class TestConvertEc2MetadataNetworkConfi + + def test_convert_ec2_metadata_gets_macs_from_get_interfaces_by_mac(self): + """Convert Ec2 Metadata calls get_interfaces_by_mac by default.""" +- expected = {'version': 1, 'config': [ +- {'mac_address': self.mac1, 'type': 'physical', +- 'name': 'eth9', +- 'subnets': [{'type': 'dhcp4'}]}]} +- patch_path = ( +- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') ++ expected = {'version': 2, 'ethernets': {'eth9': { ++ 'match': {'macaddress': self.mac1}, ++ 'set-name': 'eth9', 'dhcp4': True, 'dhcp6': False}}} ++ patch_path = M_PATH_NET + 'get_interfaces_by_mac' + with mock.patch(patch_path) as m_get_interfaces_by_mac: + m_get_interfaces_by_mac.return_value = {self.mac1: 'eth9'} + self.assertEqual( diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 00000000000..d65a3307e59 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as From 0c2f786ac77f26cf2c75f88fd2c1b1c7442b07b5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:21 -0600 Subject: [PATCH 0409/1174] update changelog --- debian/changelog | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index ad4ec884d08..5447e4797f5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (20.1-10-g71af48df-0ubuntu3) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu4) UNRELEASED; urgency=medium - * drop cherry pick included in master commit c4be3c60eb - - ec2-render-network-on-all-NICs-and-add-secondary-IPs-as + * cherry-pick 6600c642: ec2: render network on all NICs and add + secondary IPs as (LP: #1866930) - -- Chad Smith Mon, 23 Mar 2020 14:35:12 -0600 + -- Chad Smith Fri, 03 Apr 2020 13:55:01 -0600 cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium From 2882d92368aa12ce8223bcf61a7b057d93a609e8 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:23 -0600 Subject: [PATCH 0410/1174] cherry pick 986f37b0 --- ...dinit-move-to-pytest-for-running-tests-211 | 269 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 270 insertions(+) create mode 100644 debian/patches/cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 diff --git a/debian/patches/cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 b/debian/patches/cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 new file mode 100644 index 00000000000..defefecb6db --- /dev/null +++ b/debian/patches/cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 @@ -0,0 +1,269 @@ +From 986f37b017134ced5d9dd38b420350916297002b Mon Sep 17 00:00:00 2001 +From: Daniel Watkins +Date: Tue, 10 Mar 2020 13:26:05 -0400 +Subject: [PATCH] cloudinit: move to pytest for running tests (#211) + +As the nose docs[0] themselves note, it has been in maintenance mode for the past several years. pytest is an actively developed, featureful and popular alternative that the nose docs themselves recommend. See [1] for more details about the thinking here. + +(This PR also removes stale tox definitions, instead of modifying them.) + +[0] https://nose.readthedocs.io/en/latest/ +[1] https://lists.launchpad.net/cloud-init/msg00245.html +--- + .travis.yml | 6 ++-- + Makefile | 6 ++-- + packages/pkg-deps.json | 3 ++ + test-requirements.txt | 7 ++-- + tools/run-container | 12 +++---- + tools/tox-venv | 2 +- + tox.ini | 73 +++++++++++++++++------------------------- + 7 files changed, 46 insertions(+), 63 deletions(-) + +--- a/.travis.yml ++++ b/.travis.yml +@@ -16,13 +16,13 @@ matrix: + - python: 3.6 + env: + TOXENV=py3 +- NOSE_VERBOSE=2 # List all tests run by nose ++ PYTEST_ADDOPTS=-v # List all tests run by pytest + - install: + - git fetch --unshallow + - sudo apt-get build-dep -y cloud-init + - sudo apt-get install -y --install-recommends sbuild ubuntu-dev-tools fakeroot tox + # These are build deps but not pulled in by the build-dep call above +- - sudo apt-get install -y --install-recommends dh-systemd python3-coverage python3-contextlib2 ++ - sudo apt-get install -y --install-recommends dh-systemd python3-coverage python3-contextlib2 python3-pytest python3-pytest-cov + - pip install . + - pip install tox + # bionic has lxd from deb installed, remove it first to ensure +@@ -46,7 +46,7 @@ matrix: + - python: 3.5 + env: + TOXENV=xenial +- NOSE_VERBOSE=2 # List all tests run by nose ++ PYTEST_ADDOPTS=-v # List all tests run by pytest + # Travis doesn't support Python 3.4 on bionic, so use xenial + dist: xenial + - python: 3.6 +--- a/Makefile ++++ b/Makefile +@@ -2,8 +2,6 @@ CWD=$(shell pwd) + PYVER ?= $(shell for p in python3 python2; do \ + out=$$(command -v $$p 2>&1) && echo $$p && exit; done; exit 1) + +-noseopts ?= -v +- + YAML_FILES=$(shell find cloudinit tests tools -name "*.yaml" -type f ) + YAML_FILES+=$(shell find doc/examples -name "cloud-config*.txt" -type f ) + +@@ -48,10 +46,10 @@ pyflakes3: + @$(CWD)/tools/run-pyflakes3 + + unittest: clean_pyc +- nosetests $(noseopts) tests/unittests cloudinit ++ python -m pytest -v tests/unittests cloudinit + + unittest3: clean_pyc +- nosetests3 $(noseopts) tests/unittests cloudinit ++ python3 -m pytest -v tests/unittests cloudinit + + ci-deps-ubuntu: + @$(PYVER) $(CWD)/tools/read-dependencies --distro ubuntu --test-distro +--- a/packages/pkg-deps.json ++++ b/packages/pkg-deps.json +@@ -45,6 +45,9 @@ + "pyserial" : { + "2" : "pyserial" + }, ++ "pytest": { ++ "3": "python36-pytest" ++ }, + "requests" : { + "3" : "python36-requests" + }, +--- a/test-requirements.txt ++++ b/test-requirements.txt +@@ -1,11 +1,8 @@ + # Needed generally in tests + httpretty>=0.7.1 +-nose ++pytest + unittest2 +-coverage +- +-# Only needed if you want to know the test times +-# nose-timer ++pytest-cov + + # Only really needed on older versions of python + contextlib2 +--- a/tools/run-container ++++ b/tools/run-container +@@ -287,8 +287,8 @@ prep() { + install_packages "$@" + } + +-nose() { +- python3 -m nose "$@" ++pytest() { ++ python3 -m pytest "$@" + } + + is_done_cloudinit() { +@@ -478,10 +478,10 @@ main() { + + if [ -n "$unittest" ]; then + debug 1 "running unit tests." +- run_self_inside_as_cd "$name" "$user" "$cdir" nose \ ++ run_self_inside_as_cd "$name" "$user" "$cdir" pytest \ + tests/unittests cloudinit/ || { +- errorrc "nosetests failed."; +- errors[${#errors[@]}]="nosetests" ++ errorrc "pytest failed."; ++ errors[${#errors[@]}]="pytest" + } + fi + +@@ -557,7 +557,7 @@ main() { + } + + case "${1:-}" in +- prep|os_info|wait_inside|nose) _n=$1; shift; "$_n" "$@";; ++ prep|os_info|wait_inside|pytest) _n=$1; shift; "$_n" "$@";; + *) main "$@";; + esac + +--- a/tools/tox-venv ++++ b/tools/tox-venv +@@ -116,7 +116,7 @@ Usage: ${0##*/} [--no-create] tox-enviro + be read from tox.ini. This allows you to do: + tox-venv py27 - tests/some/sub/dir + and have the 'command' read correctly and have that execute: +- python -m nose tests/some/sub/dir ++ python -m pytest tests/some/sub/dir + EOF + + if [ -f "$tox_ini" ]; then +--- a/tox.ini ++++ b/tox.ini +@@ -1,13 +1,13 @@ + [tox] +-envlist = py3, xenial, pycodestyle, pyflakes, pylint ++envlist = py3, xenial-dev, pycodestyle, pyflakes, pylint + recreate = True + + [testenv] +-commands = python -m nose {posargs:tests/unittests cloudinit} ++commands = {envpython} -m pytest {posargs:tests/unittests cloudinit} + setenv = + LC_ALL = en_US.utf-8 + passenv= +- NOSE_VERBOSE ++ PYTEST_ADDOPTS + + [testenv:pycodestyle] + basepython = python3 +@@ -32,23 +32,16 @@ commands = {envpython} -m pylint {posarg + [testenv:py3] + basepython = python3 + deps = +- nose-timer + -r{toxinidir}/test-requirements.txt +-commands = {envpython} -m nose --with-timer --timer-top-n 10 \ +- {posargs:--with-coverage --cover-erase --cover-branches \ +- --cover-inclusive --cover-package=cloudinit \ ++commands = {envpython} -m pytest \ ++ --durations 10 \ ++ {posargs:--cov=cloudinit --cov-branch \ + tests/unittests cloudinit} + + [testenv:py27] + basepython = python2.7 + deps = -r{toxinidir}/test-requirements.txt + +-[testenv:py26] +-deps = -r{toxinidir}/test-requirements.txt +-commands = nosetests {posargs:tests/unittests cloudinit} +-setenv = +- LC_ALL = C +- + [flake8] + #H102 Apache 2.0 license header not found + ignore=H404,H405,H105,H301,H104,H403,H101,H102,H106,H304 +@@ -62,11 +55,15 @@ commands = + {envpython} -m sphinx {posargs:doc/rtd doc/rtd_html} + doc8 doc/rtd + +-[testenv:xenial] +-commands = +- python ./tools/pipremove jsonschema +- python -m nose {posargs:tests/unittests cloudinit} +-basepython = python3 ++[xenial-shared-deps] ++# The version of pytest in xenial doesn't work with Python 3.8, so we define ++# two xenial environments: [testenv:xenial] runs the tests with exactly the ++# version of pytest present in xenial, and is used in CI. [testenv:xenial-dev] ++# runs the tests with the lowest version of pytest that works with Python 3.8, ++# 3.0.7, but keeps the other dependencies at xenial's level. ++# ++# (This section is not a testenv, it is used to maintain a single definition of ++# the dependencies shared between the two xenial testenvs.) + deps = + # requirements + jinja2==2.8 +@@ -83,38 +80,26 @@ deps = + # test-requirements + httpretty==0.9.6 + mock==1.3.0 +- nose==1.3.7 + unittest2==1.1.0 + contextlib2==0.5.1 + +-[testenv:centos6] +-basepython = python2.6 +-commands = nosetests {posargs:tests/unittests cloudinit} +-deps = +- # requirements +- argparse==1.2.1 +- jinja2==2.2.1 +- pyyaml==3.10 +- oauthlib==0.6.0 +- configobj==4.6.0 +- requests==2.6.0 +- jsonpatch==1.2 +- six==1.9.0 +- -r{toxinidir}/test-requirements.txt +- +-[testenv:opensusel150] +-basepython = python2.7 +-commands = nosetests {posargs:tests/unittests cloudinit} ++[testenv:xenial] ++commands = ++ python ./tools/pipremove jsonschema ++ python -m pytest {posargs:tests/unittests cloudinit} ++basepython = python3 + deps = +- # requirements +- jinja2==2.10 +- PyYAML==3.12 +- oauthlib==2.0.6 +- configobj==5.0.6 +- requests==2.18.4 +- jsonpatch==1.16 +- six==1.11.0 +- -r{toxinidir}/test-requirements.txt ++ # Refer to the comment in [xenial-shared-deps] for details ++ {[xenial-shared-deps]deps} ++ pytest==2.8.7 ++ ++[testenv:xenial-dev] ++commands = {[testenv:xenial]commands} ++basepython = {[testenv:xenial]basepython} ++deps = ++ # Refer to the comment in [xenial-shared-deps] for details ++ {[xenial-shared-deps]deps} ++ pytest==3.0.7 + + [testenv:tip-pycodestyle] + commands = {envpython} -m pycodestyle {posargs:cloudinit/ tests/ tools/} diff --git a/debian/patches/series b/debian/patches/series index d65a3307e59..6023c428f06 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,2 @@ cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as +cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 From 1234489d6ad5e7a9246deca532908343c72b5de5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:23 -0600 Subject: [PATCH 0411/1174] update changelog --- debian/changelog | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5447e4797f5..de434164fdc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,11 @@ -cloud-init (20.1-10-g71af48df-0ubuntu4) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu5) UNRELEASED; urgency=medium * cherry-pick 6600c642: ec2: render network on all NICs and add secondary IPs as (LP: #1866930) + * cherry-pick 986f37b0: cloudinit: move to pytest for running tests + (#211) - -- Chad Smith Fri, 03 Apr 2020 13:55:01 -0600 + -- Chad Smith Fri, 03 Apr 2020 13:55:22 -0600 cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium From 5c459ff3741538c9dc5d11c5636e979f43221a60 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:25 -0600 Subject: [PATCH 0412/1174] cherry pick 4fb6fd8a LP: #1867029 --- ...-focal-prioritize-netplan-over-eni-even-if | 204 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 205 insertions(+) create mode 100644 debian/patches/cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if diff --git a/debian/patches/cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if b/debian/patches/cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if new file mode 100644 index 00000000000..e4b307cc567 --- /dev/null +++ b/debian/patches/cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if @@ -0,0 +1,204 @@ +From 4fb6fd8a046a6bcce01216c386f3b691a2c466bb Mon Sep 17 00:00:00 2001 +From: Chad Smith +Date: Mon, 30 Mar 2020 21:24:51 -0600 +Subject: [PATCH] net: ubuntu focal prioritize netplan over eni even if both + present (#267) + +On Focal and later, Ubuntu will prioritize netplan renderer over eni, +even if ifupdown and netplan are both installed. + +ENI on Focal and later is considered an unsupported configuration so +cloud-init should generally prefer netplan. On many cloud images, +the /etc/network/interfaces config file does not include the dir +/etc/network/interfaces.d thereby ignoring cloud-init's +/etc/network/interfaces.d/50-cloud-init.cfg file. + +LP: #1867029 +--- + config/cloud.cfg.tmpl | 3 + + tests/unittests/test_net.py | 86 +++++++++++++------------ + tests/unittests/test_render_cloudcfg.py | 57 ++++++++++++++++ + 3 files changed, 106 insertions(+), 40 deletions(-) + create mode 100644 tests/unittests/test_render_cloudcfg.py + +--- a/config/cloud.cfg.tmpl ++++ b/config/cloud.cfg.tmpl +@@ -158,6 +158,9 @@ system_info: + groups: [adm, audio, cdrom, dialout, dip, floppy, lxd, netdev, plugdev, sudo, video] + sudo: ["ALL=(ALL) NOPASSWD:ALL"] + shell: /bin/bash ++{# SRU_BLOCKER: do not ship network renderers on Xenial, Bionic or Eoan #} ++ network: ++ renderers: ['netplan', 'eni', 'sysconfig'] + # Automatically discover the best ntp_client + ntp_client: auto + # Other config here will be given to the distro class and/or path classes +--- a/tests/unittests/test_net.py ++++ b/tests/unittests/test_net.py +@@ -24,6 +24,7 @@ import re + import textwrap + from yaml.serializer import Serializer + ++import pytest + + DHCP_CONTENT_1 = """ + DEVICE='eth0' +@@ -4671,6 +4672,51 @@ class TestEniRoundTrip(CiTestCase): + files['/etc/network/interfaces'].splitlines()) + + ++class TestRenderersSelect: ++ ++ @pytest.mark.parametrize( ++ 'renderer_selected,netplan,eni,nm,scfg,sys', ( ++ # -netplan -ifupdown -nm -scfg -sys raises error ++ (net.RendererNotFoundError, False, False, False, False, False), ++ # -netplan +ifupdown -nm -scfg -sys selects eni ++ ('eni', False, True, False, False, False), ++ # +netplan +ifupdown -nm -scfg -sys selects eni ++ ('eni', True, True, False, False, False), ++ # +netplan -ifupdown -nm -scfg -sys selects netplan ++ ('netplan', True, False, False, False, False), ++ # Ubuntu with Network-Manager installed ++ # +netplan -ifupdown +nm -scfg -sys selects netplan ++ ('netplan', True, False, True, False, False), ++ # Centos/OpenSuse with Network-Manager installed selects sysconfig ++ # -netplan -ifupdown +nm -scfg +sys selects netplan ++ ('sysconfig', False, False, True, False, True), ++ ), ++ ) ++ @mock.patch("cloudinit.net.renderers.netplan.available") ++ @mock.patch("cloudinit.net.renderers.sysconfig.available") ++ @mock.patch("cloudinit.net.renderers.sysconfig.available_sysconfig") ++ @mock.patch("cloudinit.net.renderers.sysconfig.available_nm") ++ @mock.patch("cloudinit.net.renderers.eni.available") ++ def test_valid_renderer_from_defaults_depending_on_availability( ++ self, m_eni_avail, m_nm_avail, m_scfg_avail, m_sys_avail, ++ m_netplan_avail, renderer_selected, netplan, eni, nm, scfg, sys ++ ): ++ """Assert proper renderer per DEFAULT_PRIORITY given availability.""" ++ m_eni_avail.return_value = eni # ifupdown pkg presence ++ m_nm_avail.return_value = nm # network-manager presence ++ m_scfg_avail.return_value = scfg # sysconfig presence ++ m_sys_avail.return_value = sys # sysconfig/ifup/down presence ++ m_netplan_avail.return_value = netplan # netplan presence ++ if isinstance(renderer_selected, str): ++ (renderer_name, _rnd_class) = renderers.select( ++ priority=renderers.DEFAULT_PRIORITY ++ ) ++ assert renderer_selected == renderer_name ++ else: ++ with pytest.raises(renderer_selected): ++ renderers.select(priority=renderers.DEFAULT_PRIORITY) ++ ++ + class TestNetRenderers(CiTestCase): + @mock.patch("cloudinit.net.renderers.sysconfig.available") + @mock.patch("cloudinit.net.renderers.eni.available") +@@ -4714,46 +4760,6 @@ class TestNetRenderers(CiTestCase): + self.assertRaises(net.RendererNotFoundError, renderers.select, + priority=['sysconfig', 'eni']) + +- @mock.patch("cloudinit.net.renderers.netplan.available") +- @mock.patch("cloudinit.net.renderers.sysconfig.available") +- @mock.patch("cloudinit.net.renderers.sysconfig.available_sysconfig") +- @mock.patch("cloudinit.net.renderers.sysconfig.available_nm") +- @mock.patch("cloudinit.net.renderers.eni.available") +- @mock.patch("cloudinit.net.renderers.sysconfig.util.get_linux_distro") +- def test_sysconfig_selected_on_sysconfig_enabled_distros(self, m_distro, +- m_eni, m_sys_nm, +- m_sys_scfg, +- m_sys_avail, +- m_netplan): +- """sysconfig only selected on specific distros (rhel/sles).""" +- +- # Ubuntu with Network-Manager installed +- m_eni.return_value = False # no ifupdown (ifquery) +- m_sys_scfg.return_value = False # no sysconfig/ifup/ifdown +- m_sys_nm.return_value = True # network-manager is installed +- m_netplan.return_value = True # netplan is installed +- m_sys_avail.return_value = False # no sysconfig on Ubuntu +- m_distro.return_value = ('ubuntu', None, None) +- self.assertEqual('netplan', renderers.select(priority=None)[0]) +- +- # Centos with Network-Manager installed +- m_eni.return_value = False # no ifupdown (ifquery) +- m_sys_scfg.return_value = False # no sysconfig/ifup/ifdown +- m_sys_nm.return_value = True # network-manager is installed +- m_netplan.return_value = False # netplan is not installed +- m_sys_avail.return_value = True # sysconfig is available on centos +- m_distro.return_value = ('centos', None, None) +- self.assertEqual('sysconfig', renderers.select(priority=None)[0]) +- +- # OpenSuse with Network-Manager installed +- m_eni.return_value = False # no ifupdown (ifquery) +- m_sys_scfg.return_value = False # no sysconfig/ifup/ifdown +- m_sys_nm.return_value = True # network-manager is installed +- m_netplan.return_value = False # netplan is not installed +- m_sys_avail.return_value = True # sysconfig is available on opensuse +- m_distro.return_value = ('opensuse', None, None) +- self.assertEqual('sysconfig', renderers.select(priority=None)[0]) +- + @mock.patch("cloudinit.net.sysconfig.available_sysconfig") + @mock.patch("cloudinit.util.get_linux_distro") + def test_sysconfig_available_uses_variant_mapping(self, m_distro, m_avail): +--- /dev/null ++++ b/tests/unittests/test_render_cloudcfg.py +@@ -0,0 +1,57 @@ ++"""Tests for tools/render-cloudcfg""" ++ ++import os ++import sys ++ ++import pytest ++ ++from cloudinit import util ++ ++# TODO(Look to align with tools.render-cloudcfg or cloudinit.distos.OSFAMILIES) ++DISTRO_VARIANTS = ["amazon", "arch", "centos", "debian", "fedora", "freebsd", ++ "netbsd", "openbsd", "rhel", "suse", "ubuntu", "unknown"] ++ ++ ++class TestRenderCloudCfg: ++ ++ cmd = [sys.executable, os.path.realpath('tools/render-cloudcfg')] ++ tmpl_path = os.path.realpath('config/cloud.cfg.tmpl') ++ ++ @pytest.mark.parametrize('variant', (DISTRO_VARIANTS)) ++ def test_variant_sets_distro_in_cloud_cfg(self, variant, tmpdir): ++ outfile = tmpdir.join('outcfg').strpath ++ util.subp( ++ self.cmd + ['--variant', variant, self.tmpl_path, outfile]) ++ with open(outfile) as stream: ++ system_cfg = util.load_yaml(stream.read()) ++ if variant == 'unknown': ++ variant = 'ubuntu' # Unknown is defaulted to ubuntu ++ assert system_cfg['system_info']['distro'] == variant ++ ++ @pytest.mark.parametrize('variant', (DISTRO_VARIANTS)) ++ def test_variant_sets_default_user_in_cloud_cfg(self, variant, tmpdir): ++ outfile = tmpdir.join('outcfg').strpath ++ util.subp( ++ self.cmd + ['--variant', variant, self.tmpl_path, outfile]) ++ with open(outfile) as stream: ++ system_cfg = util.load_yaml(stream.read()) ++ ++ default_user_exceptions = { ++ 'amazon': 'ec2-user', 'debian': 'ubuntu', 'unknown': 'ubuntu'} ++ default_user = system_cfg['system_info']['default_user']['name'] ++ assert default_user == default_user_exceptions.get(variant, variant) ++ ++ @pytest.mark.parametrize('variant,renderers', ( ++ ('freebsd', ['freebsd']), ('netbsd', ['netbsd']), ++ ('openbsd', ['openbsd']), ('ubuntu', ['netplan', 'eni', 'sysconfig'])) ++ ) ++ def test_variant_sets_network_renderer_priority_in_cloud_cfg( ++ self, variant, renderers, tmpdir ++ ): ++ outfile = tmpdir.join('outcfg').strpath ++ util.subp( ++ self.cmd + ['--variant', variant, self.tmpl_path, outfile]) ++ with open(outfile) as stream: ++ system_cfg = util.load_yaml(stream.read()) ++ ++ assert renderers == system_cfg['system_info']['network']['renderers'] diff --git a/debian/patches/series b/debian/patches/series index 6023c428f06..91f40d76afb 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,2 +1,3 @@ cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 +cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if From ab907167beaa6c5d37c79fc0ee9583daa7c72dfe Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:25 -0600 Subject: [PATCH 0413/1174] update changelog --- debian/changelog | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index de434164fdc..4b641a28fb1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,13 @@ -cloud-init (20.1-10-g71af48df-0ubuntu5) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu6) UNRELEASED; urgency=medium * cherry-pick 6600c642: ec2: render network on all NICs and add secondary IPs as (LP: #1866930) * cherry-pick 986f37b0: cloudinit: move to pytest for running tests (#211) + * cherry-pick 4fb6fd8a: net: ubuntu focal prioritize netplan over eni + even if both (LP: #1867029) - -- Chad Smith Fri, 03 Apr 2020 13:55:22 -0600 + -- Chad Smith Fri, 03 Apr 2020 13:55:24 -0600 cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium From 5ca32816f50b679adf7e3221685f547270fc4988 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:27 -0600 Subject: [PATCH 0414/1174] cherry pick 04771d75 LP: #1868327 --- ...4771d75-cc_disk_setup-fix-RuntimeError-270 | 25 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 26 insertions(+) create mode 100644 debian/patches/cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 diff --git a/debian/patches/cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 b/debian/patches/cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 new file mode 100644 index 00000000000..8c189e830f7 --- /dev/null +++ b/debian/patches/cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 @@ -0,0 +1,25 @@ +From 04771d75a8670f07ae4c75b5892e3b795e9d1a07 Mon Sep 17 00:00:00 2001 +From: Daniel Watkins +Date: Mon, 23 Mar 2020 17:22:42 -0400 +Subject: [PATCH] cc_disk_setup: fix RuntimeError (#270) + +Addresses "Runtime Error: dictionary keys changed during iteration". + +Co-authored-by: Noah Meyerhans + +LP: #1868327 +--- + cloudinit/config/cc_disk_setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/cloudinit/config/cc_disk_setup.py ++++ b/cloudinit/config/cc_disk_setup.py +@@ -163,7 +163,7 @@ def handle(_name, cfg, cloud, log, _args + def update_disk_setup_devices(disk_setup, tformer): + # update 'disk_setup' dictionary anywhere were a device may occur + # update it with the response from 'tformer' +- for origname in disk_setup.keys(): ++ for origname in list(disk_setup): + transformed = tformer(origname) + if transformed is None or transformed == origname: + continue diff --git a/debian/patches/series b/debian/patches/series index 91f40d76afb..4aa698ffd8e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,4 @@ cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if +cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 From 2f5f9acd5aa250eec1a48a831b717d6ca3eee4bf Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:27 -0600 Subject: [PATCH 0415/1174] update changelog --- debian/changelog | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4b641a28fb1..e1a0794a733 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-10-g71af48df-0ubuntu6) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu7) UNRELEASED; urgency=medium * cherry-pick 6600c642: ec2: render network on all NICs and add secondary IPs as (LP: #1866930) @@ -6,8 +6,10 @@ cloud-init (20.1-10-g71af48df-0ubuntu6) UNRELEASED; urgency=medium (#211) * cherry-pick 4fb6fd8a: net: ubuntu focal prioritize netplan over eni even if both (LP: #1867029) + * cherry-pick 04771d75: cc_disk_setup: fix RuntimeError (#270) (LP: + #1868327) - -- Chad Smith Fri, 03 Apr 2020 13:55:24 -0600 + -- Chad Smith Fri, 03 Apr 2020 13:55:26 -0600 cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium From 20260353444a4130a70389d8c1bbd74e67214703 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:31 -0600 Subject: [PATCH 0416/1174] cherry pick c5e949c0 --- ...49c0-distros-tests-test_init-add-tests-for | 99 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 100 insertions(+) create mode 100644 debian/patches/cpick-c5e949c0-distros-tests-test_init-add-tests-for diff --git a/debian/patches/cpick-c5e949c0-distros-tests-test_init-add-tests-for b/debian/patches/cpick-c5e949c0-distros-tests-test_init-add-tests-for new file mode 100644 index 00000000000..866c8bd58ad --- /dev/null +++ b/debian/patches/cpick-c5e949c0-distros-tests-test_init-add-tests-for @@ -0,0 +1,99 @@ +From c5e949c02a1d5226ae9b1cb39846db19d223c6c2 Mon Sep 17 00:00:00 2001 +From: Daniel Watkins +Date: Wed, 25 Mar 2020 09:44:16 -0400 +Subject: [PATCH] distros/tests/test_init: add tests for + _get_package_mirror_info (#272) + +--- + cloudinit/distros/tests/__init__.py | 0 + cloudinit/distros/tests/test_init.py | 83 ++++++++++++++++++++++++++++ + 2 files changed, 83 insertions(+) + create mode 100644 cloudinit/distros/tests/__init__.py + create mode 100644 cloudinit/distros/tests/test_init.py + +--- /dev/null ++++ b/cloudinit/distros/tests/test_init.py +@@ -0,0 +1,83 @@ ++# Copyright (C) 2020 Canonical Ltd. ++# ++# Author: Daniel Watkins ++# ++# This file is part of cloud-init. See LICENSE file for license information. ++"""Tests for cloudinit/distros/__init__.py""" ++ ++from unittest import mock ++ ++import pytest ++ ++from cloudinit.distros import _get_package_mirror_info ++ ++ ++class TestGetPackageMirrorInfo: ++ """ ++ Tests for cloudinit.distros._get_package_mirror_info. ++ ++ These supplement the tests in tests/unittests/test_distros/test_generic.py ++ which are more focused on testing a single production-like configuration. ++ These tests are more focused on specific aspects of the unit under test. ++ """ ++ ++ @pytest.mark.parametrize('mirror_info,expected', [ ++ # Empty info gives empty return ++ ({}, {}), ++ # failsafe values used if present ++ ({'failsafe': {'primary': 'value', 'security': 'other'}}, ++ {'primary': 'value', 'security': 'other'}), ++ # search values used if present ++ ({'search': {'primary': ['value'], 'security': ['other']}}, ++ {'primary': ['value'], 'security': ['other']}), ++ # failsafe values used if search value not present ++ ({'search': {'primary': ['value']}, 'failsafe': {'security': 'other'}}, ++ {'primary': ['value'], 'security': 'other'}) ++ ]) ++ def test_get_package_mirror_info_failsafe(self, mirror_info, expected): ++ """ ++ Test the interaction between search and failsafe inputs ++ ++ (This doesn't test the case where the mirror_filter removes all search ++ options; test_failsafe_used_if_all_search_results_filtered_out covers ++ that.) ++ """ ++ assert expected == _get_package_mirror_info(mirror_info, ++ mirror_filter=lambda x: x) ++ ++ def test_failsafe_used_if_all_search_results_filtered_out(self): ++ """Test the failsafe option used if all search options eliminated.""" ++ mirror_info = { ++ 'search': {'primary': ['value']}, 'failsafe': {'primary': 'other'} ++ } ++ assert {'primary': 'other'} == _get_package_mirror_info( ++ mirror_info, mirror_filter=lambda x: False) ++ ++ @pytest.mark.parametrize('availability_zone,region,patterns,expected', ( ++ # Test ec2_region alone ++ ('fk-fake-1f', None, ['EC2-%(ec2_region)s'], ['EC2-fk-fake-1']), ++ # Test availability_zone alone ++ ('fk-fake-1f', None, ['AZ-%(availability_zone)s'], ['AZ-fk-fake-1f']), ++ # Test region alone ++ (None, 'fk-fake-1', ['RG-%(region)s'], ['RG-fk-fake-1']), ++ # Test that ec2_region is not available for non-matching AZs ++ ('fake-fake-1f', None, ++ ['EC2-%(ec2_region)s', 'AZ-%(availability_zone)s'], ++ ['AZ-fake-fake-1f']), ++ # Test that template order maintained ++ (None, 'fake-region', ['RG-%(region)s-2', 'RG-%(region)s-1'], ++ ['RG-fake-region-2', 'RG-fake-region-1']), ++ )) ++ def test_substitution(self, availability_zone, region, patterns, expected): ++ """Test substitution works as expected.""" ++ m_data_source = mock.Mock( ++ availability_zone=availability_zone, region=region ++ ) ++ mirror_info = {'search': {'primary': patterns}} ++ ++ ret = _get_package_mirror_info( ++ mirror_info, ++ data_source=m_data_source, ++ mirror_filter=lambda x: x ++ ) ++ assert {'primary': expected} == ret diff --git a/debian/patches/series b/debian/patches/series index 4aa698ffd8e..7983ec7d36b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,3 +2,4 @@ cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 +cpick-c5e949c0-distros-tests-test_init-add-tests-for From eaaa924e4239e05b1e5b2f651dbc025ff623ca8b Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:31 -0600 Subject: [PATCH 0417/1174] update changelog --- debian/changelog | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index e1a0794a733..d80ea7b3d9f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-10-g71af48df-0ubuntu7) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu8) UNRELEASED; urgency=medium * cherry-pick 6600c642: ec2: render network on all NICs and add secondary IPs as (LP: #1866930) @@ -8,8 +8,9 @@ cloud-init (20.1-10-g71af48df-0ubuntu7) UNRELEASED; urgency=medium even if both (LP: #1867029) * cherry-pick 04771d75: cc_disk_setup: fix RuntimeError (#270) (LP: #1868327) + * cherry-pick c5e949c0: distros/tests/test_init: add tests for - -- Chad Smith Fri, 03 Apr 2020 13:55:26 -0600 + -- Chad Smith Fri, 03 Apr 2020 13:55:28 -0600 cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium From e27a2f7d0647b0168d9a551d5e5e31be176f262f Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:33 -0600 Subject: [PATCH 0418/1174] cherry pick 2566fdbe --- ...e-net-introduce-is_ip_address-function-288 | 105 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 106 insertions(+) create mode 100644 debian/patches/cpick-2566fdbe-net-introduce-is_ip_address-function-288 diff --git a/debian/patches/cpick-2566fdbe-net-introduce-is_ip_address-function-288 b/debian/patches/cpick-2566fdbe-net-introduce-is_ip_address-function-288 new file mode 100644 index 00000000000..1fb9ee695b2 --- /dev/null +++ b/debian/patches/cpick-2566fdbe-net-introduce-is_ip_address-function-288 @@ -0,0 +1,105 @@ +From 2566fdbee06cf5708cfcd988a65fb81cdf794dbf Mon Sep 17 00:00:00 2001 +From: Daniel Watkins +Date: Fri, 27 Mar 2020 22:47:01 -0400 +Subject: [PATCH] net: introduce is_ip_address function (#288) + +This will be required for the mirror URL sanitisation work, +--- + cloudinit/net/__init__.py | 19 +++++++++++++++++- + cloudinit/net/tests/test_init.py | 33 ++++++++++++++++++++++++++++---- + 2 files changed, 47 insertions(+), 5 deletions(-) + +--- a/cloudinit/net/__init__.py ++++ b/cloudinit/net/__init__.py +@@ -6,13 +6,14 @@ + # This file is part of cloud-init. See LICENSE file for license information. + + import errno ++import ipaddress + import logging + import os + import re + from functools import partial + +-from cloudinit.net.network_state import mask_to_net_prefix + from cloudinit import util ++from cloudinit.net.network_state import mask_to_net_prefix + from cloudinit.url_helper import UrlError, readurl + + LOG = logging.getLogger(__name__) +@@ -916,6 +917,22 @@ def has_url_connectivity(url): + return False + return True + ++ ++def is_ip_address(s: str) -> bool: ++ """Returns a bool indicating if ``s`` is an IP address. ++ ++ :param s: ++ The string to test. ++ ++ :return: ++ A bool indicating if the string contains an IP address or not. ++ """ ++ try: ++ ipaddress.ip_address(s) ++ except ValueError: ++ return False ++ return True ++ + + class EphemeralIPv4Network(object): + """Context manager which sets up temporary static network configuration. +--- a/cloudinit/net/tests/test_init.py ++++ b/cloudinit/net/tests/test_init.py +@@ -2,16 +2,19 @@ + + import copy + import errno +-import httpretty ++import ipaddress + import os +-import requests + import textwrap + from unittest import mock + ++import httpretty ++import pytest ++import requests ++ + import cloudinit.net as net +-from cloudinit.util import ensure_file, write_file, ProcessExecutionError +-from cloudinit.tests.helpers import CiTestCase, HttprettyTestCase + from cloudinit import safeyaml as yaml ++from cloudinit.tests.helpers import CiTestCase, HttprettyTestCase ++from cloudinit.util import ProcessExecutionError, ensure_file, write_file + + + class TestSysDevPath(CiTestCase): +@@ -1297,4 +1300,26 @@ class TestNetFailOver(CiTestCase): + m_standby.return_value = False + self.assertFalse(net.is_netfailover(devname, driver)) + ++ ++class TestIsIpAddress: ++ """Tests for net.is_ip_address. ++ ++ Instead of testing with values we rely on the ipaddress stdlib module to ++ handle all values correctly, so simply test that is_ip_address defers to ++ the ipaddress module correctly. ++ """ ++ ++ @pytest.mark.parametrize('ip_address_side_effect,expected_return', ( ++ (ValueError, False), ++ (lambda _: ipaddress.IPv4Address('192.168.0.1'), True), ++ (lambda _: ipaddress.IPv6Address('2001:db8::'), True), ++ )) ++ def test_is_ip_address(self, ip_address_side_effect, expected_return): ++ with mock.patch('cloudinit.net.ipaddress.ip_address', ++ side_effect=ip_address_side_effect) as m_ip_address: ++ ret = net.is_ip_address(mock.sentinel.ip_address_in) ++ assert expected_return == ret ++ expected_call = mock.call(mock.sentinel.ip_address_in) ++ assert [expected_call] == m_ip_address.call_args_list ++ + # vi: ts=4 expandtab diff --git a/debian/patches/series b/debian/patches/series index 7983ec7d36b..8a37fff5f39 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -3,3 +3,4 @@ cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 cpick-c5e949c0-distros-tests-test_init-add-tests-for +cpick-2566fdbe-net-introduce-is_ip_address-function-288 From 2dcd311d0451f5a86eff1b244f315415742bf50a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:33 -0600 Subject: [PATCH 0419/1174] update changelog --- debian/changelog | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d80ea7b3d9f..c361ee2ebb8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-10-g71af48df-0ubuntu8) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu9) UNRELEASED; urgency=medium * cherry-pick 6600c642: ec2: render network on all NICs and add secondary IPs as (LP: #1866930) @@ -9,8 +9,9 @@ cloud-init (20.1-10-g71af48df-0ubuntu8) UNRELEASED; urgency=medium * cherry-pick 04771d75: cc_disk_setup: fix RuntimeError (#270) (LP: #1868327) * cherry-pick c5e949c0: distros/tests/test_init: add tests for + * cherry-pick 2566fdbe: net: introduce is_ip_address function (#288) - -- Chad Smith Fri, 03 Apr 2020 13:55:28 -0600 + -- Chad Smith Fri, 03 Apr 2020 13:55:32 -0600 cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium From a1a9996cd637e94c118e7acf84edcb01bf475dfa Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:36 -0600 Subject: [PATCH 0420/1174] cherry pick 4f825b3e --- ...factor-util.is_ipv4-to-net.is_ipv4_address | 103 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 104 insertions(+) create mode 100644 debian/patches/cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address diff --git a/debian/patches/cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address b/debian/patches/cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address new file mode 100644 index 00000000000..01270f03ab8 --- /dev/null +++ b/debian/patches/cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address @@ -0,0 +1,103 @@ +From 4f825b3e6d8fde5c239d29639b04d2bea6d95d0e Mon Sep 17 00:00:00 2001 +From: Daniel Watkins +Date: Mon, 30 Mar 2020 23:02:44 -0400 +Subject: [PATCH] cloudinit: refactor util.is_ipv4 to net.is_ipv4_address + (#292) + +This also simplifies the implementation to rely on the stdlib, instead +of our own NIH checking. +--- + cloudinit/net/__init__.py | 16 ++++++++++++++++ + cloudinit/net/tests/test_init.py | 22 ++++++++++++++++++++++ + cloudinit/sources/__init__.py | 2 +- + cloudinit/util.py | 14 -------------- + 4 files changed, 39 insertions(+), 15 deletions(-) + +--- a/cloudinit/net/__init__.py ++++ b/cloudinit/net/__init__.py +@@ -934,6 +934,22 @@ def is_ip_address(s: str) -> bool: + return True + + ++def is_ipv4_address(s: str) -> bool: ++ """Returns a bool indicating if ``s`` is an IPv4 address. ++ ++ :param s: ++ The string to test. ++ ++ :return: ++ A bool indicating if the string contains an IPv4 address or not. ++ """ ++ try: ++ ipaddress.IPv4Address(s) ++ except ValueError: ++ return False ++ return True ++ ++ + class EphemeralIPv4Network(object): + """Context manager which sets up temporary static network configuration. + +--- a/cloudinit/net/tests/test_init.py ++++ b/cloudinit/net/tests/test_init.py +@@ -1322,4 +1322,26 @@ class TestIsIpAddress: + expected_call = mock.call(mock.sentinel.ip_address_in) + assert [expected_call] == m_ip_address.call_args_list + ++ ++class TestIsIpv4Address: ++ """Tests for net.is_ipv4_address. ++ ++ Instead of testing with values we rely on the ipaddress stdlib module to ++ handle all values correctly, so simply test that is_ipv4_address defers to ++ the ipaddress module correctly. ++ """ ++ ++ @pytest.mark.parametrize('ipv4address_mock,expected_return', ( ++ (mock.Mock(side_effect=ValueError), False), ++ (mock.Mock(return_value=ipaddress.IPv4Address('192.168.0.1')), True), ++ )) ++ def test_is_ip_address(self, ipv4address_mock, expected_return): ++ with mock.patch('cloudinit.net.ipaddress.IPv4Address', ++ ipv4address_mock) as m_ipv4address: ++ ret = net.is_ipv4_address(mock.sentinel.ip_address_in) ++ assert expected_return == ret ++ expected_call = mock.call(mock.sentinel.ip_address_in) ++ assert [expected_call] == m_ipv4address.call_args_list ++ ++ + # vi: ts=4 expandtab +--- a/cloudinit/sources/__init__.py ++++ b/cloudinit/sources/__init__.py +@@ -602,7 +602,7 @@ class DataSource(metaclass=abc.ABCMeta): + # if there is an ipv4 address in 'local-hostname', then + # make up a hostname (LP: #475354) in format ip-xx.xx.xx.xx + lhost = self.metadata['local-hostname'] +- if util.is_ipv4(lhost): ++ if net.is_ipv4_address(lhost): + toks = [] + if resolve_ip: + toks = util.gethostbyaddr(lhost) +--- a/cloudinit/util.py ++++ b/cloudinit/util.py +@@ -533,20 +533,6 @@ def multi_log(text, console=True, stderr + log.log(log_level, text) + + +-def is_ipv4(instr): +- """determine if input string is a ipv4 address. return boolean.""" +- toks = instr.split('.') +- if len(toks) != 4: +- return False +- +- try: +- toks = [x for x in toks if 0 <= int(x) < 256] +- except Exception: +- return False +- +- return len(toks) == 4 +- +- + @lru_cache() + def is_FreeBSD(): + return system_info()['variant'] == "freebsd" diff --git a/debian/patches/series b/debian/patches/series index 8a37fff5f39..9712ed83d3d 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -4,3 +4,4 @@ cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 cpick-c5e949c0-distros-tests-test_init-add-tests-for cpick-2566fdbe-net-introduce-is_ip_address-function-288 +cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address From f47ea4bf4890ff8b07d8f65d0b82263f55086719 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:36 -0600 Subject: [PATCH 0421/1174] update changelog --- debian/changelog | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index c361ee2ebb8..7b26e5648ed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-10-g71af48df-0ubuntu9) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu10) UNRELEASED; urgency=medium * cherry-pick 6600c642: ec2: render network on all NICs and add secondary IPs as (LP: #1866930) @@ -10,8 +10,10 @@ cloud-init (20.1-10-g71af48df-0ubuntu9) UNRELEASED; urgency=medium #1868327) * cherry-pick c5e949c0: distros/tests/test_init: add tests for * cherry-pick 2566fdbe: net: introduce is_ip_address function (#288) + * cherry-pick 4f825b3e: cloudinit: refactor util.is_ipv4 to + net.is_ipv4_address - -- Chad Smith Fri, 03 Apr 2020 13:55:32 -0600 + -- Chad Smith Fri, 03 Apr 2020 13:55:34 -0600 cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium From 200192db8ca2426233f13c9b463667077ddc4847 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:39 -0600 Subject: [PATCH 0422/1174] cherry pick c478d0bf LP: #1868232 --- ...ace-invalid-characters-in-mirror-URLs-with | 281 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 282 insertions(+) create mode 100644 debian/patches/cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with diff --git a/debian/patches/cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with b/debian/patches/cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with new file mode 100644 index 00000000000..d0e2a33ef52 --- /dev/null +++ b/debian/patches/cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with @@ -0,0 +1,281 @@ +From c478d0bff412c67280dfe8f08568de733f9425a1 Mon Sep 17 00:00:00 2001 +From: Daniel Watkins +Date: Tue, 31 Mar 2020 13:52:21 -0400 +Subject: [PATCH] distros: replace invalid characters in mirror URLs with + hyphens (#291) + +This modifies _get_package_mirror_info to convert the hostnames of generated mirror URLs to their IDNA form, and then iterate through them replacing any invalid characters (i.e. anything other than letters, digits or a hyphen) with a hyphen. + +This commit introduces the following changes in behaviour: + +* generated mirror URLs with Unicode characters in their hostnames will have their hostnames converted to their all-ASCII IDNA form +* generated mirror URLs with invalid-for-hostname characters in their hostname will have those characters converted to hyphens +* generated mirror URLs which cannot be parsed by `urllib.parse.urlsplit` will not be considered for use + * other configured patterns will still be considered + * if all configured patterns fail to produce a URL that parses then the fallback mirror URL will be used + +LP: #1868232 +--- + cloudinit/distros/__init__.py | 109 ++++++++++++++++++++++++++- + cloudinit/distros/tests/test_init.py | 84 ++++++++++++++++----- + 2 files changed, 174 insertions(+), 19 deletions(-) + +--- a/cloudinit/distros/__init__.py ++++ b/cloudinit/distros/__init__.py +@@ -13,6 +13,8 @@ import abc + import os + import re + import stat ++import string ++import urllib.parse + from io import StringIO + + from cloudinit import importer +@@ -50,6 +52,9 @@ _EC2_AZ_RE = re.compile('^[a-z][a-z]-(?: + # Default NTP Client Configurations + PREFERRED_NTP_CLIENTS = ['chrony', 'systemd-timesyncd', 'ntp', 'ntpdate'] + ++# Letters/Digits/Hyphen characters, for use in domain name validation ++LDH_ASCII_CHARS = string.ascii_letters + string.digits + "-" ++ + + class Distro(metaclass=abc.ABCMeta): + +@@ -720,6 +725,102 @@ class Distro(metaclass=abc.ABCMeta): + LOG.info("Added user '%s' to group '%s'", member, name) + + ++def _apply_hostname_transformations_to_url(url: str, transformations: list): ++ """ ++ Apply transformations to a URL's hostname, return transformed URL. ++ ++ This is a separate function because unwrapping and rewrapping only the ++ hostname portion of a URL is complex. ++ ++ :param url: ++ The URL to operate on. ++ :param transformations: ++ A list of ``(str) -> Optional[str]`` functions, which will be applied ++ in order to the hostname portion of the URL. If any function ++ (regardless of ordering) returns None, ``url`` will be returned without ++ any modification. ++ ++ :return: ++ A string whose value is ``url`` with the hostname ``transformations`` ++ applied, or ``None`` if ``url`` is unparseable. ++ """ ++ try: ++ parts = urllib.parse.urlsplit(url) ++ except ValueError: ++ # If we can't even parse the URL, we shouldn't use it for anything ++ return None ++ new_hostname = parts.hostname ++ ++ for transformation in transformations: ++ new_hostname = transformation(new_hostname) ++ if new_hostname is None: ++ # If a transformation returns None, that indicates we should abort ++ # processing and return `url` unmodified ++ return url ++ ++ new_netloc = new_hostname ++ if parts.port is not None: ++ new_netloc = "{}:{}".format(new_netloc, parts.port) ++ return urllib.parse.urlunsplit(parts._replace(netloc=new_netloc)) ++ ++ ++def _sanitize_mirror_url(url: str): ++ """ ++ Given a mirror URL, replace or remove any invalid URI characters. ++ ++ This performs the following actions on the URL's hostname: ++ * Checks if it is an IP address, returning the URL immediately if it is ++ * Converts it to its IDN form (see below for details) ++ * Replaces any non-Letters/Digits/Hyphen (LDH) characters in it with ++ hyphens ++ * TODO: Remove any leading/trailing hyphens from each domain name label ++ ++ Before we replace any invalid domain name characters, we first need to ++ ensure that any valid non-ASCII characters in the hostname will not be ++ replaced, by ensuring the hostname is in its Internationalized domain name ++ (IDN) representation (see RFC 5890). This conversion has to be applied to ++ the whole hostname (rather than just the substitution variables), because ++ the Punycode algorithm used by IDNA transcodes each part of the hostname as ++ a whole string (rather than encoding individual characters). It cannot be ++ applied to the whole URL, because (a) the Punycode algorithm expects to ++ operate on domain names so doesn't output a valid URL, and (b) non-ASCII ++ characters in non-hostname parts of the URL aren't encoded via Punycode. ++ ++ To put this in RFC 5890's terminology: before we remove or replace any ++ characters from our domain name (which we do to ensure that each label is a ++ valid LDH Label), we first ensure each label is in its A-label form. ++ ++ (Note that Python's builtin idna encoding is actually IDNA2003, not ++ IDNA2008. This changes the specifics of how some characters are encoded to ++ ASCII, but doesn't affect the logic here.) ++ ++ :param url: ++ The URL to operate on. ++ ++ :return: ++ A sanitized version of the URL, which will have been IDNA encoded if ++ necessary, or ``None`` if the generated string is not a parseable URL. ++ """ ++ # Acceptable characters are LDH characters, plus "." to separate each label ++ acceptable_chars = LDH_ASCII_CHARS + "." ++ transformations = [ ++ # This is an IP address, not a hostname, so no need to apply the ++ # transformations ++ lambda hostname: None if net.is_ip_address(hostname) else hostname, ++ ++ # Encode with IDNA to get the correct characters (as `bytes`), then ++ # decode with ASCII so we return a `str` ++ lambda hostname: hostname.encode('idna').decode('ascii'), ++ ++ # Replace any unacceptable characters with "-" ++ lambda hostname: ''.join( ++ c if c in acceptable_chars else "-" for c in hostname ++ ), ++ ] ++ ++ return _apply_hostname_transformations_to_url(url, transformations) ++ ++ + def _get_package_mirror_info(mirror_info, data_source=None, + mirror_filter=util.search_for_mirror): + # given a arch specific 'mirror_info' entry (from package_mirrors) +@@ -748,9 +849,13 @@ def _get_package_mirror_info(mirror_info + mirrors = [] + for tmpl in searchlist: + try: +- mirrors.append(tmpl % subst) ++ mirror = tmpl % subst + except KeyError: +- pass ++ continue ++ ++ mirror = _sanitize_mirror_url(mirror) ++ if mirror is not None: ++ mirrors.append(mirror) + + found = mirror_filter(mirrors) + if found: +--- a/cloudinit/distros/tests/test_init.py ++++ b/cloudinit/distros/tests/test_init.py +@@ -9,7 +9,18 @@ from unittest import mock + + import pytest + +-from cloudinit.distros import _get_package_mirror_info ++from cloudinit.distros import _get_package_mirror_info, LDH_ASCII_CHARS ++ ++ ++# Define a set of characters we would expect to be replaced ++INVALID_URL_CHARS = [ ++ chr(x) for x in range(127) if chr(x) not in LDH_ASCII_CHARS ++] ++for separator in [":", ".", "/", "#", "?", "@", "[", "]"]: ++ # Remove from the set characters that either separate hostname parts (":", ++ # "."), terminate hostnames ("/", "#", "?", "@"), or cause Python to be ++ # unable to parse URLs ("[", "]"). ++ INVALID_URL_CHARS.remove(separator) + + + class TestGetPackageMirrorInfo: +@@ -25,14 +36,16 @@ class TestGetPackageMirrorInfo: + # Empty info gives empty return + ({}, {}), + # failsafe values used if present +- ({'failsafe': {'primary': 'value', 'security': 'other'}}, +- {'primary': 'value', 'security': 'other'}), ++ ({'failsafe': {'primary': 'http://value', 'security': 'http://other'}}, ++ {'primary': 'http://value', 'security': 'http://other'}), + # search values used if present +- ({'search': {'primary': ['value'], 'security': ['other']}}, +- {'primary': ['value'], 'security': ['other']}), ++ ({'search': {'primary': ['http://value'], ++ 'security': ['http://other']}}, ++ {'primary': ['http://value'], 'security': ['http://other']}), + # failsafe values used if search value not present +- ({'search': {'primary': ['value']}, 'failsafe': {'security': 'other'}}, +- {'primary': ['value'], 'security': 'other'}) ++ ({'search': {'primary': ['http://value']}, ++ 'failsafe': {'security': 'http://other'}}, ++ {'primary': ['http://value'], 'security': 'http://other'}) + ]) + def test_get_package_mirror_info_failsafe(self, mirror_info, expected): + """ +@@ -48,26 +61,63 @@ class TestGetPackageMirrorInfo: + def test_failsafe_used_if_all_search_results_filtered_out(self): + """Test the failsafe option used if all search options eliminated.""" + mirror_info = { +- 'search': {'primary': ['value']}, 'failsafe': {'primary': 'other'} ++ 'search': {'primary': ['http://value']}, ++ 'failsafe': {'primary': 'http://other'} + } +- assert {'primary': 'other'} == _get_package_mirror_info( ++ assert {'primary': 'http://other'} == _get_package_mirror_info( + mirror_info, mirror_filter=lambda x: False) + + @pytest.mark.parametrize('availability_zone,region,patterns,expected', ( + # Test ec2_region alone +- ('fk-fake-1f', None, ['EC2-%(ec2_region)s'], ['EC2-fk-fake-1']), ++ ('fk-fake-1f', None, ['http://EC2-%(ec2_region)s/ubuntu'], ++ ['http://ec2-fk-fake-1/ubuntu']), + # Test availability_zone alone +- ('fk-fake-1f', None, ['AZ-%(availability_zone)s'], ['AZ-fk-fake-1f']), ++ ('fk-fake-1f', None, ['http://AZ-%(availability_zone)s/ubuntu'], ++ ['http://az-fk-fake-1f/ubuntu']), + # Test region alone +- (None, 'fk-fake-1', ['RG-%(region)s'], ['RG-fk-fake-1']), ++ (None, 'fk-fake-1', ['http://RG-%(region)s/ubuntu'], ++ ['http://rg-fk-fake-1/ubuntu']), + # Test that ec2_region is not available for non-matching AZs + ('fake-fake-1f', None, +- ['EC2-%(ec2_region)s', 'AZ-%(availability_zone)s'], +- ['AZ-fake-fake-1f']), ++ ['http://EC2-%(ec2_region)s/ubuntu', ++ 'http://AZ-%(availability_zone)s/ubuntu'], ++ ['http://az-fake-fake-1f/ubuntu']), + # Test that template order maintained +- (None, 'fake-region', ['RG-%(region)s-2', 'RG-%(region)s-1'], +- ['RG-fake-region-2', 'RG-fake-region-1']), +- )) ++ (None, 'fake-region', ++ ['http://RG-%(region)s-2/ubuntu', 'http://RG-%(region)s-1/ubuntu'], ++ ['http://rg-fake-region-2/ubuntu', 'http://rg-fake-region-1/ubuntu']), ++ # Test that non-ASCII hostnames are IDNA encoded; ++ # "IDNA-ТεЅТ̣".encode('idna') == b"xn--idna--4kd53hh6aba3q" ++ (None, 'ТεЅТ̣', ['http://www.IDNA-%(region)s.com/ubuntu'], ++ ['http://www.xn--idna--4kd53hh6aba3q.com/ubuntu']), ++ # Test that non-ASCII hostnames with a port are IDNA encoded; ++ # "IDNA-ТεЅТ̣".encode('idna') == b"xn--idna--4kd53hh6aba3q" ++ (None, 'ТεЅТ̣', ['http://www.IDNA-%(region)s.com:8080/ubuntu'], ++ ['http://www.xn--idna--4kd53hh6aba3q.com:8080/ubuntu']), ++ # Test that non-ASCII non-hostname parts of URLs are unchanged ++ (None, 'ТεЅТ̣', ['http://www.example.com/%(region)s/ubuntu'], ++ ['http://www.example.com/ТεЅТ̣/ubuntu']), ++ # Test that IPv4 addresses are unchanged ++ (None, 'fk-fake-1', ['http://192.168.1.1:8080/%(region)s/ubuntu'], ++ ['http://192.168.1.1:8080/fk-fake-1/ubuntu']), ++ # Test that IPv6 addresses are unchanged ++ (None, 'fk-fake-1', ++ ['http://[2001:67c:1360:8001::23]/%(region)s/ubuntu'], ++ ['http://[2001:67c:1360:8001::23]/fk-fake-1/ubuntu']), ++ # Test that unparseable URLs are filtered out of the mirror list ++ (None, 'inv[lid', ++ ['http://%(region)s.in.hostname/should/be/filtered', ++ 'http://but.not.in.the.path/%(region)s'], ++ ['http://but.not.in.the.path/inv[lid']), ++ ) + ( ++ # Dynamically generate a test case for each non-LDH ++ # (Letters/Digits/Hyphen) ASCII character, testing that it is ++ # substituted with a hyphen ++ tuple( ++ (None, 'fk{0}fake{0}1'.format(invalid_char), ++ ['http://%(region)s/ubuntu'], ['http://fk-fake-1/ubuntu']) ++ for invalid_char in INVALID_URL_CHARS)) ++ ) + def test_substitution(self, availability_zone, region, patterns, expected): + """Test substitution works as expected.""" + m_data_source = mock.Mock( diff --git a/debian/patches/series b/debian/patches/series index 9712ed83d3d..17136545248 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -5,3 +5,4 @@ cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 cpick-c5e949c0-distros-tests-test_init-add-tests-for cpick-2566fdbe-net-introduce-is_ip_address-function-288 cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address +cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with From 143673c575a4c03f5201c93fb8130bca68cc691e Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:39 -0600 Subject: [PATCH 0423/1174] update changelog --- debian/changelog | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 7b26e5648ed..6c30e55b985 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-10-g71af48df-0ubuntu10) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu11) UNRELEASED; urgency=medium * cherry-pick 6600c642: ec2: render network on all NICs and add secondary IPs as (LP: #1866930) @@ -12,8 +12,10 @@ cloud-init (20.1-10-g71af48df-0ubuntu10) UNRELEASED; urgency=medium * cherry-pick 2566fdbe: net: introduce is_ip_address function (#288) * cherry-pick 4f825b3e: cloudinit: refactor util.is_ipv4 to net.is_ipv4_address + * cherry-pick c478d0bf: distros: replace invalid characters in mirror + URLs with (LP: #1868232) - -- Chad Smith Fri, 03 Apr 2020 13:55:34 -0600 + -- Chad Smith Fri, 03 Apr 2020 13:55:37 -0600 cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium From 2305f0109ee4c9802bb2828600d511a7c4c5c4b2 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:42 -0600 Subject: [PATCH 0424/1174] cherry pick 1bbc4908 --- ...p-leading-trailing-hyphens-from-mirror-URL | 54 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 55 insertions(+) create mode 100644 debian/patches/cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL diff --git a/debian/patches/cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL b/debian/patches/cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL new file mode 100644 index 00000000000..d7f0b5b3633 --- /dev/null +++ b/debian/patches/cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL @@ -0,0 +1,54 @@ +From 1bbc4908ff7a2be19483811b3b6fee6ebc916235 Mon Sep 17 00:00:00 2001 +From: Daniel Watkins +Date: Tue, 31 Mar 2020 17:04:17 -0400 +Subject: [PATCH] distros: drop leading/trailing hyphens from mirror URL labels + (#296) + +* distros/tests/test_init: drop needless brackets/indentation + +* distros: drop leading/trailing hyphens from mirror URL labels +--- + cloudinit/distros/__init__.py | 5 +++++ + cloudinit/distros/tests/test_init.py | 14 ++++++++------ + 2 files changed, 13 insertions(+), 6 deletions(-) + +--- a/cloudinit/distros/__init__.py ++++ b/cloudinit/distros/__init__.py +@@ -816,6 +816,11 @@ def _sanitize_mirror_url(url: str): + lambda hostname: ''.join( + c if c in acceptable_chars else "-" for c in hostname + ), ++ ++ # Drop leading/trailing hyphens from each part of the hostname ++ lambda hostname: '.'.join( ++ part.strip('-') for part in hostname.split('.') ++ ), + ] + + return _apply_hostname_transformations_to_url(url, transformations) +--- a/cloudinit/distros/tests/test_init.py ++++ b/cloudinit/distros/tests/test_init.py +@@ -109,15 +109,17 @@ class TestGetPackageMirrorInfo: + ['http://%(region)s.in.hostname/should/be/filtered', + 'http://but.not.in.the.path/%(region)s'], + ['http://but.not.in.the.path/inv[lid']), +- ) + ( ++ (None, '-some-region-', ++ ['http://-lead-ing.%(region)s.trail-ing-.example.com/ubuntu'], ++ ['http://lead-ing.some-region.trail-ing.example.com/ubuntu']), ++ ) + tuple( + # Dynamically generate a test case for each non-LDH + # (Letters/Digits/Hyphen) ASCII character, testing that it is + # substituted with a hyphen +- tuple( +- (None, 'fk{0}fake{0}1'.format(invalid_char), +- ['http://%(region)s/ubuntu'], ['http://fk-fake-1/ubuntu']) +- for invalid_char in INVALID_URL_CHARS)) +- ) ++ (None, 'fk{0}fake{0}1'.format(invalid_char), ++ ['http://%(region)s/ubuntu'], ['http://fk-fake-1/ubuntu']) ++ for invalid_char in INVALID_URL_CHARS ++ )) + def test_substitution(self, availability_zone, region, patterns, expected): + """Test substitution works as expected.""" + m_data_source = mock.Mock( diff --git a/debian/patches/series b/debian/patches/series index 17136545248..d04ce605b03 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -6,3 +6,4 @@ cpick-c5e949c0-distros-tests-test_init-add-tests-for cpick-2566fdbe-net-introduce-is_ip_address-function-288 cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with +cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL From 7d735322832a9e6b22cafc747e9d74f34e342620 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:42 -0600 Subject: [PATCH 0425/1174] update changelog --- debian/changelog | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6c30e55b985..1d321aea855 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-10-g71af48df-0ubuntu11) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu12) UNRELEASED; urgency=medium * cherry-pick 6600c642: ec2: render network on all NICs and add secondary IPs as (LP: #1866930) @@ -14,8 +14,10 @@ cloud-init (20.1-10-g71af48df-0ubuntu11) UNRELEASED; urgency=medium net.is_ipv4_address * cherry-pick c478d0bf: distros: replace invalid characters in mirror URLs with (LP: #1868232) + * cherry-pick 1bbc4908: distros: drop leading/trailing hyphens from + mirror URL labels - -- Chad Smith Fri, 03 Apr 2020 13:55:37 -0600 + -- Chad Smith Fri, 03 Apr 2020 13:55:40 -0600 cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium From 053ff95fe533a4b6445ed43636ea9313789ec81d Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:46 -0600 Subject: [PATCH 0426/1174] cherry pick 09fea85f LP: #1870421 --- ...-ignore-renderer-key-in-netplan-config-306 | 39 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 40 insertions(+) create mode 100644 debian/patches/cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 diff --git a/debian/patches/cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 b/debian/patches/cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 new file mode 100644 index 00000000000..f80af9af6f4 --- /dev/null +++ b/debian/patches/cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 @@ -0,0 +1,39 @@ +From 09fea85fd1f6fd944f4cdd8b97e283090178ae88 Mon Sep 17 00:00:00 2001 +From: Ryan Harper +Date: Fri, 3 Apr 2020 12:58:08 -0500 +Subject: [PATCH] net: ignore 'renderer' key in netplan config (#306) + +LP: #1870421 +--- + cloudinit/net/network_state.py | 2 +- + cloudinit/net/tests/test_network_state.py | 10 ++++++++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +--- a/cloudinit/net/network_state.py ++++ b/cloudinit/net/network_state.py +@@ -312,7 +312,7 @@ class NetworkStateInterpreter(metaclass= + + def parse_config_v2(self, skip_broken=True): + for command_type, command in self._config.items(): +- if command_type == 'version': ++ if command_type in ['version', 'renderer']: + continue + try: + handler = self.command_handlers[command_type] +--- a/cloudinit/net/tests/test_network_state.py ++++ b/cloudinit/net/tests/test_network_state.py +@@ -45,4 +45,14 @@ class TestNetworkStateParseConfig(CiTest + self.assertNotEqual(None, result) + + ++class TestNetworkStateParseConfigV2(CiTestCase): ++ ++ def test_version_2_ignores_renderer_key(self): ++ ncfg = {'version': 2, 'renderer': 'networkd', 'ethernets': {}} ++ nsi = network_state.NetworkStateInterpreter(version=ncfg['version'], ++ config=ncfg) ++ nsi.parse_config(skip_broken=False) ++ self.assertEqual(ncfg, nsi.as_dict()['config']) ++ ++ + # vi: ts=4 expandtab diff --git a/debian/patches/series b/debian/patches/series index d04ce605b03..23c9f4913df 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -7,3 +7,4 @@ cpick-2566fdbe-net-introduce-is_ip_address-function-288 cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL +cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 From 21e2ff827ce81fb40f93afd7e456ad047fc0fce2 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:55:46 -0600 Subject: [PATCH 0427/1174] update changelog --- debian/changelog | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1d321aea855..0ce4cbeebdf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-10-g71af48df-0ubuntu12) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu13) UNRELEASED; urgency=medium * cherry-pick 6600c642: ec2: render network on all NICs and add secondary IPs as (LP: #1866930) @@ -16,8 +16,10 @@ cloud-init (20.1-10-g71af48df-0ubuntu12) UNRELEASED; urgency=medium URLs with (LP: #1868232) * cherry-pick 1bbc4908: distros: drop leading/trailing hyphens from mirror URL labels + * cherry-pick 09fea85f: net: ignore 'renderer' key in netplan config + (#306) (LP: #1870421) - -- Chad Smith Fri, 03 Apr 2020 13:55:40 -0600 + -- Chad Smith Fri, 03 Apr 2020 13:55:43 -0600 cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium From 11ace7c67ce29a3b7c7b058db0d1da58275f94f2 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:57:52 -0600 Subject: [PATCH 0428/1174] add debian/patches to redact openbsd/netbsd from unit tests --- debian/changelog | 2 + ...tu-focal-prioritize-netplan-over-eni.patch | 40 +++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 43 insertions(+) create mode 100644 debian/patches/fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch diff --git a/debian/changelog b/debian/changelog index 0ce4cbeebdf..d356bc6dc40 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,7 @@ cloud-init (20.1-10-g71af48df-0ubuntu13) UNRELEASED; urgency=medium + * d/patches: redact openbsd netbsd from tests until new-upstream-snapshot + - fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni * cherry-pick 6600c642: ec2: render network on all NICs and add secondary IPs as (LP: #1866930) * cherry-pick 986f37b0: cloudinit: move to pytest for running tests diff --git a/debian/patches/fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch b/debian/patches/fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch new file mode 100644 index 00000000000..1d6ff6d2b89 --- /dev/null +++ b/debian/patches/fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch @@ -0,0 +1,40 @@ +Description: Drop netbsd and openbsd from cherry pick tests + Support for netbsd and openbsd is on in upstream until new-upstream-snapshot. +Author: Chad Smith +Origin: backport +Forwarded: not-needed +Last-Update: 2020-04-03 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: cloud-init/tests/unittests/test_render_cloudcfg.py +=================================================================== +--- cloud-init.orig/tests/unittests/test_render_cloudcfg.py ++++ cloud-init/tests/unittests/test_render_cloudcfg.py +@@ -9,7 +9,7 @@ from cloudinit import util + + # TODO(Look to align with tools.render-cloudcfg or cloudinit.distos.OSFAMILIES) + DISTRO_VARIANTS = ["amazon", "arch", "centos", "debian", "fedora", "freebsd", +- "netbsd", "openbsd", "rhel", "suse", "ubuntu", "unknown"] ++ "rhel", "suse", "ubuntu", "unknown"] + + + class TestRenderCloudCfg: +@@ -40,18 +40,3 @@ class TestRenderCloudCfg: + 'amazon': 'ec2-user', 'debian': 'ubuntu', 'unknown': 'ubuntu'} + default_user = system_cfg['system_info']['default_user']['name'] + assert default_user == default_user_exceptions.get(variant, variant) +- +- @pytest.mark.parametrize('variant,renderers', ( +- ('freebsd', ['freebsd']), ('netbsd', ['netbsd']), +- ('openbsd', ['openbsd']), ('ubuntu', ['netplan', 'eni', 'sysconfig'])) +- ) +- def test_variant_sets_network_renderer_priority_in_cloud_cfg( +- self, variant, renderers, tmpdir +- ): +- outfile = tmpdir.join('outcfg').strpath +- util.subp( +- self.cmd + ['--variant', variant, self.tmpl_path, outfile]) +- with open(outfile) as stream: +- system_cfg = util.load_yaml(stream.read()) +- +- assert renderers == system_cfg['system_info']['network']['renderers'] diff --git a/debian/patches/series b/debian/patches/series index 23c9f4913df..a066491b4b8 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -8,3 +8,4 @@ cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 +fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch From b6e1537eb9002ae946726afe502b83218ab5195b Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Apr 2020 13:58:01 -0600 Subject: [PATCH 0429/1174] releasing cloud-init version 20.1-10-g71af48df-0ubuntu3 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index d356bc6dc40..10061a46f87 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-10-g71af48df-0ubuntu13) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu3) focal; urgency=medium * d/patches: redact openbsd netbsd from tests until new-upstream-snapshot - fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni @@ -21,7 +21,7 @@ cloud-init (20.1-10-g71af48df-0ubuntu13) UNRELEASED; urgency=medium * cherry-pick 09fea85f: net: ignore 'renderer' key in netplan config (#306) (LP: #1870421) - -- Chad Smith Fri, 03 Apr 2020 13:55:43 -0600 + -- Chad Smith Fri, 03 Apr 2020 13:57:52 -0600 cloud-init (20.1-10-g71af48df-0ubuntu2) focal; urgency=medium From 8df70244568158cbfd252e22890909ad693c839c Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 15 Apr 2020 15:07:57 -0600 Subject: [PATCH 0430/1174] cherry pick 9d7b35ce LP: #1872836 --- ...mounts-fix-incorrect-format-specifiers-316 | 64 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 65 insertions(+) create mode 100644 debian/patches/cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 diff --git a/debian/patches/cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 b/debian/patches/cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 new file mode 100644 index 00000000000..3e045729b5d --- /dev/null +++ b/debian/patches/cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 @@ -0,0 +1,64 @@ +From 9d7b35ce23aaf8741dd49b16e359c96591be3c76 Mon Sep 17 00:00:00 2001 +From: Daniel Watkins +Date: Wed, 15 Apr 2020 16:53:08 -0400 +Subject: [PATCH] cc_mounts: fix incorrect format specifiers (#316) + +LP: #1872836 +--- + cloudinit/config/cc_mounts.py | 8 ++++---- + cloudinit/config/tests/test_mounts.py | 22 ++++++++++++++++++++++ + 2 files changed, 26 insertions(+), 4 deletions(-) + create mode 100644 cloudinit/config/tests/test_mounts.py + +--- a/cloudinit/config/cc_mounts.py ++++ b/cloudinit/config/cc_mounts.py +@@ -223,20 +223,20 @@ def suggested_swapsize(memsize=None, max + return size + + +-def create_swapfile(fname, size): ++def create_swapfile(fname: str, size: str) -> None: + """Size is in MiB.""" + +- errmsg = "Failed to create swapfile '%s' of size %dMB via %s: %s" ++ errmsg = "Failed to create swapfile '%s' of size %sMB via %s: %s" + + def create_swap(fname, size, method): + LOG.debug("Creating swapfile in '%s' on fstype '%s' using '%s'", + fname, fstype, method) + + if method == "fallocate": +- cmd = ['fallocate', '-l', '%dM' % size, fname] ++ cmd = ['fallocate', '-l', '%sM' % size, fname] + elif method == "dd": + cmd = ['dd', 'if=/dev/zero', 'of=%s' % fname, 'bs=1M', +- 'count=%d' % size] ++ 'count=%s' % size] + + try: + util.subp(cmd, capture=True) +--- /dev/null ++++ b/cloudinit/config/tests/test_mounts.py +@@ -0,0 +1,22 @@ ++# This file is part of cloud-init. See LICENSE file for license information. ++from unittest import mock ++ ++from cloudinit.config.cc_mounts import create_swapfile ++ ++ ++M_PATH = 'cloudinit.config.cc_mounts.' ++ ++ ++class TestCreateSwapfile: ++ ++ @mock.patch(M_PATH + 'util.subp') ++ def test_happy_path(self, m_subp, tmpdir): ++ swap_file = tmpdir.join("swap-file") ++ fname = str(swap_file) ++ ++ # Some of the calls to util.subp should create the swap file; this ++ # roughly approximates that ++ m_subp.side_effect = lambda *args, **kwargs: swap_file.write('') ++ ++ create_swapfile(fname, '') ++ assert mock.call(['mkswap', fname]) in m_subp.call_args_list diff --git a/debian/patches/series b/debian/patches/series index a066491b4b8..85d0539d636 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -9,3 +9,4 @@ cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch +cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 From efcfe5bde6ed31a92ac095ca59149a9c3b271102 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 15 Apr 2020 15:07:57 -0600 Subject: [PATCH 0431/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 10061a46f87..c24a8b74360 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (20.1-10-g71af48df-0ubuntu4) UNRELEASED; urgency=medium + + * cherry-pick 9d7b35ce: cc_mounts: fix incorrect format specifiers + (#316) (LP: #1872836) + + -- Chad Smith Wed, 15 Apr 2020 15:07:49 -0600 + cloud-init (20.1-10-g71af48df-0ubuntu3) focal; urgency=medium * d/patches: redact openbsd netbsd from tests until new-upstream-snapshot From ffd5d1d48b90b4b24ae950a7283e9f6c41796603 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 15 Apr 2020 15:09:42 -0600 Subject: [PATCH 0432/1174] releasing cloud-init 20.1-10-g71af48df-0ubuntu4 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index c24a8b74360..150dd000d52 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (20.1-10-g71af48df-0ubuntu4) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu4) focal; urgency=medium * cherry-pick 9d7b35ce: cc_mounts: fix incorrect format specifiers (#316) (LP: #1872836) - -- Chad Smith Wed, 15 Apr 2020 15:07:49 -0600 + -- Chad Smith Wed, 15 Apr 2020 15:09:04 -0600 cloud-init (20.1-10-g71af48df-0ubuntu3) focal; urgency=medium From ebfa404d451e47dfc28aff4d982f3ffd57e4b7be Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 16 Apr 2020 11:22:59 -0400 Subject: [PATCH 0433/1174] cherry pick 0c5c7367 --- ...xpand-happy-path-test-for-both-happy-paths | 41 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 42 insertions(+) create mode 100644 debian/patches/cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths diff --git a/debian/patches/cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths b/debian/patches/cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths new file mode 100644 index 00000000000..b03940a4a8c --- /dev/null +++ b/debian/patches/cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths @@ -0,0 +1,41 @@ +From 0c5c736727d0f8e363678fe970d70bb889e3893c Mon Sep 17 00:00:00 2001 +From: Daniel Watkins +Date: Thu, 16 Apr 2020 11:18:36 -0400 +Subject: [PATCH] test_mounts: expand happy path test for both happy paths + (#319) + +--- + cloudinit/config/tests/test_mounts.py | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/cloudinit/config/tests/test_mounts.py ++++ b/cloudinit/config/tests/test_mounts.py +@@ -1,6 +1,8 @@ + # This file is part of cloud-init. See LICENSE file for license information. + from unittest import mock + ++import pytest ++ + from cloudinit.config.cc_mounts import create_swapfile + + +@@ -9,8 +11,10 @@ M_PATH = 'cloudinit.config.cc_mounts.' + + class TestCreateSwapfile: + ++ @pytest.mark.parametrize('fstype', ('xfs', 'btrfs', 'ext4', 'other')) ++ @mock.patch(M_PATH + 'util.get_mount_info') + @mock.patch(M_PATH + 'util.subp') +- def test_happy_path(self, m_subp, tmpdir): ++ def test_happy_path(self, m_subp, m_get_mount_info, fstype, tmpdir): + swap_file = tmpdir.join("swap-file") + fname = str(swap_file) + +@@ -18,5 +22,7 @@ class TestCreateSwapfile: + # roughly approximates that + m_subp.side_effect = lambda *args, **kwargs: swap_file.write('') + ++ m_get_mount_info.return_value = (mock.ANY, fstype) ++ + create_swapfile(fname, '') + assert mock.call(['mkswap', fname]) in m_subp.call_args_list diff --git a/debian/patches/series b/debian/patches/series index 85d0539d636..61704533d92 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -10,3 +10,4 @@ cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 +cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths From 4a15c4293a98731ceafb4daf159f5f020caf1ef5 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 16 Apr 2020 11:22:59 -0400 Subject: [PATCH 0434/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 150dd000d52..85466afbd31 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (20.1-10-g71af48df-0ubuntu5) UNRELEASED; urgency=medium + + * cherry-pick 0c5c7367: test_mounts: expand happy path test for both + happy paths + + -- Daniel Watkins Thu, 16 Apr 2020 11:22:49 -0400 + cloud-init (20.1-10-g71af48df-0ubuntu4) focal; urgency=medium * cherry-pick 9d7b35ce: cc_mounts: fix incorrect format specifiers From fcb14f2c2dee9e7a1676be943b7d0dceaac27771 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 16 Apr 2020 11:23:28 -0400 Subject: [PATCH 0435/1174] releasing cloud-init 20.1-10-g71af48df-0ubuntu4 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 85466afbd31..5523dfa21e9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (20.1-10-g71af48df-0ubuntu5) UNRELEASED; urgency=medium +cloud-init (20.1-10-g71af48df-0ubuntu5) focal; urgency=medium * cherry-pick 0c5c7367: test_mounts: expand happy path test for both happy paths - -- Daniel Watkins Thu, 16 Apr 2020 11:22:49 -0400 + -- Daniel Watkins Thu, 16 Apr 2020 11:23:08 -0400 cloud-init (20.1-10-g71af48df-0ubuntu4) focal; urgency=medium From 874ca7d7d85417765159056fc18ad6bb536f209b Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 11 May 2020 20:17:05 -0600 Subject: [PATCH 0436/1174] drop cherry picks included in origin/master commit d10ce3ec drop the following cherry picks: cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 cpick-c5e949c0-distros-tests-test_init-add-tests-for cpick-2566fdbe-net-introduce-is_ip_address-function-288 cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths --- ...4771d75-cc_disk_setup-fix-RuntimeError-270 | 25 - ...-ignore-renderer-key-in-netplan-config-306 | 39 - ...xpand-happy-path-test-for-both-happy-paths | 41 - ...p-leading-trailing-hyphens-from-mirror-URL | 54 -- ...e-net-introduce-is_ip_address-function-288 | 105 --- ...factor-util.is_ipv4-to-net.is_ipv4_address | 103 --- ...-focal-prioritize-netplan-over-eni-even-if | 204 ----- ...twork-on-all-NICs-and-add-secondary-IPs-as | 706 ------------------ ...dinit-move-to-pytest-for-running-tests-211 | 269 ------- ...mounts-fix-incorrect-format-specifiers-316 | 64 -- ...ace-invalid-characters-in-mirror-URLs-with | 281 ------- ...49c0-distros-tests-test_init-add-tests-for | 99 --- ...tu-focal-prioritize-netplan-over-eni.patch | 40 - debian/patches/series | 13 - 14 files changed, 2043 deletions(-) delete mode 100644 debian/patches/cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 delete mode 100644 debian/patches/cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 delete mode 100644 debian/patches/cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths delete mode 100644 debian/patches/cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL delete mode 100644 debian/patches/cpick-2566fdbe-net-introduce-is_ip_address-function-288 delete mode 100644 debian/patches/cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address delete mode 100644 debian/patches/cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if delete mode 100644 debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as delete mode 100644 debian/patches/cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 delete mode 100644 debian/patches/cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 delete mode 100644 debian/patches/cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with delete mode 100644 debian/patches/cpick-c5e949c0-distros-tests-test_init-add-tests-for delete mode 100644 debian/patches/fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch delete mode 100644 debian/patches/series diff --git a/debian/patches/cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 b/debian/patches/cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 deleted file mode 100644 index 8c189e830f7..00000000000 --- a/debian/patches/cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 +++ /dev/null @@ -1,25 +0,0 @@ -From 04771d75a8670f07ae4c75b5892e3b795e9d1a07 Mon Sep 17 00:00:00 2001 -From: Daniel Watkins -Date: Mon, 23 Mar 2020 17:22:42 -0400 -Subject: [PATCH] cc_disk_setup: fix RuntimeError (#270) - -Addresses "Runtime Error: dictionary keys changed during iteration". - -Co-authored-by: Noah Meyerhans - -LP: #1868327 ---- - cloudinit/config/cc_disk_setup.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/cloudinit/config/cc_disk_setup.py -+++ b/cloudinit/config/cc_disk_setup.py -@@ -163,7 +163,7 @@ def handle(_name, cfg, cloud, log, _args - def update_disk_setup_devices(disk_setup, tformer): - # update 'disk_setup' dictionary anywhere were a device may occur - # update it with the response from 'tformer' -- for origname in disk_setup.keys(): -+ for origname in list(disk_setup): - transformed = tformer(origname) - if transformed is None or transformed == origname: - continue diff --git a/debian/patches/cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 b/debian/patches/cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 deleted file mode 100644 index f80af9af6f4..00000000000 --- a/debian/patches/cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 +++ /dev/null @@ -1,39 +0,0 @@ -From 09fea85fd1f6fd944f4cdd8b97e283090178ae88 Mon Sep 17 00:00:00 2001 -From: Ryan Harper -Date: Fri, 3 Apr 2020 12:58:08 -0500 -Subject: [PATCH] net: ignore 'renderer' key in netplan config (#306) - -LP: #1870421 ---- - cloudinit/net/network_state.py | 2 +- - cloudinit/net/tests/test_network_state.py | 10 ++++++++++ - 2 files changed, 11 insertions(+), 1 deletion(-) - ---- a/cloudinit/net/network_state.py -+++ b/cloudinit/net/network_state.py -@@ -312,7 +312,7 @@ class NetworkStateInterpreter(metaclass= - - def parse_config_v2(self, skip_broken=True): - for command_type, command in self._config.items(): -- if command_type == 'version': -+ if command_type in ['version', 'renderer']: - continue - try: - handler = self.command_handlers[command_type] ---- a/cloudinit/net/tests/test_network_state.py -+++ b/cloudinit/net/tests/test_network_state.py -@@ -45,4 +45,14 @@ class TestNetworkStateParseConfig(CiTest - self.assertNotEqual(None, result) - - -+class TestNetworkStateParseConfigV2(CiTestCase): -+ -+ def test_version_2_ignores_renderer_key(self): -+ ncfg = {'version': 2, 'renderer': 'networkd', 'ethernets': {}} -+ nsi = network_state.NetworkStateInterpreter(version=ncfg['version'], -+ config=ncfg) -+ nsi.parse_config(skip_broken=False) -+ self.assertEqual(ncfg, nsi.as_dict()['config']) -+ -+ - # vi: ts=4 expandtab diff --git a/debian/patches/cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths b/debian/patches/cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths deleted file mode 100644 index b03940a4a8c..00000000000 --- a/debian/patches/cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths +++ /dev/null @@ -1,41 +0,0 @@ -From 0c5c736727d0f8e363678fe970d70bb889e3893c Mon Sep 17 00:00:00 2001 -From: Daniel Watkins -Date: Thu, 16 Apr 2020 11:18:36 -0400 -Subject: [PATCH] test_mounts: expand happy path test for both happy paths - (#319) - ---- - cloudinit/config/tests/test_mounts.py | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - ---- a/cloudinit/config/tests/test_mounts.py -+++ b/cloudinit/config/tests/test_mounts.py -@@ -1,6 +1,8 @@ - # This file is part of cloud-init. See LICENSE file for license information. - from unittest import mock - -+import pytest -+ - from cloudinit.config.cc_mounts import create_swapfile - - -@@ -9,8 +11,10 @@ M_PATH = 'cloudinit.config.cc_mounts.' - - class TestCreateSwapfile: - -+ @pytest.mark.parametrize('fstype', ('xfs', 'btrfs', 'ext4', 'other')) -+ @mock.patch(M_PATH + 'util.get_mount_info') - @mock.patch(M_PATH + 'util.subp') -- def test_happy_path(self, m_subp, tmpdir): -+ def test_happy_path(self, m_subp, m_get_mount_info, fstype, tmpdir): - swap_file = tmpdir.join("swap-file") - fname = str(swap_file) - -@@ -18,5 +22,7 @@ class TestCreateSwapfile: - # roughly approximates that - m_subp.side_effect = lambda *args, **kwargs: swap_file.write('') - -+ m_get_mount_info.return_value = (mock.ANY, fstype) -+ - create_swapfile(fname, '') - assert mock.call(['mkswap', fname]) in m_subp.call_args_list diff --git a/debian/patches/cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL b/debian/patches/cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL deleted file mode 100644 index d7f0b5b3633..00000000000 --- a/debian/patches/cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL +++ /dev/null @@ -1,54 +0,0 @@ -From 1bbc4908ff7a2be19483811b3b6fee6ebc916235 Mon Sep 17 00:00:00 2001 -From: Daniel Watkins -Date: Tue, 31 Mar 2020 17:04:17 -0400 -Subject: [PATCH] distros: drop leading/trailing hyphens from mirror URL labels - (#296) - -* distros/tests/test_init: drop needless brackets/indentation - -* distros: drop leading/trailing hyphens from mirror URL labels ---- - cloudinit/distros/__init__.py | 5 +++++ - cloudinit/distros/tests/test_init.py | 14 ++++++++------ - 2 files changed, 13 insertions(+), 6 deletions(-) - ---- a/cloudinit/distros/__init__.py -+++ b/cloudinit/distros/__init__.py -@@ -816,6 +816,11 @@ def _sanitize_mirror_url(url: str): - lambda hostname: ''.join( - c if c in acceptable_chars else "-" for c in hostname - ), -+ -+ # Drop leading/trailing hyphens from each part of the hostname -+ lambda hostname: '.'.join( -+ part.strip('-') for part in hostname.split('.') -+ ), - ] - - return _apply_hostname_transformations_to_url(url, transformations) ---- a/cloudinit/distros/tests/test_init.py -+++ b/cloudinit/distros/tests/test_init.py -@@ -109,15 +109,17 @@ class TestGetPackageMirrorInfo: - ['http://%(region)s.in.hostname/should/be/filtered', - 'http://but.not.in.the.path/%(region)s'], - ['http://but.not.in.the.path/inv[lid']), -- ) + ( -+ (None, '-some-region-', -+ ['http://-lead-ing.%(region)s.trail-ing-.example.com/ubuntu'], -+ ['http://lead-ing.some-region.trail-ing.example.com/ubuntu']), -+ ) + tuple( - # Dynamically generate a test case for each non-LDH - # (Letters/Digits/Hyphen) ASCII character, testing that it is - # substituted with a hyphen -- tuple( -- (None, 'fk{0}fake{0}1'.format(invalid_char), -- ['http://%(region)s/ubuntu'], ['http://fk-fake-1/ubuntu']) -- for invalid_char in INVALID_URL_CHARS)) -- ) -+ (None, 'fk{0}fake{0}1'.format(invalid_char), -+ ['http://%(region)s/ubuntu'], ['http://fk-fake-1/ubuntu']) -+ for invalid_char in INVALID_URL_CHARS -+ )) - def test_substitution(self, availability_zone, region, patterns, expected): - """Test substitution works as expected.""" - m_data_source = mock.Mock( diff --git a/debian/patches/cpick-2566fdbe-net-introduce-is_ip_address-function-288 b/debian/patches/cpick-2566fdbe-net-introduce-is_ip_address-function-288 deleted file mode 100644 index 1fb9ee695b2..00000000000 --- a/debian/patches/cpick-2566fdbe-net-introduce-is_ip_address-function-288 +++ /dev/null @@ -1,105 +0,0 @@ -From 2566fdbee06cf5708cfcd988a65fb81cdf794dbf Mon Sep 17 00:00:00 2001 -From: Daniel Watkins -Date: Fri, 27 Mar 2020 22:47:01 -0400 -Subject: [PATCH] net: introduce is_ip_address function (#288) - -This will be required for the mirror URL sanitisation work, ---- - cloudinit/net/__init__.py | 19 +++++++++++++++++- - cloudinit/net/tests/test_init.py | 33 ++++++++++++++++++++++++++++---- - 2 files changed, 47 insertions(+), 5 deletions(-) - ---- a/cloudinit/net/__init__.py -+++ b/cloudinit/net/__init__.py -@@ -6,13 +6,14 @@ - # This file is part of cloud-init. See LICENSE file for license information. - - import errno -+import ipaddress - import logging - import os - import re - from functools import partial - --from cloudinit.net.network_state import mask_to_net_prefix - from cloudinit import util -+from cloudinit.net.network_state import mask_to_net_prefix - from cloudinit.url_helper import UrlError, readurl - - LOG = logging.getLogger(__name__) -@@ -916,6 +917,22 @@ def has_url_connectivity(url): - return False - return True - -+ -+def is_ip_address(s: str) -> bool: -+ """Returns a bool indicating if ``s`` is an IP address. -+ -+ :param s: -+ The string to test. -+ -+ :return: -+ A bool indicating if the string contains an IP address or not. -+ """ -+ try: -+ ipaddress.ip_address(s) -+ except ValueError: -+ return False -+ return True -+ - - class EphemeralIPv4Network(object): - """Context manager which sets up temporary static network configuration. ---- a/cloudinit/net/tests/test_init.py -+++ b/cloudinit/net/tests/test_init.py -@@ -2,16 +2,19 @@ - - import copy - import errno --import httpretty -+import ipaddress - import os --import requests - import textwrap - from unittest import mock - -+import httpretty -+import pytest -+import requests -+ - import cloudinit.net as net --from cloudinit.util import ensure_file, write_file, ProcessExecutionError --from cloudinit.tests.helpers import CiTestCase, HttprettyTestCase - from cloudinit import safeyaml as yaml -+from cloudinit.tests.helpers import CiTestCase, HttprettyTestCase -+from cloudinit.util import ProcessExecutionError, ensure_file, write_file - - - class TestSysDevPath(CiTestCase): -@@ -1297,4 +1300,26 @@ class TestNetFailOver(CiTestCase): - m_standby.return_value = False - self.assertFalse(net.is_netfailover(devname, driver)) - -+ -+class TestIsIpAddress: -+ """Tests for net.is_ip_address. -+ -+ Instead of testing with values we rely on the ipaddress stdlib module to -+ handle all values correctly, so simply test that is_ip_address defers to -+ the ipaddress module correctly. -+ """ -+ -+ @pytest.mark.parametrize('ip_address_side_effect,expected_return', ( -+ (ValueError, False), -+ (lambda _: ipaddress.IPv4Address('192.168.0.1'), True), -+ (lambda _: ipaddress.IPv6Address('2001:db8::'), True), -+ )) -+ def test_is_ip_address(self, ip_address_side_effect, expected_return): -+ with mock.patch('cloudinit.net.ipaddress.ip_address', -+ side_effect=ip_address_side_effect) as m_ip_address: -+ ret = net.is_ip_address(mock.sentinel.ip_address_in) -+ assert expected_return == ret -+ expected_call = mock.call(mock.sentinel.ip_address_in) -+ assert [expected_call] == m_ip_address.call_args_list -+ - # vi: ts=4 expandtab diff --git a/debian/patches/cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address b/debian/patches/cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address deleted file mode 100644 index 01270f03ab8..00000000000 --- a/debian/patches/cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address +++ /dev/null @@ -1,103 +0,0 @@ -From 4f825b3e6d8fde5c239d29639b04d2bea6d95d0e Mon Sep 17 00:00:00 2001 -From: Daniel Watkins -Date: Mon, 30 Mar 2020 23:02:44 -0400 -Subject: [PATCH] cloudinit: refactor util.is_ipv4 to net.is_ipv4_address - (#292) - -This also simplifies the implementation to rely on the stdlib, instead -of our own NIH checking. ---- - cloudinit/net/__init__.py | 16 ++++++++++++++++ - cloudinit/net/tests/test_init.py | 22 ++++++++++++++++++++++ - cloudinit/sources/__init__.py | 2 +- - cloudinit/util.py | 14 -------------- - 4 files changed, 39 insertions(+), 15 deletions(-) - ---- a/cloudinit/net/__init__.py -+++ b/cloudinit/net/__init__.py -@@ -934,6 +934,22 @@ def is_ip_address(s: str) -> bool: - return True - - -+def is_ipv4_address(s: str) -> bool: -+ """Returns a bool indicating if ``s`` is an IPv4 address. -+ -+ :param s: -+ The string to test. -+ -+ :return: -+ A bool indicating if the string contains an IPv4 address or not. -+ """ -+ try: -+ ipaddress.IPv4Address(s) -+ except ValueError: -+ return False -+ return True -+ -+ - class EphemeralIPv4Network(object): - """Context manager which sets up temporary static network configuration. - ---- a/cloudinit/net/tests/test_init.py -+++ b/cloudinit/net/tests/test_init.py -@@ -1322,4 +1322,26 @@ class TestIsIpAddress: - expected_call = mock.call(mock.sentinel.ip_address_in) - assert [expected_call] == m_ip_address.call_args_list - -+ -+class TestIsIpv4Address: -+ """Tests for net.is_ipv4_address. -+ -+ Instead of testing with values we rely on the ipaddress stdlib module to -+ handle all values correctly, so simply test that is_ipv4_address defers to -+ the ipaddress module correctly. -+ """ -+ -+ @pytest.mark.parametrize('ipv4address_mock,expected_return', ( -+ (mock.Mock(side_effect=ValueError), False), -+ (mock.Mock(return_value=ipaddress.IPv4Address('192.168.0.1')), True), -+ )) -+ def test_is_ip_address(self, ipv4address_mock, expected_return): -+ with mock.patch('cloudinit.net.ipaddress.IPv4Address', -+ ipv4address_mock) as m_ipv4address: -+ ret = net.is_ipv4_address(mock.sentinel.ip_address_in) -+ assert expected_return == ret -+ expected_call = mock.call(mock.sentinel.ip_address_in) -+ assert [expected_call] == m_ipv4address.call_args_list -+ -+ - # vi: ts=4 expandtab ---- a/cloudinit/sources/__init__.py -+++ b/cloudinit/sources/__init__.py -@@ -602,7 +602,7 @@ class DataSource(metaclass=abc.ABCMeta): - # if there is an ipv4 address in 'local-hostname', then - # make up a hostname (LP: #475354) in format ip-xx.xx.xx.xx - lhost = self.metadata['local-hostname'] -- if util.is_ipv4(lhost): -+ if net.is_ipv4_address(lhost): - toks = [] - if resolve_ip: - toks = util.gethostbyaddr(lhost) ---- a/cloudinit/util.py -+++ b/cloudinit/util.py -@@ -533,20 +533,6 @@ def multi_log(text, console=True, stderr - log.log(log_level, text) - - --def is_ipv4(instr): -- """determine if input string is a ipv4 address. return boolean.""" -- toks = instr.split('.') -- if len(toks) != 4: -- return False -- -- try: -- toks = [x for x in toks if 0 <= int(x) < 256] -- except Exception: -- return False -- -- return len(toks) == 4 -- -- - @lru_cache() - def is_FreeBSD(): - return system_info()['variant'] == "freebsd" diff --git a/debian/patches/cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if b/debian/patches/cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if deleted file mode 100644 index e4b307cc567..00000000000 --- a/debian/patches/cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if +++ /dev/null @@ -1,204 +0,0 @@ -From 4fb6fd8a046a6bcce01216c386f3b691a2c466bb Mon Sep 17 00:00:00 2001 -From: Chad Smith -Date: Mon, 30 Mar 2020 21:24:51 -0600 -Subject: [PATCH] net: ubuntu focal prioritize netplan over eni even if both - present (#267) - -On Focal and later, Ubuntu will prioritize netplan renderer over eni, -even if ifupdown and netplan are both installed. - -ENI on Focal and later is considered an unsupported configuration so -cloud-init should generally prefer netplan. On many cloud images, -the /etc/network/interfaces config file does not include the dir -/etc/network/interfaces.d thereby ignoring cloud-init's -/etc/network/interfaces.d/50-cloud-init.cfg file. - -LP: #1867029 ---- - config/cloud.cfg.tmpl | 3 + - tests/unittests/test_net.py | 86 +++++++++++++------------ - tests/unittests/test_render_cloudcfg.py | 57 ++++++++++++++++ - 3 files changed, 106 insertions(+), 40 deletions(-) - create mode 100644 tests/unittests/test_render_cloudcfg.py - ---- a/config/cloud.cfg.tmpl -+++ b/config/cloud.cfg.tmpl -@@ -158,6 +158,9 @@ system_info: - groups: [adm, audio, cdrom, dialout, dip, floppy, lxd, netdev, plugdev, sudo, video] - sudo: ["ALL=(ALL) NOPASSWD:ALL"] - shell: /bin/bash -+{# SRU_BLOCKER: do not ship network renderers on Xenial, Bionic or Eoan #} -+ network: -+ renderers: ['netplan', 'eni', 'sysconfig'] - # Automatically discover the best ntp_client - ntp_client: auto - # Other config here will be given to the distro class and/or path classes ---- a/tests/unittests/test_net.py -+++ b/tests/unittests/test_net.py -@@ -24,6 +24,7 @@ import re - import textwrap - from yaml.serializer import Serializer - -+import pytest - - DHCP_CONTENT_1 = """ - DEVICE='eth0' -@@ -4671,6 +4672,51 @@ class TestEniRoundTrip(CiTestCase): - files['/etc/network/interfaces'].splitlines()) - - -+class TestRenderersSelect: -+ -+ @pytest.mark.parametrize( -+ 'renderer_selected,netplan,eni,nm,scfg,sys', ( -+ # -netplan -ifupdown -nm -scfg -sys raises error -+ (net.RendererNotFoundError, False, False, False, False, False), -+ # -netplan +ifupdown -nm -scfg -sys selects eni -+ ('eni', False, True, False, False, False), -+ # +netplan +ifupdown -nm -scfg -sys selects eni -+ ('eni', True, True, False, False, False), -+ # +netplan -ifupdown -nm -scfg -sys selects netplan -+ ('netplan', True, False, False, False, False), -+ # Ubuntu with Network-Manager installed -+ # +netplan -ifupdown +nm -scfg -sys selects netplan -+ ('netplan', True, False, True, False, False), -+ # Centos/OpenSuse with Network-Manager installed selects sysconfig -+ # -netplan -ifupdown +nm -scfg +sys selects netplan -+ ('sysconfig', False, False, True, False, True), -+ ), -+ ) -+ @mock.patch("cloudinit.net.renderers.netplan.available") -+ @mock.patch("cloudinit.net.renderers.sysconfig.available") -+ @mock.patch("cloudinit.net.renderers.sysconfig.available_sysconfig") -+ @mock.patch("cloudinit.net.renderers.sysconfig.available_nm") -+ @mock.patch("cloudinit.net.renderers.eni.available") -+ def test_valid_renderer_from_defaults_depending_on_availability( -+ self, m_eni_avail, m_nm_avail, m_scfg_avail, m_sys_avail, -+ m_netplan_avail, renderer_selected, netplan, eni, nm, scfg, sys -+ ): -+ """Assert proper renderer per DEFAULT_PRIORITY given availability.""" -+ m_eni_avail.return_value = eni # ifupdown pkg presence -+ m_nm_avail.return_value = nm # network-manager presence -+ m_scfg_avail.return_value = scfg # sysconfig presence -+ m_sys_avail.return_value = sys # sysconfig/ifup/down presence -+ m_netplan_avail.return_value = netplan # netplan presence -+ if isinstance(renderer_selected, str): -+ (renderer_name, _rnd_class) = renderers.select( -+ priority=renderers.DEFAULT_PRIORITY -+ ) -+ assert renderer_selected == renderer_name -+ else: -+ with pytest.raises(renderer_selected): -+ renderers.select(priority=renderers.DEFAULT_PRIORITY) -+ -+ - class TestNetRenderers(CiTestCase): - @mock.patch("cloudinit.net.renderers.sysconfig.available") - @mock.patch("cloudinit.net.renderers.eni.available") -@@ -4714,46 +4760,6 @@ class TestNetRenderers(CiTestCase): - self.assertRaises(net.RendererNotFoundError, renderers.select, - priority=['sysconfig', 'eni']) - -- @mock.patch("cloudinit.net.renderers.netplan.available") -- @mock.patch("cloudinit.net.renderers.sysconfig.available") -- @mock.patch("cloudinit.net.renderers.sysconfig.available_sysconfig") -- @mock.patch("cloudinit.net.renderers.sysconfig.available_nm") -- @mock.patch("cloudinit.net.renderers.eni.available") -- @mock.patch("cloudinit.net.renderers.sysconfig.util.get_linux_distro") -- def test_sysconfig_selected_on_sysconfig_enabled_distros(self, m_distro, -- m_eni, m_sys_nm, -- m_sys_scfg, -- m_sys_avail, -- m_netplan): -- """sysconfig only selected on specific distros (rhel/sles).""" -- -- # Ubuntu with Network-Manager installed -- m_eni.return_value = False # no ifupdown (ifquery) -- m_sys_scfg.return_value = False # no sysconfig/ifup/ifdown -- m_sys_nm.return_value = True # network-manager is installed -- m_netplan.return_value = True # netplan is installed -- m_sys_avail.return_value = False # no sysconfig on Ubuntu -- m_distro.return_value = ('ubuntu', None, None) -- self.assertEqual('netplan', renderers.select(priority=None)[0]) -- -- # Centos with Network-Manager installed -- m_eni.return_value = False # no ifupdown (ifquery) -- m_sys_scfg.return_value = False # no sysconfig/ifup/ifdown -- m_sys_nm.return_value = True # network-manager is installed -- m_netplan.return_value = False # netplan is not installed -- m_sys_avail.return_value = True # sysconfig is available on centos -- m_distro.return_value = ('centos', None, None) -- self.assertEqual('sysconfig', renderers.select(priority=None)[0]) -- -- # OpenSuse with Network-Manager installed -- m_eni.return_value = False # no ifupdown (ifquery) -- m_sys_scfg.return_value = False # no sysconfig/ifup/ifdown -- m_sys_nm.return_value = True # network-manager is installed -- m_netplan.return_value = False # netplan is not installed -- m_sys_avail.return_value = True # sysconfig is available on opensuse -- m_distro.return_value = ('opensuse', None, None) -- self.assertEqual('sysconfig', renderers.select(priority=None)[0]) -- - @mock.patch("cloudinit.net.sysconfig.available_sysconfig") - @mock.patch("cloudinit.util.get_linux_distro") - def test_sysconfig_available_uses_variant_mapping(self, m_distro, m_avail): ---- /dev/null -+++ b/tests/unittests/test_render_cloudcfg.py -@@ -0,0 +1,57 @@ -+"""Tests for tools/render-cloudcfg""" -+ -+import os -+import sys -+ -+import pytest -+ -+from cloudinit import util -+ -+# TODO(Look to align with tools.render-cloudcfg or cloudinit.distos.OSFAMILIES) -+DISTRO_VARIANTS = ["amazon", "arch", "centos", "debian", "fedora", "freebsd", -+ "netbsd", "openbsd", "rhel", "suse", "ubuntu", "unknown"] -+ -+ -+class TestRenderCloudCfg: -+ -+ cmd = [sys.executable, os.path.realpath('tools/render-cloudcfg')] -+ tmpl_path = os.path.realpath('config/cloud.cfg.tmpl') -+ -+ @pytest.mark.parametrize('variant', (DISTRO_VARIANTS)) -+ def test_variant_sets_distro_in_cloud_cfg(self, variant, tmpdir): -+ outfile = tmpdir.join('outcfg').strpath -+ util.subp( -+ self.cmd + ['--variant', variant, self.tmpl_path, outfile]) -+ with open(outfile) as stream: -+ system_cfg = util.load_yaml(stream.read()) -+ if variant == 'unknown': -+ variant = 'ubuntu' # Unknown is defaulted to ubuntu -+ assert system_cfg['system_info']['distro'] == variant -+ -+ @pytest.mark.parametrize('variant', (DISTRO_VARIANTS)) -+ def test_variant_sets_default_user_in_cloud_cfg(self, variant, tmpdir): -+ outfile = tmpdir.join('outcfg').strpath -+ util.subp( -+ self.cmd + ['--variant', variant, self.tmpl_path, outfile]) -+ with open(outfile) as stream: -+ system_cfg = util.load_yaml(stream.read()) -+ -+ default_user_exceptions = { -+ 'amazon': 'ec2-user', 'debian': 'ubuntu', 'unknown': 'ubuntu'} -+ default_user = system_cfg['system_info']['default_user']['name'] -+ assert default_user == default_user_exceptions.get(variant, variant) -+ -+ @pytest.mark.parametrize('variant,renderers', ( -+ ('freebsd', ['freebsd']), ('netbsd', ['netbsd']), -+ ('openbsd', ['openbsd']), ('ubuntu', ['netplan', 'eni', 'sysconfig'])) -+ ) -+ def test_variant_sets_network_renderer_priority_in_cloud_cfg( -+ self, variant, renderers, tmpdir -+ ): -+ outfile = tmpdir.join('outcfg').strpath -+ util.subp( -+ self.cmd + ['--variant', variant, self.tmpl_path, outfile]) -+ with open(outfile) as stream: -+ system_cfg = util.load_yaml(stream.read()) -+ -+ assert renderers == system_cfg['system_info']['network']['renderers'] diff --git a/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as b/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as deleted file mode 100644 index 47bf46ab97b..00000000000 --- a/debian/patches/cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as +++ /dev/null @@ -1,706 +0,0 @@ -From 6600c642af3817fe5e0170cb7b4eeac4be3c60eb Mon Sep 17 00:00:00 2001 -From: Chad Smith -Date: Wed, 18 Mar 2020 13:33:37 -0600 -Subject: [PATCH] ec2: render network on all NICs and add secondary IPs as - static (#114) - -Add support for rendering secondary static IPv4/IPv6 addresses on -any NIC attached to the machine. In order to see secondary IP -addresses in Ec2 IMDS network config, cloud-init now reads metadata -version 2018-09-24. Metadata services which do not support the Ec2 -API version will not get secondary IP addresses configured. - -In order to discover secondary IP address config, cloud-init now -relies on metadata API Parse local-ipv4s, ipv6s, -subnet-ipv4-cidr-block and subnet-ipv6-cidr-block metadata keys to -determine additional IPs and appropriate subnet prefix to set for a -nic. - -Also add the datasource config option apply_full_imds_netork_config -which defaults to true to allow cloud-init to automatically configure -secondary IP addresses. Setting this option to false will tell -cloud-init to avoid setting up secondary IP addresses. - -Also in this branch: - - Shift Ec2 datasource to emit network config v2 instead of v1. - -LP: #1866930 ---- - cloudinit/sources/DataSourceEc2.py | 116 +++++-- - doc/rtd/topics/datasources/ec2.rst | 19 ++ - tests/unittests/test_datasource/test_ec2.py | 329 ++++++++++++++++---- - 3 files changed, 379 insertions(+), 85 deletions(-) - ---- a/cloudinit/sources/DataSourceEc2.py -+++ b/cloudinit/sources/DataSourceEc2.py -@@ -62,7 +62,7 @@ class DataSourceEc2(sources.DataSource): - - # Priority ordered list of additional metadata versions which will be tried - # for extended metadata content. IPv6 support comes in 2016-09-02 -- extended_metadata_versions = ['2016-09-02'] -+ extended_metadata_versions = ['2018-09-24', '2016-09-02'] - - # Setup read_url parameters per get_url_params. - url_max_wait = 120 -@@ -405,13 +405,16 @@ class DataSourceEc2(sources.DataSource): - logfunc=LOG.debug, msg='Re-crawl of metadata service', - func=self.get_data) - -- # Limit network configuration to only the primary/fallback nic - iface = self.fallback_interface -- macs_to_nics = {net.get_interface_mac(iface): iface} - net_md = self.metadata.get('network') - if isinstance(net_md, dict): -+ # SRU_BLOCKER: xenial, bionic and eoan should default -+ # apply_full_imds_network_config to False to retain original -+ # behavior on those releases. - result = convert_ec2_metadata_network_config( -- net_md, macs_to_nics=macs_to_nics, fallback_nic=iface) -+ net_md, fallback_nic=iface, -+ full_network_config=util.get_cfg_option_bool( -+ self.ds_cfg, 'apply_full_imds_network_config', True)) - - # RELEASE_BLOCKER: xenial should drop the below if statement, - # because the issue being addressed doesn't exist pre-netplan. -@@ -719,9 +722,10 @@ def _collect_platform_data(): - return data - - --def convert_ec2_metadata_network_config(network_md, macs_to_nics=None, -- fallback_nic=None): -- """Convert ec2 metadata to network config version 1 data dict. -+def convert_ec2_metadata_network_config( -+ network_md, macs_to_nics=None, fallback_nic=None, -+ full_network_config=True): -+ """Convert ec2 metadata to network config version 2 data dict. - - @param: network_md: 'network' portion of EC2 metadata. - generally formed as {"interfaces": {"macs": {}} where -@@ -731,28 +735,104 @@ def convert_ec2_metadata_network_config( - not provided, get_interfaces_by_mac is called to get it from the OS. - @param: fallback_nic: Optionally provide the primary nic interface name. - This nic will be guaranteed to minimally have a dhcp4 configuration. -+ @param: full_network_config: Boolean set True to configure all networking -+ presented by IMDS. This includes rendering secondary IPv4 and IPv6 -+ addresses on all NICs and rendering network config on secondary NICs. -+ If False, only the primary nic will be configured and only with dhcp -+ (IPv4/IPv6). - -- @return A dict of network config version 1 based on the metadata and macs. -+ @return A dict of network config version 2 based on the metadata and macs. - """ -- netcfg = {'version': 1, 'config': []} -+ netcfg = {'version': 2, 'ethernets': {}} - if not macs_to_nics: - macs_to_nics = net.get_interfaces_by_mac() - macs_metadata = network_md['interfaces']['macs'] -- for mac, nic_name in macs_to_nics.items(): -+ -+ if not full_network_config: -+ for mac, nic_name in macs_to_nics.items(): -+ if nic_name == fallback_nic: -+ break -+ dev_config = {'dhcp4': True, -+ 'dhcp6': False, -+ 'match': {'macaddress': mac.lower()}, -+ 'set-name': nic_name} -+ nic_metadata = macs_metadata.get(mac) -+ if nic_metadata.get('ipv6s'): # Any IPv6 addresses configured -+ dev_config['dhcp6'] = True -+ netcfg['ethernets'][nic_name] = dev_config -+ return netcfg -+ # Apply network config for all nics and any secondary IPv4/v6 addresses -+ nic_idx = 1 -+ for mac, nic_name in sorted(macs_to_nics.items()): - nic_metadata = macs_metadata.get(mac) - if not nic_metadata: - continue # Not a physical nic represented in metadata -- nic_cfg = {'type': 'physical', 'name': nic_name, 'subnets': []} -- nic_cfg['mac_address'] = mac -- if (nic_name == fallback_nic or nic_metadata.get('public-ipv4s') or -- nic_metadata.get('local-ipv4s')): -- nic_cfg['subnets'].append({'type': 'dhcp4'}) -- if nic_metadata.get('ipv6s'): -- nic_cfg['subnets'].append({'type': 'dhcp6'}) -- netcfg['config'].append(nic_cfg) -+ dhcp_override = {'route-metric': nic_idx * 100} -+ nic_idx += 1 -+ dev_config = {'dhcp4': True, 'dhcp4-overrides': dhcp_override, -+ 'dhcp6': False, -+ 'match': {'macaddress': mac.lower()}, -+ 'set-name': nic_name} -+ if nic_metadata.get('ipv6s'): # Any IPv6 addresses configured -+ dev_config['dhcp6'] = True -+ dev_config['dhcp6-overrides'] = dhcp_override -+ dev_config['addresses'] = get_secondary_addresses(nic_metadata, mac) -+ if not dev_config['addresses']: -+ dev_config.pop('addresses') # Since we found none configured -+ netcfg['ethernets'][nic_name] = dev_config -+ # Remove route-metric dhcp overrides if only one nic configured -+ if len(netcfg['ethernets']) == 1: -+ for nic_name in netcfg['ethernets'].keys(): -+ netcfg['ethernets'][nic_name].pop('dhcp4-overrides') -+ netcfg['ethernets'][nic_name].pop('dhcp6-overrides', None) - return netcfg - - -+def get_secondary_addresses(nic_metadata, mac): -+ """Parse interface-specific nic metadata and return any secondary IPs -+ -+ :return: List of secondary IPv4 or IPv6 addresses to configure on the -+ interface -+ """ -+ ipv4s = nic_metadata.get('local-ipv4s') -+ ipv6s = nic_metadata.get('ipv6s') -+ addresses = [] -+ # In version < 2018-09-24 local_ipv4s or ipv6s is a str with one IP -+ if bool(isinstance(ipv4s, list) and len(ipv4s) > 1): -+ addresses.extend( -+ _get_secondary_addresses( -+ nic_metadata, 'subnet-ipv4-cidr-block', mac, ipv4s, '24')) -+ if bool(isinstance(ipv6s, list) and len(ipv6s) > 1): -+ addresses.extend( -+ _get_secondary_addresses( -+ nic_metadata, 'subnet-ipv6-cidr-block', mac, ipv6s, '128')) -+ return sorted(addresses) -+ -+ -+def _get_secondary_addresses(nic_metadata, cidr_key, mac, ips, default_prefix): -+ """Return list of IP addresses as CIDRs for secondary IPs -+ -+ The CIDR prefix will be default_prefix if cidr_key is absent or not -+ parseable in nic_metadata. -+ """ -+ addresses = [] -+ cidr = nic_metadata.get(cidr_key) -+ prefix = default_prefix -+ if not cidr or len(cidr.split('/')) != 2: -+ ip_type = 'ipv4' if 'ipv4' in cidr_key else 'ipv6' -+ LOG.warning( -+ 'Could not parse %s %s for mac %s. %s network' -+ ' config prefix defaults to /%s', -+ cidr_key, cidr, mac, ip_type, prefix) -+ else: -+ prefix = cidr.split('/')[1] -+ # We know we have > 1 ips for in metadata for this IP type -+ for ip in ips[1:]: -+ addresses.append( -+ '{ip}/{prefix}'.format(ip=ip, prefix=prefix)) -+ return addresses -+ -+ - # Used to match classes to dependencies - datasources = [ - (DataSourceEc2Local, (sources.DEP_FILESYSTEM,)), # Run at init-local ---- a/doc/rtd/topics/datasources/ec2.rst -+++ b/doc/rtd/topics/datasources/ec2.rst -@@ -42,6 +42,7 @@ Note that there are multiple versions of - by default uses **2009-04-04** but newer versions can be supported with - relative ease (newer versions have more data exposed, while maintaining - backward compatibility with the previous versions). -+Version **2016-09-02** is required for secondary IP address support. - - To see which versions are supported from your cloud provider use the following - URL: -@@ -80,6 +81,15 @@ The settings that may be configured are: - * **timeout**: the timeout value provided to urlopen for each individual http - request. This is used both when selecting a metadata_url and when crawling - the metadata service. (default: 50) -+ * **apply_full_imds_network_config**: Boolean (default: True) to allow -+ cloud-init to configure any secondary NICs and secondary IPs described by -+ the metadata service. All network interfaces are configured with DHCP (v4) -+ to obtain an primary IPv4 address and route. Interfaces which have a -+ non-empty 'ipv6s' list will also enable DHCPv6 to obtain a primary IPv6 -+ address and route. The DHCP response (v4 and v6) return an IP that matches -+ the first element of local-ipv4s and ipv6s lists respectively. All -+ additional values (secondary addresses) in the static ip lists will be -+ added to interface. - - An example configuration with the default values is provided below: - -@@ -90,6 +100,7 @@ An example configuration with the defaul - metadata_urls: ["http://169.254.169.254:80", "http://instance-data:8773"] - max_wait: 120 - timeout: 50 -+ apply_full_imds_network_config: true - - Notes - ----- -@@ -102,4 +113,12 @@ Notes - The check for the instance type is performed by is_classic_instance() - method. - -+ * For EC2 instances with multiple network interfaces (NICs) attached, dhcp4 -+ will be enabled to obtain the primary private IPv4 address of those NICs. -+ Wherever dhcp4 or dhcp6 is enabled for a NIC, a dhcp route-metric will be -+ added with the value of `` * 100`` to ensure dhcp -+ routes on the primary NIC are preferred to any secondary NICs. -+ For example: the primary NIC will have a DHCP route-metric of 100, -+ the next NIC will be 200. -+ - .. vi: textwidth=78 ---- a/tests/unittests/test_datasource/test_ec2.py -+++ b/tests/unittests/test_datasource/test_ec2.py -@@ -113,6 +113,122 @@ DEFAULT_METADATA = { - "services": {"domain": "amazonaws.com", "partition": "aws"}, - } - -+# collected from api version 2018-09-24/ with -+# python3 -c 'import json -+# from cloudinit.ec2_utils import get_instance_metadata as gm -+# print(json.dumps(gm("2018-09-24"), indent=1, sort_keys=True))' -+ -+NIC1_MD_IPV4_IPV6_MULTI_IP = { -+ "device-number": "0", -+ "interface-id": "eni-0d6335689899ce9cc", -+ "ipv4-associations": { -+ "18.218.219.181": "172.31.44.13" -+ }, -+ "ipv6s": [ -+ "2600:1f16:292:100:c187:593c:4349:136", -+ "2600:1f16:292:100:f153:12a3:c37c:11f9", -+ "2600:1f16:292:100:f152:2222:3333:4444" -+ ], -+ "local-hostname": ("ip-172-31-44-13.us-east-2." -+ "compute.internal"), -+ "local-ipv4s": [ -+ "172.31.44.13", -+ "172.31.45.70" -+ ], -+ "mac": "0a:07:84:3d:6e:38", -+ "owner-id": "329910648901", -+ "public-hostname": ("ec2-18-218-219-181.us-east-2." -+ "compute.amazonaws.com"), -+ "public-ipv4s": "18.218.219.181", -+ "security-group-ids": "sg-0c387755222ba8d2e", -+ "security-groups": "launch-wizard-4", -+ "subnet-id": "subnet-9d7ba0d1", -+ "subnet-ipv4-cidr-block": "172.31.32.0/20", -+ "subnet_ipv6_cidr_blocks": "2600:1f16:292:100::/64", -+ "vpc-id": "vpc-a07f62c8", -+ "vpc-ipv4-cidr-block": "172.31.0.0/16", -+ "vpc-ipv4-cidr-blocks": "172.31.0.0/16", -+ "vpc_ipv6_cidr_blocks": "2600:1f16:292:100::/56" -+} -+ -+NIC2_MD = { -+ "device_number": "1", -+ "interface_id": "eni-043cdce36ded5e79f", -+ "local_hostname": "ip-172-31-47-221.us-east-2.compute.internal", -+ "local_ipv4s": "172.31.47.221", -+ "mac": "0a:75:69:92:e2:16", -+ "owner_id": "329910648901", -+ "security_group_ids": "sg-0d68fef37d8cc9b77", -+ "security_groups": "launch-wizard-17", -+ "subnet_id": "subnet-9d7ba0d1", -+ "subnet_ipv4_cidr_block": "172.31.32.0/20", -+ "vpc_id": "vpc-a07f62c8", -+ "vpc_ipv4_cidr_block": "172.31.0.0/16", -+ "vpc_ipv4_cidr_blocks": "172.31.0.0/16" -+} -+ -+SECONDARY_IP_METADATA_2018_09_24 = { -+ "ami-id": "ami-0986c2ac728528ac2", -+ "ami-launch-index": "0", -+ "ami-manifest-path": "(unknown)", -+ "block-device-mapping": { -+ "ami": "/dev/sda1", -+ "root": "/dev/sda1" -+ }, -+ "events": { -+ "maintenance": { -+ "history": "[]", -+ "scheduled": "[]" -+ } -+ }, -+ "hostname": "ip-172-31-44-13.us-east-2.compute.internal", -+ "identity-credentials": { -+ "ec2": { -+ "info": { -+ "AccountId": "329910648901", -+ "Code": "Success", -+ "LastUpdated": "2019-07-06T14:22:56Z" -+ } -+ } -+ }, -+ "instance-action": "none", -+ "instance-id": "i-069e01e8cc43732f8", -+ "instance-type": "t2.micro", -+ "local-hostname": "ip-172-31-44-13.us-east-2.compute.internal", -+ "local-ipv4": "172.31.44.13", -+ "mac": "0a:07:84:3d:6e:38", -+ "metrics": { -+ "vhostmd": "" -+ }, -+ "network": { -+ "interfaces": { -+ "macs": { -+ "0a:07:84:3d:6e:38": NIC1_MD_IPV4_IPV6_MULTI_IP, -+ } -+ } -+ }, -+ "placement": { -+ "availability-zone": "us-east-2c" -+ }, -+ "profile": "default-hvm", -+ "public-hostname": ( -+ "ec2-18-218-219-181.us-east-2.compute.amazonaws.com"), -+ "public-ipv4": "18.218.219.181", -+ "public-keys": { -+ "yourkeyname,e": [ -+ "ssh-rsa AAAAW...DZ yourkeyname" -+ ] -+ }, -+ "reservation-id": "r-09b4917135cdd33be", -+ "security-groups": "launch-wizard-4", -+ "services": { -+ "domain": "amazonaws.com", -+ "partition": "aws" -+ } -+} -+ -+M_PATH_NET = 'cloudinit.sources.DataSourceEc2.net.' -+ - - def _register_ssh_keys(rfunc, base_url, keys_data): - """handle ssh key inconsistencies. -@@ -267,30 +383,23 @@ class TestEc2(test_helpers.HttprettyTest - register_mock_metaserver(instance_id_url, None) - return ds - -- def test_network_config_property_returns_version_1_network_data(self): -- """network_config property returns network version 1 for metadata. -- -- Only one device is configured even when multiple exist in metadata. -- """ -+ def test_network_config_property_returns_version_2_network_data(self): -+ """network_config property returns network version 2 for metadata""" - ds = self._setup_ds( - platform_data=self.valid_platform_data, - sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, - md={'md': DEFAULT_METADATA}) -- find_fallback_path = ( -- 'cloudinit.sources.DataSourceEc2.net.find_fallback_nic') -+ find_fallback_path = M_PATH_NET + 'find_fallback_nic' - with mock.patch(find_fallback_path) as m_find_fallback: - m_find_fallback.return_value = 'eth9' - ds.get_data() - - mac1 = '06:17:04:d7:26:09' # Defined in DEFAULT_METADATA -- expected = {'version': 1, 'config': [ -- {'mac_address': '06:17:04:d7:26:09', 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}], -- 'type': 'physical'}]} -- patch_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') -- get_interface_mac_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': '06:17:04:d7:26:09'}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': True}}} -+ patch_path = M_PATH_NET + 'get_interfaces_by_mac' -+ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' - with mock.patch(patch_path) as m_get_interfaces_by_mac: - with mock.patch(find_fallback_path) as m_find_fallback: - with mock.patch(get_interface_mac_path) as m_get_mac: -@@ -299,30 +408,59 @@ class TestEc2(test_helpers.HttprettyTest - m_get_mac.return_value = mac1 - self.assertEqual(expected, ds.network_config) - -- def test_network_config_property_set_dhcp4_on_private_ipv4(self): -- """network_config property configures dhcp4 on private ipv4 nics. -+ def test_network_config_property_set_dhcp4(self): -+ """network_config property configures dhcp4 on nics with local-ipv4s. - -- Only one device is configured even when multiple exist in metadata. -+ Only one device is configured based on get_interfaces_by_mac even when -+ multiple MACs exist in metadata. - """ - ds = self._setup_ds( - platform_data=self.valid_platform_data, - sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, - md={'md': DEFAULT_METADATA}) -- find_fallback_path = ( -- 'cloudinit.sources.DataSourceEc2.net.find_fallback_nic') -+ find_fallback_path = M_PATH_NET + 'find_fallback_nic' - with mock.patch(find_fallback_path) as m_find_fallback: - m_find_fallback.return_value = 'eth9' - ds.get_data() - - mac1 = '06:17:04:d7:26:0A' # IPv4 only in DEFAULT_METADATA -- expected = {'version': 1, 'config': [ -- {'mac_address': '06:17:04:d7:26:0A', 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}], -- 'type': 'physical'}]} -- patch_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') -- get_interface_mac_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': mac1.lower()}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': False}}} -+ patch_path = M_PATH_NET + 'get_interfaces_by_mac' -+ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' -+ with mock.patch(patch_path) as m_get_interfaces_by_mac: -+ with mock.patch(find_fallback_path) as m_find_fallback: -+ with mock.patch(get_interface_mac_path) as m_get_mac: -+ m_get_interfaces_by_mac.return_value = {mac1: 'eth9'} -+ m_find_fallback.return_value = 'eth9' -+ m_get_mac.return_value = mac1 -+ self.assertEqual(expected, ds.network_config) -+ -+ def test_network_config_property_secondary_private_ips(self): -+ """network_config property configures any secondary ipv4 addresses. -+ -+ Only one device is configured based on get_interfaces_by_mac even when -+ multiple MACs exist in metadata. -+ """ -+ ds = self._setup_ds( -+ platform_data=self.valid_platform_data, -+ sys_cfg={'datasource': {'Ec2': {'strict_id': True}}}, -+ md={'md': SECONDARY_IP_METADATA_2018_09_24}) -+ find_fallback_path = M_PATH_NET + 'find_fallback_nic' -+ with mock.patch(find_fallback_path) as m_find_fallback: -+ m_find_fallback.return_value = 'eth9' -+ ds.get_data() -+ -+ mac1 = '0a:07:84:3d:6e:38' # 1 secondary IPv4 and 2 secondary IPv6 -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': mac1}, 'set-name': 'eth9', -+ 'addresses': ['172.31.45.70/20', -+ '2600:1f16:292:100:f152:2222:3333:4444/128', -+ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], -+ 'dhcp4': True, 'dhcp6': True}}} -+ patch_path = M_PATH_NET + 'get_interfaces_by_mac' -+ get_interface_mac_path = M_PATH_NET + 'get_interface_mac' - with mock.patch(patch_path) as m_get_interfaces_by_mac: - with mock.patch(find_fallback_path) as m_find_fallback: - with mock.patch(get_interface_mac_path) as m_get_mac: -@@ -358,21 +496,18 @@ class TestEc2(test_helpers.HttprettyTest - register_mock_metaserver( - 'http://169.254.169.254/2009-04-04/meta-data/', DEFAULT_METADATA) - mac1 = '06:17:04:d7:26:09' # Defined in DEFAULT_METADATA -- get_interface_mac_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interface_mac') -+ get_interface_mac_path = M_PATH_NET + 'get_interfaces_by_mac' - ds.fallback_nic = 'eth9' -- with mock.patch(get_interface_mac_path) as m_get_interface_mac: -- m_get_interface_mac.return_value = mac1 -+ with mock.patch(get_interface_mac_path) as m_get_interfaces_by_mac: -+ m_get_interfaces_by_mac.return_value = {mac1: 'eth9'} - nc = ds.network_config # Will re-crawl network metadata - self.assertIsNotNone(nc) - self.assertIn( - 'Refreshing stale metadata from prior to upgrade', - self.logs.getvalue()) -- expected = {'version': 1, 'config': [ -- {'mac_address': '06:17:04:d7:26:09', -- 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}], -- 'type': 'physical'}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': True}}} - self.assertEqual(expected, ds.network_config) - - def test_ec2_get_instance_id_refreshes_identity_on_upgrade(self): -@@ -491,7 +626,7 @@ class TestEc2(test_helpers.HttprettyTest - logs_with_redacted = [log for log in all_logs if REDACT_TOK in log] - logs_with_token = [log for log in all_logs if 'API-TOKEN' in log] - self.assertEqual(1, len(logs_with_redacted_ttl)) -- self.assertEqual(79, len(logs_with_redacted)) -+ self.assertEqual(81, len(logs_with_redacted)) - self.assertEqual(0, len(logs_with_token)) - - @mock.patch('cloudinit.net.dhcp.maybe_perform_dhcp_discovery') -@@ -612,6 +747,44 @@ class TestEc2(test_helpers.HttprettyTest - self.assertIn('Crawl of metadata service took', self.logs.getvalue()) - - -+class TestGetSecondaryAddresses(test_helpers.CiTestCase): -+ -+ mac = '06:17:04:d7:26:ff' -+ with_logs = True -+ -+ def test_md_with_no_secondary_addresses(self): -+ """Empty list is returned when nic metadata contains no secondary ip""" -+ self.assertEqual([], ec2.get_secondary_addresses(NIC2_MD, self.mac)) -+ -+ def test_md_with_secondary_v4_and_v6_addresses(self): -+ """All secondary addresses are returned from nic metadata""" -+ self.assertEqual( -+ ['172.31.45.70/20', '2600:1f16:292:100:f152:2222:3333:4444/128', -+ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], -+ ec2.get_secondary_addresses(NIC1_MD_IPV4_IPV6_MULTI_IP, self.mac)) -+ -+ def test_invalid_ipv4_ipv6_cidr_metadata_logged_with_defaults(self): -+ """Any invalid subnet-ipv(4|6)-cidr-block values use defaults""" -+ invalid_cidr_md = copy.deepcopy(NIC1_MD_IPV4_IPV6_MULTI_IP) -+ invalid_cidr_md['subnet-ipv4-cidr-block'] = "something-unexpected" -+ invalid_cidr_md['subnet-ipv6-cidr-block'] = "not/sure/what/this/is" -+ self.assertEqual( -+ ['172.31.45.70/24', '2600:1f16:292:100:f152:2222:3333:4444/128', -+ '2600:1f16:292:100:f153:12a3:c37c:11f9/128'], -+ ec2.get_secondary_addresses(invalid_cidr_md, self.mac)) -+ expected_logs = [ -+ "WARNING: Could not parse subnet-ipv4-cidr-block" -+ " something-unexpected for mac 06:17:04:d7:26:ff." -+ " ipv4 network config prefix defaults to /24", -+ "WARNING: Could not parse subnet-ipv6-cidr-block" -+ " not/sure/what/this/is for mac 06:17:04:d7:26:ff." -+ " ipv6 network config prefix defaults to /128" -+ ] -+ logs = self.logs.getvalue() -+ for log in expected_logs: -+ self.assertIn(log, logs) -+ -+ - class TestConvertEc2MetadataNetworkConfig(test_helpers.CiTestCase): - - def setUp(self): -@@ -619,16 +792,16 @@ class TestConvertEc2MetadataNetworkConfi - self.mac1 = '06:17:04:d7:26:09' - self.network_metadata = { - 'interfaces': {'macs': { -- self.mac1: {'public-ipv4s': '172.31.2.16'}}}} -+ self.mac1: {'mac': self.mac1, 'public-ipv4s': '172.31.2.16'}}}} - - def test_convert_ec2_metadata_network_config_skips_absent_macs(self): - """Any mac absent from metadata is skipped by network config.""" - macs_to_nics = {self.mac1: 'eth9', 'DE:AD:BE:EF:FF:FF': 'vitualnic2'} - - # DE:AD:BE:EF:FF:FF represented by OS but not in metadata -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': False}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( -@@ -642,15 +815,15 @@ class TestConvertEc2MetadataNetworkConfi - network_metadata_ipv6['interfaces']['macs'][self.mac1]) - nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' - nic1_metadata.pop('public-ipv4s') -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', 'subnets': [{'type': 'dhcp6'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': True}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( - network_metadata_ipv6, macs_to_nics)) - -- def test_convert_ec2_metadata_network_config_handles_local_dhcp4(self): -+ def test_convert_ec2_metadata_network_config_local_only_dhcp4(self): - """Config dhcp4 when there are no public addresses in public-ipv4s.""" - macs_to_nics = {self.mac1: 'eth9'} - network_metadata_ipv6 = copy.deepcopy(self.network_metadata) -@@ -658,9 +831,9 @@ class TestConvertEc2MetadataNetworkConfi - network_metadata_ipv6['interfaces']['macs'][self.mac1]) - nic1_metadata['local-ipv4s'] = '172.3.3.15' - nic1_metadata.pop('public-ipv4s') -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': False}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( -@@ -675,16 +848,16 @@ class TestConvertEc2MetadataNetworkConfi - nic1_metadata['public-ipv4s'] = '' - - # When no ipv4 or ipv6 content but fallback_nic set, set dhcp4 config. -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', 'subnets': [{'type': 'dhcp4'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': False}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( - network_metadata_ipv6, macs_to_nics, fallback_nic='eth9')) - - def test_convert_ec2_metadata_network_config_handles_local_v4_and_v6(self): -- """When dhcp6 is public and dhcp4 is set to local enable both.""" -+ """When ipv6s and local-ipv4s are non-empty, enable dhcp6 and dhcp4.""" - macs_to_nics = {self.mac1: 'eth9'} - network_metadata_both = copy.deepcopy(self.network_metadata) - nic1_metadata = ( -@@ -692,10 +865,35 @@ class TestConvertEc2MetadataNetworkConfi - nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' - nic1_metadata.pop('public-ipv4s') - nic1_metadata['local-ipv4s'] = '10.0.0.42' # Local ipv4 only on vpc -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': True}}} -+ self.assertEqual( -+ expected, -+ ec2.convert_ec2_metadata_network_config( -+ network_metadata_both, macs_to_nics)) -+ -+ def test_convert_ec2_metadata_network_config_handles_multiple_nics(self): -+ """DHCP route-metric increases on secondary NICs for IPv4 and IPv6.""" -+ mac2 = '06:17:04:d7:26:0a' -+ macs_to_nics = {self.mac1: 'eth9', mac2: 'eth10'} -+ network_metadata_both = copy.deepcopy(self.network_metadata) -+ # Add 2nd nic info -+ network_metadata_both['interfaces']['macs'][mac2] = NIC2_MD -+ nic1_metadata = ( -+ network_metadata_both['interfaces']['macs'][self.mac1]) -+ nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' -+ nic1_metadata.pop('public-ipv4s') # No public-ipv4 IPs in cfg -+ nic1_metadata['local-ipv4s'] = '10.0.0.42' # Local ipv4 only on vpc -+ expected = {'version': 2, 'ethernets': { -+ 'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp4-overrides': {'route-metric': 100}, -+ 'dhcp6': True, 'dhcp6-overrides': {'route-metric': 100}}, -+ 'eth10': { -+ 'match': {'macaddress': mac2}, 'set-name': 'eth10', -+ 'dhcp4': True, 'dhcp4-overrides': {'route-metric': 200}, -+ 'dhcp6': False}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( -@@ -708,10 +906,9 @@ class TestConvertEc2MetadataNetworkConfi - nic1_metadata = ( - network_metadata_both['interfaces']['macs'][self.mac1]) - nic1_metadata['ipv6s'] = '2620:0:1009:fd00:e442:c88d:c04d:dc85/64' -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}, {'type': 'dhcp6'}]}]} -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, 'set-name': 'eth9', -+ 'dhcp4': True, 'dhcp6': True}}} - self.assertEqual( - expected, - ec2.convert_ec2_metadata_network_config( -@@ -719,12 +916,10 @@ class TestConvertEc2MetadataNetworkConfi - - def test_convert_ec2_metadata_gets_macs_from_get_interfaces_by_mac(self): - """Convert Ec2 Metadata calls get_interfaces_by_mac by default.""" -- expected = {'version': 1, 'config': [ -- {'mac_address': self.mac1, 'type': 'physical', -- 'name': 'eth9', -- 'subnets': [{'type': 'dhcp4'}]}]} -- patch_path = ( -- 'cloudinit.sources.DataSourceEc2.net.get_interfaces_by_mac') -+ expected = {'version': 2, 'ethernets': {'eth9': { -+ 'match': {'macaddress': self.mac1}, -+ 'set-name': 'eth9', 'dhcp4': True, 'dhcp6': False}}} -+ patch_path = M_PATH_NET + 'get_interfaces_by_mac' - with mock.patch(patch_path) as m_get_interfaces_by_mac: - m_get_interfaces_by_mac.return_value = {self.mac1: 'eth9'} - self.assertEqual( diff --git a/debian/patches/cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 b/debian/patches/cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 deleted file mode 100644 index defefecb6db..00000000000 --- a/debian/patches/cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 +++ /dev/null @@ -1,269 +0,0 @@ -From 986f37b017134ced5d9dd38b420350916297002b Mon Sep 17 00:00:00 2001 -From: Daniel Watkins -Date: Tue, 10 Mar 2020 13:26:05 -0400 -Subject: [PATCH] cloudinit: move to pytest for running tests (#211) - -As the nose docs[0] themselves note, it has been in maintenance mode for the past several years. pytest is an actively developed, featureful and popular alternative that the nose docs themselves recommend. See [1] for more details about the thinking here. - -(This PR also removes stale tox definitions, instead of modifying them.) - -[0] https://nose.readthedocs.io/en/latest/ -[1] https://lists.launchpad.net/cloud-init/msg00245.html ---- - .travis.yml | 6 ++-- - Makefile | 6 ++-- - packages/pkg-deps.json | 3 ++ - test-requirements.txt | 7 ++-- - tools/run-container | 12 +++---- - tools/tox-venv | 2 +- - tox.ini | 73 +++++++++++++++++------------------------- - 7 files changed, 46 insertions(+), 63 deletions(-) - ---- a/.travis.yml -+++ b/.travis.yml -@@ -16,13 +16,13 @@ matrix: - - python: 3.6 - env: - TOXENV=py3 -- NOSE_VERBOSE=2 # List all tests run by nose -+ PYTEST_ADDOPTS=-v # List all tests run by pytest - - install: - - git fetch --unshallow - - sudo apt-get build-dep -y cloud-init - - sudo apt-get install -y --install-recommends sbuild ubuntu-dev-tools fakeroot tox - # These are build deps but not pulled in by the build-dep call above -- - sudo apt-get install -y --install-recommends dh-systemd python3-coverage python3-contextlib2 -+ - sudo apt-get install -y --install-recommends dh-systemd python3-coverage python3-contextlib2 python3-pytest python3-pytest-cov - - pip install . - - pip install tox - # bionic has lxd from deb installed, remove it first to ensure -@@ -46,7 +46,7 @@ matrix: - - python: 3.5 - env: - TOXENV=xenial -- NOSE_VERBOSE=2 # List all tests run by nose -+ PYTEST_ADDOPTS=-v # List all tests run by pytest - # Travis doesn't support Python 3.4 on bionic, so use xenial - dist: xenial - - python: 3.6 ---- a/Makefile -+++ b/Makefile -@@ -2,8 +2,6 @@ CWD=$(shell pwd) - PYVER ?= $(shell for p in python3 python2; do \ - out=$$(command -v $$p 2>&1) && echo $$p && exit; done; exit 1) - --noseopts ?= -v -- - YAML_FILES=$(shell find cloudinit tests tools -name "*.yaml" -type f ) - YAML_FILES+=$(shell find doc/examples -name "cloud-config*.txt" -type f ) - -@@ -48,10 +46,10 @@ pyflakes3: - @$(CWD)/tools/run-pyflakes3 - - unittest: clean_pyc -- nosetests $(noseopts) tests/unittests cloudinit -+ python -m pytest -v tests/unittests cloudinit - - unittest3: clean_pyc -- nosetests3 $(noseopts) tests/unittests cloudinit -+ python3 -m pytest -v tests/unittests cloudinit - - ci-deps-ubuntu: - @$(PYVER) $(CWD)/tools/read-dependencies --distro ubuntu --test-distro ---- a/packages/pkg-deps.json -+++ b/packages/pkg-deps.json -@@ -45,6 +45,9 @@ - "pyserial" : { - "2" : "pyserial" - }, -+ "pytest": { -+ "3": "python36-pytest" -+ }, - "requests" : { - "3" : "python36-requests" - }, ---- a/test-requirements.txt -+++ b/test-requirements.txt -@@ -1,11 +1,8 @@ - # Needed generally in tests - httpretty>=0.7.1 --nose -+pytest - unittest2 --coverage -- --# Only needed if you want to know the test times --# nose-timer -+pytest-cov - - # Only really needed on older versions of python - contextlib2 ---- a/tools/run-container -+++ b/tools/run-container -@@ -287,8 +287,8 @@ prep() { - install_packages "$@" - } - --nose() { -- python3 -m nose "$@" -+pytest() { -+ python3 -m pytest "$@" - } - - is_done_cloudinit() { -@@ -478,10 +478,10 @@ main() { - - if [ -n "$unittest" ]; then - debug 1 "running unit tests." -- run_self_inside_as_cd "$name" "$user" "$cdir" nose \ -+ run_self_inside_as_cd "$name" "$user" "$cdir" pytest \ - tests/unittests cloudinit/ || { -- errorrc "nosetests failed."; -- errors[${#errors[@]}]="nosetests" -+ errorrc "pytest failed."; -+ errors[${#errors[@]}]="pytest" - } - fi - -@@ -557,7 +557,7 @@ main() { - } - - case "${1:-}" in -- prep|os_info|wait_inside|nose) _n=$1; shift; "$_n" "$@";; -+ prep|os_info|wait_inside|pytest) _n=$1; shift; "$_n" "$@";; - *) main "$@";; - esac - ---- a/tools/tox-venv -+++ b/tools/tox-venv -@@ -116,7 +116,7 @@ Usage: ${0##*/} [--no-create] tox-enviro - be read from tox.ini. This allows you to do: - tox-venv py27 - tests/some/sub/dir - and have the 'command' read correctly and have that execute: -- python -m nose tests/some/sub/dir -+ python -m pytest tests/some/sub/dir - EOF - - if [ -f "$tox_ini" ]; then ---- a/tox.ini -+++ b/tox.ini -@@ -1,13 +1,13 @@ - [tox] --envlist = py3, xenial, pycodestyle, pyflakes, pylint -+envlist = py3, xenial-dev, pycodestyle, pyflakes, pylint - recreate = True - - [testenv] --commands = python -m nose {posargs:tests/unittests cloudinit} -+commands = {envpython} -m pytest {posargs:tests/unittests cloudinit} - setenv = - LC_ALL = en_US.utf-8 - passenv= -- NOSE_VERBOSE -+ PYTEST_ADDOPTS - - [testenv:pycodestyle] - basepython = python3 -@@ -32,23 +32,16 @@ commands = {envpython} -m pylint {posarg - [testenv:py3] - basepython = python3 - deps = -- nose-timer - -r{toxinidir}/test-requirements.txt --commands = {envpython} -m nose --with-timer --timer-top-n 10 \ -- {posargs:--with-coverage --cover-erase --cover-branches \ -- --cover-inclusive --cover-package=cloudinit \ -+commands = {envpython} -m pytest \ -+ --durations 10 \ -+ {posargs:--cov=cloudinit --cov-branch \ - tests/unittests cloudinit} - - [testenv:py27] - basepython = python2.7 - deps = -r{toxinidir}/test-requirements.txt - --[testenv:py26] --deps = -r{toxinidir}/test-requirements.txt --commands = nosetests {posargs:tests/unittests cloudinit} --setenv = -- LC_ALL = C -- - [flake8] - #H102 Apache 2.0 license header not found - ignore=H404,H405,H105,H301,H104,H403,H101,H102,H106,H304 -@@ -62,11 +55,15 @@ commands = - {envpython} -m sphinx {posargs:doc/rtd doc/rtd_html} - doc8 doc/rtd - --[testenv:xenial] --commands = -- python ./tools/pipremove jsonschema -- python -m nose {posargs:tests/unittests cloudinit} --basepython = python3 -+[xenial-shared-deps] -+# The version of pytest in xenial doesn't work with Python 3.8, so we define -+# two xenial environments: [testenv:xenial] runs the tests with exactly the -+# version of pytest present in xenial, and is used in CI. [testenv:xenial-dev] -+# runs the tests with the lowest version of pytest that works with Python 3.8, -+# 3.0.7, but keeps the other dependencies at xenial's level. -+# -+# (This section is not a testenv, it is used to maintain a single definition of -+# the dependencies shared between the two xenial testenvs.) - deps = - # requirements - jinja2==2.8 -@@ -83,38 +80,26 @@ deps = - # test-requirements - httpretty==0.9.6 - mock==1.3.0 -- nose==1.3.7 - unittest2==1.1.0 - contextlib2==0.5.1 - --[testenv:centos6] --basepython = python2.6 --commands = nosetests {posargs:tests/unittests cloudinit} --deps = -- # requirements -- argparse==1.2.1 -- jinja2==2.2.1 -- pyyaml==3.10 -- oauthlib==0.6.0 -- configobj==4.6.0 -- requests==2.6.0 -- jsonpatch==1.2 -- six==1.9.0 -- -r{toxinidir}/test-requirements.txt -- --[testenv:opensusel150] --basepython = python2.7 --commands = nosetests {posargs:tests/unittests cloudinit} -+[testenv:xenial] -+commands = -+ python ./tools/pipremove jsonschema -+ python -m pytest {posargs:tests/unittests cloudinit} -+basepython = python3 - deps = -- # requirements -- jinja2==2.10 -- PyYAML==3.12 -- oauthlib==2.0.6 -- configobj==5.0.6 -- requests==2.18.4 -- jsonpatch==1.16 -- six==1.11.0 -- -r{toxinidir}/test-requirements.txt -+ # Refer to the comment in [xenial-shared-deps] for details -+ {[xenial-shared-deps]deps} -+ pytest==2.8.7 -+ -+[testenv:xenial-dev] -+commands = {[testenv:xenial]commands} -+basepython = {[testenv:xenial]basepython} -+deps = -+ # Refer to the comment in [xenial-shared-deps] for details -+ {[xenial-shared-deps]deps} -+ pytest==3.0.7 - - [testenv:tip-pycodestyle] - commands = {envpython} -m pycodestyle {posargs:cloudinit/ tests/ tools/} diff --git a/debian/patches/cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 b/debian/patches/cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 deleted file mode 100644 index 3e045729b5d..00000000000 --- a/debian/patches/cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 +++ /dev/null @@ -1,64 +0,0 @@ -From 9d7b35ce23aaf8741dd49b16e359c96591be3c76 Mon Sep 17 00:00:00 2001 -From: Daniel Watkins -Date: Wed, 15 Apr 2020 16:53:08 -0400 -Subject: [PATCH] cc_mounts: fix incorrect format specifiers (#316) - -LP: #1872836 ---- - cloudinit/config/cc_mounts.py | 8 ++++---- - cloudinit/config/tests/test_mounts.py | 22 ++++++++++++++++++++++ - 2 files changed, 26 insertions(+), 4 deletions(-) - create mode 100644 cloudinit/config/tests/test_mounts.py - ---- a/cloudinit/config/cc_mounts.py -+++ b/cloudinit/config/cc_mounts.py -@@ -223,20 +223,20 @@ def suggested_swapsize(memsize=None, max - return size - - --def create_swapfile(fname, size): -+def create_swapfile(fname: str, size: str) -> None: - """Size is in MiB.""" - -- errmsg = "Failed to create swapfile '%s' of size %dMB via %s: %s" -+ errmsg = "Failed to create swapfile '%s' of size %sMB via %s: %s" - - def create_swap(fname, size, method): - LOG.debug("Creating swapfile in '%s' on fstype '%s' using '%s'", - fname, fstype, method) - - if method == "fallocate": -- cmd = ['fallocate', '-l', '%dM' % size, fname] -+ cmd = ['fallocate', '-l', '%sM' % size, fname] - elif method == "dd": - cmd = ['dd', 'if=/dev/zero', 'of=%s' % fname, 'bs=1M', -- 'count=%d' % size] -+ 'count=%s' % size] - - try: - util.subp(cmd, capture=True) ---- /dev/null -+++ b/cloudinit/config/tests/test_mounts.py -@@ -0,0 +1,22 @@ -+# This file is part of cloud-init. See LICENSE file for license information. -+from unittest import mock -+ -+from cloudinit.config.cc_mounts import create_swapfile -+ -+ -+M_PATH = 'cloudinit.config.cc_mounts.' -+ -+ -+class TestCreateSwapfile: -+ -+ @mock.patch(M_PATH + 'util.subp') -+ def test_happy_path(self, m_subp, tmpdir): -+ swap_file = tmpdir.join("swap-file") -+ fname = str(swap_file) -+ -+ # Some of the calls to util.subp should create the swap file; this -+ # roughly approximates that -+ m_subp.side_effect = lambda *args, **kwargs: swap_file.write('') -+ -+ create_swapfile(fname, '') -+ assert mock.call(['mkswap', fname]) in m_subp.call_args_list diff --git a/debian/patches/cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with b/debian/patches/cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with deleted file mode 100644 index d0e2a33ef52..00000000000 --- a/debian/patches/cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with +++ /dev/null @@ -1,281 +0,0 @@ -From c478d0bff412c67280dfe8f08568de733f9425a1 Mon Sep 17 00:00:00 2001 -From: Daniel Watkins -Date: Tue, 31 Mar 2020 13:52:21 -0400 -Subject: [PATCH] distros: replace invalid characters in mirror URLs with - hyphens (#291) - -This modifies _get_package_mirror_info to convert the hostnames of generated mirror URLs to their IDNA form, and then iterate through them replacing any invalid characters (i.e. anything other than letters, digits or a hyphen) with a hyphen. - -This commit introduces the following changes in behaviour: - -* generated mirror URLs with Unicode characters in their hostnames will have their hostnames converted to their all-ASCII IDNA form -* generated mirror URLs with invalid-for-hostname characters in their hostname will have those characters converted to hyphens -* generated mirror URLs which cannot be parsed by `urllib.parse.urlsplit` will not be considered for use - * other configured patterns will still be considered - * if all configured patterns fail to produce a URL that parses then the fallback mirror URL will be used - -LP: #1868232 ---- - cloudinit/distros/__init__.py | 109 ++++++++++++++++++++++++++- - cloudinit/distros/tests/test_init.py | 84 ++++++++++++++++----- - 2 files changed, 174 insertions(+), 19 deletions(-) - ---- a/cloudinit/distros/__init__.py -+++ b/cloudinit/distros/__init__.py -@@ -13,6 +13,8 @@ import abc - import os - import re - import stat -+import string -+import urllib.parse - from io import StringIO - - from cloudinit import importer -@@ -50,6 +52,9 @@ _EC2_AZ_RE = re.compile('^[a-z][a-z]-(?: - # Default NTP Client Configurations - PREFERRED_NTP_CLIENTS = ['chrony', 'systemd-timesyncd', 'ntp', 'ntpdate'] - -+# Letters/Digits/Hyphen characters, for use in domain name validation -+LDH_ASCII_CHARS = string.ascii_letters + string.digits + "-" -+ - - class Distro(metaclass=abc.ABCMeta): - -@@ -720,6 +725,102 @@ class Distro(metaclass=abc.ABCMeta): - LOG.info("Added user '%s' to group '%s'", member, name) - - -+def _apply_hostname_transformations_to_url(url: str, transformations: list): -+ """ -+ Apply transformations to a URL's hostname, return transformed URL. -+ -+ This is a separate function because unwrapping and rewrapping only the -+ hostname portion of a URL is complex. -+ -+ :param url: -+ The URL to operate on. -+ :param transformations: -+ A list of ``(str) -> Optional[str]`` functions, which will be applied -+ in order to the hostname portion of the URL. If any function -+ (regardless of ordering) returns None, ``url`` will be returned without -+ any modification. -+ -+ :return: -+ A string whose value is ``url`` with the hostname ``transformations`` -+ applied, or ``None`` if ``url`` is unparseable. -+ """ -+ try: -+ parts = urllib.parse.urlsplit(url) -+ except ValueError: -+ # If we can't even parse the URL, we shouldn't use it for anything -+ return None -+ new_hostname = parts.hostname -+ -+ for transformation in transformations: -+ new_hostname = transformation(new_hostname) -+ if new_hostname is None: -+ # If a transformation returns None, that indicates we should abort -+ # processing and return `url` unmodified -+ return url -+ -+ new_netloc = new_hostname -+ if parts.port is not None: -+ new_netloc = "{}:{}".format(new_netloc, parts.port) -+ return urllib.parse.urlunsplit(parts._replace(netloc=new_netloc)) -+ -+ -+def _sanitize_mirror_url(url: str): -+ """ -+ Given a mirror URL, replace or remove any invalid URI characters. -+ -+ This performs the following actions on the URL's hostname: -+ * Checks if it is an IP address, returning the URL immediately if it is -+ * Converts it to its IDN form (see below for details) -+ * Replaces any non-Letters/Digits/Hyphen (LDH) characters in it with -+ hyphens -+ * TODO: Remove any leading/trailing hyphens from each domain name label -+ -+ Before we replace any invalid domain name characters, we first need to -+ ensure that any valid non-ASCII characters in the hostname will not be -+ replaced, by ensuring the hostname is in its Internationalized domain name -+ (IDN) representation (see RFC 5890). This conversion has to be applied to -+ the whole hostname (rather than just the substitution variables), because -+ the Punycode algorithm used by IDNA transcodes each part of the hostname as -+ a whole string (rather than encoding individual characters). It cannot be -+ applied to the whole URL, because (a) the Punycode algorithm expects to -+ operate on domain names so doesn't output a valid URL, and (b) non-ASCII -+ characters in non-hostname parts of the URL aren't encoded via Punycode. -+ -+ To put this in RFC 5890's terminology: before we remove or replace any -+ characters from our domain name (which we do to ensure that each label is a -+ valid LDH Label), we first ensure each label is in its A-label form. -+ -+ (Note that Python's builtin idna encoding is actually IDNA2003, not -+ IDNA2008. This changes the specifics of how some characters are encoded to -+ ASCII, but doesn't affect the logic here.) -+ -+ :param url: -+ The URL to operate on. -+ -+ :return: -+ A sanitized version of the URL, which will have been IDNA encoded if -+ necessary, or ``None`` if the generated string is not a parseable URL. -+ """ -+ # Acceptable characters are LDH characters, plus "." to separate each label -+ acceptable_chars = LDH_ASCII_CHARS + "." -+ transformations = [ -+ # This is an IP address, not a hostname, so no need to apply the -+ # transformations -+ lambda hostname: None if net.is_ip_address(hostname) else hostname, -+ -+ # Encode with IDNA to get the correct characters (as `bytes`), then -+ # decode with ASCII so we return a `str` -+ lambda hostname: hostname.encode('idna').decode('ascii'), -+ -+ # Replace any unacceptable characters with "-" -+ lambda hostname: ''.join( -+ c if c in acceptable_chars else "-" for c in hostname -+ ), -+ ] -+ -+ return _apply_hostname_transformations_to_url(url, transformations) -+ -+ - def _get_package_mirror_info(mirror_info, data_source=None, - mirror_filter=util.search_for_mirror): - # given a arch specific 'mirror_info' entry (from package_mirrors) -@@ -748,9 +849,13 @@ def _get_package_mirror_info(mirror_info - mirrors = [] - for tmpl in searchlist: - try: -- mirrors.append(tmpl % subst) -+ mirror = tmpl % subst - except KeyError: -- pass -+ continue -+ -+ mirror = _sanitize_mirror_url(mirror) -+ if mirror is not None: -+ mirrors.append(mirror) - - found = mirror_filter(mirrors) - if found: ---- a/cloudinit/distros/tests/test_init.py -+++ b/cloudinit/distros/tests/test_init.py -@@ -9,7 +9,18 @@ from unittest import mock - - import pytest - --from cloudinit.distros import _get_package_mirror_info -+from cloudinit.distros import _get_package_mirror_info, LDH_ASCII_CHARS -+ -+ -+# Define a set of characters we would expect to be replaced -+INVALID_URL_CHARS = [ -+ chr(x) for x in range(127) if chr(x) not in LDH_ASCII_CHARS -+] -+for separator in [":", ".", "/", "#", "?", "@", "[", "]"]: -+ # Remove from the set characters that either separate hostname parts (":", -+ # "."), terminate hostnames ("/", "#", "?", "@"), or cause Python to be -+ # unable to parse URLs ("[", "]"). -+ INVALID_URL_CHARS.remove(separator) - - - class TestGetPackageMirrorInfo: -@@ -25,14 +36,16 @@ class TestGetPackageMirrorInfo: - # Empty info gives empty return - ({}, {}), - # failsafe values used if present -- ({'failsafe': {'primary': 'value', 'security': 'other'}}, -- {'primary': 'value', 'security': 'other'}), -+ ({'failsafe': {'primary': 'http://value', 'security': 'http://other'}}, -+ {'primary': 'http://value', 'security': 'http://other'}), - # search values used if present -- ({'search': {'primary': ['value'], 'security': ['other']}}, -- {'primary': ['value'], 'security': ['other']}), -+ ({'search': {'primary': ['http://value'], -+ 'security': ['http://other']}}, -+ {'primary': ['http://value'], 'security': ['http://other']}), - # failsafe values used if search value not present -- ({'search': {'primary': ['value']}, 'failsafe': {'security': 'other'}}, -- {'primary': ['value'], 'security': 'other'}) -+ ({'search': {'primary': ['http://value']}, -+ 'failsafe': {'security': 'http://other'}}, -+ {'primary': ['http://value'], 'security': 'http://other'}) - ]) - def test_get_package_mirror_info_failsafe(self, mirror_info, expected): - """ -@@ -48,26 +61,63 @@ class TestGetPackageMirrorInfo: - def test_failsafe_used_if_all_search_results_filtered_out(self): - """Test the failsafe option used if all search options eliminated.""" - mirror_info = { -- 'search': {'primary': ['value']}, 'failsafe': {'primary': 'other'} -+ 'search': {'primary': ['http://value']}, -+ 'failsafe': {'primary': 'http://other'} - } -- assert {'primary': 'other'} == _get_package_mirror_info( -+ assert {'primary': 'http://other'} == _get_package_mirror_info( - mirror_info, mirror_filter=lambda x: False) - - @pytest.mark.parametrize('availability_zone,region,patterns,expected', ( - # Test ec2_region alone -- ('fk-fake-1f', None, ['EC2-%(ec2_region)s'], ['EC2-fk-fake-1']), -+ ('fk-fake-1f', None, ['http://EC2-%(ec2_region)s/ubuntu'], -+ ['http://ec2-fk-fake-1/ubuntu']), - # Test availability_zone alone -- ('fk-fake-1f', None, ['AZ-%(availability_zone)s'], ['AZ-fk-fake-1f']), -+ ('fk-fake-1f', None, ['http://AZ-%(availability_zone)s/ubuntu'], -+ ['http://az-fk-fake-1f/ubuntu']), - # Test region alone -- (None, 'fk-fake-1', ['RG-%(region)s'], ['RG-fk-fake-1']), -+ (None, 'fk-fake-1', ['http://RG-%(region)s/ubuntu'], -+ ['http://rg-fk-fake-1/ubuntu']), - # Test that ec2_region is not available for non-matching AZs - ('fake-fake-1f', None, -- ['EC2-%(ec2_region)s', 'AZ-%(availability_zone)s'], -- ['AZ-fake-fake-1f']), -+ ['http://EC2-%(ec2_region)s/ubuntu', -+ 'http://AZ-%(availability_zone)s/ubuntu'], -+ ['http://az-fake-fake-1f/ubuntu']), - # Test that template order maintained -- (None, 'fake-region', ['RG-%(region)s-2', 'RG-%(region)s-1'], -- ['RG-fake-region-2', 'RG-fake-region-1']), -- )) -+ (None, 'fake-region', -+ ['http://RG-%(region)s-2/ubuntu', 'http://RG-%(region)s-1/ubuntu'], -+ ['http://rg-fake-region-2/ubuntu', 'http://rg-fake-region-1/ubuntu']), -+ # Test that non-ASCII hostnames are IDNA encoded; -+ # "IDNA-ТεЅТ̣".encode('idna') == b"xn--idna--4kd53hh6aba3q" -+ (None, 'ТεЅТ̣', ['http://www.IDNA-%(region)s.com/ubuntu'], -+ ['http://www.xn--idna--4kd53hh6aba3q.com/ubuntu']), -+ # Test that non-ASCII hostnames with a port are IDNA encoded; -+ # "IDNA-ТεЅТ̣".encode('idna') == b"xn--idna--4kd53hh6aba3q" -+ (None, 'ТεЅТ̣', ['http://www.IDNA-%(region)s.com:8080/ubuntu'], -+ ['http://www.xn--idna--4kd53hh6aba3q.com:8080/ubuntu']), -+ # Test that non-ASCII non-hostname parts of URLs are unchanged -+ (None, 'ТεЅТ̣', ['http://www.example.com/%(region)s/ubuntu'], -+ ['http://www.example.com/ТεЅТ̣/ubuntu']), -+ # Test that IPv4 addresses are unchanged -+ (None, 'fk-fake-1', ['http://192.168.1.1:8080/%(region)s/ubuntu'], -+ ['http://192.168.1.1:8080/fk-fake-1/ubuntu']), -+ # Test that IPv6 addresses are unchanged -+ (None, 'fk-fake-1', -+ ['http://[2001:67c:1360:8001::23]/%(region)s/ubuntu'], -+ ['http://[2001:67c:1360:8001::23]/fk-fake-1/ubuntu']), -+ # Test that unparseable URLs are filtered out of the mirror list -+ (None, 'inv[lid', -+ ['http://%(region)s.in.hostname/should/be/filtered', -+ 'http://but.not.in.the.path/%(region)s'], -+ ['http://but.not.in.the.path/inv[lid']), -+ ) + ( -+ # Dynamically generate a test case for each non-LDH -+ # (Letters/Digits/Hyphen) ASCII character, testing that it is -+ # substituted with a hyphen -+ tuple( -+ (None, 'fk{0}fake{0}1'.format(invalid_char), -+ ['http://%(region)s/ubuntu'], ['http://fk-fake-1/ubuntu']) -+ for invalid_char in INVALID_URL_CHARS)) -+ ) - def test_substitution(self, availability_zone, region, patterns, expected): - """Test substitution works as expected.""" - m_data_source = mock.Mock( diff --git a/debian/patches/cpick-c5e949c0-distros-tests-test_init-add-tests-for b/debian/patches/cpick-c5e949c0-distros-tests-test_init-add-tests-for deleted file mode 100644 index 866c8bd58ad..00000000000 --- a/debian/patches/cpick-c5e949c0-distros-tests-test_init-add-tests-for +++ /dev/null @@ -1,99 +0,0 @@ -From c5e949c02a1d5226ae9b1cb39846db19d223c6c2 Mon Sep 17 00:00:00 2001 -From: Daniel Watkins -Date: Wed, 25 Mar 2020 09:44:16 -0400 -Subject: [PATCH] distros/tests/test_init: add tests for - _get_package_mirror_info (#272) - ---- - cloudinit/distros/tests/__init__.py | 0 - cloudinit/distros/tests/test_init.py | 83 ++++++++++++++++++++++++++++ - 2 files changed, 83 insertions(+) - create mode 100644 cloudinit/distros/tests/__init__.py - create mode 100644 cloudinit/distros/tests/test_init.py - ---- /dev/null -+++ b/cloudinit/distros/tests/test_init.py -@@ -0,0 +1,83 @@ -+# Copyright (C) 2020 Canonical Ltd. -+# -+# Author: Daniel Watkins -+# -+# This file is part of cloud-init. See LICENSE file for license information. -+"""Tests for cloudinit/distros/__init__.py""" -+ -+from unittest import mock -+ -+import pytest -+ -+from cloudinit.distros import _get_package_mirror_info -+ -+ -+class TestGetPackageMirrorInfo: -+ """ -+ Tests for cloudinit.distros._get_package_mirror_info. -+ -+ These supplement the tests in tests/unittests/test_distros/test_generic.py -+ which are more focused on testing a single production-like configuration. -+ These tests are more focused on specific aspects of the unit under test. -+ """ -+ -+ @pytest.mark.parametrize('mirror_info,expected', [ -+ # Empty info gives empty return -+ ({}, {}), -+ # failsafe values used if present -+ ({'failsafe': {'primary': 'value', 'security': 'other'}}, -+ {'primary': 'value', 'security': 'other'}), -+ # search values used if present -+ ({'search': {'primary': ['value'], 'security': ['other']}}, -+ {'primary': ['value'], 'security': ['other']}), -+ # failsafe values used if search value not present -+ ({'search': {'primary': ['value']}, 'failsafe': {'security': 'other'}}, -+ {'primary': ['value'], 'security': 'other'}) -+ ]) -+ def test_get_package_mirror_info_failsafe(self, mirror_info, expected): -+ """ -+ Test the interaction between search and failsafe inputs -+ -+ (This doesn't test the case where the mirror_filter removes all search -+ options; test_failsafe_used_if_all_search_results_filtered_out covers -+ that.) -+ """ -+ assert expected == _get_package_mirror_info(mirror_info, -+ mirror_filter=lambda x: x) -+ -+ def test_failsafe_used_if_all_search_results_filtered_out(self): -+ """Test the failsafe option used if all search options eliminated.""" -+ mirror_info = { -+ 'search': {'primary': ['value']}, 'failsafe': {'primary': 'other'} -+ } -+ assert {'primary': 'other'} == _get_package_mirror_info( -+ mirror_info, mirror_filter=lambda x: False) -+ -+ @pytest.mark.parametrize('availability_zone,region,patterns,expected', ( -+ # Test ec2_region alone -+ ('fk-fake-1f', None, ['EC2-%(ec2_region)s'], ['EC2-fk-fake-1']), -+ # Test availability_zone alone -+ ('fk-fake-1f', None, ['AZ-%(availability_zone)s'], ['AZ-fk-fake-1f']), -+ # Test region alone -+ (None, 'fk-fake-1', ['RG-%(region)s'], ['RG-fk-fake-1']), -+ # Test that ec2_region is not available for non-matching AZs -+ ('fake-fake-1f', None, -+ ['EC2-%(ec2_region)s', 'AZ-%(availability_zone)s'], -+ ['AZ-fake-fake-1f']), -+ # Test that template order maintained -+ (None, 'fake-region', ['RG-%(region)s-2', 'RG-%(region)s-1'], -+ ['RG-fake-region-2', 'RG-fake-region-1']), -+ )) -+ def test_substitution(self, availability_zone, region, patterns, expected): -+ """Test substitution works as expected.""" -+ m_data_source = mock.Mock( -+ availability_zone=availability_zone, region=region -+ ) -+ mirror_info = {'search': {'primary': patterns}} -+ -+ ret = _get_package_mirror_info( -+ mirror_info, -+ data_source=m_data_source, -+ mirror_filter=lambda x: x -+ ) -+ assert {'primary': expected} == ret diff --git a/debian/patches/fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch b/debian/patches/fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch deleted file mode 100644 index 1d6ff6d2b89..00000000000 --- a/debian/patches/fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch +++ /dev/null @@ -1,40 +0,0 @@ -Description: Drop netbsd and openbsd from cherry pick tests - Support for netbsd and openbsd is on in upstream until new-upstream-snapshot. -Author: Chad Smith -Origin: backport -Forwarded: not-needed -Last-Update: 2020-04-03 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ -Index: cloud-init/tests/unittests/test_render_cloudcfg.py -=================================================================== ---- cloud-init.orig/tests/unittests/test_render_cloudcfg.py -+++ cloud-init/tests/unittests/test_render_cloudcfg.py -@@ -9,7 +9,7 @@ from cloudinit import util - - # TODO(Look to align with tools.render-cloudcfg or cloudinit.distos.OSFAMILIES) - DISTRO_VARIANTS = ["amazon", "arch", "centos", "debian", "fedora", "freebsd", -- "netbsd", "openbsd", "rhel", "suse", "ubuntu", "unknown"] -+ "rhel", "suse", "ubuntu", "unknown"] - - - class TestRenderCloudCfg: -@@ -40,18 +40,3 @@ class TestRenderCloudCfg: - 'amazon': 'ec2-user', 'debian': 'ubuntu', 'unknown': 'ubuntu'} - default_user = system_cfg['system_info']['default_user']['name'] - assert default_user == default_user_exceptions.get(variant, variant) -- -- @pytest.mark.parametrize('variant,renderers', ( -- ('freebsd', ['freebsd']), ('netbsd', ['netbsd']), -- ('openbsd', ['openbsd']), ('ubuntu', ['netplan', 'eni', 'sysconfig'])) -- ) -- def test_variant_sets_network_renderer_priority_in_cloud_cfg( -- self, variant, renderers, tmpdir -- ): -- outfile = tmpdir.join('outcfg').strpath -- util.subp( -- self.cmd + ['--variant', variant, self.tmpl_path, outfile]) -- with open(outfile) as stream: -- system_cfg = util.load_yaml(stream.read()) -- -- assert renderers == system_cfg['system_info']['network']['renderers'] diff --git a/debian/patches/series b/debian/patches/series deleted file mode 100644 index 61704533d92..00000000000 --- a/debian/patches/series +++ /dev/null @@ -1,13 +0,0 @@ -cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as -cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 -cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if -cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 -cpick-c5e949c0-distros-tests-test_init-add-tests-for -cpick-2566fdbe-net-introduce-is_ip_address-function-288 -cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address -cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with -cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL -cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 -fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch -cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 -cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths From b6f54aaac112654ba326a0a0863260b9d7ba0be5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 11 May 2020 20:17:05 -0600 Subject: [PATCH 0437/1174] update changelog. --- debian/changelog | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5523dfa21e9..d072d3f3ea9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,22 @@ +cloud-init (20.1-10-g71af48df-0ubuntu6) UNRELEASED; urgency=medium + + * drop the following cherry-picks now included: + + cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as + + cpick-986f37b0-cloudinit-move-to-pytest-for-running-tests-211 + + cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni-even-if + + cpick-04771d75-cc_disk_setup-fix-RuntimeError-270 + + cpick-c5e949c0-distros-tests-test_init-add-tests-for + + cpick-2566fdbe-net-introduce-is_ip_address-function-288 + + cpick-4f825b3e-cloudinit-refactor-util.is_ipv4-to-net.is_ipv4_address + + cpick-c478d0bf-distros-replace-invalid-characters-in-mirror-URLs-with + + cpick-1bbc4908-distros-drop-leading-trailing-hyphens-from-mirror-URL + + cpick-09fea85f-net-ignore-renderer-key-in-netplan-config-306 + + fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch + + cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 + + cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths + + -- Chad Smith Mon, 11 May 2020 20:17:05 -0600 + cloud-init (20.1-10-g71af48df-0ubuntu5) focal; urgency=medium * cherry-pick 0c5c7367: test_mounts: expand happy path test for both From 0a3b96ba0fc77428ef44dc76e7ead65afbce8494 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 11 May 2020 20:17:13 -0600 Subject: [PATCH 0438/1174] update changelog (New upstream snapshot 20.2-20-gd10ce3ec). --- debian/changelog | 124 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 121 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index d072d3f3ea9..f7f2e97051f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.1-10-g71af48df-0ubuntu6) UNRELEASED; urgency=medium +cloud-init (20.2-20-gd10ce3ec-0ubuntu1) UNRELEASED; urgency=medium * drop the following cherry-picks now included: + cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as @@ -14,8 +14,126 @@ cloud-init (20.1-10-g71af48df-0ubuntu6) UNRELEASED; urgency=medium + fix-cpick-4fb6fd8a-net-ubuntu-focal-prioritize-netplan-over-eni.patch + cpick-9d7b35ce-cc_mounts-fix-incorrect-format-specifiers-316 + cpick-0c5c7367-test_mounts-expand-happy-path-test-for-both-happy-paths - - -- Chad Smith Mon, 11 May 2020 20:17:05 -0600 + * New upstream snapshot. + - analyze/dump: refactor shared string into variable (#350) + - doc: update boot.rst with correct timing of runcmd (#351) + - HACKING.rst: change contact info to Rick Harding (#359) [lucasmoura] + - HACKING.rst: guide people to add themselves to the CLA file (#349) + - HACKING.rst: more unit testing documentation (#354) + - .travis.yml: don't run lintian during integration test package builds + (#352) + - Add test to ensure docs examples are valid cloud-init configs (#355) + [James Falcon] (LP: #1876414) + - make suse and sles support 127.0.1.1 (#336) [chengcheng-chcheng] + - Create tests to validate schema examples (#348) + [lucasmoura] (LP: #1876412) + - analyze/dump: add support for Amazon Linux 2 log lines (#346) + (LP: #1876323) + - bsd: upgrade support (#305) [Gonéri Le Bouder] + - Add lucasmoura as contributor (#345) [lucasmoura] + - Add "therealfalcon" as contributor (#344) [James Falcon] + - Adapt the package building scripts to use Python 3 (#231) + [Paride Legovini] + - DataSourceEc2: use metadata's NIC ordering to determine route-metrics + (#342) (LP: #1876312) + - .travis.yml: introduce caching (#329) + - cc_locale: introduce schema (#335) + - doc/rtd/conf.py: bump copyright year to 2020 (#341) + - yum_add_repo: Add Centos to the supported distro list (#340) + - Release 20.2 (#337) (LP: #1875951) + - doc/format: reference make-mime.py instead of an inline script (#334) + - Add docs about creating parent folders (#330) [Adrian Wilkins] + - DataSourceNoCloud/OVF: drop claim to support FTP (#333) (LP: #1875470) + - schema: ignore spurious pylint error (#332) + - schema: add json schema for write_files module (#152) + - BSD: find_devs_with_ refactoring (#298) [Gonéri Le Bouder] + - nocloud: drop work around for Linux 2.6 (#324) [Gonéri Le Bouder] + - cloudinit: drop dependencies on unittest2 and contextlib2 (#322) + - distros: handle a potential mirror filtering error case (#328) + - log: remove unnecessary import fallback logic (#327) + - .travis.yml: don't run integration test on ubuntu/* branches (#321) + - More unit test documentation (#314) + - conftest: introduce disable_subp_usage autouse fixture (#304) + - YAML align indent sizes for docs readability (#323) [Tak Nishigori] + - network_state: add missing space to log message (#325) + - tests: add missing mocks for get_interfaces_by_mac (#326) (LP: #1873910) + - test_mounts: expand happy path test for both happy paths (#319) + - cc_mounts: fix incorrect format specifiers (#316) (LP: #1872836) + - swap file "size" being used before checked if str (#315) [Eduardo Otubo] + - HACKING.rst: add pytest version gotchas section (#311) + - docs: Add steps to re-run cloud-id and cloud-init (#313) [Joshua Powers] + - readme: OpenBSD is now supported (#309) [Gonéri Le Bouder] + - net: ignore 'renderer' key in netplan config (#306) (LP: #1870421) + - Add support for NFS/EFS mounts (#300) [Andrew Beresford] (LP: #1870370) + - openbsd: set_passwd should not unlock user (#289) [Gonéri Le Bouder] + - tools/.github-cla-signers: add beezly as CLA signer (#301) + - util: remove unnecessary lru_cache import fallback (#299) + - HACKING.rst: reorganise/update CLA signature info (#297) + - distros: drop leading/trailing hyphens from mirror URL labels (#296) + - HACKING.rst: add note about variable annotations (#295) + - CiTestCase: stop using and remove sys_exit helper (#283) + - distros: replace invalid characters in mirror URLs with hyphens (#291) + (LP: #1868232) + - rbxcloud: gracefully handle arping errors (#262) [Adam Dobrawy] + - Fix cloud-init ignoring some misdeclared mimetypes in user-data. + [Kurt Garloff] + - net: ubuntu focal prioritize netplan over eni even if both present + (#267) (LP: #1867029) + - cloudinit: refactor util.is_ipv4 to net.is_ipv4_address (#292) + - net/cmdline: replace type comments with annotations (#294) + - HACKING.rst: add Type Annotations design section (#293) + - net: introduce is_ip_address function (#288) + - CiTestCase: remove now-unneeded parse_and_read helper method (#286) + - .travis.yml: allow 30 minutes of inactivity in cloud tests (#287) + - sources/tests/test_init: drop use of deprecated inspect.getargspec (#285) + - setup.py: drop NIH check_output implementation (#282) + - Identify SAP Converged Cloud as OpenStack [Silvio Knizek] + - add Openbsd support (#147) [Gonéri Le Bouder] + - HACKING.rst: add examples of the two test class types (#278) + - VMWware: support to update guest info gc status if enabled (#261) + [xiaofengw-vmware] + - Add lp-to-git mapping for kgarloff (#279) + - set_passwords: avoid chpasswd on BSD (#268) [Gonéri Le Bouder] + - HACKING.rst: add Unit Testing design section (#277) + - util: read_cc_from_cmdline handle urlencoded yaml content (#275) + - distros/tests/test_init: add tests for _get_package_mirror_info (#272) + - HACKING.rst: add links to new Code Review Process doc (#276) + - freebsd: ensure package update works (#273) [Gonéri Le Bouder] + - doc: introduce Code Review Process documentation (#160) + - tools: use python3 (#274) + - cc_disk_setup: fix RuntimeError (#270) (LP: #1868327) + - cc_apt_configure/util: combine search_for_mirror implementations (#271) + - bsd: boottime does not depend on the libc soname (#269) + [Gonéri Le Bouder] + - test_oracle,DataSourceOracle: sort imports (#266) + - DataSourceOracle: update .network_config docstring (#257) + - cloudinit/tests: remove unneeded with_logs configuration (#263) + - .travis.yml: drop stale comment (#255) + - .gitignore: add more common directories (#258) + - ec2: render network on all NICs and add secondary IPs as static (#114) + (LP: #1866930) + - ec2 json validation: fix the reference to the 'merged_cfg' key (#256) + [Paride Legovini] + - releases.yaml: quote the Ubuntu version numbers (#254) [Paride Legovini] + - cloudinit: remove six from packaging/tooling (#253) + - util/netbsd: drop six usage (#252) + - workflows: introduce stale pull request workflow (#125) + - cc_resolv_conf: introduce tests and stabilise output across Python + versions (#251) + - fix minor issue with resolv_conf template (#144) [andreaf74] + - doc: CloudInit also support NetBSD (#250) [Gonéri Le Bouder] + - Add Netbsd support (#62) [Gonéri Le Bouder] + - tox.ini: avoid substition syntax that causes a traceback on xenial (#245) + - Add pub_key_ed25519 to cc_phone_home (#237) [Daniel Hensby] + - Introduce and use of a list of GitHub usernames that have signed CLA + (#244) + - workflows/cla.yml: use correct username for CLA check (#243) + - tox.ini: use xenial version of jsonpatch in CI (#242) + - workflows: CLA validation altered to fail status on pull_request (#164) + - tox.ini: bump pyflakes version to 2.1.1 (#239) + - cloudinit: move to pytest for running tests (#211) + + -- Chad Smith Mon, 11 May 2020 20:17:06 -0600 cloud-init (20.1-10-g71af48df-0ubuntu5) focal; urgency=medium From 4ced4b6b7bbec0f623e90eba66d39b23f442eadf Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 11 May 2020 20:17:31 -0600 Subject: [PATCH 0439/1174] releasing cloud-init version 20.2-20-gd10ce3ec-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f7f2e97051f..8835e428311 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.2-20-gd10ce3ec-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.2-20-gd10ce3ec-0ubuntu1) groovy; urgency=medium * drop the following cherry-picks now included: + cpick-6600c642-ec2-render-network-on-all-NICs-and-add-secondary-IPs-as From 4e7557bdba386b86b3b088530d3442b152f21b3e Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 18 May 2020 16:24:25 -0600 Subject: [PATCH 0440/1174] update changelog (New upstream snapshot 20.2-30-g8bcf1c06). --- debian/changelog | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/debian/changelog b/debian/changelog index 8835e428311..2d1e435dc0e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,22 @@ +cloud-init (20.2-30-g8bcf1c06-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - cc_snap: apply validation to snap.commands properties (#364) + - make finding libc platform independent (#366) + [Mina Galić (deprecated: Igor Galić)] + - doc/rtd/topics/faq: Updates LXD docs links to current site (#368) [TomP] + - templater: drop Jinja Python 2 compatibility shim (#353) + - cloudinit: minor pylint fixes (#360) + - cloudinit: remove unneeded __future__ imports (#362) + - migrating momousta lp user to Moustafa-Moustafa GitHub user (#361) + [Moustafa Moustafa] + - cloud_tests: emit dots on Travis while fetching images (#347) + - Add schema to apt configure config (#357) [lucasmoura] (LP: #1858884) + - conftest: add docs and tests regarding CiTestCase's subp functionality + (#343) + + -- Chad Smith Mon, 18 May 2020 16:24:16 -0600 + cloud-init (20.2-20-gd10ce3ec-0ubuntu1) groovy; urgency=medium * drop the following cherry-picks now included: From 3bc646e23e5b8ba2c9f4773717070370451107af Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 21 May 2020 11:41:40 -0600 Subject: [PATCH 0441/1174] debian/changelog: drop py2-based pyflakes build dep --- debian/changelog | 2 ++ debian/control | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2d1e435dc0e..890100bb7cb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,7 @@ cloud-init (20.2-30-g8bcf1c06-0ubuntu1) UNRELEASED; urgency=medium + * d/control: drop pyflakes as Build-Depends + - upstream uses python3-pyflakes now * New upstream snapshot. - cc_snap: apply validation to snap.commands properties (#364) - make finding libc platform independent (#366) diff --git a/debian/control b/debian/control index 828558e897b..6e8c54cdc62 100644 --- a/debian/control +++ b/debian/control @@ -8,7 +8,6 @@ Build-Depends: debhelper (>= 9.20160709), iproute2, pep8, po-debconf, - pyflakes, python3, python3-configobj, python3-httpretty, @@ -19,7 +18,7 @@ Build-Depends: debhelper (>= 9.20160709), python3-nose, python3-oauthlib, python3-pep8, - python3-pyflakes | pyflakes (<< 1.1.0-2), + python3-pyflakes, python3-pytest, python3-requests, python3-serial, From f4e200b60cf3e19cd37589440e8a45900e4046e5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 21 May 2020 15:15:57 -0600 Subject: [PATCH 0442/1174] releasing cloud-init version 20.2-30-g8bcf1c06-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 890100bb7cb..cebc1802313 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.2-30-g8bcf1c06-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.2-30-g8bcf1c06-0ubuntu1) groovy; urgency=medium * d/control: drop pyflakes as Build-Depends - upstream uses python3-pyflakes now From 4c580048d1fa07994b5db0f06aabb48496d26f5a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 27 May 2020 14:36:55 -0600 Subject: [PATCH 0443/1174] update changelog (New upstream snapshot 20.2-38-g8377897b). --- debian/changelog | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/debian/changelog b/debian/changelog index cebc1802313..9d74ae45ec1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +cloud-init (20.2-38-g8377897b-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - enable Puppet, Chef mcollective in default config (#385) + [Mina Galić (deprecated: Igor Galić)] (LP: #1880279) + - HACKING.rst: introduce .net -> Networking refactor section (#384) + - Travis: do not install python3-contextlib2 (dropped dependency) (#388) + [Paride Legovini] + - HACKING: mention that .github-cla-signers is alpha-sorted (#380) + - Add bipinbachhao as contributor (#379) [Bipin Bachhao] + - cc_snap: validate that assertions property values are strings (#370) + - conftest: implement partial disable_subp_usage (#371) + - test_resolv_conf: refresh stale comment (#374) + + -- Chad Smith Wed, 27 May 2020 14:36:46 -0600 + cloud-init (20.2-30-g8bcf1c06-0ubuntu1) groovy; urgency=medium * d/control: drop pyflakes as Build-Depends From 51f502d9d26c2ad294d4967d972bd2378dc2c8f8 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 27 May 2020 14:36:59 -0600 Subject: [PATCH 0444/1174] releasing cloud-init version 20.2-38-g8377897b-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9d74ae45ec1..fed95952f84 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.2-38-g8377897b-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.2-38-g8377897b-0ubuntu1) groovy; urgency=medium * New upstream snapshot. - enable Puppet, Chef mcollective in default config (#385) From 8592170a13bd1c0f7fb8586904de95d6c52251a6 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 2 Jun 2020 09:51:57 -0600 Subject: [PATCH 0445/1174] update changelog (New upstream snapshot 20.2-45-g5f7825e2). --- debian/changelog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index fed95952f84..b91cf1be8cd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +cloud-init (20.2-45-g5f7825e2-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - test: fix all flake8 E241 (#403) [Joshua Powers] + - test: ignore flake8 E402 errors in main.py (#402) [Joshua Powers] + - cc_grub_dpkg: determine idevs in more robust manner with grub-probe + (#358) [Matthew Ruffell] (LP: #1877491) + - test: fix all flake8 E741 errors (#401) [Joshua Powers] + - tests: add groovy integration tests for ubuntu (#400) + - Enable chef_license support for chef infra client (#389) [Bipin Bachhao] + - testing: use flake8 again (#392) [Joshua Powers] + + -- Chad Smith Tue, 02 Jun 2020 09:51:50 -0600 + cloud-init (20.2-38-g8377897b-0ubuntu1) groovy; urgency=medium * New upstream snapshot. From 436f68fbf8cd590eb20ef2112da738de24512dc4 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 2 Jun 2020 09:52:01 -0600 Subject: [PATCH 0446/1174] releasing cloud-init version 20.2-45-g5f7825e2-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index b91cf1be8cd..9ad281bc322 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.2-45-g5f7825e2-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.2-45-g5f7825e2-0ubuntu1) groovy; urgency=medium * New upstream snapshot. - test: fix all flake8 E241 (#403) [Joshua Powers] From f779979af4f371a1c60635d8a13f039948b2d1d5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 2 Jun 2020 11:06:10 -0600 Subject: [PATCH 0447/1174] d/control: drop six, unittest2, nose, pep8 and pyflakes from build-deps --- debian/control | 5 ----- 1 file changed, 5 deletions(-) diff --git a/debian/control b/debian/control index 6e8c54cdc62..2f5bd90bcfd 100644 --- a/debian/control +++ b/debian/control @@ -15,16 +15,11 @@ Build-Depends: debhelper (>= 9.20160709), python3-jsonpatch, python3-jsonschema, python3-mock, - python3-nose, python3-oauthlib, - python3-pep8, - python3-pyflakes, python3-pytest, python3-requests, python3-serial, python3-setuptools, - python3-six, - python3-unittest2, python3-yaml XS-Python-Version: all Vcs-Browser: https://github.com/canonical/cloud-init/tree/ubuntu/devel From b4789c8ae3708f1e0c01e4d1887481cfb7a527da Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 2 Jun 2020 11:07:21 -0600 Subject: [PATCH 0448/1174] changelog: drop six, unittest2, nose, pep8 and pyflakes from build-deps --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 9ad281bc322..3054f97d185 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,7 @@ cloud-init (20.2-45-g5f7825e2-0ubuntu1) groovy; urgency=medium + * d/control: drop python3-six, python3-unittest2, python3-pep8, + python3-pyflakes and python3-nose from Build-Depends. * New upstream snapshot. - test: fix all flake8 E241 (#403) [Joshua Powers] - test: ignore flake8 E402 errors in main.py (#402) [Joshua Powers] From 73dc20b2ba81be0e2367b450d167fbb684f4dc2b Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Fri, 10 Jul 2020 09:11:44 -0400 Subject: [PATCH 0449/1174] update changelog (New upstream snapshot 20.2-94-g3d06abc2). --- debian/changelog | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/debian/changelog b/debian/changelog index 3054f97d185..15dd72a0fb8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,75 @@ +cloud-init (20.2-94-g3d06abc2-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - cc_mounts: handle missing fstab (#484) (LP: #1886531) + - LXD cloud_tests: support more lxd image formats (#482) [Paride Legovini] + - Add update_etc_hosts as default module on *BSD (#479) [Adam Dobrawy] + - cloudinit: fix tip-pylint failures and bump pinned pylint version (#478) + - Added BirknerAlex as contributor and sorted the file (#477) + [Alexander Birkner] + - Update list of types of modules in cli.rst [saurabhvartak1982] + - tests: use markers to configure disable_subp_usage (#473) + - Add mention of vendor-data to no-cloud format documentation (#470) + [Landon Kirk] + - Fix broken link to OpenStack metadata service docs (#467) + [Matt Riedemann] + - Disable ec2 mirror for non aws instances (#390) + [lucasmoura] (LP: #1456277) + - cloud_tests: don't pass --python-version to read-dependencies (#465) + - networking: refactor is_physical from cloudinit.net (#457) (LP: #1884619) + - Enable use of the caplog fixture in pytest tests, and add a + cc_final_message test using it (#461) + - RbxCloud: Add support for FreeBSD (#464) [Adam Dobrawy] + - Add schema for cc_chef module (#375) [lucasmoura] (LP: #1858888) + - test_util: add (partial) testing for util.mount_cb (#463) + - .travis.yml: revert to installing ubuntu-dev-tools (#460) + - HACKING.rst: add details of net refactor tracking (#456) + - .travis.yml: rationalise installation of dependencies in host (#449) + - Add dermotbradley as contributor. (#458) [dermotbradley] + - net/networking: remove unused functions/methods (#453) + - distros.networking: initial implementation of layout (#391) + - cloud-init.service.tmpl: use "rhel" instead of "redhat" (#452) + - Change from redhat to rhel in systemd generator tmpl (#450) + [Eduardo Otubo] + - Hetzner: support reading user-data that is base64 encoded. (#448) + [Scott Moser] (LP: #1884071) + - HACKING.rst: add strpath gotcha to testing gotchas section (#446) + - cc_final_message: don't create directories when writing boot-finished + (#445) (LP: #1883903) + - .travis.yml: only store new schroot if something has changed (#440) + - util: add ensure_dir_exists parameter to write_file (#443) + - printing the error stream of the dhclient process before killing it + (#369) [Moustafa Moustafa] + - Fix link to the MAAS documentation (#442) + [Paride Legovini] (LP: #1883666) + - RPM build: disable the dynamic mirror URLs when using a proxy (#437) + [Paride Legovini] + - util: rename write_file's copy_mode parameter to preserve_mode (#439) + - .travis.yml: use $TRAVIS_BUILD_DIR for lxd_image caching (#438) + - cli.rst: alphabetise devel subcommands and add net-convert to list (#430) + - Default to UTF-8 in /var/log/cloud-init.log (#427) [James Falcon] + - travis: cache the chroot we use for package builds (#429) + - test: fix all flake8 E126 errors (#425) [Joshua Powers] + - Fixes KeyError for bridge with no "parameters:" setting (#423) + [Brian Candler] (LP: #1879673) + - When tools.conf does not exist, running cmd "vmware-toolbox-cmd + config get deployPkg enable-custom-scripts", the return code will + be EX_UNAVAILABLE(69), on this condition, it should not take it as + error. (#413) [chengcheng-chcheng] + - Document CloudStack data-server well-known hostname (#399) [Gregor Riepl] + - test: move conftest.py to top-level, to cover tests/ also (#414) + - Replace cc_chef is_installed with use of subp.is_exe. (#421) + [Scott Moser] + - Move runparts to subp. (#420) [Scott Moser] + - Move subp into its own module. (#416) [Scott Moser] + - readme: point at travis-ci.com (#417) [Joshua Powers] + - New feature flag functionality and fix includes failing silently (#367) + [James Falcon] (LP: #1734939) + - Enhance poll imds logging (#365) [Moustafa Moustafa] + - test: fix all flake8 E121 and E123 errors (#404) [Joshua Powers] + + -- Daniel Watkins Fri, 10 Jul 2020 09:11:25 -0400 + cloud-init (20.2-45-g5f7825e2-0ubuntu1) groovy; urgency=medium * d/control: drop python3-six, python3-unittest2, python3-pep8, From e70b2f3e340f2f9f2438d8fef1f89ccb39f5efb1 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Fri, 10 Jul 2020 09:11:51 -0400 Subject: [PATCH 0450/1174] releasing cloud-init version 20.2-94-g3d06abc2-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 15dd72a0fb8..be3b575318a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.2-94-g3d06abc2-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.2-94-g3d06abc2-0ubuntu1) groovy; urgency=medium * New upstream snapshot. - cc_mounts: handle missing fstab (#484) (LP: #1886531) From 1ce2ac475ee26fffee2b8c42fe6f49f4be0c44a6 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 25 Aug 2020 15:27:58 -0500 Subject: [PATCH 0451/1174] update changelog (New upstream release 20.3). --- debian/changelog | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/debian/changelog b/debian/changelog index be3b575318a..9efbdef7f67 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,65 @@ +cloud-init (20.3-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream release. + - Release 20.3 (#547) [James Falcon] (LP: #1892878) + - tox: bump the pylint version to 2.6.0 in the default run (#544) + [Paride Legovini] + - Azure: Add netplan driver filter when using hv_netvsc driver (#539) + [James Falcon] (LP: #1830740) + - query: do not handle non-decodable non-gzipped content (#543) + - DHCP sandboxing failing on noexec mounted /var/tmp (#521) [Eduardo Otubo] + - Update the list of valid ssh keys. (#487) + [Ole-Martin Bratteng] (LP: #1877869) + - cmd: cloud-init query to handle compressed userdata (#516) (LP: #1889938) + - Pushing cloud-init log to the KVP (#529) [Moustafa Moustafa] + - Add Alpine Linux support. (#535) [dermotbradley] + - Detect kernel version before swap file creation (#428) [Eduardo Otubo] + - cli: add devel make-mime subcommand (#518) + - user-data: only verify mime-types for TYPE_NEEDED and x-shellscript + (#511) (LP: #1888822) + - DataSourceOracle: retry twice (and document why we retry at all) (#536) + - Refactor Azure report ready code (#468) [Johnson Shi] + - tox.ini: pin correct version of httpretty in xenial{,-dev} envs (#531) + - Support Oracle IMDSv2 API (#528) [James Falcon] + - .travis.yml: run a doc build during CI (#534) + - doc/rtd/topics/datasources/ovf.rst: fix doc8 errors (#533) + - Fix 'Users and Groups' configuration documentation (#530) [sshedi] + - cloudinit.distros: update docstrings of add_user and create_user (#527) + - Fix headers for device types in network v2 docs (#532) + [Caleb Xavier Berger] + - Add AlexBaranowski as contributor (#508) [Aleksander Baranowski] + - DataSourceOracle: refactor to use only OPC v1 endpoint (#493) + - .github/workflows/stale.yml: s/Josh/Rick/ (#526) + - Fix a typo in apt pipelining module (#525) [Xiao Liang] + - test_util: parametrize devlist tests (#523) [James Falcon] + - Recognize LABEL_FATBOOT labels (#513) [James Falcon] (LP: #1841466) + - Handle additional identifier for SLES For HPC (#520) [Robert Schweikert] + - Revert "test-requirements.txt: pin pytest to <6 (#512)" (#515) + - test-requirements.txt: pin pytest to <6 (#512) + - Add "tsanghan" as contributor (#504) [tsanghan] + - fix brpm building (LP: #1886107) + - Adding eandersson as a contributor (#502) [Erik Olof Gunnar Andersson] + - azure: disable bouncing hostname when setting hostname fails (#494) + [Anh Vo] + - VMware: Support parsing DEFAULT-RUN-POST-CUST-SCRIPT (#441) + [xiaofengw-vmware] + - DataSourceAzure: Use ValueError when JSONDecodeError is not available + (#490) [Anh Vo] + - cc_ca_certs.py: fix blank line problem when removing CAs and adding + new one (#483) [dermotbradley] + - freebsd: py37-serial is now py37-pyserial (#492) [Gonéri Le Bouder] + - ssh exit with non-zero status on disabled user (#472) + [Eduardo Otubo] (LP: #1170059) + - cloudinit: remove global disable of pylint W0107 and fix errors (#489) + - networking: refactor wait_for_physdevs from cloudinit.net (#466) + (LP: #1884626) + - HACKING.rst: add pytest.param pytest gotcha (#481) + - cloudinit: remove global disable of pylint W0105 and fix errors (#480) + - Fix two minor warnings (#475) + - test_data: fix faulty patch (#476) + + -- James Falcon Tue, 25 Aug 2020 15:27:53 -0500 + cloud-init (20.2-94-g3d06abc2-0ubuntu1) groovy; urgency=medium * New upstream snapshot. From ce6c905b0c28e9ce9bd46dce53bc2a4f63011684 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 25 Aug 2020 16:07:26 -0600 Subject: [PATCH 0452/1174] changelog update release dist to groovy --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9efbdef7f67..e94374621c0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.3-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.3-0ubuntu1) groovy; urgency=medium * New upstream release. - Release 20.3 (#547) [James Falcon] (LP: #1892878) From e501e14d343b14502278f1f54842f91c6810391a Mon Sep 17 00:00:00 2001 From: James Falcon Date: Wed, 26 Aug 2020 12:49:16 -0500 Subject: [PATCH 0453/1174] update changelog (New upstream snapshot 20.3-2-g371b392c). --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index e94374621c0..37f5c13bed2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (20.3-2-g371b392c-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - util: remove debug statement (#556) [Joshua Powers] + - Fix cloud config on chef example (#551) [lucasmoura] + + -- James Falcon Wed, 26 Aug 2020 12:49:05 -0500 + cloud-init (20.3-0ubuntu1) groovy; urgency=medium * New upstream release. From 06bb3baf1d9bca34ca38b2acdd23acda15474e9d Mon Sep 17 00:00:00 2001 From: James Falcon Date: Wed, 26 Aug 2020 12:49:31 -0500 Subject: [PATCH 0454/1174] releasing cloud-init version 20.3-2-g371b392c-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 37f5c13bed2..ead410b149c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.3-2-g371b392c-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.3-2-g371b392c-0ubuntu1) groovy; urgency=medium * New upstream snapshot. - util: remove debug statement (#556) [Joshua Powers] From 8ed1594ea050ec29d11f8aae3cd2f401f673039e Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Tue, 25 Aug 2020 14:46:00 +0200 Subject: [PATCH 0455/1174] d/cloud-init.templates: add RbxCloud to Choices-C Fixes lintian error: E: cloud-init: mismatch-translated-choices cloud-init/datasources Choices-C --- debian/cloud-init.templates | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index e55f7726dbf..bd72d31c2a1 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,7 +1,7 @@ Template: cloud-init/datasources Type: multiselect Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, None: Failsafe datasource _Description: Which data sources should be searched? Cloud-init supports searching different "Data Sources" for information From 9e6f9ce66460abb03cd95e9a79409dcba6e3457c Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Tue, 25 Aug 2020 14:46:55 +0200 Subject: [PATCH 0456/1174] Add d/clean to fully clean the build artifacts Allows to re-build the package in place without manual cleaning. --- debian/clean | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 debian/clean diff --git a/debian/clean b/debian/clean new file mode 100644 index 00000000000..de33a5f4410 --- /dev/null +++ b/debian/clean @@ -0,0 +1,2 @@ +.pytest_cache/ +cloud_init.egg-info/ From 572c39fa0d7548ff707891041f3f370f6acf779a Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Tue, 25 Aug 2020 14:55:02 +0200 Subject: [PATCH 0457/1174] d/control: bump the compat level to 13 Changes: - B-D on debhelper-compat; drop d/compat. - Stop including the dh systemd plugin. - Switch from dh_systemd_start to dh_installsystemd Gbp-Dch: full --- debian/compat | 1 - debian/control | 2 +- debian/rules | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) delete mode 100644 debian/compat diff --git a/debian/compat b/debian/compat deleted file mode 100644 index ec635144f60..00000000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/debian/control b/debian/control index 2f5bd90bcfd..837e59f27ff 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Section: admin Priority: optional Homepage: https://cloud-init.io/ Maintainer: Ubuntu Developers -Build-Depends: debhelper (>= 9.20160709), +Build-Depends: debhelper-compat (= 13), dh-python, iproute2, pep8, diff --git a/debian/rules b/debian/rules index 90f98bb5c7f..108a944208c 100755 --- a/debian/rules +++ b/debian/rules @@ -6,7 +6,7 @@ INIT_SYSTEM ?= systemd export PYBUILD_INSTALL_ARGS=--init-system=$(INIT_SYSTEM) %: - dh $@ --with python3,systemd --buildsystem pybuild + dh $@ --with python3 --buildsystem pybuild override_dh_auto_test: ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) @@ -15,8 +15,8 @@ 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_installsystemd: + dh_installsystemd --no-restart-on-upgrade --no-start override_dh_auto_install: dh_auto_install --destdir=debian/cloud-init From f7dfb163a77089df670e1c34202214091b1783ed Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Tue, 25 Aug 2020 14:56:46 +0200 Subject: [PATCH 0458/1174] d/control: bump Standards-Version to 4.5.0, no changes needed --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 837e59f27ff..90196942596 100644 --- a/debian/control +++ b/debian/control @@ -24,7 +24,7 @@ Build-Depends: debhelper-compat (= 13), XS-Python-Version: all Vcs-Browser: https://github.com/canonical/cloud-init/tree/ubuntu/devel Vcs-Git: https://github.com/canonical/cloud-init -b ubuntu/devel -Standards-Version: 4.4.1 +Standards-Version: 4.5.0 Rules-Requires-Root: no Package: cloud-init From 044bb0f13a794fe5a55cfc13582b1c3d8f566b06 Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Fri, 28 Aug 2020 14:40:03 +0200 Subject: [PATCH 0459/1174] Update d/changelog --- debian/changelog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/debian/changelog b/debian/changelog index ead410b149c..87382be3a80 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +cloud-init (20.3-2-g371b392c-0ubuntu2) UNRELEASED; urgency=medium + + * d/cloud-init.templates: add RbxCloud to Choices-C. + * Add d/clean to fully clean the build artifacts. + * d/control: + - Bump Standards-Version to 4.5.0, no changes needed. + - B-D on debhelper-compat; drop d/compat. + * Bump the debhelper compat level to 13. Required changes: + - Stop including the dh systemd plugin. + - Switch from dh_systemd_start to dh_installsystemd + + -- Paride Legovini Fri, 28 Aug 2020 14:27:07 +0200 + cloud-init (20.3-2-g371b392c-0ubuntu1) groovy; urgency=medium * New upstream snapshot. From 9a5c516bee6eb02a4da88c30ba74b6eca473f7be Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 20 Aug 2020 14:29:03 -0500 Subject: [PATCH 0460/1174] debian/cloud-init.postinst: fix NVME grub install device on upgrade (#538) In [0] we landed a change to the determination of the grub install device for new instance launches, specifically to fix the grub install device determined for instances booting from NVMe drives. However, for running NVMe-root instances to successfully install grub updates which change the ABI between the core and its modules, we also need to fix the grub install device that the previous (incorrect) code determined. This commit performs that fixing, on upgrade. [0] https://github.com/canonical/cloud-init/commit/fc07d633f7cb694423349a2c4b10c91c4b4981a2 LP: #1889555 Co-authored-by: Daniel Watkins --- debian/changelog | 2 ++ debian/cloud-init.postinst | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/debian/changelog b/debian/changelog index 87382be3a80..bbafe19bc04 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,7 @@ cloud-init (20.3-2-g371b392c-0ubuntu2) UNRELEASED; urgency=medium + * d/cloud-init.postinst: fix the grub install device for NVMe-rooted + instances on upgrade. (LP: #1889555) * d/cloud-init.templates: add RbxCloud to Choices-C. * Add d/clean to fully clean the build artifacts. * d/control: diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst index acd45fd1776..bb1535e8178 100644 --- a/debian/cloud-init.postinst +++ b/debian/cloud-init.postinst @@ -285,6 +285,49 @@ cleanup_ureadahead() { /etc/init/ureadahead.conf.disabled /etc/init/ureadahead.conf } +fix_lp1889555() { + local oldver="$1" last_bad_ver="20.3-2-g371b392c-0ubuntu1" + dpkg --compare-versions "$oldver" le-nl "$last_bad_ver" || return 0 + + # 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 + + # Don't do anything unless we have grub + [ -x /usr/sbin/grub-install ] || return 0 + + # 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 + + # This bug only applies to NVMe devices + [ -e /dev/nvme0 ] || return 0 + + db_get grub-pc/install_devices && grub_cfg_dev=${RET} || return 0 + + # If the current setting is not the (potentially-incorrect) default we + # expect, this implies user intervention so leave things alone + [ "$grub_cfg_dev" = "/dev/sda" ] || return 0 + + correct_idev="$(python3 -c "import logging; from cloudinit.config.cc_grub_dpkg import fetch_idevs; print(fetch_idevs(logging.getLogger()))")" || return 0 + + # If correct_idev is the empty string, we failed to determine the correct + # install device; do nothing + [ -z "$correct_idev" ] && return 0 + + # If the correct_idev is already configured, do nothing + [ "$grub_cfg_dev" = "$correct_idev" ] && return 0 + + echo "Reconfiguring grub install device due to mismatch (LP: #1889555)" + echo " grub should use $correct_idev but is configured for $grub_cfg_dev" + db_set grub-pc/install_devices "$correct_idev" + db_set grub-pc/install_devices_empty "false" +} + + if [ "$1" = "configure" ]; then if db_get cloud-init/datasources; then values="$RET" @@ -314,6 +357,7 @@ EOF fix_azure_upgrade_1611074 "$2" cleanup_ureadahead "$2" + fix_lp1889555 "$2" fi #DEBHELPER# From 882fff6865f338a78f81cfc5127bac3221283eb8 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 15 Sep 2020 20:19:38 -0600 Subject: [PATCH 0461/1174] update changelog (New upstream snapshot 20.3-15-g6d332e5c). --- debian/changelog | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index bbafe19bc04..b2a913d1b98 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.3-2-g371b392c-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (20.3-15-g6d332e5c-0ubuntu1) UNRELEASED; urgency=medium * d/cloud-init.postinst: fix the grub install device for NVMe-rooted instances on upgrade. (LP: #1889555) @@ -10,8 +10,30 @@ cloud-init (20.3-2-g371b392c-0ubuntu2) UNRELEASED; urgency=medium * Bump the debhelper compat level to 13. Required changes: - Stop including the dh systemd plugin. - Switch from dh_systemd_start to dh_installsystemd - - -- Paride Legovini Fri, 28 Aug 2020 14:27:07 +0200 + * New upstream snapshot. + - create a shutdown_command method in distro classes (#567) + [Emmanuel Thomé] + - user_data: remove unused constant (#566) + - network: Fix type and respect name when rendering vlan in + sysconfig. (#541) [Eduardo Otubo] (LP: #1788915, #1826608) + - Retrieve SSH keys from IMDS first with OVF as a fallback (#509) + [Thomas Stringer] + - Add jqueuniet as contributor (#569) [Johann Queuniet] + - distros: minor typo fix (#562) + - Bump the integration-requirements versioned dependencies (#565) + [Paride Legovini] + - network-config-format-v1: fix typo in nameserver example (#564) + [Stanislas] + - Run cloud-init-local.service after the hv_kvp_daemon (#505) + [Robert Schweikert] + - Add method type hints for Azure helper (#540) [Johnson Shi] + - systemd: add Before=shutdown.target when Conflicts=shutdown.target is + used (#546) [Paride Legovini] + - LXD: detach network from profile before deleting it (#542) + [Paride Legovini] (LP: #1776958) + - redhat spec: add missing BuildRequires (#552) [Paride Legovini] + + -- Chad Smith Tue, 15 Sep 2020 20:19:10 -0600 cloud-init (20.3-2-g371b392c-0ubuntu1) groovy; urgency=medium From 7fe46f454cf9b081c30398626954d31103ace764 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 15 Sep 2020 20:19:42 -0600 Subject: [PATCH 0462/1174] releasing cloud-init version 20.3-15-g6d332e5c-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index b2a913d1b98..52afc375be4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.3-15-g6d332e5c-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.3-15-g6d332e5c-0ubuntu1) groovy; urgency=medium * d/cloud-init.postinst: fix the grub install device for NVMe-rooted instances on upgrade. (LP: #1889555) From acbf5fa47fd5a37da6db210db02139ebdb3e511f Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Fri, 9 Oct 2020 11:24:08 -0400 Subject: [PATCH 0463/1174] d/control: add gnupg to Recommends (#583) cc_apt_configure requires it to be installed for some operations. --- debian/changelog | 7 +++++++ debian/control | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 52afc375be4..7dc19902861 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (20.3-15-g6d332e5c-0ubuntu2) UNRELEASED; urgency=medium + + * d/control: add gnupg to Recommends as cc_apt_configure requires it to be + installed for some operations. + + -- Daniel Watkins Wed, 23 Sep 2020 10:26:58 -0400 + cloud-init (20.3-15-g6d332e5c-0ubuntu1) groovy; urgency=medium * d/cloud-init.postinst: fix the grub install device for NVMe-rooted diff --git a/debian/control b/debian/control index 90196942596..6c739892e8a 100644 --- a/debian/control +++ b/debian/control @@ -39,7 +39,7 @@ Depends: cloud-guest-utils | cloud-utils, python3-serial, ${misc:Depends}, ${python3:Depends} -Recommends: eatmydata, gdisk, software-properties-common +Recommends: eatmydata, gdisk, gnupg, software-properties-common XB-Python-Version: ${python:Versions} Description: initialization and customization tool for cloud instances Cloud-init is the industry standard multi-distribution method for From a580bb86d45db53dd711b904ce1c47e148743dc9 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 24 Nov 2020 12:32:15 -0600 Subject: [PATCH 0464/1174] update changelog (New upstream release 20.4). --- debian/changelog | 129 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 126 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 7dc19902861..77bc63d75e9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,132 @@ -cloud-init (20.3-15-g6d332e5c-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (20.4-0ubuntu1) UNRELEASED; urgency=medium * d/control: add gnupg to Recommends as cc_apt_configure requires it to be installed for some operations. - - -- Daniel Watkins Wed, 23 Sep 2020 10:26:58 -0400 + * New upstream release. + - Release 20.4 (#686) [James Falcon] (LP: #1905440) + - tox: avoid tox testenv subsvars for xenial support (#684) + - Ensure proper root permissions in integration tests (#664) [James Falcon] + - LXD VM support in integration tests (#678) [James Falcon] + - Integration test for fallocate falling back to dd (#681) [James Falcon] + - .travis.yml: correctly integration test the built .deb (#683) + - Ability to hot-attach NICs to preprovisioned VMs before reprovisioning + (#613) [aswinrajamannar] + - Support configuring SSH host certificates. (#660) [Jonathan Lung] + - add integration test for LP: #1900837 (#679) + - cc_resizefs on FreeBSD: Fix _can_skip_ufs_resize (#655) + [Mina Galić] (LP: #1901958, #1901958) + - DataSourceAzure: push dmesg log to KVP (#670) [Anh Vo] + - Make mount in place for tests work (#667) [James Falcon] + - integration_tests: restore emission of settings to log (#657) + - DataSourceAzure: update password for defuser if exists (#671) [Anh Vo] + - tox.ini: only select "ci" marked tests for CI runs (#677) + - Azure helper: Increase Azure Endpoint HTTP retries (#619) [Johnson Shi] + - DataSourceAzure: send failure signal on Azure datasource failure (#594) + [Johnson Shi] + - test_persistence: simplify VersionIsPoppedFromState (#674) + - only run a subset of integration tests in CI (#672) + - cli: add --system param to allow validating system user-data on a + machine (#575) + - test_persistence: add VersionIsPoppedFromState test (#673) + - introduce an upgrade framework and related testing (#659) + - add --no-tty option to gpg (#669) [Till Riedel] (LP: #1813396) + - Pin pycloudlib to a working commit (#666) [James Falcon] + - DataSourceOpenNebula: exclude SRANDOM from context output (#665) + - cloud_tests: add hirsute release definition (#662) + - split integration and cloud_tests requirements (#652) + - faq.rst: add warning to answer that suggests running `clean` (#661) + - Fix stacktrace in DataSourceRbxCloud if no metadata disk is found (#632) + [Scott Moser] + - Make wakeonlan Network Config v2 setting actually work (#626) + [dermotbradley] + - HACKING.md: unify network-refactoring namespace (#658) [Mina Galić] + - replace usage of dmidecode with kenv on FreeBSD (#621) [Mina Galić] + - Prevent timeout on travis integration tests. (#651) [James Falcon] + - azure: enable pushing the log to KVP from the last pushed byte (#614) + [Moustafa Moustafa] + - Fix launch_kwargs bug in integration tests (#654) [James Falcon] + - split read_fs_info into linux & freebsd parts (#625) [Mina Galić] + - PULL_REQUEST_TEMPLATE.md: expand commit message section (#642) + - Make some language improvements in growpart documentation (#649) + [Shane Frasier] + - Revert ".travis.yml: use a known-working version of lxd (#643)" (#650) + - Fix not sourcing default 50-cloud-init ENI file on Debian (#598) + [WebSpider] + - remove unnecessary reboot from gpart resize (#646) [Mina Galić] + - cloudinit: move dmi functions out of util (#622) [Scott Moser] + - integration_tests: various launch improvements (#638) + - test_lp1886531: don't assume /etc/fstab exists (#639) + - Remove Ubuntu restriction from PR template (#648) [James Falcon] + - util: fix mounting of vfat on *BSD (#637) [Mina Galić] + - conftest: improve docstring for disable_subp_usage (#644) + - doc: add example query commands to debug Jinja templates (#645) + - Correct documentation and testcase data for some user-data YAML (#618) + [dermotbradley] + - Hetzner: Fix instance_id / SMBIOS serial comparison (#640) + [Markus Schade] + - .travis.yml: use a known-working version of lxd (#643) + - tools/build-on-freebsd: fix comment explaining purpose of the script + (#635) [Mina Galić] + - Hetzner: initialize instance_id from system-serial-number (#630) + [Markus Schade] (LP: #1885527) + - Explicit set IPV6_AUTOCONF and IPV6_FORCE_ACCEPT_RA on static6 (#634) + [Eduardo Otubo] + - get_interfaces: don't exclude Open vSwitch bridge/bond members (#608) + [Lukas Märdian] (LP: #1898997) + - Add config modules for controlling IBM PowerVM RMC. (#584) + [Aman306] (LP: #1895979) + - Update network config docs to clarify MAC address quoting (#623) + [dermotbradley] + - gentoo: fix hostname rendering when value has a comment (#611) + [Manuel Aguilera] + - refactor integration testing infrastructure (#610) [James Falcon] + - stages: don't reset permissions of cloud-init.log every boot (#624) + (LP: #1900837) + - docs: Add how to use cloud-localds to boot qemu (#617) [Joshua Powers] + - Drop vestigial update_resolve_conf_file function (#620) [Scott Moser] + - cc_mounts: correctly fallback to dd if fallocate fails (#585) + (LP: #1897099) + - .travis.yml: add integration-tests to Travis matrix (#600) + - ssh_util: handle non-default AuthorizedKeysFile config (#586) + [Eduardo Otubo] + - Multiple file fix for AuthorizedKeysFile config (#60) [Eduardo Otubo] + - bddeb: new --packaging-branch argument to pull packaging from branch + (#576) [Paride Legovini] + - Add more integration tests (#615) [lucasmoura] + - DataSourceAzure: write marker file after report ready in preprovisioning + (#590) [Johnson Shi] + - integration_tests: emit settings to log during setup (#601) + - integration_tests: implement citest tests run in Travis (#605) + - Add Azure support to integration test framework (#604) [James Falcon] + - openstack: consider product_name as valid chassis tag (#580) + [Adrian Vladu] (LP: #1895976) + - azure: clean up and refactor report_diagnostic_event (#563) [Johnson Shi] + - net: add the ability to blacklist network interfaces based on driver + during enumeration of physical network devices (#591) [Anh Vo] + - integration_tests: don't error on cloud-init failure (#596) + - integration_tests: improve cloud-init.log assertions (#593) + - conftest.py: remove top-level import of httpretty (#599) + - tox.ini: add integration-tests testenv definition (#595) + - PULL_REQUEST_TEMPLATE.md: empty checkboxes need a space (#597) + - add integration test for LP: #1886531 (#592) + - Initial implementation of integration testing infrastructure (#581) + [James Falcon] + - Fix name of ntp and chrony service on CentOS and RHEL. (#589) + [Scott Moser] (LP: #1897915) + - Adding a PR template (#587) [James Falcon] + - Azure parse_network_config uses fallback cfg when generate IMDS network + cfg fails (#549) [Johnson Shi] + - features: refresh docs for easier out-of-context reading (#582) + - Fix typo in resolv_conf module's description (#578) [Wacław Schiller] + - cc_users_groups: minor doc formatting fix (#577) + - Fix typo in disk_setup module's description (#579) [Wacław Schiller] + - Add vendor-data support to seedfrom parameter for NoCloud and OVF (#570) + [Johann Queuniet] + - boot.rst: add First Boot Determination section (#568) (LP: #1888858) + - opennebula.rst: minor readability improvements (#573) [Mina Galić] + - cloudinit: remove unused LOG variables (#574) + + -- James Falcon Tue, 24 Nov 2020 12:32:00 -0600 cloud-init (20.3-15-g6d332e5c-0ubuntu1) groovy; urgency=medium From 7ce981aa5584c9827224e507262aee07e0d84d1b Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 24 Nov 2020 12:34:34 -0600 Subject: [PATCH 0465/1174] releasing cloud-init version 20.4-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 77bc63d75e9..db643d1e66f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.4-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.4-0ubuntu1) hirsute; urgency=medium * d/control: add gnupg to Recommends as cc_apt_configure requires it to be installed for some operations. From 1ea524bdc83f07ea89e65adb5284760cb9ad4214 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Mon, 4 Jan 2021 10:41:19 -0500 Subject: [PATCH 0466/1174] d/cloud-init.manpages: include upstream manpages in package. --- debian/changelog | 6 ++++++ debian/cloud-init.manpages | 3 +++ 2 files changed, 9 insertions(+) create mode 100644 debian/cloud-init.manpages diff --git a/debian/changelog b/debian/changelog index db643d1e66f..326d5621a6e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (20.4-0ubuntu2) hirsute; urgency=medium + + * d/cloud-init.manpages: include upstream manpages in package (LP: #1908548) + + -- Daniel Watkins Mon, 04 Jan 2021 10:44:13 -0500 + cloud-init (20.4-0ubuntu1) hirsute; urgency=medium * d/control: add gnupg to Recommends as cc_apt_configure requires it to be diff --git a/debian/cloud-init.manpages b/debian/cloud-init.manpages new file mode 100644 index 00000000000..605cfd67af3 --- /dev/null +++ b/debian/cloud-init.manpages @@ -0,0 +1,3 @@ +doc/man/cloud-id.1 +doc/man/cloud-init-per.1 +doc/man/cloud-init.1 From 09b3fe12dee2bca45480dc20e9d92805ee3f06ec Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Mon, 11 Jan 2021 16:57:44 -0500 Subject: [PATCH 0467/1174] update changelog (New upstream snapshot 20.4-55-g4f62ae8d). --- debian/changelog | 66 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/debian/changelog b/debian/changelog index 326d5621a6e..b7b08fe26bb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,69 @@ +cloud-init (20.4-55-g4f62ae8d-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Fix regression with handling of IMDS ssh keys (#760) [Thomas Stringer] + - integration_tests: log cloud-init version in SUT (#758) + - Add ajmyyra as contributor (#742) [Antti Myyrä] + - net_convert: add some missing help text (#755) + - Missing IPV6_AUTOCONF=no to render sysconfig dhcp6 stateful on RHEL + (#753) [Eduardo Otubo] + - doc: document missing IPv6 subnet types (#744) [Antti Myyrä] + - Add example configuration for datasource `AliYun` (#751) [Xiaoyu Zhong] + - integration_tests: add SSH key selection settings (#754) + - fix a typo in man page cloud-init.1 (#752) [Amy Chen] + - network-config-format-v2.rst: add Netplan Passthrough section (#750) + - stale: re-enable post holidays (#749) + - integration_tests: port ca_certs tests from cloud_tests (#732) + - Azure: Add telemetry for poll IMDS (#741) [Johnson Shi] + - doc: move testing section from HACKING to its own doc (#739) + - No longer allow integration test failures on travis (#738) + - stale: fix error in definition (#740) + - integration_tests: set log-cli-level to INFO by default (#737) + - PULL_REQUEST_TEMPLATE.md: use backticks around commit message (#736) + - stale: disable check for holiday break (#735) + - integration_tests: log the path we collect logs into (#733) + - .travis.yml: add (most) supported Python versions to CI (#734) + - integration_tests: fix IN_PLACE CLOUD_INIT_SOURCE (#731) + - cc_ca_certs: add RHEL support (#633) [cawamata] + - Azure: only generate config for NICs with addresses (#709) + [Thomas Stringer] + - doc: fix CloudStack configuration example (#707) [Olivier Lemasle] + - integration_tests: restrict test_lxd_bridge appropriately (#730) + - Add integration tests for CLI functionality (#729) + - Integration test for gh-626 (#728) + - Some test_upgrade fixes (#726) + - Ensure overriding test vars with env vars works for booleans (#727) + - integration_tests: port lxd_bridge test from cloud_tests (#718) + - Integration test for gh-632. (#725) + - Integration test for gh-671 (#724) + - integration-requirements.txt: bump pycloudlib commit (#723) + - Drop unnecessary shebang from cmd/main.py (#722) [Eduardo Otubo] + - Integration test for LP: #1813396 and #669 (#719) + - integration_tests: include timestamp in log output (#720) + - integration_tests: add test for LP: #1898997 (#713) + - Add integration test for power_state_change module (#717) + - Update documentation for network-config-format-v2 (#701) [ggiesen] + - sandbox CA Cert tests to not require ca-certificates (#715) + [Eduardo Otubo] + - Add upgrade integration test (#693) + - Integration test for 570 (#712) + - Add ability to keep snapshotted images in integration tests (#711) + - Integration test for pull #586 (#706) + - integration_tests: introduce skipping of tests by OS (#702) + - integration_tests: introduce IntegrationInstance.restart (#708) + - Add lxd-vm to list of valid integration test platforms (#705) + - Adding BOOTPROTO = dhcp to render sysconfig dhcp6 stateful on RHEL + (#685) [Eduardo Otubo] + - Delete image snapshots created for integration tests (#682) + - Parametrize ssh_keys_provided integration test (#700) [lucasmoura] + - Drop use_sudo attribute on IntegrationInstance (#694) [lucasmoura] + - cc_apt_configure: add riscv64 as a ports arch (#687) + [Dimitri John Ledkov] + - cla: add xnox (#692) [Dimitri John Ledkov] + - Collect logs from integration test runs (#675) + + -- Daniel Watkins Mon, 11 Jan 2021 16:57:30 -0500 + cloud-init (20.4-0ubuntu2) hirsute; urgency=medium * d/cloud-init.manpages: include upstream manpages in package (LP: #1908548) From 5f76057584c2ddf0efee1350832fe0b44a924326 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Mon, 11 Jan 2021 16:58:03 -0500 Subject: [PATCH 0468/1174] releasing cloud-init version 20.4-55-g4f62ae8d-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index b7b08fe26bb..790a437e851 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.4-55-g4f62ae8d-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.4-55-g4f62ae8d-0ubuntu1) hirsute; urgency=medium * New upstream snapshot. - Fix regression with handling of IMDS ssh keys (#760) [Thomas Stringer] From 3a3d1aea5c3a6593bc11d31dbc4b2426b4451423 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Wed, 20 Jan 2021 13:17:01 -0500 Subject: [PATCH 0469/1174] update changelog (New upstream snapshot 20.4-66-gad23441d). --- debian/changelog | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/debian/changelog b/debian/changelog index 790a437e851..9ac61aa43f9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,22 @@ +cloud-init (20.4-66-gad23441d-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Add antonyc to .github-cla-signers (#747) [Anton Chaporgin] + - integration_tests: log image serial if available (#772) + - Revert "ssh_util: handle non-default AuthorizedKeysFile config (#586)" + (#775) (LP: #1911680) + - [VMware] Support cloudinit raw data feature (#691) [xiaofengw-vmware] + - net: Fix static routes to host in eni renderer (#668) [Pavel Abalikhin] + - .travis.yml: don't run cloud_tests in CI (#756) + - test_upgrade: add some missing commas (#769) + - cc_seed_random: update documentation and fix integration test (#771) + (LP: #1911227) + - Fix test gh-632 test to only run on NoCloud (#770) (LP: #1911230) + - archlinux: fix package upgrade command handling (#768) [Bao Trinh] + - integration_tests: add integration test for LP: #1910835 (#761) + + -- Daniel Watkins Wed, 20 Jan 2021 13:15:55 -0500 + cloud-init (20.4-55-g4f62ae8d-0ubuntu1) hirsute; urgency=medium * New upstream snapshot. From c06d9c7ecb477582700345e42fed79d350357847 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Wed, 20 Jan 2021 13:17:11 -0500 Subject: [PATCH 0470/1174] releasing cloud-init version 20.4-66-gad23441d-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9ac61aa43f9..4f1d5b9e474 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.4-66-gad23441d-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.4-66-gad23441d-0ubuntu1) hirsute; urgency=medium * New upstream snapshot. - Add antonyc to .github-cla-signers (#747) [Anton Chaporgin] From bb08798ecd3331ca938ff95be261a0e4fc4ffde8 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 28 Jan 2021 10:51:58 -0500 Subject: [PATCH 0471/1174] update changelog (New upstream snapshot 20.4.1-79-g71564dce). --- debian/changelog | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/debian/changelog b/debian/changelog index 4f1d5b9e474..7d622126923 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,21 @@ +cloud-init (20.4.1-79-g71564dce-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - [VMware] change default max wait time to 15s (#774) [xiaofengw-vmware] + - Revert integration test associated with reverted #586 (#784) + - Add jordimassaguerpla as contributor (#787) [Jordi Massaguer Pla] + - Add Rick Harding to CLA signers (#792) [Rick Harding] + - HACKING.rst: add clarifying note to LP CLA process section (#789) + - Stop linting cloud_tests (#791) + - cloud-tests: update cryptography requirement (#790) [Joshua Powers] + - Remove 'remove-raise-on-failure' calls from integration_tests (#788) + - Use more cloud defaults in integration tests (#757) + - Adding self to cla signers (#776) [Andrew Bogott] + - doc: avoid two warnings (#781) [Dan Kenigsberg] + - Use proper spelling for Red Hat (#778) [Dan Kenigsberg] + + -- Daniel Watkins Thu, 28 Jan 2021 10:50:23 -0500 + cloud-init (20.4-66-gad23441d-0ubuntu1) hirsute; urgency=medium * New upstream snapshot. From fc15921b51c07cc2c00bc09d641d91d23851f79e Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 28 Jan 2021 10:52:05 -0500 Subject: [PATCH 0472/1174] releasing cloud-init version 20.4.1-79-g71564dce-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 7d622126923..9f84c1e6dfd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (20.4.1-79-g71564dce-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (20.4.1-79-g71564dce-0ubuntu1) hirsute; urgency=medium * New upstream snapshot. - [VMware] change default max wait time to 15s (#774) [xiaofengw-vmware] From 02bcdf7fd5e40942eb1d1ac56c2d81a81aba53b5 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Thu, 28 Jan 2021 12:54:52 -0500 Subject: [PATCH 0473/1174] d/changelog: manually add 20.4.1 release item Due to the merge, our tooling did not include it normally. --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 9f84c1e6dfd..a45a6164e9b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ cloud-init (20.4.1-79-g71564dce-0ubuntu1) hirsute; urgency=medium * New upstream snapshot. + - Release 20.4.1 (LP: #1911680) - [VMware] change default max wait time to 15s (#774) [xiaofengw-vmware] - Revert integration test associated with reverted #586 (#784) - Add jordimassaguerpla as contributor (#787) [Jordi Massaguer Pla] From f69bb765ea7f08d2b4054d078e9bf9df73b73787 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 23 Feb 2021 10:07:39 -0500 Subject: [PATCH 0474/1174] update changelog (New upstream release 21.1). --- debian/changelog | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/debian/changelog b/debian/changelog index a45a6164e9b..64439c6a90d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,32 @@ +cloud-init (21.1-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream release. + - Release 21.1 (#820) (LP: #1916540) + - Azure: Support for VMs without ephemeral resource disks. (#800) + [Johnson Shi] (LP: #1901011) + - cc_keys_to_console: add option to disable key emission (#811) + [Michael Hudson-Doyle] (LP: #1915460) + - integration_tests: introduce lxd_use_exec mark (#802) + - azure: case-insensitive UUID to avoid new IID during kernel upgrade + (#798) (LP: #1835584) + - stale.yml: don't ask submitters to reopen PRs (#816) + - integration_tests: fix use of SSH agent within tox (#815) + - integration_tests: add UPGRADE CloudInitSource (#812) + - integration_tests: use unique MAC addresses for tests (#813) + - Update .gitignore (#814) + - Port apt cloud_tests to integration tests (#808) + - integration_tests: fix test_gh626 on LXD VMs (#809) + - Fix attempting to decode binary data in test_seed_random_data test (#806) + - Remove wait argument from tests with session_cloud calls (#805) + - Datasource for UpCloud (#743) [Antti Myyrä] + - test_gh668: fix failure on LXD VMs (#801) + - openstack: read the dynamic metadata group vendor_data2.json (#777) + [Andrew Bogott] (LP: #1841104) + - includedir in suoders can be prefixed by "arroba" (#783) + [Jordi Massaguer Pla] + + -- James Falcon Tue, 23 Feb 2021 10:06:10 -0500 + cloud-init (20.4.1-79-g71564dce-0ubuntu1) hirsute; urgency=medium * New upstream snapshot. From e45d776cec6a3a239d202bfb9b408402322f02e2 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 23 Feb 2021 10:08:07 -0500 Subject: [PATCH 0475/1174] releasing cloud-init version 21.1-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 64439c6a90d..38d0314e7e8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.1-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (21.1-0ubuntu1) hirsute; urgency=medium * New upstream release. - Release 21.1 (#820) (LP: #1916540) From 942949304a5762fa77ba4902855b231bd26f09da Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 19 Mar 2021 14:32:27 -0500 Subject: [PATCH 0476/1174] update changelog (New upstream snapshot 21.1-19-gbad84ad4). --- debian/changelog | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/debian/changelog b/debian/changelog index 38d0314e7e8..8ac946c1698 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,34 @@ +cloud-init (21.1-19-gbad84ad4-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - .travis.yml: generate an SSH key before running tests (#848) + - write passwords only to serial console, lock down cloud-init-output.log + (#847) (LP: #1918303) + - Fix apt default integration test (#845) + - integration_tests: bump pycloudlib dependency (#846) + - commit f35181fa970453ba6c7c14575b12185533391b97 [eb3095] + - archlinux: Fix broken locale logic (#841) + [Kristian Klausen] (LP: #1402406) + - Integration test for #783 (#832) + - integration_tests: mount more paths IN_PLACE (#838) + - Fix requiring device-number on EC2 derivatives (#836) (LP: #1917875) + - Remove the vi comment from the part-handler example (#835) + - net: exclude OVS internal interfaces in get_interfaces (#829) + (LP: #1912844) + - tox.ini: pass OS_* environment variables to integration tests (#830) + - integration_tests: add OpenStack as a platform (#804) + - Add flexibility to IMDS api-version (#793) [Thomas Stringer] + - Fix the TestApt tests using apt-key on Xenial and Hirsute (#823) + [Paride Legovini] (LP: #1916629) + - doc: remove duplicate "it" from nocloud.rst (#825) [V.I. Wood] + - archlinux: Use hostnamectl to set the transient hostname (#797) + [Kristian Klausen] + - cc_keys_to_console.py: Add documentation for recently added config key + (#824) [dermotbradley] + - Update cc_set_hostname documentation (#818) [Toshi Aoyama] + + -- James Falcon Fri, 19 Mar 2021 14:32:13 -0500 + cloud-init (21.1-0ubuntu1) hirsute; urgency=medium * New upstream release. From a85d18109cd55bf0d281875c444f265f46a4fcc0 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 19 Mar 2021 15:11:28 -0500 Subject: [PATCH 0477/1174] debian/cloud-init.postinst: Change output log permissions on upgrade In b794d426 (#847), we changed log permissions on /var/log/cloud-init.log to be owned by root:adm and have 740 permissions by default. This commit performs that same change on upgrade. LP: #1918303 --- debian/changelog | 3 ++- debian/cloud-init.postinst | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 8ac946c1698..9178fb4a5a4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ cloud-init (21.1-19-gbad84ad4-0ubuntu1) UNRELEASED; urgency=medium - + * d/cloud-init.postinst: Change output log permissions on upgrade + (LP: #1918303) * New upstream snapshot. - .travis.yml: generate an SSH key before running tests (#848) - write passwords only to serial console, lock down cloud-init-output.log diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst index bb1535e8178..683ba86de6c 100644 --- a/debian/cloud-init.postinst +++ b/debian/cloud-init.postinst @@ -327,6 +327,22 @@ fix_lp1889555() { db_set grub-pc/install_devices_empty "false" } +change_cloud_init_output_log_permissions() { + # As a consequence of LP: #1918303 + local oldver="$1" last_bad_ver="21.1-0ubuntu1" + dpkg --compare-versions "$oldver" le-nl "$last_bad_ver" || return 0 + + output_file="/var/log/cloud-init-output.log" + if [ -f "$output_file" ]; then + if getent group adm > /dev/null; then + chown root:adm $output_file + else + chown root $output_file + fi + chmod 640 $output_file + fi +} + if [ "$1" = "configure" ]; then if db_get cloud-init/datasources; then @@ -358,6 +374,7 @@ EOF cleanup_ureadahead "$2" fix_lp1889555 "$2" + change_cloud_init_output_log_permissions "$2" fi #DEBHELPER# From 788bd804aef0c2abe27773da19a14e280138e1db Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 19 Mar 2021 16:55:25 -0500 Subject: [PATCH 0478/1174] releasing cloud-init version 21.1-19-gbad84ad4-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9178fb4a5a4..96a2688c081 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.1-19-gbad84ad4-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (21.1-19-gbad84ad4-0ubuntu1) hirsute; urgency=medium * d/cloud-init.postinst: Change output log permissions on upgrade (LP: #1918303) * New upstream snapshot. From e3e36b2870b70dc588c87ec492cf18a54f46395f Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 22 Mar 2021 12:18:01 -0500 Subject: [PATCH 0479/1174] debian/cloud-init.templates: Add UpCloud datasource --- debian/cloud-init.templates | 6 +++--- debian/po/templates.pot | 8 +++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index bd72d31c2a1..2ff1bceb531 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, None: Failsafe datasource +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, 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. diff --git a/debian/po/templates.pot b/debian/po/templates.pot index 2ec850edc92..e88025ef6c3 100644 --- a/debian/po/templates.pot +++ b/debian/po/templates.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: cloud-init\n" "Report-Msgid-Bugs-To: cloud-init@packages.debian.org\n" -"POT-Creation-Date: 2019-11-29 13:59+0100\n" +"POT-Creation-Date: 2021-03-22 14:08-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -149,6 +149,12 @@ msgstr "" msgid "RbxCloud: HyperOne and Rootbox platforms" msgstr "" +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "UpCloud: UpCloud" +msgstr "" + #. Type: multiselect #. Choices #: ../cloud-init.templates:1001 From 0400f9b51b73015d19fda7133d01d09245934d1d Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 22 Mar 2021 14:09:44 -0500 Subject: [PATCH 0480/1174] releasing cloud-init version 21.1-19-gbad84ad4-0ubuntu2 --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 96a2688c081..a46efadd423 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (21.1-19-gbad84ad4-0ubuntu2) hirsute; urgency=medium + + * debian/cloud-init.templates: enable UpCloud by default + + -- James Falcon Mon, 22 Mar 2021 14:08:51 -0500 + cloud-init (21.1-19-gbad84ad4-0ubuntu1) hirsute; urgency=medium * d/cloud-init.postinst: Change output log permissions on upgrade (LP: #1918303) From 7e268aa7c2e34f96fd81d9e88ed1160a7f94d8c8 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 19 Apr 2021 13:41:13 -0500 Subject: [PATCH 0481/1174] cherry-pick 83f6bbfb LP: #1899299 --- ...ickle-for-source-paths-missing-run_dir-863 | 576 ++++++++++++++++++ ...error-on-upgrade-caused-by-new-vendordata2 | 147 +++++ debian/patches/series | 1 + 3 files changed, 724 insertions(+) create mode 100644 debian/patches/cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 create mode 100644 debian/patches/cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 create mode 100644 debian/patches/series diff --git a/debian/patches/cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 b/debian/patches/cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 new file mode 100644 index 00000000000..d80de236aaa --- /dev/null +++ b/debian/patches/cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 @@ -0,0 +1,576 @@ +From 83f6bbfbe5b924be61a3c098f4202377d69c8947 Mon Sep 17 00:00:00 2001 +From: lucasmoura +Date: Mon, 12 Apr 2021 13:22:22 -0300 +Subject: [PATCH] Fix unpickle for source paths missing run_dir (#863) + +On the datasource class, we require the use of paths.run_dir to +perform some operations. On older cloud-init version, the +Paths class does not have the run_dir attribute. To fix that, +we are now manually adding that attribute in the Paths +object if doesn't exist in the unpickle operation. + +LP: #1899299 +--- + cloudinit/helpers.py | 17 +- + cloudinit/tests/test_upgrade.py | 3 + + .../data/old_pickles/trusty-14.04.1-0.7.5.pkl | 504 ++++++++++++++++++ + 3 files changed, 523 insertions(+), 1 deletion(-) + create mode 100644 tests/data/old_pickles/trusty-14.04.1-0.7.5.pkl + +--- a/cloudinit/helpers.py ++++ b/cloudinit/helpers.py +@@ -20,6 +20,7 @@ from cloudinit.settings import (PER_INST + + from cloudinit import log as logging + from cloudinit import type_utils ++from cloudinit import persistence + from cloudinit import util + + LOG = logging.getLogger(__name__) +@@ -317,7 +318,9 @@ class ContentHandlers(object): + return list(self.registered.items()) + + +-class Paths(object): ++class Paths(persistence.CloudInitPickleMixin): ++ _ci_pkl_version = 1 ++ + def __init__(self, path_cfgs, ds=None): + self.cfgs = path_cfgs + # Populate all the initial paths +@@ -354,6 +357,18 @@ class Paths(object): + # Set when a datasource becomes active + self.datasource = ds + ++ def _unpickle(self, ci_pkl_version: int) -> None: ++ """Perform deserialization fixes for Paths.""" ++ if not hasattr(self, "run_dir"): ++ # On older versions of cloud-init the Paths class do not ++ # have the run_dir attribute. This is problematic because ++ # when loading the pickle object on newer versions of cloud-init ++ # we will rely on this attribute. To fix that, we are now ++ # manually adding that attribute here. ++ self.run_dir = Paths( ++ path_cfgs=self.cfgs, ++ ds=self.datasource).run_dir ++ + # get_ipath_cur: get the current instance path for an item + def get_ipath_cur(self, name=None): + return self._get_path(self.instance_link, name) +--- a/cloudinit/tests/test_upgrade.py ++++ b/cloudinit/tests/test_upgrade.py +@@ -43,3 +43,6 @@ class TestUpgrade: + def test_blacklist_drivers_set_on_networking(self, previous_obj_pkl): + """We always expect Networking.blacklist_drivers to be initialised.""" + assert previous_obj_pkl.distro.networking.blacklist_drivers is None ++ ++ def test_paths_has_run_dir_attribute(self, previous_obj_pkl): ++ assert previous_obj_pkl.paths.run_dir is not None +--- /dev/null ++++ b/tests/data/old_pickles/trusty-14.04.1-0.7.5.pkl +@@ -0,0 +1,504 @@ ++ccopy_reg ++_reconstructor ++p1 ++(ccloudinit.sources.DataSourceNoCloud ++DataSourceNoCloudNet ++p2 ++c__builtin__ ++object ++p3 ++NtRp4 ++(dp5 ++S'paths' ++p6 ++g1 ++(ccloudinit.helpers ++Paths ++p7 ++g3 ++NtRp8 ++(dp9 ++S'lookups' ++p10 ++(dp11 ++S'cloud_config' ++p12 ++S'cloud-config.txt' ++p13 ++sS'userdata' ++p14 ++S'user-data.txt.i' ++p15 ++sS'vendordata' ++p16 ++S'vendor-data.txt.i' ++p17 ++sS'userdata_raw' ++p18 ++S'user-data.txt' ++p19 ++sS'boothooks' ++p20 ++g20 ++sS'scripts' ++p21 ++g21 ++sS'sem' ++p22 ++g22 ++sS'data' ++p23 ++g23 ++sS'vendor_scripts' ++p24 ++S'scripts/vendor' ++p25 ++sS'handlers' ++p26 ++g26 ++sS'obj_pkl' ++p27 ++S'obj.pkl' ++p28 ++sS'vendordata_raw' ++p29 ++S'vendor-data.txt' ++p30 ++sS'vendor_cloud_config' ++p31 ++S'vendor-cloud-config.txt' ++p32 ++ssS'template_tpl' ++p33 ++S'/etc/cloud/templates/%s.tmpl' ++p34 ++sS'cfgs' ++p35 ++(dp36 ++S'cloud_dir' ++p37 ++S'/var/lib/cloud/' ++p38 ++sS'templates_dir' ++p39 ++S'/etc/cloud/templates/' ++p40 ++sS'upstart_dir' ++p41 ++S'/etc/init/' ++p42 ++ssS'cloud_dir' ++p43 ++g38 ++sS'datasource' ++p44 ++NsS'upstart_conf_d' ++p45 ++g42 ++sS'boot_finished' ++p46 ++S'/var/lib/cloud/instance/boot-finished' ++p47 ++sS'instance_link' ++p48 ++S'/var/lib/cloud/instance' ++p49 ++sS'seed_dir' ++p50 ++S'/var/lib/cloud/seed' ++p51 ++sbsS'supported_seed_starts' ++p52 ++(S'http://' ++S'https://' ++S'ftp://' ++tp53 ++sS'sys_cfg' ++p54 ++(dp55 ++S'output' ++p56 ++(dp57 ++S'all' ++p58 ++S'| tee -a /var/log/cloud-init-output.log' ++p59 ++ssS'users' ++p60 ++(lp61 ++S'default' ++p62 ++asS'def_log_file' ++p63 ++S'/var/log/cloud-init.log' ++p64 ++sS'cloud_final_modules' ++p65 ++(lp66 ++S'rightscale_userdata' ++p67 ++aS'scripts-vendor' ++p68 ++aS'scripts-per-once' ++p69 ++aS'scripts-per-boot' ++p70 ++aS'scripts-per-instance' ++p71 ++aS'scripts-user' ++p72 ++aS'ssh-authkey-fingerprints' ++p73 ++aS'keys-to-console' ++p74 ++aS'phone-home' ++p75 ++aS'final-message' ++p76 ++aS'power-state-change' ++p77 ++asS'disable_root' ++p78 ++I01 ++sS'syslog_fix_perms' ++p79 ++S'syslog:adm' ++p80 ++sS'log_cfgs' ++p81 ++(lp82 ++(lp83 ++S'[loggers]\nkeys=root,cloudinit\n\n[handlers]\nkeys=consoleHandler,cloudLogHandler\n\n[formatters]\nkeys=simpleFormatter,arg0Formatter\n\n[logger_root]\nlevel=DEBUG\nhandlers=consoleHandler,cloudLogHandler\n\n[logger_cloudinit]\nlevel=DEBUG\nqualname=cloudinit\nhandlers=\npropagate=1\n\n[handler_consoleHandler]\nclass=StreamHandler\nlevel=WARNING\nformatter=arg0Formatter\nargs=(sys.stderr,)\n\n[formatter_arg0Formatter]\nformat=%(asctime)s - %(filename)s[%(levelname)s]: %(message)s\n\n[formatter_simpleFormatter]\nformat=[CLOUDINIT] %(filename)s[%(levelname)s]: %(message)s\n' ++p84 ++aS'[handler_cloudLogHandler]\nclass=handlers.SysLogHandler\nlevel=DEBUG\nformatter=simpleFormatter\nargs=("/dev/log", handlers.SysLogHandler.LOG_USER)\n' ++p85 ++aa(lp86 ++g84 ++aS"[handler_cloudLogHandler]\nclass=FileHandler\nlevel=DEBUG\nformatter=arg0Formatter\nargs=('/var/log/cloud-init.log',)\n" ++p87 ++aasS'cloud_init_modules' ++p88 ++(lp89 ++S'migrator' ++p90 ++aS'seed_random' ++p91 ++aS'bootcmd' ++p92 ++aS'write-files' ++p93 ++aS'growpart' ++p94 ++aS'resizefs' ++p95 ++aS'set_hostname' ++p96 ++aS'update_hostname' ++p97 ++aS'update_etc_hosts' ++p98 ++aS'ca-certs' ++p99 ++aS'rsyslog' ++p100 ++aS'users-groups' ++p101 ++aS'ssh' ++p102 ++asS'preserve_hostname' ++p103 ++I00 ++sS'_log' ++p104 ++(lp105 ++g84 ++ag87 ++ag85 ++asS'datasource_list' ++p106 ++(lp107 ++S'NoCloud' ++p108 ++aS'ConfigDrive' ++p109 ++aS'OpenNebula' ++p110 ++aS'Azure' ++p111 ++aS'AltCloud' ++p112 ++aS'OVF' ++p113 ++aS'MAAS' ++p114 ++aS'GCE' ++p115 ++aS'OpenStack' ++p116 ++aS'CloudSigma' ++p117 ++aS'Ec2' ++p118 ++aS'CloudStack' ++p119 ++aS'SmartOS' ++p120 ++aS'None' ++p121 ++asS'vendor_data' ++p122 ++(dp123 ++S'prefix' ++p124 ++(lp125 ++sS'enabled' ++p126 ++I01 ++ssS'cloud_config_modules' ++p127 ++(lp128 ++S'emit_upstart' ++p129 ++aS'disk_setup' ++p130 ++aS'mounts' ++p131 ++aS'ssh-import-id' ++p132 ++aS'locale' ++p133 ++aS'set-passwords' ++p134 ++aS'grub-dpkg' ++p135 ++aS'apt-pipelining' ++p136 ++aS'apt-configure' ++p137 ++aS'package-update-upgrade-install' ++p138 ++aS'landscape' ++p139 ++aS'timezone' ++p140 ++aS'puppet' ++p141 ++aS'chef' ++p142 ++aS'salt-minion' ++p143 ++aS'mcollective' ++p144 ++aS'disable-ec2-metadata' ++p145 ++aS'runcmd' ++p146 ++aS'byobu' ++p147 ++assg14 ++Nsg16 ++Nsg18 ++S'#cloud-config\n{}\n\n' ++p148 ++sg29 ++S'#cloud-config\n{}\n\n' ++p149 ++sS'dsmode' ++p150 ++S'net' ++p151 ++sS'seed' ++p152 ++S'/var/lib/cloud/seed/nocloud-net' ++p153 ++sS'cmdline_id' ++p154 ++S'ds=nocloud-net' ++p155 ++sS'ud_proc' ++p156 ++g1 ++(ccloudinit.user_data ++UserDataProcessor ++p157 ++g3 ++NtRp158 ++(dp159 ++g6 ++g8 ++sS'ssl_details' ++p160 ++(dp161 ++sbsg50 ++g153 ++sS'ds_cfg' ++p162 ++(dp163 ++sS'distro' ++p164 ++g1 ++(ccloudinit.distros.ubuntu ++Distro ++p165 ++g3 ++NtRp166 ++(dp167 ++S'osfamily' ++p168 ++S'debian' ++p169 ++sS'_paths' ++p170 ++g8 ++sS'name' ++p171 ++S'ubuntu' ++p172 ++sS'_runner' ++p173 ++g1 ++(ccloudinit.helpers ++Runners ++p174 ++g3 ++NtRp175 ++(dp176 ++g6 ++g8 ++sS'sems' ++p177 ++(dp178 ++sbsS'_cfg' ++p179 ++(dp180 ++S'paths' ++p181 ++(dp182 ++g37 ++g38 ++sg39 ++g40 ++sg41 ++g42 ++ssS'default_user' ++p183 ++(dp184 ++S'shell' ++p185 ++S'/bin/bash' ++p186 ++sS'name' ++p187 ++S'ubuntu' ++p188 ++sS'sudo' ++p189 ++(lp190 ++S'ALL=(ALL) NOPASSWD:ALL' ++p191 ++asS'lock_passwd' ++p192 ++I01 ++sS'gecos' ++p193 ++S'Ubuntu' ++p194 ++sS'groups' ++p195 ++(lp196 ++S'adm' ++p197 ++aS'audio' ++p198 ++aS'cdrom' ++p199 ++aS'dialout' ++p200 ++aS'dip' ++p201 ++aS'floppy' ++p202 ++aS'netdev' ++p203 ++aS'plugdev' ++p204 ++aS'sudo' ++p205 ++aS'video' ++p206 ++assS'package_mirrors' ++p207 ++(lp208 ++(dp209 ++S'arches' ++p210 ++(lp211 ++S'i386' ++p212 ++aS'amd64' ++p213 ++asS'failsafe' ++p214 ++(dp215 ++S'security' ++p216 ++S'http://security.ubuntu.com/ubuntu' ++p217 ++sS'primary' ++p218 ++S'http://archive.ubuntu.com/ubuntu' ++p219 ++ssS'search' ++p220 ++(dp221 ++S'security' ++p222 ++(lp223 ++sS'primary' ++p224 ++(lp225 ++S'http://%(ec2_region)s.ec2.archive.ubuntu.com/ubuntu/' ++p226 ++aS'http://%(availability_zone)s.clouds.archive.ubuntu.com/ubuntu/' ++p227 ++aS'http://%(region)s.clouds.archive.ubuntu.com/ubuntu/' ++p228 ++assa(dp229 ++S'arches' ++p230 ++(lp231 ++S'armhf' ++p232 ++aS'armel' ++p233 ++aS'default' ++p234 ++asS'failsafe' ++p235 ++(dp236 ++S'security' ++p237 ++S'http://ports.ubuntu.com/ubuntu-ports' ++p238 ++sS'primary' ++p239 ++S'http://ports.ubuntu.com/ubuntu-ports' ++p240 ++ssasS'ssh_svcname' ++p241 ++S'ssh' ++p242 ++ssbsS'metadata' ++p243 ++(dp244 ++g150 ++g151 ++sS'local-hostname' ++p245 ++S'trusty-upgrade2' ++p246 ++sS'instance-id' ++p247 ++S'trusty-upgrade2' ++p248 ++ssb. +\ No newline at end of file diff --git a/debian/patches/cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 b/debian/patches/cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 new file mode 100644 index 00000000000..7bd48fe7fec --- /dev/null +++ b/debian/patches/cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 @@ -0,0 +1,147 @@ +From d132356cc361abef2d90d4073438f3ab759d5964 Mon Sep 17 00:00:00 2001 +From: James Falcon +Date: Mon, 19 Apr 2021 11:31:28 -0500 +Subject: [PATCH] fix error on upgrade caused by new vendordata2 attributes + (#869) + +In #777, we added 'vendordata2' and 'vendordata2_raw' attributes to +the DataSource class, but didn't use the upgrade framework to deal +with an unpickle after upgrade. This commit adds the necessary +upgrade code. + +Additionally, added a smaller-scope upgrade test to our integration +tests that will be run on every CI run so we catch these issues +immediately in the future. + +LP: #1922739 +--- + cloudinit/sources/__init__.py | 12 +++++++++++- + cloudinit/tests/test_upgrade.py | 4 ++++ + tests/integration_tests/clouds.py | 4 ++-- + tests/integration_tests/test_upgrade.py | 25 ++++++++++++++++++++++++- + 4 files changed, 41 insertions(+), 4 deletions(-) + +--- a/cloudinit/sources/__init__.py ++++ b/cloudinit/sources/__init__.py +@@ -24,6 +24,7 @@ from cloudinit import util + from cloudinit.atomic_helper import write_json + from cloudinit.event import EventType + from cloudinit.filters import launch_index ++from cloudinit.persistence import CloudInitPickleMixin + from cloudinit.reporting import events + + DSMODE_DISABLED = "disabled" +@@ -134,7 +135,7 @@ URLParams = namedtuple( + 'URLParms', ['max_wait_seconds', 'timeout_seconds', 'num_retries']) + + +-class DataSource(metaclass=abc.ABCMeta): ++class DataSource(CloudInitPickleMixin, metaclass=abc.ABCMeta): + + dsmode = DSMODE_NETWORK + default_locale = 'en_US.UTF-8' +@@ -196,6 +197,8 @@ class DataSource(metaclass=abc.ABCMeta): + # non-root users + sensitive_metadata_keys = ('merged_cfg', 'security-credentials',) + ++ _ci_pkl_version = 1 ++ + def __init__(self, sys_cfg, distro, paths, ud_proc=None): + self.sys_cfg = sys_cfg + self.distro = distro +@@ -218,6 +221,13 @@ class DataSource(metaclass=abc.ABCMeta): + else: + self.ud_proc = ud_proc + ++ def _unpickle(self, ci_pkl_version: int) -> None: ++ """Perform deserialization fixes for Paths.""" ++ if not hasattr(self, 'vendordata2'): ++ self.vendordata2 = None ++ if not hasattr(self, 'vendordata2_raw'): ++ self.vendordata2_raw = None ++ + def __str__(self): + return type_utils.obj_name(self) + +--- a/cloudinit/tests/test_upgrade.py ++++ b/cloudinit/tests/test_upgrade.py +@@ -46,3 +46,7 @@ class TestUpgrade: + + def test_paths_has_run_dir_attribute(self, previous_obj_pkl): + assert previous_obj_pkl.paths.run_dir is not None ++ ++ def test_vendordata_exists(self, previous_obj_pkl): ++ assert previous_obj_pkl.vendordata2 is None ++ assert previous_obj_pkl.vendordata2_raw is None +--- a/tests/integration_tests/clouds.py ++++ b/tests/integration_tests/clouds.py +@@ -110,14 +110,14 @@ class IntegrationCloud(ABC): + # Even if we're using the default key, it may still have a + # different name in the clouds, so we need to set it separately. + self.cloud_instance.key_pair.name = settings.KEYPAIR_NAME +- self._released_image_id = self._get_initial_image() ++ self.released_image_id = self._get_initial_image() + self.snapshot_id = None + + @property + def image_id(self): + if self.snapshot_id: + return self.snapshot_id +- return self._released_image_id ++ return self.released_image_id + + def emit_settings_to_log(self) -> None: + log.info( +--- a/tests/integration_tests/test_upgrade.py ++++ b/tests/integration_tests/test_upgrade.py +@@ -1,4 +1,5 @@ + import logging ++import os + import pytest + import time + from pathlib import Path +@@ -8,6 +9,8 @@ from tests.integration_tests.conftest im + get_validated_source, + session_start_time, + ) ++from tests.integration_tests.instances import CloudInitSource ++ + + log = logging.getLogger('integration_testing') + +@@ -63,7 +66,7 @@ def test_upgrade(session_cloud: Integrat + return # type checking doesn't understand that skip raises + + launch_kwargs = { +- 'image_id': session_cloud._get_initial_image(), ++ 'image_id': session_cloud.released_image_id, + } + + image = ImageSpecification.from_os_image() +@@ -93,6 +96,26 @@ def test_upgrade(session_cloud: Integrat + instance.install_new_cloud_init(source, take_snapshot=False) + instance.execute('hostname something-else') + _restart(instance) ++ assert instance.execute('cloud-init status --wait --long').ok + _output_to_compare(instance, after_path, netcfg_path) + + log.info('Wrote upgrade test logs to %s and %s', before_path, after_path) ++ ++ ++@pytest.mark.ci ++@pytest.mark.ubuntu ++def test_upgrade_package(session_cloud: IntegrationCloud): ++ if get_validated_source(session_cloud) != CloudInitSource.DEB_PACKAGE: ++ not_run_message = 'Test only supports upgrading to build deb' ++ if os.environ.get('TRAVIS'): ++ # If this isn't running on CI, we should know ++ pytest.fail(not_run_message) ++ else: ++ pytest.skip(not_run_message) ++ ++ launch_kwargs = {'image_id': session_cloud.released_image_id} ++ ++ with session_cloud.launch(launch_kwargs=launch_kwargs) as instance: ++ instance.install_deb() ++ instance.restart() ++ assert instance.execute('cloud-init status --wait --long').ok diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 00000000000..f3756ea3d8f --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 From adc1d729f47ee3d60962a728faf45743e3223eb8 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 19 Apr 2021 13:41:35 -0500 Subject: [PATCH 0482/1174] cherry pick d132356c LP: #1922739 --- debian/patches/series | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/patches/series b/debian/patches/series index f3756ea3d8f..70ce620b657 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,2 @@ cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 +cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 From ffa9734395d40cc0a0f0da0d8874ccdb41b26129 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 19 Apr 2021 13:41:35 -0500 Subject: [PATCH 0483/1174] update changelog --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index a46efadd423..008420deb4b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (21.1-19-gbad84ad4-0ubuntu3) hirsute; urgency=medium + + * cherry-pick 83f6bbfb: Fix unpickle for source paths missing run_dir + (#863) (LP: #1899299) + * cherry-pick d132356c: fix error on upgrade caused by new vendordata2 + attributes (LP: #1922739) + + -- James Falcon Mon, 19 Apr 2021 13:41:21 -0500 + cloud-init (21.1-19-gbad84ad4-0ubuntu2) hirsute; urgency=medium * debian/cloud-init.templates: enable UpCloud by default From 4560240d5ff12ab014eba5d9ecda6396e9c86201 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 27 Apr 2021 10:39:54 -0400 Subject: [PATCH 0484/1174] Add Vultr to default datasource_list. (#879) Vultr support was added under #827. This enables it by default in the debian package. --- debian/cloud-init.templates | 6 +++--- debian/po/templates.pot | 8 +++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index 2ff1bceb531..13f6df8db3e 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, None: Failsafe datasource +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, Vultr, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, Vultr, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, Vultr: Vultr Cloud, 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. diff --git a/debian/po/templates.pot b/debian/po/templates.pot index e88025ef6c3..ac7b10a61af 100644 --- a/debian/po/templates.pot +++ b/debian/po/templates.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: cloud-init\n" "Report-Msgid-Bugs-To: cloud-init@packages.debian.org\n" -"POT-Creation-Date: 2021-03-22 14:08-0500\n" +"POT-Creation-Date: 2021-04-20 10:14-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -155,6 +155,12 @@ msgstr "" msgid "UpCloud: UpCloud" msgstr "" +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "Vultr: Vultr" +msgstr "" + #. Type: multiselect #. Choices #: ../cloud-init.templates:1001 From 7058c7429ccdcc4b9dee6d96b9c59a08d080083f Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 6 May 2021 08:36:58 -0500 Subject: [PATCH 0485/1174] drop cherry picks included in upstream/master commit 13877549 drop the following cherry picks: cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 --- ...ickle-for-source-paths-missing-run_dir-863 | 576 ------------------ ...error-on-upgrade-caused-by-new-vendordata2 | 147 ----- debian/patches/series | 2 - 3 files changed, 725 deletions(-) delete mode 100644 debian/patches/cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 delete mode 100644 debian/patches/cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 delete mode 100644 debian/patches/series diff --git a/debian/patches/cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 b/debian/patches/cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 deleted file mode 100644 index d80de236aaa..00000000000 --- a/debian/patches/cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 +++ /dev/null @@ -1,576 +0,0 @@ -From 83f6bbfbe5b924be61a3c098f4202377d69c8947 Mon Sep 17 00:00:00 2001 -From: lucasmoura -Date: Mon, 12 Apr 2021 13:22:22 -0300 -Subject: [PATCH] Fix unpickle for source paths missing run_dir (#863) - -On the datasource class, we require the use of paths.run_dir to -perform some operations. On older cloud-init version, the -Paths class does not have the run_dir attribute. To fix that, -we are now manually adding that attribute in the Paths -object if doesn't exist in the unpickle operation. - -LP: #1899299 ---- - cloudinit/helpers.py | 17 +- - cloudinit/tests/test_upgrade.py | 3 + - .../data/old_pickles/trusty-14.04.1-0.7.5.pkl | 504 ++++++++++++++++++ - 3 files changed, 523 insertions(+), 1 deletion(-) - create mode 100644 tests/data/old_pickles/trusty-14.04.1-0.7.5.pkl - ---- a/cloudinit/helpers.py -+++ b/cloudinit/helpers.py -@@ -20,6 +20,7 @@ from cloudinit.settings import (PER_INST - - from cloudinit import log as logging - from cloudinit import type_utils -+from cloudinit import persistence - from cloudinit import util - - LOG = logging.getLogger(__name__) -@@ -317,7 +318,9 @@ class ContentHandlers(object): - return list(self.registered.items()) - - --class Paths(object): -+class Paths(persistence.CloudInitPickleMixin): -+ _ci_pkl_version = 1 -+ - def __init__(self, path_cfgs, ds=None): - self.cfgs = path_cfgs - # Populate all the initial paths -@@ -354,6 +357,18 @@ class Paths(object): - # Set when a datasource becomes active - self.datasource = ds - -+ def _unpickle(self, ci_pkl_version: int) -> None: -+ """Perform deserialization fixes for Paths.""" -+ if not hasattr(self, "run_dir"): -+ # On older versions of cloud-init the Paths class do not -+ # have the run_dir attribute. This is problematic because -+ # when loading the pickle object on newer versions of cloud-init -+ # we will rely on this attribute. To fix that, we are now -+ # manually adding that attribute here. -+ self.run_dir = Paths( -+ path_cfgs=self.cfgs, -+ ds=self.datasource).run_dir -+ - # get_ipath_cur: get the current instance path for an item - def get_ipath_cur(self, name=None): - return self._get_path(self.instance_link, name) ---- a/cloudinit/tests/test_upgrade.py -+++ b/cloudinit/tests/test_upgrade.py -@@ -43,3 +43,6 @@ class TestUpgrade: - def test_blacklist_drivers_set_on_networking(self, previous_obj_pkl): - """We always expect Networking.blacklist_drivers to be initialised.""" - assert previous_obj_pkl.distro.networking.blacklist_drivers is None -+ -+ def test_paths_has_run_dir_attribute(self, previous_obj_pkl): -+ assert previous_obj_pkl.paths.run_dir is not None ---- /dev/null -+++ b/tests/data/old_pickles/trusty-14.04.1-0.7.5.pkl -@@ -0,0 +1,504 @@ -+ccopy_reg -+_reconstructor -+p1 -+(ccloudinit.sources.DataSourceNoCloud -+DataSourceNoCloudNet -+p2 -+c__builtin__ -+object -+p3 -+NtRp4 -+(dp5 -+S'paths' -+p6 -+g1 -+(ccloudinit.helpers -+Paths -+p7 -+g3 -+NtRp8 -+(dp9 -+S'lookups' -+p10 -+(dp11 -+S'cloud_config' -+p12 -+S'cloud-config.txt' -+p13 -+sS'userdata' -+p14 -+S'user-data.txt.i' -+p15 -+sS'vendordata' -+p16 -+S'vendor-data.txt.i' -+p17 -+sS'userdata_raw' -+p18 -+S'user-data.txt' -+p19 -+sS'boothooks' -+p20 -+g20 -+sS'scripts' -+p21 -+g21 -+sS'sem' -+p22 -+g22 -+sS'data' -+p23 -+g23 -+sS'vendor_scripts' -+p24 -+S'scripts/vendor' -+p25 -+sS'handlers' -+p26 -+g26 -+sS'obj_pkl' -+p27 -+S'obj.pkl' -+p28 -+sS'vendordata_raw' -+p29 -+S'vendor-data.txt' -+p30 -+sS'vendor_cloud_config' -+p31 -+S'vendor-cloud-config.txt' -+p32 -+ssS'template_tpl' -+p33 -+S'/etc/cloud/templates/%s.tmpl' -+p34 -+sS'cfgs' -+p35 -+(dp36 -+S'cloud_dir' -+p37 -+S'/var/lib/cloud/' -+p38 -+sS'templates_dir' -+p39 -+S'/etc/cloud/templates/' -+p40 -+sS'upstart_dir' -+p41 -+S'/etc/init/' -+p42 -+ssS'cloud_dir' -+p43 -+g38 -+sS'datasource' -+p44 -+NsS'upstart_conf_d' -+p45 -+g42 -+sS'boot_finished' -+p46 -+S'/var/lib/cloud/instance/boot-finished' -+p47 -+sS'instance_link' -+p48 -+S'/var/lib/cloud/instance' -+p49 -+sS'seed_dir' -+p50 -+S'/var/lib/cloud/seed' -+p51 -+sbsS'supported_seed_starts' -+p52 -+(S'http://' -+S'https://' -+S'ftp://' -+tp53 -+sS'sys_cfg' -+p54 -+(dp55 -+S'output' -+p56 -+(dp57 -+S'all' -+p58 -+S'| tee -a /var/log/cloud-init-output.log' -+p59 -+ssS'users' -+p60 -+(lp61 -+S'default' -+p62 -+asS'def_log_file' -+p63 -+S'/var/log/cloud-init.log' -+p64 -+sS'cloud_final_modules' -+p65 -+(lp66 -+S'rightscale_userdata' -+p67 -+aS'scripts-vendor' -+p68 -+aS'scripts-per-once' -+p69 -+aS'scripts-per-boot' -+p70 -+aS'scripts-per-instance' -+p71 -+aS'scripts-user' -+p72 -+aS'ssh-authkey-fingerprints' -+p73 -+aS'keys-to-console' -+p74 -+aS'phone-home' -+p75 -+aS'final-message' -+p76 -+aS'power-state-change' -+p77 -+asS'disable_root' -+p78 -+I01 -+sS'syslog_fix_perms' -+p79 -+S'syslog:adm' -+p80 -+sS'log_cfgs' -+p81 -+(lp82 -+(lp83 -+S'[loggers]\nkeys=root,cloudinit\n\n[handlers]\nkeys=consoleHandler,cloudLogHandler\n\n[formatters]\nkeys=simpleFormatter,arg0Formatter\n\n[logger_root]\nlevel=DEBUG\nhandlers=consoleHandler,cloudLogHandler\n\n[logger_cloudinit]\nlevel=DEBUG\nqualname=cloudinit\nhandlers=\npropagate=1\n\n[handler_consoleHandler]\nclass=StreamHandler\nlevel=WARNING\nformatter=arg0Formatter\nargs=(sys.stderr,)\n\n[formatter_arg0Formatter]\nformat=%(asctime)s - %(filename)s[%(levelname)s]: %(message)s\n\n[formatter_simpleFormatter]\nformat=[CLOUDINIT] %(filename)s[%(levelname)s]: %(message)s\n' -+p84 -+aS'[handler_cloudLogHandler]\nclass=handlers.SysLogHandler\nlevel=DEBUG\nformatter=simpleFormatter\nargs=("/dev/log", handlers.SysLogHandler.LOG_USER)\n' -+p85 -+aa(lp86 -+g84 -+aS"[handler_cloudLogHandler]\nclass=FileHandler\nlevel=DEBUG\nformatter=arg0Formatter\nargs=('/var/log/cloud-init.log',)\n" -+p87 -+aasS'cloud_init_modules' -+p88 -+(lp89 -+S'migrator' -+p90 -+aS'seed_random' -+p91 -+aS'bootcmd' -+p92 -+aS'write-files' -+p93 -+aS'growpart' -+p94 -+aS'resizefs' -+p95 -+aS'set_hostname' -+p96 -+aS'update_hostname' -+p97 -+aS'update_etc_hosts' -+p98 -+aS'ca-certs' -+p99 -+aS'rsyslog' -+p100 -+aS'users-groups' -+p101 -+aS'ssh' -+p102 -+asS'preserve_hostname' -+p103 -+I00 -+sS'_log' -+p104 -+(lp105 -+g84 -+ag87 -+ag85 -+asS'datasource_list' -+p106 -+(lp107 -+S'NoCloud' -+p108 -+aS'ConfigDrive' -+p109 -+aS'OpenNebula' -+p110 -+aS'Azure' -+p111 -+aS'AltCloud' -+p112 -+aS'OVF' -+p113 -+aS'MAAS' -+p114 -+aS'GCE' -+p115 -+aS'OpenStack' -+p116 -+aS'CloudSigma' -+p117 -+aS'Ec2' -+p118 -+aS'CloudStack' -+p119 -+aS'SmartOS' -+p120 -+aS'None' -+p121 -+asS'vendor_data' -+p122 -+(dp123 -+S'prefix' -+p124 -+(lp125 -+sS'enabled' -+p126 -+I01 -+ssS'cloud_config_modules' -+p127 -+(lp128 -+S'emit_upstart' -+p129 -+aS'disk_setup' -+p130 -+aS'mounts' -+p131 -+aS'ssh-import-id' -+p132 -+aS'locale' -+p133 -+aS'set-passwords' -+p134 -+aS'grub-dpkg' -+p135 -+aS'apt-pipelining' -+p136 -+aS'apt-configure' -+p137 -+aS'package-update-upgrade-install' -+p138 -+aS'landscape' -+p139 -+aS'timezone' -+p140 -+aS'puppet' -+p141 -+aS'chef' -+p142 -+aS'salt-minion' -+p143 -+aS'mcollective' -+p144 -+aS'disable-ec2-metadata' -+p145 -+aS'runcmd' -+p146 -+aS'byobu' -+p147 -+assg14 -+Nsg16 -+Nsg18 -+S'#cloud-config\n{}\n\n' -+p148 -+sg29 -+S'#cloud-config\n{}\n\n' -+p149 -+sS'dsmode' -+p150 -+S'net' -+p151 -+sS'seed' -+p152 -+S'/var/lib/cloud/seed/nocloud-net' -+p153 -+sS'cmdline_id' -+p154 -+S'ds=nocloud-net' -+p155 -+sS'ud_proc' -+p156 -+g1 -+(ccloudinit.user_data -+UserDataProcessor -+p157 -+g3 -+NtRp158 -+(dp159 -+g6 -+g8 -+sS'ssl_details' -+p160 -+(dp161 -+sbsg50 -+g153 -+sS'ds_cfg' -+p162 -+(dp163 -+sS'distro' -+p164 -+g1 -+(ccloudinit.distros.ubuntu -+Distro -+p165 -+g3 -+NtRp166 -+(dp167 -+S'osfamily' -+p168 -+S'debian' -+p169 -+sS'_paths' -+p170 -+g8 -+sS'name' -+p171 -+S'ubuntu' -+p172 -+sS'_runner' -+p173 -+g1 -+(ccloudinit.helpers -+Runners -+p174 -+g3 -+NtRp175 -+(dp176 -+g6 -+g8 -+sS'sems' -+p177 -+(dp178 -+sbsS'_cfg' -+p179 -+(dp180 -+S'paths' -+p181 -+(dp182 -+g37 -+g38 -+sg39 -+g40 -+sg41 -+g42 -+ssS'default_user' -+p183 -+(dp184 -+S'shell' -+p185 -+S'/bin/bash' -+p186 -+sS'name' -+p187 -+S'ubuntu' -+p188 -+sS'sudo' -+p189 -+(lp190 -+S'ALL=(ALL) NOPASSWD:ALL' -+p191 -+asS'lock_passwd' -+p192 -+I01 -+sS'gecos' -+p193 -+S'Ubuntu' -+p194 -+sS'groups' -+p195 -+(lp196 -+S'adm' -+p197 -+aS'audio' -+p198 -+aS'cdrom' -+p199 -+aS'dialout' -+p200 -+aS'dip' -+p201 -+aS'floppy' -+p202 -+aS'netdev' -+p203 -+aS'plugdev' -+p204 -+aS'sudo' -+p205 -+aS'video' -+p206 -+assS'package_mirrors' -+p207 -+(lp208 -+(dp209 -+S'arches' -+p210 -+(lp211 -+S'i386' -+p212 -+aS'amd64' -+p213 -+asS'failsafe' -+p214 -+(dp215 -+S'security' -+p216 -+S'http://security.ubuntu.com/ubuntu' -+p217 -+sS'primary' -+p218 -+S'http://archive.ubuntu.com/ubuntu' -+p219 -+ssS'search' -+p220 -+(dp221 -+S'security' -+p222 -+(lp223 -+sS'primary' -+p224 -+(lp225 -+S'http://%(ec2_region)s.ec2.archive.ubuntu.com/ubuntu/' -+p226 -+aS'http://%(availability_zone)s.clouds.archive.ubuntu.com/ubuntu/' -+p227 -+aS'http://%(region)s.clouds.archive.ubuntu.com/ubuntu/' -+p228 -+assa(dp229 -+S'arches' -+p230 -+(lp231 -+S'armhf' -+p232 -+aS'armel' -+p233 -+aS'default' -+p234 -+asS'failsafe' -+p235 -+(dp236 -+S'security' -+p237 -+S'http://ports.ubuntu.com/ubuntu-ports' -+p238 -+sS'primary' -+p239 -+S'http://ports.ubuntu.com/ubuntu-ports' -+p240 -+ssasS'ssh_svcname' -+p241 -+S'ssh' -+p242 -+ssbsS'metadata' -+p243 -+(dp244 -+g150 -+g151 -+sS'local-hostname' -+p245 -+S'trusty-upgrade2' -+p246 -+sS'instance-id' -+p247 -+S'trusty-upgrade2' -+p248 -+ssb. -\ No newline at end of file diff --git a/debian/patches/cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 b/debian/patches/cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 deleted file mode 100644 index 7bd48fe7fec..00000000000 --- a/debian/patches/cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 +++ /dev/null @@ -1,147 +0,0 @@ -From d132356cc361abef2d90d4073438f3ab759d5964 Mon Sep 17 00:00:00 2001 -From: James Falcon -Date: Mon, 19 Apr 2021 11:31:28 -0500 -Subject: [PATCH] fix error on upgrade caused by new vendordata2 attributes - (#869) - -In #777, we added 'vendordata2' and 'vendordata2_raw' attributes to -the DataSource class, but didn't use the upgrade framework to deal -with an unpickle after upgrade. This commit adds the necessary -upgrade code. - -Additionally, added a smaller-scope upgrade test to our integration -tests that will be run on every CI run so we catch these issues -immediately in the future. - -LP: #1922739 ---- - cloudinit/sources/__init__.py | 12 +++++++++++- - cloudinit/tests/test_upgrade.py | 4 ++++ - tests/integration_tests/clouds.py | 4 ++-- - tests/integration_tests/test_upgrade.py | 25 ++++++++++++++++++++++++- - 4 files changed, 41 insertions(+), 4 deletions(-) - ---- a/cloudinit/sources/__init__.py -+++ b/cloudinit/sources/__init__.py -@@ -24,6 +24,7 @@ from cloudinit import util - from cloudinit.atomic_helper import write_json - from cloudinit.event import EventType - from cloudinit.filters import launch_index -+from cloudinit.persistence import CloudInitPickleMixin - from cloudinit.reporting import events - - DSMODE_DISABLED = "disabled" -@@ -134,7 +135,7 @@ URLParams = namedtuple( - 'URLParms', ['max_wait_seconds', 'timeout_seconds', 'num_retries']) - - --class DataSource(metaclass=abc.ABCMeta): -+class DataSource(CloudInitPickleMixin, metaclass=abc.ABCMeta): - - dsmode = DSMODE_NETWORK - default_locale = 'en_US.UTF-8' -@@ -196,6 +197,8 @@ class DataSource(metaclass=abc.ABCMeta): - # non-root users - sensitive_metadata_keys = ('merged_cfg', 'security-credentials',) - -+ _ci_pkl_version = 1 -+ - def __init__(self, sys_cfg, distro, paths, ud_proc=None): - self.sys_cfg = sys_cfg - self.distro = distro -@@ -218,6 +221,13 @@ class DataSource(metaclass=abc.ABCMeta): - else: - self.ud_proc = ud_proc - -+ def _unpickle(self, ci_pkl_version: int) -> None: -+ """Perform deserialization fixes for Paths.""" -+ if not hasattr(self, 'vendordata2'): -+ self.vendordata2 = None -+ if not hasattr(self, 'vendordata2_raw'): -+ self.vendordata2_raw = None -+ - def __str__(self): - return type_utils.obj_name(self) - ---- a/cloudinit/tests/test_upgrade.py -+++ b/cloudinit/tests/test_upgrade.py -@@ -46,3 +46,7 @@ class TestUpgrade: - - def test_paths_has_run_dir_attribute(self, previous_obj_pkl): - assert previous_obj_pkl.paths.run_dir is not None -+ -+ def test_vendordata_exists(self, previous_obj_pkl): -+ assert previous_obj_pkl.vendordata2 is None -+ assert previous_obj_pkl.vendordata2_raw is None ---- a/tests/integration_tests/clouds.py -+++ b/tests/integration_tests/clouds.py -@@ -110,14 +110,14 @@ class IntegrationCloud(ABC): - # Even if we're using the default key, it may still have a - # different name in the clouds, so we need to set it separately. - self.cloud_instance.key_pair.name = settings.KEYPAIR_NAME -- self._released_image_id = self._get_initial_image() -+ self.released_image_id = self._get_initial_image() - self.snapshot_id = None - - @property - def image_id(self): - if self.snapshot_id: - return self.snapshot_id -- return self._released_image_id -+ return self.released_image_id - - def emit_settings_to_log(self) -> None: - log.info( ---- a/tests/integration_tests/test_upgrade.py -+++ b/tests/integration_tests/test_upgrade.py -@@ -1,4 +1,5 @@ - import logging -+import os - import pytest - import time - from pathlib import Path -@@ -8,6 +9,8 @@ from tests.integration_tests.conftest im - get_validated_source, - session_start_time, - ) -+from tests.integration_tests.instances import CloudInitSource -+ - - log = logging.getLogger('integration_testing') - -@@ -63,7 +66,7 @@ def test_upgrade(session_cloud: Integrat - return # type checking doesn't understand that skip raises - - launch_kwargs = { -- 'image_id': session_cloud._get_initial_image(), -+ 'image_id': session_cloud.released_image_id, - } - - image = ImageSpecification.from_os_image() -@@ -93,6 +96,26 @@ def test_upgrade(session_cloud: Integrat - instance.install_new_cloud_init(source, take_snapshot=False) - instance.execute('hostname something-else') - _restart(instance) -+ assert instance.execute('cloud-init status --wait --long').ok - _output_to_compare(instance, after_path, netcfg_path) - - log.info('Wrote upgrade test logs to %s and %s', before_path, after_path) -+ -+ -+@pytest.mark.ci -+@pytest.mark.ubuntu -+def test_upgrade_package(session_cloud: IntegrationCloud): -+ if get_validated_source(session_cloud) != CloudInitSource.DEB_PACKAGE: -+ not_run_message = 'Test only supports upgrading to build deb' -+ if os.environ.get('TRAVIS'): -+ # If this isn't running on CI, we should know -+ pytest.fail(not_run_message) -+ else: -+ pytest.skip(not_run_message) -+ -+ launch_kwargs = {'image_id': session_cloud.released_image_id} -+ -+ with session_cloud.launch(launch_kwargs=launch_kwargs) as instance: -+ instance.install_deb() -+ instance.restart() -+ assert instance.execute('cloud-init status --wait --long').ok diff --git a/debian/patches/series b/debian/patches/series deleted file mode 100644 index 70ce620b657..00000000000 --- a/debian/patches/series +++ /dev/null @@ -1,2 +0,0 @@ -cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 -cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 From 3e9ea6cf8496056cb29fe6145d8916ef3b8d5f25 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 6 May 2021 08:36:58 -0500 Subject: [PATCH 0486/1174] update changelog. --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 008420deb4b..6686b37af9b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (21.1-19-gbad84ad4-0ubuntu4) UNRELEASED; urgency=medium + + * drop the following cherry-picks now included: + + cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 + + cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 + + -- James Falcon Thu, 06 May 2021 08:36:58 -0500 + cloud-init (21.1-19-gbad84ad4-0ubuntu3) hirsute; urgency=medium * cherry-pick 83f6bbfb: Fix unpickle for source paths missing run_dir From 5a87ce35f60c324aa3388d2041ed6590da7a19a6 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 11 May 2021 11:53:13 -0500 Subject: [PATCH 0487/1174] update changelog (New upstream snapshot 21.2-3-g899bfaa9). --- debian/changelog | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6686b37af9b..64eae26ea0f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,52 @@ -cloud-init (21.1-19-gbad84ad4-0ubuntu4) UNRELEASED; urgency=medium +cloud-init (21.2-3-g899bfaa9-0ubuntu1) UNRELEASED; urgency=medium * drop the following cherry-picks now included: + cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 + cpick-d132356c-fix-error-on-upgrade-caused-by-new-vendordata2 + * New upstream snapshot. + - Update test characters in substitution unit test (#893) + - cc_disk_setup.py: remove UDEVADM_CMD definition as not used (#886) + [dermotbradley] + - Add AlmaLinux OS support (#872) [Andrew Lukoshko] + - Release 21.2 (#890) (LP: #1927254) + - Add \r\n check for SSH keys in Azure (#889) + - Revert "Add support to resize rootfs if using LVM (#721)" (#887) + (LP: #1922742) + - Add Vultaire as contributor (#881) [Paul Goins] + - Azure: adding support for consuming userdata from IMDS (#884) [Anh Vo] + - test_upgrade: modify test_upgrade_package to run for more sources (#883) + - Fix chef module run failure when chef_license is set (#868) [Ben Hughes] + - Azure: Retry net metadata during nic attach for non-timeout errs (#878) + [aswinrajamannar] + - Azure: Retrieve username and hostname from IMDS (#865) [Thomas Stringer] + - Azure: eject the provisioning iso before reporting ready (#861) [Anh Vo] + - Use `partprobe` to re-read partition table if available (#856) + [Nicolas Bock] (LP: #1920939) + - fix error on upgrade caused by new vendordata2 attributes (#869) + (LP: #1922739) + - add prefer_fqdn_over_hostname config option (#859) + [hamalq] (LP: #1921004) + - Emit dots on travis to avoid timeout (#867) + - doc: Replace remaining references to user-scripts as a config module + (#866) [Ryan Harper] + - azure: Removing ability to invoke walinuxagent (#799) [Anh Vo] + - Add Vultr support (#827) [David Dymko] + - Fix unpickle for source paths missing run_dir (#863) + [lucasmoura] (LP: #1899299) + - sysconfig: use BONDING_MODULE_OPTS on SUSE (#831) [Jens Sandmann] + - bringup_static_routes: fix gateway check (#850) [Petr Fedchenkov] + - add hamalq user (#860) [hamalq] + - Add support to resize rootfs if using LVM (#721) + [Eduardo Otubo] (LP: #1799953) + - Fix mis-detecting network configuration in initramfs cmdline (#844) + (LP: #1919188) + - tools/write-ssh-key-fingerprints: do not display empty header/footer + (#817) [dermotbradley] + - Azure helper: Ensure Azure http handler sleeps between retries (#842) + [Johnson Shi] + - Fix chef apt source example (#826) [timothegenzmer] - -- James Falcon Thu, 06 May 2021 08:36:58 -0500 + -- James Falcon Tue, 11 May 2021 11:52:54 -0500 cloud-init (21.1-19-gbad84ad4-0ubuntu3) hirsute; urgency=medium From 398f7e6eff359e579e768f16d646f22246bc72e9 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 11 May 2021 11:53:35 -0500 Subject: [PATCH 0488/1174] releasing cloud-init version 21.2-3-g899bfaa9-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 64eae26ea0f..4dd0fed8c69 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.2-3-g899bfaa9-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (21.2-3-g899bfaa9-0ubuntu1) impish; urgency=medium * drop the following cherry-picks now included: + cpick-83f6bbfb-Fix-unpickle-for-source-paths-missing-run_dir-863 From d51f54aab8ed1ef1f177acbbe4365f98cffaa086 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Wed, 12 May 2021 12:24:20 -0400 Subject: [PATCH 0489/1174] * d/po/templates.pot: refresh with debconf-updatepo --- debian/changelog | 6 ++++++ debian/po/templates.pot | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4dd0fed8c69..e513d19c2b8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (21.2-3-g899bfaa9-0ubuntu2) impish; urgency=medium + + * d/po/templates.pot: refresh with debconf-updatepo + + -- Daniel Watkins Wed, 12 May 2021 12:23:42 -0400 + cloud-init (21.2-3-g899bfaa9-0ubuntu1) impish; urgency=medium * drop the following cherry-picks now included: diff --git a/debian/po/templates.pot b/debian/po/templates.pot index ac7b10a61af..f43ac24526f 100644 --- a/debian/po/templates.pot +++ b/debian/po/templates.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: cloud-init\n" "Report-Msgid-Bugs-To: cloud-init@packages.debian.org\n" -"POT-Creation-Date: 2021-04-20 10:14-0400\n" +"POT-Creation-Date: 2021-05-12 12:22-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -158,7 +158,7 @@ msgstr "" #. Type: multiselect #. Choices #: ../cloud-init.templates:1001 -msgid "Vultr: Vultr" +msgid "Vultr: Vultr Cloud" msgstr "" #. Type: multiselect From ba2a3b7749f655f6b83f8b2a4f11ff4c1188cebe Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 19 Jul 2021 14:23:26 -0500 Subject: [PATCH 0490/1174] update changelog (New upstream snapshot 21.2-43-g184c836a). --- debian/changelog | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/debian/changelog b/debian/changelog index e513d19c2b8..cfb77d1f48b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,59 @@ +cloud-init (21.2-43-g184c836a-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Initial hotplug support (#936) + - Fix MIME policy failure on python version upgrade (#934) + - run-container: fixup the centos repos baseurls when using http_proxy + (#944) [Paride Legovini] + - tools: add support for building rpms on rocky linux (#940) + - ssh-util: allow cloudinit to merge all ssh keys into a custom user + file, defined in AuthorizedKeysFile (#937) [Emanuele Giuseppe Esposito] + (LP: #1911680) + - VMware: new "allow_raw_data" switch (#939) [xiaofengw-vmware] + - bump pycloudlib version (#935) + - add renanrodrigo as a contributor (#938) [Renan Rodrigo] + - testing: simplify test_upgrade.py (#932) + - freebsd/net_v1 format: read MTU from root (#930) [Gonéri Le Bouder] + - Add new network activators to bring up interfaces (#919) + - Detect a Python version change and clear the cache (#857) + [Robert Schweikert] + - cloud_tests: fix the Impish release name (#931) [Paride Legovini] + - Removed distro specific network code from Photon (#929) [sshedi] + - Add support for VMware PhotonOS (#909) [sshedi] + - cloud_tests: add impish release definition (#927) [Paride Legovini] + - docs: fix stale links rename master branch to main (#926) + - Fix DNS in NetworkState (SC-133) (#923) + - tests: Add 'adhoc' mark for integration tests (#925) + - Fix the spelling of "DigitalOcean" (#924) [Mark Mercado] + - Small Doc Update for ReportEventStack and Test (#920) [Mike Russell] + - Replace deprecated collections.Iterable with abc replacement (#922) + (LP: #1932048) + - testing: OCI availability domain is now required (SC-59) (#910) + - add DragonFlyBSD support (#904) [Gonéri Le Bouder] + - Use instance-data-sensitive.json in jinja templates (SC-117) (#917) + (LP: #1931392) + - doc: Update NoCloud docs stating required files (#918) (LP: #1931577) + - build-on-netbsd: don't pin a specific py3 version (#913) + [Gonéri Le Bouder] + - - Create the log file with 640 permissions (#858) [Robert Schweikert] + - Allow braces to appear in dhclient output (#911) [eb3095] + - Docs: Replace all freenode references with libera (#912) + - openbsd/net: flush the route table on net restart (#908) + [Gonéri Le Bouder] + - Add Rocky Linux support to cloud-init (#906) [Louis Abel] + - Add "esposem" as contributor (#907) [Emanuele Giuseppe Esposito] + - Add integration test for #868 (#901) + - Added support for importing keys via primary/security mirror clauses + (#882) [Paul Goins] (LP: #1925395) + - [examples] config-user-groups expire in the future (#902) + [Geert Stappers] + - BSD: static network, set the mtu (#894) [Gonéri Le Bouder] + - Add integration test for lp-1920939 (#891) + - Fix unit tests breaking from new httpretty version (#903) + - Allow user control over update events (#834) + + -- James Falcon Mon, 19 Jul 2021 14:23:12 -0500 + cloud-init (21.2-3-g899bfaa9-0ubuntu2) impish; urgency=medium * d/po/templates.pot: refresh with debconf-updatepo From c2e8f041515664c83788432a575923e72d2f8da0 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 19 Jul 2021 14:24:30 -0500 Subject: [PATCH 0491/1174] releasing cloud-init version 21.2-43-g184c836a-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index cfb77d1f48b..a7ef2618365 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.2-43-g184c836a-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (21.2-43-g184c836a-0ubuntu1) impish; urgency=medium * New upstream snapshot. - Initial hotplug support (#936) From 868105e9b862e2f3b567fd2805d6ddc7d91328b1 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 12 Aug 2021 11:14:16 -0500 Subject: [PATCH 0492/1174] Add VMware to default datasource_list (#967) VMware support was added under #953. --- debian/cloud-init.templates | 6 +++--- debian/po/templates.pot | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index 13f6df8db3e..75ac07b85d5 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, Vultr, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, Vultr, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, Vultr: Vultr Cloud, None: Failsafe datasource +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, VMware: reads data from guestinfo table or env vars, Vultr: Vultr Cloud, 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. diff --git a/debian/po/templates.pot b/debian/po/templates.pot index f43ac24526f..fb0df2c015f 100644 --- a/debian/po/templates.pot +++ b/debian/po/templates.pot @@ -155,6 +155,12 @@ msgstr "" msgid "UpCloud: UpCloud" msgstr "" +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "VMware: reads data from guestinfo table or env vars" +msgstr "" + #. Type: multiselect #. Choices #: ../cloud-init.templates:1001 From d7b31400e6db68e8df74dfa9c3ebbd6a86c73d66 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 12 Aug 2021 13:56:27 -0400 Subject: [PATCH 0493/1174] d/control: add ependencies on python3-netifaces for vmware datasource (#974) DataSourceVMware now depends on python3-netifaces. Add this to our build and runtime packaging deps. --- debian/control | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/control b/debian/control index 6c739892e8a..8fae4be8272 100644 --- a/debian/control +++ b/debian/control @@ -15,6 +15,7 @@ Build-Depends: debhelper-compat (= 13), python3-jsonpatch, python3-jsonschema, python3-mock, + python3-netifaces, python3-oauthlib, python3-pytest, python3-requests, @@ -35,6 +36,7 @@ Depends: cloud-guest-utils | cloud-utils, netplan.io, procps, python3, + python3-netifaces, python3-requests, python3-serial, ${misc:Depends}, From 08b247c8008bffd764e23396fc4d78898f7baf68 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 13 Aug 2021 15:37:46 -0500 Subject: [PATCH 0494/1174] update changelog (New upstream snapshot 21.2-69-g65607405). --- debian/changelog | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/debian/changelog b/debian/changelog index a7ef2618365..f1a73eb2639 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,46 @@ +cloud-init (21.2-69-g65607405-0ubuntu1) UNRELEASED; urgency=medium + + * d/cloud-init.templates: Add VMware to default datasource_list + * d/control: Add dependencies on python3-netifaces for vmware ds + * New upstream snapshot. + - Only invoke hotplug socket when functionality is enabled (#952) + - Revert unnecesary lcase in ds-identify (#978) [Andrew Kutz] + - cc_resolv_conf: fix typos (#969) [Shreenidhi Shedi] + - Replace broken httpretty tests with mock (SC-324) (#973) + - Azure: Check if interface is up after sleep when trying to bring it up + (#972) [aswinrajamannar] + - Update dscheck_VMware's rpctool check (#970) [Shreenidhi Shedi] + - Azure: Logging the detected interfaces (#968) [Moustafa Moustafa] + - Change netifaces dependency to 0.10.4 (#965) [Andrew Kutz] + - Azure: Limit polling network metadata on connection errors (#961) + [aswinrajamannar] + - Update inconsistent indentation (#962) [Andrew Kutz] + - cc_puppet: support AIO installations and more (#960) [Gabriel Nagy] + - Add Puppet contributors to CLA signers (#964) [Noah Fontes] + - Datasource for VMware (#953) [Andrew Kutz] + - photon: refactor hostname handling and add networkd activator (#958) + [sshedi] + - Stop copying ssh system keys and check folder permissions (#956) + [Emanuele Giuseppe Esposito] + - testing: port remaining cloud tests to integration testing framework + (SC-191) (#955) + - generate contents for ovf-env.xml when provisioning via IMDS (#959) + [Anh Vo] + - Add support for EuroLinux 7 && EuroLinux 8 (#957) [Aleksander Baranowski] + - Implementing device_aliases as described in docs (#945) + [Mal Graty] (LP: #1867532) + - testing: fix test_ssh_import_id.py (#954) + - Add ability to manage fallback network config on PhotonOS (#941) [sshedi] + - Add VZLinux support (#951) [eb3095] + - VMware: add network-config support in ovf-env.xml (#947) [PengpengSun] + - Update pylint to v2.9.3 and fix the new issues it spots (#946) + [Paride Legovini] + - Azure: mount default provisioning iso before try device listing (#870) + [Anh Vo] + - Document known hotplug limitations (#950) + + -- James Falcon Fri, 13 Aug 2021 15:37:31 -0500 + cloud-init (21.2-43-g184c836a-0ubuntu1) impish; urgency=medium * New upstream snapshot. From f8e707c4018fc5832786c7dc940a1cb95287a749 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 13 Aug 2021 15:39:08 -0500 Subject: [PATCH 0495/1174] releasing cloud-init version 21.2-69-g65607405-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f1a73eb2639..7055ed689ae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.2-69-g65607405-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (21.2-69-g65607405-0ubuntu1) impish; urgency=medium * d/cloud-init.templates: Add VMware to default datasource_list * d/control: Add dependencies on python3-netifaces for vmware ds From 11e8fb7f368cfebaa7f62048431a89960e4c6051 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 23 Aug 2021 16:53:58 -0500 Subject: [PATCH 0496/1174] update changelog (New upstream snapshot 21.3-1-g6803368d). --- debian/changelog | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/debian/changelog b/debian/changelog index 7055ed689ae..87401480154 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,21 @@ +cloud-init (21.3-1-g6803368d-0ubuntu1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - testing: Fix ssh keys integration test (#992) + - Release 21.3 (#993) (LP: #1940839) + - Azure: During primary nic detection, check interface status continuously + before rebinding again (#990) [aswinrajamannar] + - Fix home permissions modified by ssh module (SC-338) (#984) + (LP: #1940233) + - Add integration test for sensitive jinja substitution (#986) + - Ignore hotplug socket when collecting logs (#985) (LP: #1940235) + - testing: Add missing mocks to test_vmware.py (#982) + - add Zadara Edge Cloud Platform to the supported clouds list (#963) + [sarahwzadara] + - testing: skip upgrade tests on LXD VMs (#980) + + -- James Falcon Mon, 23 Aug 2021 16:53:23 -0500 + cloud-init (21.2-69-g65607405-0ubuntu1) impish; urgency=medium * d/cloud-init.templates: Add VMware to default datasource_list From 33596ffd60ef107568cec2a4ce05a554a29d6596 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 23 Aug 2021 16:55:48 -0500 Subject: [PATCH 0497/1174] releasing cloud-init version 21.3-1-g6803368d-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 87401480154..fc76ca49e3a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.3-1-g6803368d-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (21.3-1-g6803368d-0ubuntu1) impish; urgency=medium * New upstream snapshot. - testing: Fix ssh keys integration test (#992) From 7c9730fae2a1bff9407a03218db1b7755f5989ae Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 3 Sep 2021 14:36:37 -0500 Subject: [PATCH 0498/1174] cherry pick 28e56d99 --- ...-Azure-Retry-dhcp-on-timeouts-when-polling | 73 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 74 insertions(+) create mode 100644 debian/patches/cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling create mode 100644 debian/patches/series diff --git a/debian/patches/cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling b/debian/patches/cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling new file mode 100644 index 00000000000..db914b45c9f --- /dev/null +++ b/debian/patches/cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling @@ -0,0 +1,73 @@ +From 28e56d993fc40feab139f149dacc10cae51a3fe0 Mon Sep 17 00:00:00 2001 +From: aswinrajamannar <39812128+aswinrajamannar@users.noreply.github.com> +Date: Tue, 24 Aug 2021 13:45:41 -0700 +Subject: [PATCH] Azure: Retry dhcp on timeouts when polling reprovisiondata + (#998) + +In the nic attach path, we skip doing dhcp since we already did it +when bringing the interface up. However when polling for +reprovisiondata, it is possible for the request to timeout due to +platform issues. In those cases we still need to do dhcp and try again +since we tear down the context. We can only skip the first dhcp +attempt. +--- + cloudinit/sources/DataSourceAzure.py | 4 +++ + tests/unittests/test_datasource/test_azure.py | 34 +++++++++++++++++++ + 2 files changed, 38 insertions(+) + +--- a/cloudinit/sources/DataSourceAzure.py ++++ b/cloudinit/sources/DataSourceAzure.py +@@ -1317,6 +1317,10 @@ class DataSourceAzure(sources.DataSource + except UrlError: + # Teardown our EphemeralDHCPv4 context on failure as we retry + self._ephemeral_dhcp_ctx.clean_network() ++ ++ # Also reset this flag which determines if we should do dhcp ++ # during retries. ++ is_ephemeral_ctx_present = False + finally: + if nl_sock: + nl_sock.close() +--- a/tests/unittests/test_datasource/test_azure.py ++++ b/tests/unittests/test_datasource/test_azure.py +@@ -3055,6 +3055,40 @@ class TestPreprovisioningPollIMDS(CiTest + self.assertEqual(0, m_dhcp.call_count) + self.assertEqual(0, m_media_switch.call_count) + ++ @mock.patch('os.path.isfile') ++ @mock.patch(MOCKPATH + 'EphemeralDHCPv4') ++ def test_poll_imds_does_dhcp_on_retries_if_ctx_present( ++ self, m_ephemeral_dhcpv4, m_isfile, report_ready_func, m_request, ++ m_media_switch, m_dhcp, m_net): ++ """The poll_imds function should reuse the dhcp ctx if it is already ++ present. This happens when we wait for nic to be hot-attached before ++ polling for reprovisiondata. Note that if this ctx is set when ++ _poll_imds is called, then it is not expected to be waiting for ++ media_disconnect_connect either.""" ++ ++ tries = 0 ++ ++ def fake_timeout_once(**kwargs): ++ nonlocal tries ++ tries += 1 ++ if tries == 1: ++ raise requests.Timeout('Fake connection timeout') ++ return mock.MagicMock(status_code=200, text="good", content="good") ++ ++ m_request.side_effect = fake_timeout_once ++ report_file = self.tmp_path('report_marker', self.tmp) ++ m_isfile.return_value = True ++ dsa = dsaz.DataSourceAzure({}, distro=None, paths=self.paths) ++ with mock.patch(MOCKPATH + 'REPORTED_READY_MARKER_FILE', report_file),\ ++ mock.patch.object(dsa, '_ephemeral_dhcp_ctx') as m_dhcp_ctx: ++ m_dhcp_ctx.obtain_lease.return_value = "Dummy lease" ++ dsa._ephemeral_dhcp_ctx = m_dhcp_ctx ++ dsa._poll_imds() ++ self.assertEqual(1, m_dhcp_ctx.clean_network.call_count) ++ self.assertEqual(1, m_ephemeral_dhcpv4.call_count) ++ self.assertEqual(0, m_media_switch.call_count) ++ self.assertEqual(2, m_request.call_count) ++ + def test_does_not_poll_imds_report_ready_when_marker_file_exists( + self, m_report_ready, m_request, m_media_switch, m_dhcp, m_net): + """poll_imds should not call report ready when the reported ready diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 00000000000..0ae671b5866 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling From 31cb44812345ba30d15756a59b5344894e9801d1 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 3 Sep 2021 14:36:37 -0500 Subject: [PATCH 0499/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index fc76ca49e3a..af58de4f61f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (21.3-1-g6803368d-0ubuntu2) UNRELEASED; urgency=medium + + * cherry-pick 28e56d99: Azure: Retry dhcp on timeouts when polling + reprovisiondata + + -- James Falcon Fri, 03 Sep 2021 14:36:28 -0500 + cloud-init (21.3-1-g6803368d-0ubuntu1) impish; urgency=medium * New upstream snapshot. From 40df530593437aefde9a225bad00dd0e15963bdd Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 3 Sep 2021 14:36:49 -0500 Subject: [PATCH 0500/1174] cherry pick e69a8874 --- ...-only-update-metadata-on-BOOT_NEW_INSTANCE | 55 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 56 insertions(+) create mode 100644 debian/patches/cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE diff --git a/debian/patches/cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE b/debian/patches/cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE new file mode 100644 index 00000000000..c6ff7345c27 --- /dev/null +++ b/debian/patches/cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE @@ -0,0 +1,55 @@ +From e69a88745e37061e0ab0a1e67ad11015cca610c1 Mon Sep 17 00:00:00 2001 +From: James Falcon +Date: Fri, 3 Sep 2021 12:57:20 -0500 +Subject: [PATCH] Set Azure to only update metadata on BOOT_NEW_INSTANCE + (#1006) + +In #834, we refactored the handling of events for fetching new metadata. +Previously, in Azure's __init__, the BOOT event was added to the +update_events, so it was assumed that Azure required the standard BOOT +behavior, which is to apply metadata twice every boot: once during +local-init, then again during standard init phase. +https://github.com/canonical/cloud-init/blob/21.2/cloudinit/sources/DataSourceAzure.py#L356 + +However, this line was effectively meaningless. After the metadata was +fetched in local-init, it was then pickled out to disk. Because +"update_events" was a class variable, the EventType.BOOT was not +persisted into the pickle. When the pickle was then unpickled in the +init phase, metadata did not get re-fetched because EventType.BOOT was +not present, so Azure is effectely only BOOT_NEW_INSTANCE. + +Fetching metadata twice during boot causes some issue for +pre-provisioning on Azure because updating metadata during +re-provisioning will cause cloud-init to poll for reprovisiondata again +in DataSourceAzure, which will infinitely return 404(reprovisiondata +is deleted from IMDS after health signal was sent by cloud-init during +init-local). This makes cloud-init stuck in 'init' +--- + cloudinit/sources/DataSourceAzure.py | 9 +-------- + 1 file changed, 1 insertion(+), 8 deletions(-) + +--- a/cloudinit/sources/DataSourceAzure.py ++++ b/cloudinit/sources/DataSourceAzure.py +@@ -22,7 +22,7 @@ import requests + from cloudinit import dmi + from cloudinit import log as logging + from cloudinit import net +-from cloudinit.event import EventScope, EventType ++from cloudinit.event import EventType + from cloudinit.net import device_driver + from cloudinit.net.dhcp import EphemeralDHCPv4 + from cloudinit import sources +@@ -339,13 +339,6 @@ def temporary_hostname(temp_hostname, cf + class DataSourceAzure(sources.DataSource): + + dsname = 'Azure' +- # Regenerate network config new_instance boot and every boot +- default_update_events = {EventScope.NETWORK: { +- EventType.BOOT_NEW_INSTANCE, +- EventType.BOOT, +- EventType.BOOT_LEGACY +- }} +- + _negotiated = False + _metadata_imds = sources.UNSET + _ci_pkl_version = 1 diff --git a/debian/patches/series b/debian/patches/series index 0ae671b5866..b43f57c12f3 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,2 @@ cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling +cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE From c185a29f40357747d0047e6968374cc7031ce99b Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 3 Sep 2021 14:36:49 -0500 Subject: [PATCH 0501/1174] update changelog --- debian/changelog | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index af58de4f61f..ab7fd21fa31 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,11 @@ -cloud-init (21.3-1-g6803368d-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (21.3-1-g6803368d-0ubuntu3) UNRELEASED; urgency=medium * cherry-pick 28e56d99: Azure: Retry dhcp on timeouts when polling reprovisiondata + * cherry-pick e69a8874: Set Azure to only update metadata on + BOOT_NEW_INSTANCE - -- James Falcon Fri, 03 Sep 2021 14:36:28 -0500 + -- James Falcon Fri, 03 Sep 2021 14:36:41 -0500 cloud-init (21.3-1-g6803368d-0ubuntu1) impish; urgency=medium From 3a81bc26df394e29ada61a9cdcc513eeed784192 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 3 Sep 2021 14:38:30 -0500 Subject: [PATCH 0502/1174] releasing cloud-init version 21.3-1-g6803368d-0ubuntu2 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index ab7fd21fa31..b2cb8a6c12b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.3-1-g6803368d-0ubuntu3) UNRELEASED; urgency=medium +cloud-init (21.3-1-g6803368d-0ubuntu2) impish; urgency=medium * cherry-pick 28e56d99: Azure: Retry dhcp on timeouts when polling reprovisiondata From 904040e81cf36a643d3bb879363469cf6ab39ac3 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 17 Sep 2021 16:48:15 -0600 Subject: [PATCH 0503/1174] cherry pick 612e3908 LP: #1939603 --- ...tivity_url-to-Oracle-s-EphemeralDHCPv4-988 | 322 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 323 insertions(+) create mode 100644 debian/patches/cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 diff --git a/debian/patches/cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 b/debian/patches/cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 new file mode 100644 index 00000000000..f3492fc3ba5 --- /dev/null +++ b/debian/patches/cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 @@ -0,0 +1,322 @@ +From 612e39087aee3b1242765e7c4f463f54a6ebd723 Mon Sep 17 00:00:00 2001 +From: James Falcon +Date: Fri, 17 Sep 2021 13:04:07 -0500 +Subject: [PATCH] Add connectivity_url to Oracle's EphemeralDHCPv4 (#988) + +Add connectivity_url to Oracle's EphemeralDHCPv4 + +On bionic, when trying to bring up the EphemeralDHCPv4, it's possible +that we already have a route defined, which will result in an error when +trying to add the DHCP route. Use the connectivity_url to check if we +can reach the metadata service, and if so, skip the EphemeralDHCPv4. + +The has_url_connectivity function has also been modified to take +a dict of kwargs to send to readurl. + +LP: #1939603 +--- + cloudinit/net/__init__.py | 37 +++++++++++++++++++------- + cloudinit/net/dhcp.py | 20 +++++++++----- + cloudinit/net/tests/test_dhcp.py | 8 ++++-- + cloudinit/net/tests/test_init.py | 20 +++++++++----- + cloudinit/sources/DataSourceOracle.py | 13 ++++++--- + cloudinit/sources/helpers/vultr.py | 2 +- + cloudinit/sources/tests/test_oracle.py | 10 ++++++- + 7 files changed, 78 insertions(+), 32 deletions(-) + +--- a/cloudinit/net/__init__.py ++++ b/cloudinit/net/__init__.py +@@ -11,6 +11,7 @@ import ipaddress + import logging + import os + import re ++from typing import Any, Dict + + from cloudinit import subp + from cloudinit import util +@@ -971,18 +972,33 @@ def get_ib_hwaddrs_by_interface(): + return ret + + +-def has_url_connectivity(url): +- """Return true when the instance has access to the provided URL ++def has_url_connectivity(url_data: Dict[str, Any]) -> bool: ++ """Return true when the instance has access to the provided URL. + + Logs a warning if url is not the expected format. ++ ++ url_data is a dictionary of kwargs to send to readurl. E.g.: ++ ++ has_url_connectivity({ ++ "url": "http://example.invalid", ++ "headers": {"some": "header"}, ++ "timeout": 10 ++ }) + """ ++ if 'url' not in url_data: ++ LOG.warning( ++ "Ignoring connectivity check. No 'url' to check in %s", url_data) ++ return False ++ url = url_data['url'] + if not any([url.startswith('http://'), url.startswith('https://')]): + LOG.warning( + "Ignoring connectivity check. Expected URL beginning with http*://" + " received '%s'", url) + return False ++ if 'timeout' not in url_data: ++ url_data['timeout'] = 5 + try: +- readurl(url, timeout=5) ++ readurl(**url_data) + except UrlError: + return False + return True +@@ -1025,14 +1041,15 @@ class EphemeralIPv4Network(object): + + No operations are performed if the provided interface already has the + specified configuration. +- This can be verified with the connectivity_url. ++ This can be verified with the connectivity_url_data. + If unconnected, bring up the interface with valid ip, prefix and broadcast. + If router is provided setup a default route for that interface. Upon + context exit, clean up the interface leaving no configuration behind. + """ + + def __init__(self, interface, ip, prefix_or_mask, broadcast, router=None, +- connectivity_url=None, static_routes=None): ++ connectivity_url_data: Dict[str, Any] = None, ++ static_routes=None): + """Setup context manager and validate call signature. + + @param interface: Name of the network interface to bring up. +@@ -1041,7 +1058,7 @@ class EphemeralIPv4Network(object): + prefix. + @param broadcast: Broadcast address for the IPv4 network. + @param router: Optionally the default gateway IP. +- @param connectivity_url: Optionally, a URL to verify if a usable ++ @param connectivity_url_data: Optionally, a URL to verify if a usable + connection already exists. + @param static_routes: Optionally a list of static routes from DHCP + """ +@@ -1056,7 +1073,7 @@ class EphemeralIPv4Network(object): + 'Cannot setup network: {0}'.format(e) + ) from e + +- self.connectivity_url = connectivity_url ++ self.connectivity_url_data = connectivity_url_data + self.interface = interface + self.ip = ip + self.broadcast = broadcast +@@ -1066,11 +1083,11 @@ class EphemeralIPv4Network(object): + + def __enter__(self): + """Perform ephemeral network setup if interface is not connected.""" +- if self.connectivity_url: +- if has_url_connectivity(self.connectivity_url): ++ if self.connectivity_url_data: ++ if has_url_connectivity(self.connectivity_url_data): + LOG.debug( + 'Skip ephemeral network setup, instance has connectivity' +- ' to %s', self.connectivity_url) ++ ' to %s', self.connectivity_url_data['url']) + return + + self._bringup_device() +--- a/cloudinit/net/dhcp.py ++++ b/cloudinit/net/dhcp.py +@@ -4,6 +4,7 @@ + # + # This file is part of cloud-init. See LICENSE file for license information. + ++from typing import Dict, Any + import configobj + import logging + import os +@@ -38,21 +39,26 @@ class NoDHCPLeaseError(Exception): + + + class EphemeralDHCPv4(object): +- def __init__(self, iface=None, connectivity_url=None, dhcp_log_func=None): ++ def __init__( ++ self, ++ iface=None, ++ connectivity_url_data: Dict[str, Any] = None, ++ dhcp_log_func=None ++ ): + self.iface = iface + self._ephipv4 = None + self.lease = None + self.dhcp_log_func = dhcp_log_func +- self.connectivity_url = connectivity_url ++ self.connectivity_url_data = connectivity_url_data + + def __enter__(self): + """Setup sandboxed dhcp context, unless connectivity_url can already be + reached.""" +- if self.connectivity_url: +- if has_url_connectivity(self.connectivity_url): ++ if self.connectivity_url_data: ++ if has_url_connectivity(self.connectivity_url_data): + LOG.debug( + 'Skip ephemeral DHCP setup, instance has connectivity' +- ' to %s', self.connectivity_url) ++ ' to %s', self.connectivity_url_data) + return + return self.obtain_lease() + +@@ -104,8 +110,8 @@ class EphemeralDHCPv4(object): + if kwargs['static_routes']: + kwargs['static_routes'] = ( + parse_static_routes(kwargs['static_routes'])) +- if self.connectivity_url: +- kwargs['connectivity_url'] = self.connectivity_url ++ if self.connectivity_url_data: ++ kwargs['connectivity_url_data'] = self.connectivity_url_data + ephipv4 = EphemeralIPv4Network(**kwargs) + ephipv4.__enter__() + self._ephipv4 = ephipv4 +--- a/cloudinit/net/tests/test_dhcp.py ++++ b/cloudinit/net/tests/test_dhcp.py +@@ -617,7 +617,9 @@ class TestEphemeralDhcpNoNetworkSetup(Ht + url = 'http://example.org/index.html' + + httpretty.register_uri(httpretty.GET, url) +- with net.dhcp.EphemeralDHCPv4(connectivity_url=url) as lease: ++ with net.dhcp.EphemeralDHCPv4( ++ connectivity_url_data={'url': url}, ++ ) as lease: + self.assertIsNone(lease) + # Ensure that no teardown happens: + m_dhcp.assert_not_called() +@@ -635,7 +637,9 @@ class TestEphemeralDhcpNoNetworkSetup(Ht + m_subp.return_value = ('', '') + + httpretty.register_uri(httpretty.GET, url, body={}, status=404) +- with net.dhcp.EphemeralDHCPv4(connectivity_url=url) as lease: ++ with net.dhcp.EphemeralDHCPv4( ++ connectivity_url_data={'url': url}, ++ ) as lease: + self.assertEqual(fake_lease, lease) + # Ensure that dhcp discovery occurs + m_dhcp.called_once_with() +--- a/cloudinit/net/tests/test_init.py ++++ b/cloudinit/net/tests/test_init.py +@@ -622,11 +622,14 @@ class TestEphemeralIPV4Network(CiTestCas + params = { + 'interface': 'eth0', 'ip': '192.168.2.2', + 'prefix_or_mask': '255.255.255.0', 'broadcast': '192.168.2.255', +- 'connectivity_url': 'http://example.org/index.html'} ++ 'connectivity_url_data': {'url': 'http://example.org/index.html'} ++ } + + with net.EphemeralIPv4Network(**params): +- self.assertEqual([mock.call('http://example.org/index.html', +- timeout=5)], m_readurl.call_args_list) ++ self.assertEqual( ++ [mock.call(url='http://example.org/index.html', timeout=5)], ++ m_readurl.call_args_list ++ ) + # Ensure that no teardown happens: + m_subp.assert_has_calls([]) + +@@ -850,25 +853,28 @@ class TestHasURLConnectivity(HttprettyTe + def test_url_timeout_on_connectivity_check(self, m_readurl): + """A timeout of 5 seconds is provided when reading a url.""" + self.assertTrue( +- net.has_url_connectivity(self.url), 'Expected True on url connect') ++ net.has_url_connectivity({'url': self.url}), ++ 'Expected True on url connect') + + def test_true_on_url_connectivity_success(self): + httpretty.register_uri(httpretty.GET, self.url) + self.assertTrue( +- net.has_url_connectivity(self.url), 'Expected True on url connect') ++ net.has_url_connectivity({'url': self.url}), ++ 'Expected True on url connect') + + @mock.patch('requests.Session.request') + def test_true_on_url_connectivity_timeout(self, m_request): + """A timeout raised accessing the url will return False.""" + m_request.side_effect = requests.Timeout('Fake Connection Timeout') + self.assertFalse( +- net.has_url_connectivity(self.url), ++ net.has_url_connectivity({'url': self.url}), + 'Expected False on url timeout') + + def test_true_on_url_connectivity_failure(self): + httpretty.register_uri(httpretty.GET, self.url, body={}, status=404) + self.assertFalse( +- net.has_url_connectivity(self.url), 'Expected False on url fail') ++ net.has_url_connectivity({'url': self.url}), ++ 'Expected False on url fail') + + + def _mk_v1_phys(mac, name, driver, device_id): +--- a/cloudinit/sources/DataSourceOracle.py ++++ b/cloudinit/sources/DataSourceOracle.py +@@ -40,6 +40,7 @@ METADATA_PATTERN = METADATA_ROOT + "{pat + # https://docs.cloud.oracle.com/iaas/Content/Network/Troubleshoot/connectionhang.htm#Overview, + # indicates that an MTU of 9000 is used within OCI + MTU = 9000 ++V2_HEADERS = {"Authorization": "Bearer Oracle"} + + OpcMetadata = namedtuple("OpcMetadata", "version instance_data vnics_data") + +@@ -134,7 +135,13 @@ class DataSourceOracle(sources.DataSourc + ) + network_context = noop() + if not _is_iscsi_root(): +- network_context = dhcp.EphemeralDHCPv4(net.find_fallback_nic()) ++ network_context = dhcp.EphemeralDHCPv4( ++ iface=net.find_fallback_nic(), ++ connectivity_url_data={ ++ "url": METADATA_PATTERN.format(version=2, path="instance"), ++ "headers": V2_HEADERS, ++ } ++ ) + with network_context: + fetched_metadata = read_opc_metadata( + fetch_vnics_data=fetch_vnics_data +@@ -304,11 +311,9 @@ def read_opc_metadata(*, fetch_vnics_dat + retries = 2 + + def _fetch(metadata_version: int, path: str) -> dict: +- headers = { +- "Authorization": "Bearer Oracle"} if metadata_version > 1 else None + return readurl( + url=METADATA_PATTERN.format(version=metadata_version, path=path), +- headers=headers, ++ headers=V2_HEADERS if metadata_version > 1 else None, + retries=retries, + )._response.json() + +--- a/cloudinit/sources/helpers/vultr.py ++++ b/cloudinit/sources/helpers/vultr.py +@@ -20,7 +20,7 @@ LOG = log.getLogger(__name__) + def get_metadata(url, timeout, retries, sec_between): + # Bring up interface + try: +- with EphemeralDHCPv4(connectivity_url=url): ++ with EphemeralDHCPv4(connectivity_url_data={"url": url}): + # Fetch the metadata + v1 = read_metadata(url, timeout, retries, sec_between) + except (NoDHCPLeaseError) as exc: +--- a/cloudinit/sources/tests/test_oracle.py ++++ b/cloudinit/sources/tests/test_oracle.py +@@ -694,7 +694,15 @@ class TestNonIscsiRoot_GetDataBehaviour: + assert oracle_ds._get_data() + + assert [ +- mock.call(m_find_fallback_nic.return_value) ++ mock.call( ++ iface=m_find_fallback_nic.return_value, ++ connectivity_url_data={ ++ 'headers': { ++ 'Authorization': 'Bearer Oracle' ++ }, ++ 'url': 'http://169.254.169.254/opc/v2/instance/' ++ } ++ ) + ] == m_EphemeralDHCPv4.call_args_list + + diff --git a/debian/patches/series b/debian/patches/series index b43f57c12f3..d0dd2f3e8e5 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,2 +1,3 @@ cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE +cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 From a4473520571af5b821f5af1b56c0df635390dc7b Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 17 Sep 2021 16:48:15 -0600 Subject: [PATCH 0504/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index b2cb8a6c12b..3b1634a4efd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (21.3-1-g6803368d-0ubuntu3) UNRELEASED; urgency=medium + + * cherry-pick 612e3908: Add connectivity_url to Oracle's + EphemeralDHCPv4 (#988) (LP: #1939603) + + -- Chad Smith Fri, 17 Sep 2021 16:48:10 -0600 + cloud-init (21.3-1-g6803368d-0ubuntu2) impish; urgency=medium * cherry-pick 28e56d99: Azure: Retry dhcp on timeouts when polling From cc30df93be0f4db2179155862d0bd0f8b8f48fe2 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 17 Sep 2021 16:49:50 -0600 Subject: [PATCH 0505/1174] cherry-pick dc227869 --- ...to-apply-networking-config-every-BOOT-1023 | 80 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 81 insertions(+) create mode 100644 debian/patches/cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 diff --git a/debian/patches/cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 b/debian/patches/cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 new file mode 100644 index 00000000000..739f761c3f9 --- /dev/null +++ b/debian/patches/cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 @@ -0,0 +1,80 @@ +From dc22786980a05129c5971e68ae37b1a9f76f882d Mon Sep 17 00:00:00 2001 +From: James Falcon +Date: Fri, 17 Sep 2021 16:25:22 -0500 +Subject: [PATCH] Set Azure to apply networking config every BOOT (#1023) + +In #1006, we set Azure to apply networking config every +BOOT_NEW_INSTANCE because the BOOT_LEGACY option was causing problems +applying networking the second time per boot. However, +BOOT_NEW_INSTANCE is also wrong as Azure needs to apply networking +once per boot, during init-local phase. +--- + cloudinit/sources/DataSourceAzure.py | 6 +++++- + tests/integration_tests/modules/test_user_events.py | 10 ++++++---- + 2 files changed, 11 insertions(+), 5 deletions(-) + +Index: cloud-init/cloudinit/sources/DataSourceAzure.py +=================================================================== +--- cloud-init.orig/cloudinit/sources/DataSourceAzure.py ++++ cloud-init/cloudinit/sources/DataSourceAzure.py +@@ -22,7 +22,7 @@ import requests + from cloudinit import dmi + from cloudinit import log as logging + from cloudinit import net +-from cloudinit.event import EventType ++from cloudinit.event import EventScope, EventType + from cloudinit.net import device_driver + from cloudinit.net.dhcp import EphemeralDHCPv4 + from cloudinit import sources +@@ -339,6 +339,10 @@ def temporary_hostname(temp_hostname, cf + class DataSourceAzure(sources.DataSource): + + dsname = 'Azure' ++ default_update_events = {EventScope.NETWORK: { ++ EventType.BOOT_NEW_INSTANCE, ++ EventType.BOOT, ++ }} + _negotiated = False + _metadata_imds = sources.UNSET + _ci_pkl_version = 1 +Index: cloud-init/tests/integration_tests/modules/test_user_events.py +=================================================================== +--- cloud-init.orig/tests/integration_tests/modules/test_user_events.py ++++ cloud-init/tests/integration_tests/modules/test_user_events.py +@@ -31,7 +31,6 @@ def _add_dummy_bridge_to_netplan(client: + @pytest.mark.gce + @pytest.mark.oci + @pytest.mark.openstack +-@pytest.mark.not_xenial + def test_boot_event_disabled_by_default(client: IntegrationInstance): + log = client.read_from_file('/var/log/cloud-init.log') + assert 'Applying network configuration' in log +@@ -66,7 +65,7 @@ def _test_network_config_applied_on_rebo + assert 'dummy0' not in client.execute('ls /sys/class/net') + + _add_dummy_bridge_to_netplan(client) +- client.execute('rm /var/log/cloud-init.log') ++ client.execute('echo "" > /var/log/cloud-init.log') + client.restart() + log = client.read_from_file('/var/log/cloud-init.log') + +@@ -81,6 +80,11 @@ def test_boot_event_enabled_by_default(c + _test_network_config_applied_on_reboot(client) + + ++@pytest.mark.azure ++def test_boot_event_enabled_by_default(client: IntegrationInstance): ++ _test_network_config_applied_on_reboot(client) ++ ++ + USER_DATA = """\ + #cloud-config + updates: +@@ -89,7 +93,6 @@ updates: + """ + + +-@pytest.mark.not_xenial + @pytest.mark.user_data(USER_DATA) + def test_boot_event_enabled(client: IntegrationInstance): + _test_network_config_applied_on_reboot(client) diff --git a/debian/patches/series b/debian/patches/series index d0dd2f3e8e5..c1d7f8b9fe5 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,4 @@ cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 +cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 From 957dec2949d2d01e5e04828441d5edab67954438 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 17 Sep 2021 16:51:08 -0600 Subject: [PATCH 0506/1174] update changelog --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 3b1634a4efd..655f758879f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ cloud-init (21.3-1-g6803368d-0ubuntu3) UNRELEASED; urgency=medium * cherry-pick 612e3908: Add connectivity_url to Oracle's EphemeralDHCPv4 (#988) (LP: #1939603) + * cherry-pick dc227869: Set Azure to apply networking config every BOOT + (#1023) -- Chad Smith Fri, 17 Sep 2021 16:48:10 -0600 From 74bdeaf4d252c5e30f8be0a94b83a7dcdd39bae1 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 17 Sep 2021 17:00:08 -0600 Subject: [PATCH 0507/1174] releasing cloud-init version 21.3-1-g6803368d-0ubuntu3 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 655f758879f..d393a0660e1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.3-1-g6803368d-0ubuntu3) UNRELEASED; urgency=medium +cloud-init (21.3-1-g6803368d-0ubuntu3) impish; urgency=medium * cherry-pick 612e3908: Add connectivity_url to Oracle's EphemeralDHCPv4 (#988) (LP: #1939603) From 6421ce84dff17f41328692ac3bdcab0f9a49b868 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 7 Oct 2021 11:44:16 -0500 Subject: [PATCH 0508/1174] cherry pick 9c147e83 LP: #1938299 --- ...isabling-of-network-activation-SC-307-1048 | 190 ++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 191 insertions(+) create mode 100644 debian/patches/cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 diff --git a/debian/patches/cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 b/debian/patches/cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 new file mode 100644 index 00000000000..e33ca16f7c3 --- /dev/null +++ b/debian/patches/cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 @@ -0,0 +1,190 @@ +From 9c147e8341e287366790e60658f646cdcc59bef2 Mon Sep 17 00:00:00 2001 +From: James Falcon +Date: Thu, 7 Oct 2021 11:27:36 -0500 +Subject: [PATCH] Allow disabling of network activation (SC-307) (#1048) + +In #919 (81299de), we refactored some of the code used to bring up +networks across distros. Previously, the call to bring up network +interfaces during 'init' stage unintentionally resulted in a no-op +such that network interfaces were NEVER brought up by cloud-init, even +if new network interfaces were found after crawling the metadata. + +The code was altered to bring up these discovered network interfaces. +On ubuntu, this results in a 'netplan apply' call during 'init' stage +for any ubuntu-based distro on a datasource that has a NETWORK +dependency. On GCE, this additional 'netplan apply' conflicts with the +google-guest-agent service, resulting in an instance that can no +be connected to. + +This commit adds a 'disable_network_activation' option that can be +enabled in /etc/cloud.cfg to disable the activation of network +interfaces in 'init' stage. + +LP: #1938299 +--- + cloudinit/cmd/main.py | 11 ++++- + cloudinit/cmd/tests/test_main.py | 23 ++++++++++ + cloudinit/distros/__init__.py | 3 ++ + doc/rtd/topics/network-config.rst | 11 +++++ + .../datasources/test_network_dependency.py | 43 +++++++++++++++++++ + 5 files changed, 89 insertions(+), 2 deletions(-) + create mode 100644 tests/integration_tests/datasources/test_network_dependency.py + +--- a/cloudinit/cmd/main.py ++++ b/cloudinit/cmd/main.py +@@ -239,6 +239,12 @@ def purge_cache_on_python_version_change + util.write_file(python_version_path, current_python_version) + + ++def _should_bring_up_interfaces(init, args): ++ if util.get_cfg_option_bool(init.cfg, 'disable_network_activation'): ++ return False ++ return not args.local ++ ++ + def main_init(name, args): + deps = [sources.DEP_FILESYSTEM, sources.DEP_NETWORK] + if args.local: +@@ -348,6 +354,7 @@ def main_init(name, args): + util.del_file(os.path.join(path_helper.get_cpath("data"), "no-net")) + + # Stage 5 ++ bring_up_interfaces = _should_bring_up_interfaces(init, args) + try: + init.fetch(existing=existing) + # if in network mode, and the datasource is local +@@ -367,7 +374,7 @@ def main_init(name, args): + util.logexc(LOG, ("No instance datasource found!" + " Likely bad things to come!")) + if not args.force: +- init.apply_network_config(bring_up=not args.local) ++ init.apply_network_config(bring_up=bring_up_interfaces) + LOG.debug("[%s] Exiting without datasource", mode) + if mode == sources.DSMODE_LOCAL: + return (None, []) +@@ -388,7 +395,7 @@ def main_init(name, args): + # dhcp clients to advertize this hostname to any DDNS services + # LP: #1746455. + _maybe_set_hostname(init, stage='local', retry_stage='network') +- init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL)) ++ init.apply_network_config(bring_up=bring_up_interfaces) + + if mode == sources.DSMODE_LOCAL: + if init.datasource.dsmode != mode: +--- a/cloudinit/cmd/tests/test_main.py ++++ b/cloudinit/cmd/tests/test_main.py +@@ -4,6 +4,9 @@ from collections import namedtuple + import copy + import os + from io import StringIO ++from unittest import mock ++ ++import pytest + + from cloudinit.cmd import main + from cloudinit import safeyaml +@@ -162,4 +165,24 @@ class TestMain(FilesystemMockingTestCase + for log in expected_logs: + self.assertIn(log, self.stderr.getvalue()) + ++ ++class TestShouldBringUpInterfaces: ++ @pytest.mark.parametrize('cfg_disable,args_local,expected', [ ++ (True, True, False), ++ (True, False, False), ++ (False, True, False), ++ (False, False, True), ++ ]) ++ def test_should_bring_up_interfaces( ++ self, cfg_disable, args_local, expected ++ ): ++ init = mock.Mock() ++ init.cfg = {'disable_network_activation': cfg_disable} ++ ++ args = mock.Mock() ++ args.local = args_local ++ ++ result = main._should_bring_up_interfaces(init, args) ++ assert result == expected ++ + # vi: ts=4 expandtab +--- a/cloudinit/distros/__init__.py ++++ b/cloudinit/distros/__init__.py +@@ -227,8 +227,11 @@ class Distro(persistence.CloudInitPickle + + # Now try to bring them up + if bring_up: ++ LOG.debug('Bringing up newly configured network interfaces') + network_activator = activators.select_activator() + network_activator.bring_up_all_interfaces(network_state) ++ else: ++ LOG.debug("Not bringing up newly configured network interfaces") + return False + + def apply_network_config_names(self, netconfig): +--- a/doc/rtd/topics/network-config.rst ++++ b/doc/rtd/topics/network-config.rst +@@ -75,6 +75,17 @@ If `Cloud-init`_ 's networking config ha + no other network information is found, then it will proceed + to generate a fallback networking configuration. + ++Disabling Network Activation ++---------------------------- ++ ++Some datasources may not be initialized until after network has been brought ++up. In this case, cloud-init will attempt to bring up the interfaces specified ++by the datasource metadata. ++ ++This behavior can be disabled in the cloud-init configuration dictionary, ++merged from ``/etc/cloud/cloud.cfg`` and ``/etc/cloud/cloud.cfg.d/*``:: ++ ++ disable_network_activation: true + + Fallback Network Configuration + ============================== +--- /dev/null ++++ b/tests/integration_tests/datasources/test_network_dependency.py +@@ -0,0 +1,43 @@ ++import pytest ++ ++from tests.integration_tests.clouds import IntegrationCloud ++from tests.integration_tests.conftest import get_validated_source ++ ++ ++def _setup_custom_image(session_cloud: IntegrationCloud): ++ """Like `setup_image` in conftest.py, but with customized content.""" ++ source = get_validated_source(session_cloud) ++ if not source.installs_new_version(): ++ return ++ client = session_cloud.launch() ++ ++ # Insert our "disable_network_activation" file here ++ client.write_to_file( ++ '/etc/cloud/cloud.cfg.d/99-disable-network-activation.cfg', ++ 'disable_network_activation: true\n', ++ ) ++ ++ client.install_new_cloud_init(source) ++ # Even if we're keeping instances, we don't want to keep this ++ # one around as it was just for image creation ++ client.destroy() ++ ++ ++# This test should be able to work on any cloud whose datasource specifies ++# a NETWORK dependency ++@pytest.mark.gce ++@pytest.mark.ubuntu # Because netplan ++def test_network_activation_disabled(session_cloud: IntegrationCloud): ++ """Test that the network is not activated during init mode.""" ++ _setup_custom_image(session_cloud) ++ with session_cloud.launch() as client: ++ result = client.execute('systemctl status google-guest-agent.service') ++ if not result.ok: ++ raise AssertionError('google-guest-agent is not active:\n%s', ++ result.stdout) ++ log = client.read_from_file('/var/log/cloud-init.log') ++ ++ assert "Running command ['netplan', 'apply']" not in log ++ ++ assert 'Not bringing up newly configured network interfaces' in log ++ assert 'Bringing up newly configured network interfaces' not in log diff --git a/debian/patches/series b/debian/patches/series index c1d7f8b9fe5..2c9529859b6 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,3 +2,4 @@ cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 +cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 From 8d8d8b4e2d8b5dd95ae70b54f94aab5f508572a9 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 7 Oct 2021 11:44:16 -0500 Subject: [PATCH 0509/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index d393a0660e1..faf1ab13fc6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (21.3-1-g6803368d-0ubuntu4) UNRELEASED; urgency=medium + + * cherry-pick 9c147e83: Allow disabling of network activation (SC-307) + (#1048) (LP: #1938299) + + -- James Falcon Thu, 07 Oct 2021 11:43:55 -0500 + cloud-init (21.3-1-g6803368d-0ubuntu3) impish; urgency=medium * cherry-pick 612e3908: Add connectivity_url to Oracle's From cdcf36eec560d2750c5b4f23222d1f14f1baa7f1 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 7 Oct 2021 11:46:14 -0500 Subject: [PATCH 0510/1174] releasing cloud-init version 21.3-1-g6803368d-0ubuntu3 --- debian/changelog | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index faf1ab13fc6..44ff03c4102 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,18 +1,13 @@ -cloud-init (21.3-1-g6803368d-0ubuntu4) UNRELEASED; urgency=medium +cloud-init (21.3-1-g6803368d-0ubuntu3) impish; urgency=medium * cherry-pick 9c147e83: Allow disabling of network activation (SC-307) (#1048) (LP: #1938299) - - -- James Falcon Thu, 07 Oct 2021 11:43:55 -0500 - -cloud-init (21.3-1-g6803368d-0ubuntu3) impish; urgency=medium - * cherry-pick 612e3908: Add connectivity_url to Oracle's EphemeralDHCPv4 (#988) (LP: #1939603) - * cherry-pick dc227869: Set Azure to apply networking config every BOOT + * cherry-pick dc227869: Set Azure to apply networking config every BOOT (#1023) - -- Chad Smith Fri, 17 Sep 2021 16:48:10 -0600 + -- James Falcon Thu, 07 Oct 2021 11:43:55 -0500 cloud-init (21.3-1-g6803368d-0ubuntu2) impish; urgency=medium From 795d522377b20a76a4eb2d4dcd10adcb3e8bf006 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 11 Oct 2021 15:33:23 -0500 Subject: [PATCH 0511/1174] d/upstream/metadata: Change contact to James Falcon --- debian/changelog | 6 ++++++ debian/upstream/metadata | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 44ff03c4102..1cf5ecd303a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (21.3-1-g6803368d-0ubuntu4) UNRELEASED; urgency=medium + + * d/upstream/metadata: Change contact to James Falcon + + -- James Falcon Mon, 11 Oct 2021 15:32:07 -0500 + cloud-init (21.3-1-g6803368d-0ubuntu3) impish; urgency=medium * cherry-pick 9c147e83: Allow disabling of network activation (SC-307) diff --git a/debian/upstream/metadata b/debian/upstream/metadata index 46b4cd69004..239532a97b9 100644 --- a/debian/upstream/metadata +++ b/debian/upstream/metadata @@ -1,5 +1,5 @@ Name: cloud-init -Contact: Josh Powers +Contact: James Falcon Repository: https://github.com/canonical/cloud-init.git Repository-Browse: https://github.com/canonical/cloud-init Bug-Submit: https://bugs.launchpad.net/cloud-init From b9062e5d6c7a05560d918c4e38d99b6559235c00 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Mon, 1 Nov 2021 15:13:00 -0600 Subject: [PATCH 0512/1174] Add LXD to datasource list. (#1090) LXD support added in #1040. --- debian/changelog | 2 ++ debian/cloud-init.templates | 6 +++--- debian/po/templates.pot | 6 ++++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1cf5ecd303a..3a2abeb4c35 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ cloud-init (21.3-1-g6803368d-0ubuntu4) UNRELEASED; urgency=medium * d/upstream/metadata: Change contact to James Falcon + * d/cloud-init.templates: Add LXD to default datasource_list with + translations -- James Falcon Mon, 11 Oct 2021 15:32:07 -0500 diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index 75ac07b85d5..6e131cec38f 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, VMware: reads data from guestinfo table or env vars, Vultr: Vultr Cloud, None: Failsafe datasource +Default: NoCloud, ConfigDrive, LXD, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, None +Choices-C: NoCloud, ConfigDrive, LXD, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, None +__Choices: NoCloud: Reads info from /var/lib/cloud/seed only, ConfigDrive: Reads data from Openstack Config Drive, LXD: Reads /dev/lxd/sock representation of instance data, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, VMware: reads data from guestinfo table or env vars, Vultr: Vultr Cloud, 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. diff --git a/debian/po/templates.pot b/debian/po/templates.pot index fb0df2c015f..ba0fb51b88e 100644 --- a/debian/po/templates.pot +++ b/debian/po/templates.pot @@ -29,6 +29,12 @@ msgstr "" msgid "ConfigDrive: Reads data from Openstack Config Drive" msgstr "" +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "LXD: Reads /dev/lxd/sock representation of instance data" +msgstr "" + #. Type: multiselect #. Choices #: ../cloud-init.templates:1001 From d961b261b97946a72ebb4a7b089c2041a54d8def Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 2 Nov 2021 18:07:48 -0500 Subject: [PATCH 0513/1174] drop cherry picks included in upstream/main commit db6084bd drop the following cherry picks: cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 --- ...-Azure-Retry-dhcp-on-timeouts-when-polling | 73 ---- ...tivity_url-to-Oracle-s-EphemeralDHCPv4-988 | 322 ------------------ ...isabling-of-network-activation-SC-307-1048 | 190 ----------- ...to-apply-networking-config-every-BOOT-1023 | 80 ----- ...-only-update-metadata-on-BOOT_NEW_INSTANCE | 55 --- debian/patches/series | 5 - 6 files changed, 725 deletions(-) delete mode 100644 debian/patches/cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling delete mode 100644 debian/patches/cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 delete mode 100644 debian/patches/cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 delete mode 100644 debian/patches/cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 delete mode 100644 debian/patches/cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE delete mode 100644 debian/patches/series diff --git a/debian/patches/cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling b/debian/patches/cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling deleted file mode 100644 index db914b45c9f..00000000000 --- a/debian/patches/cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling +++ /dev/null @@ -1,73 +0,0 @@ -From 28e56d993fc40feab139f149dacc10cae51a3fe0 Mon Sep 17 00:00:00 2001 -From: aswinrajamannar <39812128+aswinrajamannar@users.noreply.github.com> -Date: Tue, 24 Aug 2021 13:45:41 -0700 -Subject: [PATCH] Azure: Retry dhcp on timeouts when polling reprovisiondata - (#998) - -In the nic attach path, we skip doing dhcp since we already did it -when bringing the interface up. However when polling for -reprovisiondata, it is possible for the request to timeout due to -platform issues. In those cases we still need to do dhcp and try again -since we tear down the context. We can only skip the first dhcp -attempt. ---- - cloudinit/sources/DataSourceAzure.py | 4 +++ - tests/unittests/test_datasource/test_azure.py | 34 +++++++++++++++++++ - 2 files changed, 38 insertions(+) - ---- a/cloudinit/sources/DataSourceAzure.py -+++ b/cloudinit/sources/DataSourceAzure.py -@@ -1317,6 +1317,10 @@ class DataSourceAzure(sources.DataSource - except UrlError: - # Teardown our EphemeralDHCPv4 context on failure as we retry - self._ephemeral_dhcp_ctx.clean_network() -+ -+ # Also reset this flag which determines if we should do dhcp -+ # during retries. -+ is_ephemeral_ctx_present = False - finally: - if nl_sock: - nl_sock.close() ---- a/tests/unittests/test_datasource/test_azure.py -+++ b/tests/unittests/test_datasource/test_azure.py -@@ -3055,6 +3055,40 @@ class TestPreprovisioningPollIMDS(CiTest - self.assertEqual(0, m_dhcp.call_count) - self.assertEqual(0, m_media_switch.call_count) - -+ @mock.patch('os.path.isfile') -+ @mock.patch(MOCKPATH + 'EphemeralDHCPv4') -+ def test_poll_imds_does_dhcp_on_retries_if_ctx_present( -+ self, m_ephemeral_dhcpv4, m_isfile, report_ready_func, m_request, -+ m_media_switch, m_dhcp, m_net): -+ """The poll_imds function should reuse the dhcp ctx if it is already -+ present. This happens when we wait for nic to be hot-attached before -+ polling for reprovisiondata. Note that if this ctx is set when -+ _poll_imds is called, then it is not expected to be waiting for -+ media_disconnect_connect either.""" -+ -+ tries = 0 -+ -+ def fake_timeout_once(**kwargs): -+ nonlocal tries -+ tries += 1 -+ if tries == 1: -+ raise requests.Timeout('Fake connection timeout') -+ return mock.MagicMock(status_code=200, text="good", content="good") -+ -+ m_request.side_effect = fake_timeout_once -+ report_file = self.tmp_path('report_marker', self.tmp) -+ m_isfile.return_value = True -+ dsa = dsaz.DataSourceAzure({}, distro=None, paths=self.paths) -+ with mock.patch(MOCKPATH + 'REPORTED_READY_MARKER_FILE', report_file),\ -+ mock.patch.object(dsa, '_ephemeral_dhcp_ctx') as m_dhcp_ctx: -+ m_dhcp_ctx.obtain_lease.return_value = "Dummy lease" -+ dsa._ephemeral_dhcp_ctx = m_dhcp_ctx -+ dsa._poll_imds() -+ self.assertEqual(1, m_dhcp_ctx.clean_network.call_count) -+ self.assertEqual(1, m_ephemeral_dhcpv4.call_count) -+ self.assertEqual(0, m_media_switch.call_count) -+ self.assertEqual(2, m_request.call_count) -+ - def test_does_not_poll_imds_report_ready_when_marker_file_exists( - self, m_report_ready, m_request, m_media_switch, m_dhcp, m_net): - """poll_imds should not call report ready when the reported ready diff --git a/debian/patches/cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 b/debian/patches/cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 deleted file mode 100644 index f3492fc3ba5..00000000000 --- a/debian/patches/cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 +++ /dev/null @@ -1,322 +0,0 @@ -From 612e39087aee3b1242765e7c4f463f54a6ebd723 Mon Sep 17 00:00:00 2001 -From: James Falcon -Date: Fri, 17 Sep 2021 13:04:07 -0500 -Subject: [PATCH] Add connectivity_url to Oracle's EphemeralDHCPv4 (#988) - -Add connectivity_url to Oracle's EphemeralDHCPv4 - -On bionic, when trying to bring up the EphemeralDHCPv4, it's possible -that we already have a route defined, which will result in an error when -trying to add the DHCP route. Use the connectivity_url to check if we -can reach the metadata service, and if so, skip the EphemeralDHCPv4. - -The has_url_connectivity function has also been modified to take -a dict of kwargs to send to readurl. - -LP: #1939603 ---- - cloudinit/net/__init__.py | 37 +++++++++++++++++++------- - cloudinit/net/dhcp.py | 20 +++++++++----- - cloudinit/net/tests/test_dhcp.py | 8 ++++-- - cloudinit/net/tests/test_init.py | 20 +++++++++----- - cloudinit/sources/DataSourceOracle.py | 13 ++++++--- - cloudinit/sources/helpers/vultr.py | 2 +- - cloudinit/sources/tests/test_oracle.py | 10 ++++++- - 7 files changed, 78 insertions(+), 32 deletions(-) - ---- a/cloudinit/net/__init__.py -+++ b/cloudinit/net/__init__.py -@@ -11,6 +11,7 @@ import ipaddress - import logging - import os - import re -+from typing import Any, Dict - - from cloudinit import subp - from cloudinit import util -@@ -971,18 +972,33 @@ def get_ib_hwaddrs_by_interface(): - return ret - - --def has_url_connectivity(url): -- """Return true when the instance has access to the provided URL -+def has_url_connectivity(url_data: Dict[str, Any]) -> bool: -+ """Return true when the instance has access to the provided URL. - - Logs a warning if url is not the expected format. -+ -+ url_data is a dictionary of kwargs to send to readurl. E.g.: -+ -+ has_url_connectivity({ -+ "url": "http://example.invalid", -+ "headers": {"some": "header"}, -+ "timeout": 10 -+ }) - """ -+ if 'url' not in url_data: -+ LOG.warning( -+ "Ignoring connectivity check. No 'url' to check in %s", url_data) -+ return False -+ url = url_data['url'] - if not any([url.startswith('http://'), url.startswith('https://')]): - LOG.warning( - "Ignoring connectivity check. Expected URL beginning with http*://" - " received '%s'", url) - return False -+ if 'timeout' not in url_data: -+ url_data['timeout'] = 5 - try: -- readurl(url, timeout=5) -+ readurl(**url_data) - except UrlError: - return False - return True -@@ -1025,14 +1041,15 @@ class EphemeralIPv4Network(object): - - No operations are performed if the provided interface already has the - specified configuration. -- This can be verified with the connectivity_url. -+ This can be verified with the connectivity_url_data. - If unconnected, bring up the interface with valid ip, prefix and broadcast. - If router is provided setup a default route for that interface. Upon - context exit, clean up the interface leaving no configuration behind. - """ - - def __init__(self, interface, ip, prefix_or_mask, broadcast, router=None, -- connectivity_url=None, static_routes=None): -+ connectivity_url_data: Dict[str, Any] = None, -+ static_routes=None): - """Setup context manager and validate call signature. - - @param interface: Name of the network interface to bring up. -@@ -1041,7 +1058,7 @@ class EphemeralIPv4Network(object): - prefix. - @param broadcast: Broadcast address for the IPv4 network. - @param router: Optionally the default gateway IP. -- @param connectivity_url: Optionally, a URL to verify if a usable -+ @param connectivity_url_data: Optionally, a URL to verify if a usable - connection already exists. - @param static_routes: Optionally a list of static routes from DHCP - """ -@@ -1056,7 +1073,7 @@ class EphemeralIPv4Network(object): - 'Cannot setup network: {0}'.format(e) - ) from e - -- self.connectivity_url = connectivity_url -+ self.connectivity_url_data = connectivity_url_data - self.interface = interface - self.ip = ip - self.broadcast = broadcast -@@ -1066,11 +1083,11 @@ class EphemeralIPv4Network(object): - - def __enter__(self): - """Perform ephemeral network setup if interface is not connected.""" -- if self.connectivity_url: -- if has_url_connectivity(self.connectivity_url): -+ if self.connectivity_url_data: -+ if has_url_connectivity(self.connectivity_url_data): - LOG.debug( - 'Skip ephemeral network setup, instance has connectivity' -- ' to %s', self.connectivity_url) -+ ' to %s', self.connectivity_url_data['url']) - return - - self._bringup_device() ---- a/cloudinit/net/dhcp.py -+++ b/cloudinit/net/dhcp.py -@@ -4,6 +4,7 @@ - # - # This file is part of cloud-init. See LICENSE file for license information. - -+from typing import Dict, Any - import configobj - import logging - import os -@@ -38,21 +39,26 @@ class NoDHCPLeaseError(Exception): - - - class EphemeralDHCPv4(object): -- def __init__(self, iface=None, connectivity_url=None, dhcp_log_func=None): -+ def __init__( -+ self, -+ iface=None, -+ connectivity_url_data: Dict[str, Any] = None, -+ dhcp_log_func=None -+ ): - self.iface = iface - self._ephipv4 = None - self.lease = None - self.dhcp_log_func = dhcp_log_func -- self.connectivity_url = connectivity_url -+ self.connectivity_url_data = connectivity_url_data - - def __enter__(self): - """Setup sandboxed dhcp context, unless connectivity_url can already be - reached.""" -- if self.connectivity_url: -- if has_url_connectivity(self.connectivity_url): -+ if self.connectivity_url_data: -+ if has_url_connectivity(self.connectivity_url_data): - LOG.debug( - 'Skip ephemeral DHCP setup, instance has connectivity' -- ' to %s', self.connectivity_url) -+ ' to %s', self.connectivity_url_data) - return - return self.obtain_lease() - -@@ -104,8 +110,8 @@ class EphemeralDHCPv4(object): - if kwargs['static_routes']: - kwargs['static_routes'] = ( - parse_static_routes(kwargs['static_routes'])) -- if self.connectivity_url: -- kwargs['connectivity_url'] = self.connectivity_url -+ if self.connectivity_url_data: -+ kwargs['connectivity_url_data'] = self.connectivity_url_data - ephipv4 = EphemeralIPv4Network(**kwargs) - ephipv4.__enter__() - self._ephipv4 = ephipv4 ---- a/cloudinit/net/tests/test_dhcp.py -+++ b/cloudinit/net/tests/test_dhcp.py -@@ -617,7 +617,9 @@ class TestEphemeralDhcpNoNetworkSetup(Ht - url = 'http://example.org/index.html' - - httpretty.register_uri(httpretty.GET, url) -- with net.dhcp.EphemeralDHCPv4(connectivity_url=url) as lease: -+ with net.dhcp.EphemeralDHCPv4( -+ connectivity_url_data={'url': url}, -+ ) as lease: - self.assertIsNone(lease) - # Ensure that no teardown happens: - m_dhcp.assert_not_called() -@@ -635,7 +637,9 @@ class TestEphemeralDhcpNoNetworkSetup(Ht - m_subp.return_value = ('', '') - - httpretty.register_uri(httpretty.GET, url, body={}, status=404) -- with net.dhcp.EphemeralDHCPv4(connectivity_url=url) as lease: -+ with net.dhcp.EphemeralDHCPv4( -+ connectivity_url_data={'url': url}, -+ ) as lease: - self.assertEqual(fake_lease, lease) - # Ensure that dhcp discovery occurs - m_dhcp.called_once_with() ---- a/cloudinit/net/tests/test_init.py -+++ b/cloudinit/net/tests/test_init.py -@@ -622,11 +622,14 @@ class TestEphemeralIPV4Network(CiTestCas - params = { - 'interface': 'eth0', 'ip': '192.168.2.2', - 'prefix_or_mask': '255.255.255.0', 'broadcast': '192.168.2.255', -- 'connectivity_url': 'http://example.org/index.html'} -+ 'connectivity_url_data': {'url': 'http://example.org/index.html'} -+ } - - with net.EphemeralIPv4Network(**params): -- self.assertEqual([mock.call('http://example.org/index.html', -- timeout=5)], m_readurl.call_args_list) -+ self.assertEqual( -+ [mock.call(url='http://example.org/index.html', timeout=5)], -+ m_readurl.call_args_list -+ ) - # Ensure that no teardown happens: - m_subp.assert_has_calls([]) - -@@ -850,25 +853,28 @@ class TestHasURLConnectivity(HttprettyTe - def test_url_timeout_on_connectivity_check(self, m_readurl): - """A timeout of 5 seconds is provided when reading a url.""" - self.assertTrue( -- net.has_url_connectivity(self.url), 'Expected True on url connect') -+ net.has_url_connectivity({'url': self.url}), -+ 'Expected True on url connect') - - def test_true_on_url_connectivity_success(self): - httpretty.register_uri(httpretty.GET, self.url) - self.assertTrue( -- net.has_url_connectivity(self.url), 'Expected True on url connect') -+ net.has_url_connectivity({'url': self.url}), -+ 'Expected True on url connect') - - @mock.patch('requests.Session.request') - def test_true_on_url_connectivity_timeout(self, m_request): - """A timeout raised accessing the url will return False.""" - m_request.side_effect = requests.Timeout('Fake Connection Timeout') - self.assertFalse( -- net.has_url_connectivity(self.url), -+ net.has_url_connectivity({'url': self.url}), - 'Expected False on url timeout') - - def test_true_on_url_connectivity_failure(self): - httpretty.register_uri(httpretty.GET, self.url, body={}, status=404) - self.assertFalse( -- net.has_url_connectivity(self.url), 'Expected False on url fail') -+ net.has_url_connectivity({'url': self.url}), -+ 'Expected False on url fail') - - - def _mk_v1_phys(mac, name, driver, device_id): ---- a/cloudinit/sources/DataSourceOracle.py -+++ b/cloudinit/sources/DataSourceOracle.py -@@ -40,6 +40,7 @@ METADATA_PATTERN = METADATA_ROOT + "{pat - # https://docs.cloud.oracle.com/iaas/Content/Network/Troubleshoot/connectionhang.htm#Overview, - # indicates that an MTU of 9000 is used within OCI - MTU = 9000 -+V2_HEADERS = {"Authorization": "Bearer Oracle"} - - OpcMetadata = namedtuple("OpcMetadata", "version instance_data vnics_data") - -@@ -134,7 +135,13 @@ class DataSourceOracle(sources.DataSourc - ) - network_context = noop() - if not _is_iscsi_root(): -- network_context = dhcp.EphemeralDHCPv4(net.find_fallback_nic()) -+ network_context = dhcp.EphemeralDHCPv4( -+ iface=net.find_fallback_nic(), -+ connectivity_url_data={ -+ "url": METADATA_PATTERN.format(version=2, path="instance"), -+ "headers": V2_HEADERS, -+ } -+ ) - with network_context: - fetched_metadata = read_opc_metadata( - fetch_vnics_data=fetch_vnics_data -@@ -304,11 +311,9 @@ def read_opc_metadata(*, fetch_vnics_dat - retries = 2 - - def _fetch(metadata_version: int, path: str) -> dict: -- headers = { -- "Authorization": "Bearer Oracle"} if metadata_version > 1 else None - return readurl( - url=METADATA_PATTERN.format(version=metadata_version, path=path), -- headers=headers, -+ headers=V2_HEADERS if metadata_version > 1 else None, - retries=retries, - )._response.json() - ---- a/cloudinit/sources/helpers/vultr.py -+++ b/cloudinit/sources/helpers/vultr.py -@@ -20,7 +20,7 @@ LOG = log.getLogger(__name__) - def get_metadata(url, timeout, retries, sec_between): - # Bring up interface - try: -- with EphemeralDHCPv4(connectivity_url=url): -+ with EphemeralDHCPv4(connectivity_url_data={"url": url}): - # Fetch the metadata - v1 = read_metadata(url, timeout, retries, sec_between) - except (NoDHCPLeaseError) as exc: ---- a/cloudinit/sources/tests/test_oracle.py -+++ b/cloudinit/sources/tests/test_oracle.py -@@ -694,7 +694,15 @@ class TestNonIscsiRoot_GetDataBehaviour: - assert oracle_ds._get_data() - - assert [ -- mock.call(m_find_fallback_nic.return_value) -+ mock.call( -+ iface=m_find_fallback_nic.return_value, -+ connectivity_url_data={ -+ 'headers': { -+ 'Authorization': 'Bearer Oracle' -+ }, -+ 'url': 'http://169.254.169.254/opc/v2/instance/' -+ } -+ ) - ] == m_EphemeralDHCPv4.call_args_list - - diff --git a/debian/patches/cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 b/debian/patches/cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 deleted file mode 100644 index e33ca16f7c3..00000000000 --- a/debian/patches/cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 +++ /dev/null @@ -1,190 +0,0 @@ -From 9c147e8341e287366790e60658f646cdcc59bef2 Mon Sep 17 00:00:00 2001 -From: James Falcon -Date: Thu, 7 Oct 2021 11:27:36 -0500 -Subject: [PATCH] Allow disabling of network activation (SC-307) (#1048) - -In #919 (81299de), we refactored some of the code used to bring up -networks across distros. Previously, the call to bring up network -interfaces during 'init' stage unintentionally resulted in a no-op -such that network interfaces were NEVER brought up by cloud-init, even -if new network interfaces were found after crawling the metadata. - -The code was altered to bring up these discovered network interfaces. -On ubuntu, this results in a 'netplan apply' call during 'init' stage -for any ubuntu-based distro on a datasource that has a NETWORK -dependency. On GCE, this additional 'netplan apply' conflicts with the -google-guest-agent service, resulting in an instance that can no -be connected to. - -This commit adds a 'disable_network_activation' option that can be -enabled in /etc/cloud.cfg to disable the activation of network -interfaces in 'init' stage. - -LP: #1938299 ---- - cloudinit/cmd/main.py | 11 ++++- - cloudinit/cmd/tests/test_main.py | 23 ++++++++++ - cloudinit/distros/__init__.py | 3 ++ - doc/rtd/topics/network-config.rst | 11 +++++ - .../datasources/test_network_dependency.py | 43 +++++++++++++++++++ - 5 files changed, 89 insertions(+), 2 deletions(-) - create mode 100644 tests/integration_tests/datasources/test_network_dependency.py - ---- a/cloudinit/cmd/main.py -+++ b/cloudinit/cmd/main.py -@@ -239,6 +239,12 @@ def purge_cache_on_python_version_change - util.write_file(python_version_path, current_python_version) - - -+def _should_bring_up_interfaces(init, args): -+ if util.get_cfg_option_bool(init.cfg, 'disable_network_activation'): -+ return False -+ return not args.local -+ -+ - def main_init(name, args): - deps = [sources.DEP_FILESYSTEM, sources.DEP_NETWORK] - if args.local: -@@ -348,6 +354,7 @@ def main_init(name, args): - util.del_file(os.path.join(path_helper.get_cpath("data"), "no-net")) - - # Stage 5 -+ bring_up_interfaces = _should_bring_up_interfaces(init, args) - try: - init.fetch(existing=existing) - # if in network mode, and the datasource is local -@@ -367,7 +374,7 @@ def main_init(name, args): - util.logexc(LOG, ("No instance datasource found!" - " Likely bad things to come!")) - if not args.force: -- init.apply_network_config(bring_up=not args.local) -+ init.apply_network_config(bring_up=bring_up_interfaces) - LOG.debug("[%s] Exiting without datasource", mode) - if mode == sources.DSMODE_LOCAL: - return (None, []) -@@ -388,7 +395,7 @@ def main_init(name, args): - # dhcp clients to advertize this hostname to any DDNS services - # LP: #1746455. - _maybe_set_hostname(init, stage='local', retry_stage='network') -- init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL)) -+ init.apply_network_config(bring_up=bring_up_interfaces) - - if mode == sources.DSMODE_LOCAL: - if init.datasource.dsmode != mode: ---- a/cloudinit/cmd/tests/test_main.py -+++ b/cloudinit/cmd/tests/test_main.py -@@ -4,6 +4,9 @@ from collections import namedtuple - import copy - import os - from io import StringIO -+from unittest import mock -+ -+import pytest - - from cloudinit.cmd import main - from cloudinit import safeyaml -@@ -162,4 +165,24 @@ class TestMain(FilesystemMockingTestCase - for log in expected_logs: - self.assertIn(log, self.stderr.getvalue()) - -+ -+class TestShouldBringUpInterfaces: -+ @pytest.mark.parametrize('cfg_disable,args_local,expected', [ -+ (True, True, False), -+ (True, False, False), -+ (False, True, False), -+ (False, False, True), -+ ]) -+ def test_should_bring_up_interfaces( -+ self, cfg_disable, args_local, expected -+ ): -+ init = mock.Mock() -+ init.cfg = {'disable_network_activation': cfg_disable} -+ -+ args = mock.Mock() -+ args.local = args_local -+ -+ result = main._should_bring_up_interfaces(init, args) -+ assert result == expected -+ - # vi: ts=4 expandtab ---- a/cloudinit/distros/__init__.py -+++ b/cloudinit/distros/__init__.py -@@ -227,8 +227,11 @@ class Distro(persistence.CloudInitPickle - - # Now try to bring them up - if bring_up: -+ LOG.debug('Bringing up newly configured network interfaces') - network_activator = activators.select_activator() - network_activator.bring_up_all_interfaces(network_state) -+ else: -+ LOG.debug("Not bringing up newly configured network interfaces") - return False - - def apply_network_config_names(self, netconfig): ---- a/doc/rtd/topics/network-config.rst -+++ b/doc/rtd/topics/network-config.rst -@@ -75,6 +75,17 @@ If `Cloud-init`_ 's networking config ha - no other network information is found, then it will proceed - to generate a fallback networking configuration. - -+Disabling Network Activation -+---------------------------- -+ -+Some datasources may not be initialized until after network has been brought -+up. In this case, cloud-init will attempt to bring up the interfaces specified -+by the datasource metadata. -+ -+This behavior can be disabled in the cloud-init configuration dictionary, -+merged from ``/etc/cloud/cloud.cfg`` and ``/etc/cloud/cloud.cfg.d/*``:: -+ -+ disable_network_activation: true - - Fallback Network Configuration - ============================== ---- /dev/null -+++ b/tests/integration_tests/datasources/test_network_dependency.py -@@ -0,0 +1,43 @@ -+import pytest -+ -+from tests.integration_tests.clouds import IntegrationCloud -+from tests.integration_tests.conftest import get_validated_source -+ -+ -+def _setup_custom_image(session_cloud: IntegrationCloud): -+ """Like `setup_image` in conftest.py, but with customized content.""" -+ source = get_validated_source(session_cloud) -+ if not source.installs_new_version(): -+ return -+ client = session_cloud.launch() -+ -+ # Insert our "disable_network_activation" file here -+ client.write_to_file( -+ '/etc/cloud/cloud.cfg.d/99-disable-network-activation.cfg', -+ 'disable_network_activation: true\n', -+ ) -+ -+ client.install_new_cloud_init(source) -+ # Even if we're keeping instances, we don't want to keep this -+ # one around as it was just for image creation -+ client.destroy() -+ -+ -+# This test should be able to work on any cloud whose datasource specifies -+# a NETWORK dependency -+@pytest.mark.gce -+@pytest.mark.ubuntu # Because netplan -+def test_network_activation_disabled(session_cloud: IntegrationCloud): -+ """Test that the network is not activated during init mode.""" -+ _setup_custom_image(session_cloud) -+ with session_cloud.launch() as client: -+ result = client.execute('systemctl status google-guest-agent.service') -+ if not result.ok: -+ raise AssertionError('google-guest-agent is not active:\n%s', -+ result.stdout) -+ log = client.read_from_file('/var/log/cloud-init.log') -+ -+ assert "Running command ['netplan', 'apply']" not in log -+ -+ assert 'Not bringing up newly configured network interfaces' in log -+ assert 'Bringing up newly configured network interfaces' not in log diff --git a/debian/patches/cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 b/debian/patches/cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 deleted file mode 100644 index 739f761c3f9..00000000000 --- a/debian/patches/cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 +++ /dev/null @@ -1,80 +0,0 @@ -From dc22786980a05129c5971e68ae37b1a9f76f882d Mon Sep 17 00:00:00 2001 -From: James Falcon -Date: Fri, 17 Sep 2021 16:25:22 -0500 -Subject: [PATCH] Set Azure to apply networking config every BOOT (#1023) - -In #1006, we set Azure to apply networking config every -BOOT_NEW_INSTANCE because the BOOT_LEGACY option was causing problems -applying networking the second time per boot. However, -BOOT_NEW_INSTANCE is also wrong as Azure needs to apply networking -once per boot, during init-local phase. ---- - cloudinit/sources/DataSourceAzure.py | 6 +++++- - tests/integration_tests/modules/test_user_events.py | 10 ++++++---- - 2 files changed, 11 insertions(+), 5 deletions(-) - -Index: cloud-init/cloudinit/sources/DataSourceAzure.py -=================================================================== ---- cloud-init.orig/cloudinit/sources/DataSourceAzure.py -+++ cloud-init/cloudinit/sources/DataSourceAzure.py -@@ -22,7 +22,7 @@ import requests - from cloudinit import dmi - from cloudinit import log as logging - from cloudinit import net --from cloudinit.event import EventType -+from cloudinit.event import EventScope, EventType - from cloudinit.net import device_driver - from cloudinit.net.dhcp import EphemeralDHCPv4 - from cloudinit import sources -@@ -339,6 +339,10 @@ def temporary_hostname(temp_hostname, cf - class DataSourceAzure(sources.DataSource): - - dsname = 'Azure' -+ default_update_events = {EventScope.NETWORK: { -+ EventType.BOOT_NEW_INSTANCE, -+ EventType.BOOT, -+ }} - _negotiated = False - _metadata_imds = sources.UNSET - _ci_pkl_version = 1 -Index: cloud-init/tests/integration_tests/modules/test_user_events.py -=================================================================== ---- cloud-init.orig/tests/integration_tests/modules/test_user_events.py -+++ cloud-init/tests/integration_tests/modules/test_user_events.py -@@ -31,7 +31,6 @@ def _add_dummy_bridge_to_netplan(client: - @pytest.mark.gce - @pytest.mark.oci - @pytest.mark.openstack --@pytest.mark.not_xenial - def test_boot_event_disabled_by_default(client: IntegrationInstance): - log = client.read_from_file('/var/log/cloud-init.log') - assert 'Applying network configuration' in log -@@ -66,7 +65,7 @@ def _test_network_config_applied_on_rebo - assert 'dummy0' not in client.execute('ls /sys/class/net') - - _add_dummy_bridge_to_netplan(client) -- client.execute('rm /var/log/cloud-init.log') -+ client.execute('echo "" > /var/log/cloud-init.log') - client.restart() - log = client.read_from_file('/var/log/cloud-init.log') - -@@ -81,6 +80,11 @@ def test_boot_event_enabled_by_default(c - _test_network_config_applied_on_reboot(client) - - -+@pytest.mark.azure -+def test_boot_event_enabled_by_default(client: IntegrationInstance): -+ _test_network_config_applied_on_reboot(client) -+ -+ - USER_DATA = """\ - #cloud-config - updates: -@@ -89,7 +93,6 @@ updates: - """ - - --@pytest.mark.not_xenial - @pytest.mark.user_data(USER_DATA) - def test_boot_event_enabled(client: IntegrationInstance): - _test_network_config_applied_on_reboot(client) diff --git a/debian/patches/cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE b/debian/patches/cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE deleted file mode 100644 index c6ff7345c27..00000000000 --- a/debian/patches/cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE +++ /dev/null @@ -1,55 +0,0 @@ -From e69a88745e37061e0ab0a1e67ad11015cca610c1 Mon Sep 17 00:00:00 2001 -From: James Falcon -Date: Fri, 3 Sep 2021 12:57:20 -0500 -Subject: [PATCH] Set Azure to only update metadata on BOOT_NEW_INSTANCE - (#1006) - -In #834, we refactored the handling of events for fetching new metadata. -Previously, in Azure's __init__, the BOOT event was added to the -update_events, so it was assumed that Azure required the standard BOOT -behavior, which is to apply metadata twice every boot: once during -local-init, then again during standard init phase. -https://github.com/canonical/cloud-init/blob/21.2/cloudinit/sources/DataSourceAzure.py#L356 - -However, this line was effectively meaningless. After the metadata was -fetched in local-init, it was then pickled out to disk. Because -"update_events" was a class variable, the EventType.BOOT was not -persisted into the pickle. When the pickle was then unpickled in the -init phase, metadata did not get re-fetched because EventType.BOOT was -not present, so Azure is effectely only BOOT_NEW_INSTANCE. - -Fetching metadata twice during boot causes some issue for -pre-provisioning on Azure because updating metadata during -re-provisioning will cause cloud-init to poll for reprovisiondata again -in DataSourceAzure, which will infinitely return 404(reprovisiondata -is deleted from IMDS after health signal was sent by cloud-init during -init-local). This makes cloud-init stuck in 'init' ---- - cloudinit/sources/DataSourceAzure.py | 9 +-------- - 1 file changed, 1 insertion(+), 8 deletions(-) - ---- a/cloudinit/sources/DataSourceAzure.py -+++ b/cloudinit/sources/DataSourceAzure.py -@@ -22,7 +22,7 @@ import requests - from cloudinit import dmi - from cloudinit import log as logging - from cloudinit import net --from cloudinit.event import EventScope, EventType -+from cloudinit.event import EventType - from cloudinit.net import device_driver - from cloudinit.net.dhcp import EphemeralDHCPv4 - from cloudinit import sources -@@ -339,13 +339,6 @@ def temporary_hostname(temp_hostname, cf - class DataSourceAzure(sources.DataSource): - - dsname = 'Azure' -- # Regenerate network config new_instance boot and every boot -- default_update_events = {EventScope.NETWORK: { -- EventType.BOOT_NEW_INSTANCE, -- EventType.BOOT, -- EventType.BOOT_LEGACY -- }} -- - _negotiated = False - _metadata_imds = sources.UNSET - _ci_pkl_version = 1 diff --git a/debian/patches/series b/debian/patches/series deleted file mode 100644 index 2c9529859b6..00000000000 --- a/debian/patches/series +++ /dev/null @@ -1,5 +0,0 @@ -cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling -cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE -cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 -cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 -cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 From 6ad9a05e83c5a725e20b22f89a5ed8de4f568aff Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 2 Nov 2021 18:07:48 -0500 Subject: [PATCH 0514/1174] update changelog. --- debian/changelog | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 3a2abeb4c35..fa86c146d6d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,8 +3,14 @@ cloud-init (21.3-1-g6803368d-0ubuntu4) UNRELEASED; urgency=medium * d/upstream/metadata: Change contact to James Falcon * d/cloud-init.templates: Add LXD to default datasource_list with translations + * drop the following cherry-picks now included: + + cpick-28e56d99-Azure-Retry-dhcp-on-timeouts-when-polling + + cpick-e69a8874-Set-Azure-to-only-update-metadata-on-BOOT_NEW_INSTANCE + + cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 + + cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 + + cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 - -- James Falcon Mon, 11 Oct 2021 15:32:07 -0500 + -- James Falcon Tue, 02 Nov 2021 18:07:48 -0500 cloud-init (21.3-1-g6803368d-0ubuntu3) impish; urgency=medium From 481d4b06fc773a94c9f515af9bf8352f72ac0eda Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 2 Nov 2021 18:07:54 -0500 Subject: [PATCH 0515/1174] update changelog (New upstream release 21.4). --- debian/changelog | 101 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index fa86c146d6d..9b5ca6f8e21 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.3-1-g6803368d-0ubuntu4) UNRELEASED; urgency=medium +cloud-init (21.4-0ubuntu1~22.04.1) UNRELEASED; urgency=medium * d/upstream/metadata: Change contact to James Falcon * d/cloud-init.templates: Add LXD to default datasource_list with @@ -9,8 +9,105 @@ cloud-init (21.3-1-g6803368d-0ubuntu4) UNRELEASED; urgency=medium + cpick-612e3908-Add-connectivity_url-to-Oracle-s-EphemeralDHCPv4-988 + cpick-dc227869-Set-Azure-to-apply-networking-config-every-BOOT-1023 + cpick-9c147e83-Allow-disabling-of-network-activation-SC-307-1048 + * New upstream release. + - Release 21.4 (#1091) (LP: #1949405) + - Azure: fallback nic needs to be reevaluated during reprovisioning + (#1094) [Anh Vo] + - azure: pps imds (#1093) [Anh Vo] + - testing: Remove calls to 'install_new_cloud_init' (#1092) + - Add LXD datasource (#1040) + - Fix unhandled apt_configure case. (#1065) [Brett Holman] + - Allow libexec for hotplug (#1088) + - Add necessary mocks to test_ovf unit tests (#1087) + - Remove (deprecated) apt-key (#1068) [Brett Holman] (LP: #1836336) + - distros: Remove a completed "TODO" comment (#1086) + - cc_ssh.py: Add configuration for controlling ssh-keygen output (#1083) + [dermotbradley] + - Add "install hotplug" module (SC-476) (#1069) (LP: #1946003) + - hosts.alpine.tmpl: rearrange the order of short and long hostnames + (#1084) [dermotbradley] + - Add max version to docutils + - cloudinit/dmi.py: Change warning to debug to prevent console display + (#1082) [dermotbradley] + - remove unnecessary EOF string in + disable-sshd-keygen-if-cloud-init-active.conf (#1075) [Emanuele + Giuseppe Esposito] + - Add module 'write-files-deferred' executed in stage 'final' (#916) + [Lucendio] + - Bump pycloudlib to fix CI (#1080) + - Remove pin in dependencies for jsonschema (#1078) + - Add "Google" as possible system-product-name (#1077) [vteratipally] + - Update Debian security suite for bullseye (#1076) [Johann Queuniet] + - Leave the details of service management to the distro (#1074) + [Andy Fiddaman] + - Fix typos in setup.py (#1059) [Christian Clauss] + - Update Azure _unpickle (SC-500) (#1067) (LP: #1946644) + - cc_ssh.py: fix private key group owner and permissions (#1070) + [Emanuele Giuseppe Esposito] + - VMware: read network-config from ISO (#1066) [Thomas Weißschuh] + - testing: mock sleep in gce unit tests (#1072) + - CloudStack: fix data-server DNS resolution (#1004) + [Olivier Lemasle] (LP: #1942232) + - Fix unit test broken by pyyaml upgrade (#1071) + - testing: add get_cloud function (SC-461) (#1038) + - Inhibit sshd-keygen@.service if cloud-init is active (#1028) + [Ryan Harper] + - VMWARE: search the deployPkg plugin in multiarch dir (#1061) + [xiaofengw-vmware] (LP: #1944946) + - Fix set-name/interface DNS bug (#1058) [Andrew Kutz] (LP: #1946493) + - Use specified tmp location for growpart (#1046) [jshen28] + - .gitignore: ignore tags file for ctags users (#1057) [Brett Holman] + - Allow comments in runcmd and report failed commands correctly (#1049) + [Brett Holman] (LP: #1853146) + - tox integration: pass the *_proxy, GOOGLE_*, GCP_* env vars (#1050) + [Paride Legovini] + - Allow disabling of network activation (SC-307) (#1048) (LP: #1938299) + - renderer: convert relative imports to absolute (#1052) [Paride Legovini] + - Support ETHx_IP6_GATEWAY, SET_HOSTNAME on OpenNebula (#1045) + [Vlastimil Holer] + - integration-requirements: bump the pycloudlib commit (#1047) + [Paride Legovini] + - Allow Vultr to set MTU and use as-is configs (#1037) [eb3095] + - pin jsonschema in requirements.txt (#1043) + - testing: remove cloud_tests (#1020) + - Add andgein as contributor (#1042) [Andrew Gein] + - Make wording for module frequency consistent (#1039) [Nicolas Bock] + - Use ascii code for growpart (#1036) [jshen28] + - Add jshen28 as contributor (#1035) [jshen28] + - Skip test_cache_purged_on_version_change on Azure (#1033) + - Remove invalid ssh_import_id from examples (#1031) + - Cleanup Vultr support (#987) [eb3095] + - docs: update cc_disk_setup for fs to raw disk (#1017) + - HACKING.rst: change contact info to James Falcon (#1030) + - tox: bump the pinned flake8 and pylint version (#1029) + [Paride Legovini] (LP: #1944414) + - Add retries to DataSourceGCE.py when connecting to GCE (#1005) + [vteratipally] + - Set Azure to apply networking config every BOOT (#1023) + - Add connectivity_url to Oracle's EphemeralDHCPv4 (#988) (LP: #1939603) + - docs: fix typo and include sudo for report bugs commands (#1022) + [Renan Rodrigo] (LP: #1940236) + - VMware: Fix typo introduced in #947 and add test (#1019) [PengpengSun] + - Update IPv6 entries in /etc/hosts (#1021) [Richard Hansen] (LP: #1943798) + - Integration test upgrades for the 21.3-1 SRU (#1001) + - Add Jille to tools/.github-cla-signers (#1016) [Jille Timmermans] + - Improve ug_util.py (#1013) [Shreenidhi Shedi] + - Support openEuler OS (#1012) [zhuzaifangxuele] + - ssh_utils.py: ignore when sshd_config options are not key/value pairs + (#1007) [Emanuele Giuseppe Esposito] + - Set Azure to only update metadata on BOOT_NEW_INSTANCE (#1006) + - cc_update_etc_hosts: Use the distribution-defined path for the hosts + file (#983) [Andy Fiddaman] + - Add CloudLinux OS support (#1003) [Alexandr Kravchenko] + - puppet config: add the start_agent option (#1002) [Andrew Bogott] + - Fix `make style-check` errors (#1000) [Shreenidhi Shedi] + - Make cloud-id copyright year (#991) [Andrii Podanenko] + - Add support to accept-ra in networkd renderer (#999) [Shreenidhi Shedi] + - Update ds-identify to pass shellcheck (#979) [Andrew Kutz] + - Azure: Retry dhcp on timeouts when polling reprovisiondata (#998) + [aswinrajamannar] - -- James Falcon Tue, 02 Nov 2021 18:07:48 -0500 + -- James Falcon Tue, 02 Nov 2021 18:07:49 -0500 cloud-init (21.3-1-g6803368d-0ubuntu3) impish; urgency=medium From 7c2cab243d5058a009732b82074a9852bf309e09 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 2 Nov 2021 18:08:17 -0500 Subject: [PATCH 0516/1174] releasing cloud-init version 21.4-0ubuntu1~22.04.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9b5ca6f8e21..749b04a127e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.4-0ubuntu1~22.04.1) UNRELEASED; urgency=medium +cloud-init (21.4-0ubuntu1~22.04.1) jammy; urgency=medium * d/upstream/metadata: Change contact to James Falcon * d/cloud-init.templates: Add LXD to default datasource_list with From 421bff4c4e3136b968987a430585fe82a0da9ff3 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Dec 2021 15:44:21 -0700 Subject: [PATCH 0517/1174] update changelog (New upstream snapshot 21.4-25-g039c40f9). --- debian/changelog | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/debian/changelog b/debian/changelog index 749b04a127e..d2479510a99 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,42 @@ +cloud-init (21.4-25-g039c40f9-0ubuntu1~22.04.1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - Reorganize unit test locations under tests/unittests (#1126) + [Brett Holman] + - Fix exception when no activator found (#1129) (LP: #1948681) + - jinja: provide and document jinja-safe key aliases in instance-data + (SC-622) (#1123) + - testing: Remove date from final_message test (SC-638) (#1127) + - Move GCE metadata fetch to init-local (SC-502) (#1122) + - Fix missing metadata routes for vultr (#1125) [eb3095] + - cc_ssh_authkey_fingerprints.py: prevent duplicate messages on console + (#1081) [dermotbradley] + - sources/azure: remove unused remnants related to agent command (#1119) + [Chris Patterson] + - github: update PR template's contributing URL (#1120) [Chris Patterson] + - docs: Rename HACKING.rst to CONTRIBUTING.rst (#1118) + - testing: monkeypatch system_info call in unit tests (SC-533) (#1117) + - Fix Vultr timeout and wait values (#1113) [eb3095] + - lxd: add preference for LXD cloud-init.* config keys over user keys + (#1108) + - VMware: source /etc/network/interfaces.d/* on Debian + [chengcheng-chcheng] (LP: #1950136) + - Add cjp256 as contributor (#1109) [Chris Patterson] + - integration_tests: Ensure log directory exists before symlinking to it + (#1110) + - testing: add growpart integration test (#1104) [Brett Holman] + - integration_test: Speed up CI run time (#1111) + - Some miscellaneous integration test fixes (SC-606) (#1103) + - tests: specialize lxd_discovery test for lxd_vm vendordata (#1106) + - Add convenience symlink to integration test output (#1105) [Brett Holman] + - Fix for set-name bug in networkd renderer (#1100) + [Andrew Kutz] (LP: #1949407) + - Wait for apt lock (#1034) (LP: #1944611) + - testing: stop chef test from running on openstack (#1102) + - alpine.py: add options to the apk upgrade command (#1089) [dermotbradley] + + -- Chad Smith Fri, 03 Dec 2021 15:44:06 -0700 + cloud-init (21.4-0ubuntu1~22.04.1) jammy; urgency=medium * d/upstream/metadata: Change contact to James Falcon From 0bd15a5fd0c5567bf0c6915906dd122d0919cfeb Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 3 Dec 2021 15:44:31 -0700 Subject: [PATCH 0518/1174] releasing cloud-init version 21.4-25-g039c40f9-0ubuntu1~22.04.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index d2479510a99..c4a217ff1ba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.4-25-g039c40f9-0ubuntu1~22.04.1) UNRELEASED; urgency=medium +cloud-init (21.4-25-g039c40f9-0ubuntu1~22.04.1) jammy; urgency=medium * New upstream snapshot. - Reorganize unit test locations under tests/unittests (#1126) From cbc406ea9db3fd77c7eec532571648f262e6f925 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 31 Jan 2022 15:42:34 -0600 Subject: [PATCH 0519/1174] Move LXD to end of datasource_list (#1227) Allow detection of OpenStack before LXD. LP: #1959118 --- debian/changelog | 6 ++++++ debian/cloud-init.templates | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index c4a217ff1ba..572353a4e1b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (21.4-25-g039c40f9-0ubuntu1~22.04.2) UNRELEASED; urgency=medium + + * d/cloud-init.templates: Move LXD to back of datasource_list + + -- James Falcon Mon, 31 Jan 2022 14:06:07 -0600 + cloud-init (21.4-25-g039c40f9-0ubuntu1~22.04.1) jammy; urgency=medium * New upstream snapshot. diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index 6e131cec38f..3cf4eafb830 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, LXD, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, None -Choices-C: NoCloud, ConfigDrive, LXD, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, None -__Choices: NoCloud: Reads info from /var/lib/cloud/seed only, ConfigDrive: Reads data from Openstack Config Drive, LXD: Reads /dev/lxd/sock representation of instance data, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, VMware: reads data from guestinfo table or env vars, Vultr: Vultr Cloud, None: Failsafe datasource +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, LXD, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, LXD, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, VMware: reads data from guestinfo table or env vars, Vultr: Vultr Cloud, LXD: Reads /dev/lxd/sock representation of instance data, 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. From 03ac83db4fd2e1fce4e8b1f0180591668d0809cd Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 10 Feb 2022 16:03:19 -0700 Subject: [PATCH 0520/1174] update changelog (New upstream snapshot 21.4-119-gdeb3ae82). --- debian/changelog | 133 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 131 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 572353a4e1b..e7fbb37d843 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,137 @@ -cloud-init (21.4-25-g039c40f9-0ubuntu1~22.04.2) UNRELEASED; urgency=medium +cloud-init (21.4-119-gdeb3ae82-0ubuntu1~22.04.1) UNRELEASED; urgency=medium * d/cloud-init.templates: Move LXD to back of datasource_list + * New upstream snapshot. + - tests: lsblk --json output changes mountpoint key to mountpoinst [] + (#1261) + - mounts: fix mount opts string for ephemeral disk (#1250) + [Chris Patterson] + - Shell script handlers by freq (#1166) [Chris Lalos] + - minor improvements to documentation (#1259) [Mark Esler] + - cloud-id: publish /run/cloud-init/cloud-id- files (#1244) + - add "eslerm" as contributor (#1258) [Mark Esler] + - sources/azure: refactor ssh key handling (#1248) [Chris Patterson] + - bump pycloudlib (#1256) + - sources/hetzner: Use EphemeralDHCPv4 instead of static configuration + (#1251) [Markus Schade] + - bump pycloudlib version (#1255) [Brett Holman] + - Fix IPv6 netmask format for sysconfig (#1215) [Harald] (LP: #1959148) + - sources/azure: drop debug print (#1249) [Chris Patterson] + - tests: do not check instance.pull_file().ok() (#1246) + - sources/azure: consolidate ephemeral DHCP configuration (#1229) + [Chris Patterson] + - cc_salt_minion freebsd fix for rc.conf (#1236) [Brett Holman] + - sources/azure: fix metadata check in _check_if_nic_is_primary() (#1232) + [Chris Patterson] + - Add _netdev option to mount Azure ephemeral disk (#1213) [Eduardo Otubo] + - testing: stop universally overwriting /etc/cloud/cloud.cfg.d (#1237) + - Integration test changes (#1240) + - Fix Gentoo Locales (#1205) [Brett Holman] + - Add "slingamn" as contributor (#1235) [Shivaram Lingamneni] + - integration: do not LXD bind mount /etc/cloud/cloud.cfg.d (#1234) + - Integration testing docs and refactor (#1231) + - vultr: Return metadata immediately when found (#1233) [eb3095] + - spell check docs with spellintian (#1223) [Brett Holman] + - docs: include upstream python version info (#1230) + - Schema a d (#1211) + - Move LXD to end ds-identify DSLIST (#1228) (LP: #1959118) + - fix parallel tox execution (#1214) [Brett Holman] + - sources/azure: refactor _report_ready_if_needed and _poll_imds (#1222) + [Chris Patterson] + - Do not support setting up archive.canonical.com as a source (#1219) + [Steve Langasek] (LP: #1959343) + - Vultr: Fix lo being used for DHCP, try next on cmd fail (#1208) [eb3095] + - sources/azure: refactor _should_reprovision[_after_nic_attach]() logic + (#1206) [Chris Patterson] + - update ssh logs to show ssh private key gens pub and simplify code + (#1221) [Steve Weber] + - Remove mitechie from stale PR github action (#1217) + - Include POST format in cc_phone_home docs (#1218) (LP: #1959149) + - Add json parsing of ip addr show (SC-723) (#1210) + - cc_rsyslog: fix typo in docstring (#1207) [Louis Sautier] + - Update .github-cla-signers (#1204) [Chris Lalos] + - sources/azure: drop unused case in _report_failure() (#1200) + [Chris Patterson] + - sources/azure: always initialize _ephemeral_dhcp_ctx on unpickle (#1199) + [Chris Patterson] + - Add support for gentoo templates and cloud.cfg (#1179) [vteratipally] + - sources/azure: unpack ret tuple in crawl_metadata() (#1194) + [Chris Patterson] + - tests: focal caplog has whitespace indentation for multi-line logs + (#1201) + - Seek interfaces, skip dummy interface, fix region codes (#1192) [eb3095] + - integration: test against the Ubuntu daily images (#1198) + [Paride Legovini] + - cmd: status and cloud-id avoid change in behavior for 'not run' (#1197) + - tox: pass PYCLOUDLIB_* env vars into integration tests when present + (#1196) + - sources/azure: set ovf_is_accessible when OVF is read successfully + (#1193) [Chris Patterson] + - Enable OVF environment transport via ISO in example (#1195) [Megian] + - sources/azure: consolidate DHCP variants to EphemeralDHCPv4WithReporting + (#1190) [Chris Patterson] + - Single JSON schema validation in early boot (#1175) + - Add DatasourceOVF network-config propery to Ubuntu OVF example (#1184) + [Megian] + - testing: support pycloudlib config file (#1189) + - Ensure system_cfg read before ds net config on Oracle (SC-720) (#1174) + (LP: #1956788) + - Test Optimization Proposal (SC-736) (#1188) [Brett Holman] + - cli: cloud-id report not-run or disabled state as cloud-id (#1162) + - Remove distutils usage (#1177) [Shreenidhi Shedi] + - add .python-version to gitignore (#1186) [Brett Holman] + - print error if datasource import fails (#1170) + [Emanuele Giuseppe Esposito] + - Add new config module to set keyboard layout (#1176) + [maxnet] (LP: #1951593) + - sources/azure: rename metadata_type -> MetadataType (#1181) + [Chris Patterson] + - Remove 3.5 and xenial support (SC-711) (#1167) + - tests: mock LXD datasource detection in ds-identify on LXD containers + (#1178) + - pylint: silence errors on compat code for old jsonschema (#1172) + [Paride Legovini] + - testing: Add 3.10 Test Coverage (#1173) [Brett Holman] + - Remove unittests from integration test job in travis (#1141) + [Brett Holman] + - Don't throw exceptions for empty cloud config (#1130) [Brett Holman] + - bsd/resolv.d/ avoid duplicated entries (#1163) [Gonéri Le Bouder] + - sources/azure: do not persist failed_desired_api_version flag (#1159) + [Chris Patterson] + - Update cc_ubuntu_advantage calls to assume-yes (#1158) + [John Chittum] (LP: #1954842) + - openbsd: properly restart the network on 7.0 (#1150) [Gonéri Le Bouder] + - Add .git-blame-ignore-revs (#1161) + - Adopt Black and isort (SC-700) (#1157) + - Include dpkg frontend lock in APT_LOCK_FILES (#1153) + - tests/cmd/query: fix test run as root and add coverage for defaults + (#1156) [Chris Patterson] (LP: #1825027) + - Schema processing changes (SC-676) (#1144) + - Add dependency workaround for impish in bddeb (#1148) [Brett Holman] + - netbsd: install new dep packages (#1151) [Gonéri Le Bouder] + - find_devs_with_openbsd: ensure we return the last entry (#1149) + [Gonéri Le Bouder] + - sources/azure: remove unnecessary hostname bounce (#1143) + [Chris Patterson] + - find_devs/openbsd: accept ISO on disk (#1132) + [Gonéri Le Bouder] (GH: + https://github.com/ContainerCraft/kmi/issues/12) + - Improve error log message when mount failed (#1140) [Ksenija Stanojevic] + - add KsenijaS as a contributor (#1145) [Ksenija Stanojevic] + - travis - don't run integration tests if no deb (#1139) [Brett Holman] + - factor out function for getting top level directory of cloudinit (#1136) + [Brett Holman] + - testing: Add deterministic test id (#1138) [Brett Holman] + - mock sleep() in azure test (#1137) [Brett Holman] + - Add miraclelinux support (#1128) [Haruki TSURUMOTO] + - docs: Make MACs lowercase in network config (#1135) (GH: #1876941) + - Add Strict Metaschema Validation (#1101) [Brett Holman] + - update dead link (#1133) [Brett Holman] + - cloudinit/net: handle two different routes for the same ip (#1124) + [Emanuele Giuseppe Esposito] + - docs: pin mistune dependency (#1134) - -- James Falcon Mon, 31 Jan 2022 14:06:07 -0600 + -- Chad Smith Thu, 10 Feb 2022 16:02:56 -0700 cloud-init (21.4-25-g039c40f9-0ubuntu1~22.04.1) jammy; urgency=medium From 47276e2c50d7041c754f46c8b51ab10cbe260758 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 10 Feb 2022 16:03:28 -0700 Subject: [PATCH 0521/1174] releasing cloud-init version 21.4-119-gdeb3ae82-0ubuntu1~22.04.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index e7fbb37d843..bd3e40815d4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (21.4-119-gdeb3ae82-0ubuntu1~22.04.1) UNRELEASED; urgency=medium +cloud-init (21.4-119-gdeb3ae82-0ubuntu1~22.04.1) jammy; urgency=medium * d/cloud-init.templates: Move LXD to back of datasource_list * New upstream snapshot. From c761b956c3af176c773b94d3088975684530a846 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Wed, 16 Feb 2022 13:39:22 -0700 Subject: [PATCH 0522/1174] update changelog (New upstream snapshot 22.1-1-gb3d9acdd). --- debian/changelog | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/debian/changelog b/debian/changelog index bd3e40815d4..14a3d290737 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,24 @@ +cloud-init (22.1-1-gb3d9acdd-0ubuntu1~22.04.1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - integration tests: fix Azure failures (#1269) + - Release 22.1 (#1267) (LP: #1960939) + - sources/azure: report ready in local phase (#1265) [Chris Patterson] + - sources/azure: validate IMDS network configuration metadata (#1257) + [Chris Patterson] + - docs: Add more details to runcmd docs (#1266) + - use PEP 589 syntax for TypeDict (#1253) + - mypy: introduce type checking (#1254) [Chris Patterson] + - Fix extra ipv6 issues, code reduction and simplification (#1243) [eb3095] + - tests: when generating crypted password, generate in target env (#1252) + - sources/azure: address mypy/pyright typing complaints (#1245) + [Chris Patterson] + - Docs for x-shellscript* userdata (#1260) + - test_apt_security: azure platform has specific security URL overrides + (#1263) + + -- Brett Holman Wed, 16 Feb 2022 13:39:11 -0700 + cloud-init (21.4-119-gdeb3ae82-0ubuntu1~22.04.1) jammy; urgency=medium * d/cloud-init.templates: Move LXD to back of datasource_list From c34fc735afc8205db449fa4d438918992146e81a Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Wed, 16 Feb 2022 13:41:01 -0700 Subject: [PATCH 0523/1174] releasing cloud-init version 22.1-1-gb3d9acdd-0ubuntu1~22.04.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 14a3d290737..d7f7f5720af 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.1-1-gb3d9acdd-0ubuntu1~22.04.1) UNRELEASED; urgency=medium +cloud-init (22.1-1-gb3d9acdd-0ubuntu1~22.04.1) jammy; urgency=medium * New upstream snapshot. - integration tests: fix Azure failures (#1269) From 6dc3b914d045e664325e2379ccf91928794728be Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Thu, 17 Feb 2022 08:30:00 -0700 Subject: [PATCH 0524/1174] Fix format --- debian/apport-launcher.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/apport-launcher.py b/debian/apport-launcher.py index 30fea31b4bc..9fce9997558 100644 --- a/debian/apport-launcher.py +++ b/debian/apport-launcher.py @@ -1,6 +1,7 @@ -'''Wrapper for cloudinit apport interface''' +"""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) From 6c24b7e5ea345d255edd058b4149144de1e09043 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Thu, 17 Feb 2022 11:59:24 -0700 Subject: [PATCH 0525/1174] Update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index d7f7f5720af..40adc3fb72a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (22.1-1-gb3d9acdd-0ubuntu1~22.04.2) UNRELEASED; urgency=medium + + * debian/apport-launcher.py: Fix string and whitespace formatting + + -- Brett Holman Thu, 17 Feb 2022 11:57:57 -0700 + cloud-init (22.1-1-gb3d9acdd-0ubuntu1~22.04.1) jammy; urgency=medium * New upstream snapshot. From 95014654998c2dae29ef606dde455651d3aa0eb2 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Thu, 17 Feb 2022 14:28:19 -0500 Subject: [PATCH 0526/1174] sources/azure: removed unused savable PPS paths (#1268) If the VM is rebooted during provisioning, the PPS type will be determined to be UNKNOWN and will poll for reprovision data. Given that we will never enter _wait_for_all_nics_ready() in any other condition than a fresh source instance in Savable PPS, we can safely remove the now-unused code paths. Signed-off-by: Chris Patterson --- cloudinit/sources/DataSourceAzure.py | 47 +--------- tests/unittests/sources/test_azure.py | 123 +++----------------------- 2 files changed, 15 insertions(+), 155 deletions(-) diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py index 359dfbdee7e..9def230ae79 100755 --- a/cloudinit/sources/DataSourceAzure.py +++ b/cloudinit/sources/DataSourceAzure.py @@ -56,7 +56,6 @@ # DMI chassis-asset-tag is set static for all azure instances AZURE_CHASSIS_ASSET_TAG = "7783-7084-3265-9085-8269-3286-77" REPROVISION_MARKER_FILE = "/var/lib/cloud/data/poll_imds" -REPROVISION_NIC_DETACHED_MARKER_FILE = "/var/lib/cloud/data/nic_detached" REPORTED_READY_MARKER_FILE = "/var/lib/cloud/data/reported_ready" AGENT_SEED_DIR = "/var/lib/waagent" DEFAULT_PROVISIONING_ISO_DEV = "/dev/sr0" @@ -881,11 +880,6 @@ def _wait_for_nic_detach(self, nl_sock): "The preprovisioned nic %s is detached" % ifname, logger_func=LOG.warning, ) - path = REPROVISION_NIC_DETACHED_MARKER_FILE - LOG.info("Creating a marker file for nic detached: %s", path) - util.write_file( - path, "{pid}: {time}\n".format(pid=os.getpid(), time=time()) - ) except AssertionError as error: report_diagnostic_event(str(error), logger_func=LOG.error) raise @@ -1153,42 +1147,10 @@ def _wait_for_all_nics_ready(self): nl_sock = None try: nl_sock = netlink.create_bound_netlink_socket() - - report_ready_marker_present = bool( - os.path.isfile(REPORTED_READY_MARKER_FILE) - ) - - # Report ready if the marker file is not already present. - # The nic of the preprovisioned vm gets hot-detached as soon as - # we report ready. So no need to save the dhcp context. - if not os.path.isfile(REPORTED_READY_MARKER_FILE): - self._report_ready_for_pps() - - has_nic_been_detached = bool( - os.path.isfile(REPROVISION_NIC_DETACHED_MARKER_FILE) - ) - - if not has_nic_been_detached: - LOG.info("NIC has not been detached yet.") - self._teardown_ephemeral_networking() - self._wait_for_nic_detach(nl_sock) - - # If we know that the preprovisioned nic has been detached, and we - # still have a fallback nic, then it means the VM must have - # rebooted as part of customer assignment, and all the nics have - # already been attached by the Azure platform. So there is no need - # to wait for nics to be hot-attached. - if not self.fallback_interface: - self._wait_for_hot_attached_nics(nl_sock) - else: - report_diagnostic_event( - "Skipping waiting for nic attach " - "because we already have a fallback " - "interface. Report Ready marker " - "present before detaching nics: %s" - % report_ready_marker_present, - logger_func=LOG.info, - ) + self._report_ready_for_pps() + self._teardown_ephemeral_networking() + self._wait_for_nic_detach(nl_sock) + self._wait_for_hot_attached_nics(nl_sock) except netlink.NetlinkCreateSocketError as e: report_diagnostic_event(str(e), logger_func=LOG.warning) raise @@ -1506,7 +1468,6 @@ def _cleanup_markers(self): """Cleanup any marker files.""" util.del_file(REPORTED_READY_MARKER_FILE) util.del_file(REPROVISION_MARKER_FILE) - util.del_file(REPROVISION_NIC_DETACHED_MARKER_FILE) @azure_ds_telemetry_reporter def activate(self, cfg, is_new_instance): diff --git a/tests/unittests/sources/test_azure.py b/tests/unittests/sources/test_azure.py index 5f956a63ae3..8bbcfd83883 100644 --- a/tests/unittests/sources/test_azure.py +++ b/tests/unittests/sources/test_azure.py @@ -2942,126 +2942,32 @@ def setUp(self): dsaz.BUILTIN_DS_CONFIG["data_dir"] = self.waagent_d self.paths = helpers.Paths({"cloud_dir": self.tmp}) - @mock.patch( - "cloudinit.sources.helpers.netlink.wait_for_nic_detach_event", - autospec=True, - ) - @mock.patch(MOCKPATH + "util.write_file", autospec=True) - def test_nic_detach_writes_marker(self, m_writefile, m_detach): - """When we detect that a nic gets detached, we write a marker for it""" - dsa = dsaz.DataSourceAzure({}, distro=None, paths=self.paths) - nl_sock = mock.MagicMock() - dsa._wait_for_nic_detach(nl_sock) - m_detach.assert_called_with(nl_sock) - self.assertEqual(1, m_detach.call_count) - m_writefile.assert_called_with( - dsaz.REPROVISION_NIC_DETACHED_MARKER_FILE, mock.ANY - ) - @mock.patch(MOCKPATH + "util.write_file", autospec=True) - @mock.patch(MOCKPATH + "DataSourceAzure.fallback_interface") @mock.patch(MOCKPATH + "DataSourceAzure._report_ready") + @mock.patch(MOCKPATH + "DataSourceAzure._wait_for_hot_attached_nics") @mock.patch(MOCKPATH + "DataSourceAzure._wait_for_nic_detach") def test_detect_nic_attach_reports_ready_and_waits_for_detach( - self, m_detach, m_report_ready, m_fallback_if, m_writefile + self, + m_detach, + m_wait_for_hot_attached_nics, + m_report_ready, + m_writefile, ): """Report ready first and then wait for nic detach""" dsa = dsaz.DataSourceAzure({}, distro=None, paths=self.paths) dsa._wait_for_all_nics_ready() - m_fallback_if.return_value = "Dummy interface" self.assertEqual(1, m_report_ready.call_count) + self.assertEqual(1, m_wait_for_hot_attached_nics.call_count) self.assertEqual(1, m_detach.call_count) self.assertEqual(1, m_writefile.call_count) m_writefile.assert_called_with( dsaz.REPORTED_READY_MARKER_FILE, mock.ANY ) - @mock.patch("os.path.isfile") - @mock.patch(MOCKPATH + "DataSourceAzure.fallback_interface") - @mock.patch(MOCKPATH + "EphemeralDHCPv4", autospec=True) - @mock.patch(MOCKPATH + "DataSourceAzure._report_ready") - @mock.patch(MOCKPATH + "DataSourceAzure._wait_for_nic_detach") - def test_detect_nic_attach_skips_report_ready_when_marker_present( - self, m_detach, m_report_ready, m_dhcp, m_fallback_if, m_isfile - ): - """Skip reporting ready if we already have a marker file.""" - dsa = dsaz.DataSourceAzure({}, distro=None, paths=self.paths) - - def isfile(key): - return key == dsaz.REPORTED_READY_MARKER_FILE - - m_isfile.side_effect = isfile - dsa._wait_for_all_nics_ready() - m_fallback_if.return_value = "Dummy interface" - self.assertEqual(0, m_report_ready.call_count) - self.assertEqual(0, m_dhcp.call_count) - self.assertEqual(1, m_detach.call_count) - - @mock.patch("os.path.isfile") - @mock.patch(MOCKPATH + "DataSourceAzure.fallback_interface") - @mock.patch(MOCKPATH + "EphemeralDHCPv4") + @mock.patch(MOCKPATH + "util.write_file", autospec=True) @mock.patch(MOCKPATH + "DataSourceAzure._report_ready") - @mock.patch(MOCKPATH + "DataSourceAzure._wait_for_nic_detach") - def test_detect_nic_attach_skips_nic_detach_when_marker_present( - self, m_detach, m_report_ready, m_dhcp, m_fallback_if, m_isfile - ): - """Skip wait for nic detach if it already happened.""" - dsa = dsaz.DataSourceAzure({}, distro=None, paths=self.paths) - - m_isfile.return_value = True - dsa._wait_for_all_nics_ready() - m_fallback_if.return_value = "Dummy interface" - self.assertEqual(0, m_report_ready.call_count) - self.assertEqual(0, m_dhcp.call_count) - self.assertEqual(0, m_detach.call_count) - - @mock.patch(MOCKPATH + "DataSourceAzure.wait_for_link_up", autospec=True) - @mock.patch("cloudinit.sources.helpers.netlink.wait_for_nic_attach_event") - @mock.patch("cloudinit.sources.net.find_fallback_nic") - @mock.patch(MOCKPATH + "get_metadata_from_imds") - @mock.patch(MOCKPATH + "EphemeralDHCPv4", autospec=True) - @mock.patch(MOCKPATH + "DataSourceAzure._wait_for_nic_detach") - @mock.patch("os.path.isfile") - def test_wait_for_nic_attach_if_no_fallback_interface( - self, - m_isfile, - m_detach, - m_dhcpv4, - m_imds, - m_fallback_if, - m_attach, - m_link_up, - ): - """Wait for nic attach if we do not have a fallback interface""" - dsa = dsaz.DataSourceAzure({}, distro=None, paths=self.paths) - lease = { - "interface": "eth9", - "fixed-address": "192.168.2.9", - "routers": "192.168.2.1", - "subnet-mask": "255.255.255.0", - "unknown-245": "624c3620", - } - - m_isfile.return_value = True - m_attach.return_value = "eth0" - dhcp_ctx = mock.MagicMock(lease=lease) - dhcp_ctx.obtain_lease.return_value = lease - m_dhcpv4.return_value = dhcp_ctx - m_imds.return_value = IMDS_NETWORK_METADATA - m_fallback_if.return_value = None - - dsa._wait_for_all_nics_ready() - - self.assertEqual(0, m_detach.call_count) - self.assertEqual(1, m_attach.call_count) - self.assertEqual(1, m_dhcpv4.call_count) - self.assertEqual(1, m_imds.call_count) - self.assertEqual(1, m_link_up.call_count) - m_link_up.assert_called_with(mock.ANY, "eth0") - @mock.patch(MOCKPATH + "DataSourceAzure.wait_for_link_up") @mock.patch("cloudinit.sources.helpers.netlink.wait_for_nic_attach_event") - @mock.patch("cloudinit.sources.net.find_fallback_nic") @mock.patch(MOCKPATH + "DataSourceAzure.get_imds_data_with_api_fallback") @mock.patch(MOCKPATH + "EphemeralDHCPv4", autospec=True) @mock.patch(MOCKPATH + "DataSourceAzure._wait_for_nic_detach") @@ -3072,9 +2978,10 @@ def test_wait_for_nic_attach_multinic_attach( m_detach, m_dhcpv4, m_imds, - m_fallback_if, m_attach, m_link_up, + m_report_ready, + m_writefile, ): """Wait for nic attach if we do not have a fallback interface""" dsa = dsaz.DataSourceAzure({}, distro=None, paths=self.paths) @@ -3103,11 +3010,10 @@ def test_wait_for_nic_attach_multinic_attach( dhcp_ctx.obtain_lease.return_value = lease m_dhcpv4.return_value = dhcp_ctx m_imds.side_effect = [md] - m_fallback_if.return_value = None dsa._wait_for_all_nics_ready() - self.assertEqual(0, m_detach.call_count) + self.assertEqual(1, m_detach.call_count) self.assertEqual(2, m_attach.call_count) # DHCP and network metadata calls will only happen on the primary NIC. self.assertEqual(1, m_dhcpv4.call_count) @@ -3976,12 +3882,8 @@ def test_savable_pps(self): False, # /var/lib/cloud/data/poll_imds False, # seed/azure/ovf-env.xml False, # /var/lib/cloud/data/poll_imds - False, # /var/lib/cloud/data/reported_ready - False, # /var/lib/cloud/data/reported_ready - False, # /var/lib/cloud/data/nic_detached True, # /var/lib/cloud/data/reported_ready ] - self.azure_ds._fallback_interface = False self.azure_ds._get_data() @@ -3994,9 +3896,6 @@ def test_savable_pps(self): ), mock.call("/var/lib/cloud/data/poll_imds"), mock.call("/var/lib/cloud/data/reported_ready"), - mock.call("/var/lib/cloud/data/reported_ready"), - mock.call("/var/lib/cloud/data/nic_detached"), - mock.call("/var/lib/cloud/data/reported_ready"), ] assert self.mock_readurl.mock_calls == [ From dc418f2cd167e53f15c872c5338e88f90cce530e Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Thu, 17 Feb 2022 20:15:18 -0500 Subject: [PATCH 0527/1174] sources/azure: ensure retries on IMDS request failure (#1271) There are two issues with IMDS retries: 1. IMDS_VER_WANT will never be attempted if retries=0, such as when fetching network metadata with infinite=True. 2. get_imds_data_with_api_fallback() will attempt one request with IMDS_VER_WANT. If the connection fails due to a timeout, connection issue, or error code other than 400, an empty dictionary will be returned without attempting the requested number of retries. This PR: - Updates get_imds_data_with_api_fallback() to invoke get_metadata_from_imds() with the specified retries and infinite parameters. - Updates retry_on_url_exc to take a configurable set of HTTP error codes and exception types to retry on. - Add IMDS_RETRY_CODES set to retry with when fetching data from IMDS: - 404 not found (yet) - 410 gone / unavailable (yet) - 429 rate-limited/throttled - 500 server error - Replace default callback with imds_readurl_exception_callback, which configures retry_on_url_exc() with these error codes and instances. - Add new pytests for IMDS to eventually replace the unittest equivalents and improve existing coverage. Signed-off-by: Chris Patterson --- cloudinit/sources/DataSourceAzure.py | 93 ++++++----- cloudinit/url_helper.py | 16 +- tests/unittests/sources/test_azure.py | 230 ++++++++++++++++++++++++-- 3 files changed, 283 insertions(+), 56 deletions(-) diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py index 9def230ae79..294bcb4a7dc 100755 --- a/cloudinit/sources/DataSourceAzure.py +++ b/cloudinit/sources/DataSourceAzure.py @@ -7,6 +7,7 @@ import base64 import crypt import datetime +import functools import os import os.path import re @@ -67,6 +68,17 @@ IMDS_VER_MIN = "2019-06-01" IMDS_VER_WANT = "2021-08-01" IMDS_EXTENDED_VER_MIN = "2021-03-01" +IMDS_RETRY_CODES = ( + 404, # not found (yet) + 410, # gone / unavailable (yet) + 429, # rate-limited/throttled + 500, # server error +) +imds_readurl_exception_callback = functools.partial( + retry_on_url_exc, + retry_codes=IMDS_RETRY_CODES, + retry_instances=(requests.Timeout,), +) class MetadataType(Enum): @@ -725,44 +737,49 @@ def _get_data(self): def get_imds_data_with_api_fallback( self, *, - retries, - md_type=MetadataType.ALL, - exc_cb=retry_on_url_exc, - infinite=False, - ): - """ - Wrapper for get_metadata_from_imds so that we can have flexibility - in which IMDS api-version we use. If a particular instance of IMDS - does not have the api version that is desired, we want to make - this fault tolerant and fall back to a good known minimum api - version. - """ - for _ in range(retries): - try: - LOG.info("Attempting IMDS api-version: %s", IMDS_VER_WANT) - return get_metadata_from_imds( - retries=0, - md_type=md_type, - api_version=IMDS_VER_WANT, - exc_cb=exc_cb, - ) - except UrlError as err: - LOG.info("UrlError with IMDS api-version: %s", IMDS_VER_WANT) - if err.code == 400: - log_msg = "Fall back to IMDS api-version: {}".format( - IMDS_VER_MIN - ) - report_diagnostic_event(log_msg, logger_func=LOG.info) - break + retries: int, + md_type: MetadataType = MetadataType.ALL, + exc_cb=imds_readurl_exception_callback, + infinite: bool = False, + ) -> dict: + """Fetch metadata from IMDS using IMDS_VER_WANT API version. - LOG.info("Using IMDS api-version: %s", IMDS_VER_MIN) - return get_metadata_from_imds( - retries=retries, - md_type=md_type, - api_version=IMDS_VER_MIN, - exc_cb=exc_cb, - infinite=infinite, - ) + Falls back to IMDS_VER_MIN version if IMDS returns a 400 error code, + indicating that IMDS_VER_WANT is unsupported. + + :return: Parsed metadata dictionary or empty dict on error. + """ + LOG.info("Attempting IMDS api-version: %s", IMDS_VER_WANT) + try: + return get_metadata_from_imds( + retries=retries, + md_type=md_type, + api_version=IMDS_VER_WANT, + exc_cb=exc_cb, + infinite=infinite, + ) + except UrlError as error: + LOG.info("UrlError with IMDS api-version: %s", IMDS_VER_WANT) + # Fall back if HTTP code is 400, otherwise return empty dict. + if error.code != 400: + return {} + + log_msg = "Fall back to IMDS api-version: {}".format(IMDS_VER_MIN) + report_diagnostic_event(log_msg, logger_func=LOG.info) + try: + return get_metadata_from_imds( + retries=retries, + md_type=md_type, + api_version=IMDS_VER_MIN, + exc_cb=exc_cb, + infinite=infinite, + ) + except UrlError as error: + report_diagnostic_event( + "Failed to fetch IMDS metadata: %s" % error, + logger_func=LOG.error, + ) + return {} def device_name_to_device(self, name): return self.ds_cfg["disk_aliases"].get(name) @@ -2271,7 +2288,7 @@ def get_metadata_from_imds( retries, md_type=MetadataType.ALL, api_version=IMDS_VER_MIN, - exc_cb=retry_on_url_exc, + exc_cb=imds_readurl_exception_callback, infinite=False, ): """Query Azure's instance metadata service, returning a dictionary. diff --git a/cloudinit/url_helper.py b/cloudinit/url_helper.py index 5b2f2ef9fd2..c577e8da3ac 100644 --- a/cloudinit/url_helper.py +++ b/cloudinit/url_helper.py @@ -639,16 +639,22 @@ def oauth_headers( return signed_headers -def retry_on_url_exc(msg, exc): - """readurl exception_cb that will retry on NOT_FOUND and Timeout. +def retry_on_url_exc( + msg, exc, *, retry_codes=(NOT_FOUND,), retry_instances=(requests.Timeout,) +): + """Configurable retry exception callback for readurl(). + + :param retry_codes: Codes to retry on. Defaults to 404. + :param retry_instances: Exception types to retry on. Defaults to + requests.Timeout. - Returns False to raise the exception from readurl, True to retry. + :returns: False to raise the exception from readurl(), True to retry. """ if not isinstance(exc, UrlError): return False - if exc.code == NOT_FOUND: + if exc.code in retry_codes: return True - if exc.cause and isinstance(exc.cause, requests.Timeout): + if exc.cause and isinstance(exc.cause, retry_instances): return True return False diff --git a/tests/unittests/sources/test_azure.py b/tests/unittests/sources/test_azure.py index 8bbcfd83883..551de59f4cb 100644 --- a/tests/unittests/sources/test_azure.py +++ b/tests/unittests/sources/test_azure.py @@ -3,6 +3,7 @@ import copy import crypt import json +import logging import os import stat import xml.etree.ElementTree as ET @@ -151,12 +152,24 @@ def mock_readurl(): yield m +@pytest.fixture +def mock_requests_session_request(): + with mock.patch("requests.Session.request", autospec=True) as m: + yield m + + @pytest.fixture def mock_subp_subp(): with mock.patch(MOCKPATH + "subp.subp", side_effect=[]) as m: yield m +@pytest.fixture +def mock_url_helper_time_sleep(): + with mock.patch("cloudinit.url_helper.time.sleep", autospec=True) as m: + yield m + + @pytest.fixture def mock_util_ensure_dir(): with mock.patch( @@ -2220,10 +2233,11 @@ def get_metadata_from_imds_side_eff(*args, **kwargs): assert m_get_metadata_from_imds.mock_calls == [ mock.call( - retries=0, + retries=10, md_type=dsaz.MetadataType.ALL, api_version="2021-08-01", exc_cb=mock.ANY, + infinite=False, ), mock.call( retries=10, @@ -2250,10 +2264,11 @@ def test_imds_api_version_wanted_exists(self, m_get_metadata_from_imds): assert m_get_metadata_from_imds.mock_calls == [ mock.call( - retries=0, + retries=10, md_type=dsaz.MetadataType.ALL, api_version="2021-08-01", exc_cb=mock.ANY, + infinite=False, ) ] @@ -3626,6 +3641,195 @@ def test_non_ascii_seed_is_serializable(self): self.assertEqual(deserialized["seed"], result) +def fake_http_error_for_code(status_code: int): + response_failure = requests.Response() + response_failure.status_code = status_code + return requests.exceptions.HTTPError( + "fake error", + response=response_failure, + ) + + +@pytest.mark.parametrize( + "md_type,expected_url", + [ + ( + dsaz.MetadataType.ALL, + "http://169.254.169.254/metadata/instance?" + "api-version=2021-08-01&extended=true", + ), + ( + dsaz.MetadataType.NETWORK, + "http://169.254.169.254/metadata/instance/network?" + "api-version=2021-08-01", + ), + ( + dsaz.MetadataType.REPROVISION_DATA, + "http://169.254.169.254/metadata/reprovisiondata?" + "api-version=2021-08-01", + ), + ], +) +class TestIMDS: + def test_basic_scenarios( + self, azure_ds, caplog, mock_readurl, md_type, expected_url + ): + fake_md = {"foo": {"bar": []}} + mock_readurl.side_effect = [ + mock.MagicMock(contents=json.dumps(fake_md).encode()), + ] + + md = azure_ds.get_imds_data_with_api_fallback( + retries=5, + md_type=md_type, + ) + + assert md == fake_md + assert mock_readurl.mock_calls == [ + mock.call( + expected_url, + timeout=2, + headers={"Metadata": "true"}, + retries=5, + exception_cb=dsaz.imds_readurl_exception_callback, + infinite=False, + ), + ] + + warnings = [ + x.message for x in caplog.records if x.levelno == logging.WARNING + ] + assert warnings == [] + + @pytest.mark.parametrize( + "error", + [ + fake_http_error_for_code(404), + fake_http_error_for_code(410), + fake_http_error_for_code(429), + fake_http_error_for_code(500), + requests.Timeout("Fake connection timeout"), + ], + ) + def test_will_retry_errors( + self, + azure_ds, + caplog, + md_type, + expected_url, + mock_requests_session_request, + mock_url_helper_time_sleep, + error, + ): + fake_md = {"foo": {"bar": []}} + mock_requests_session_request.side_effect = [ + error, + mock.Mock(content=json.dumps(fake_md)), + ] + + md = azure_ds.get_imds_data_with_api_fallback( + retries=5, + md_type=md_type, + ) + + assert md == fake_md + assert len(mock_requests_session_request.mock_calls) == 2 + assert mock_url_helper_time_sleep.mock_calls == [mock.call(1)] + + warnings = [ + x.message for x in caplog.records if x.levelno == logging.WARNING + ] + assert warnings == [] + + @pytest.mark.parametrize("retries", [0, 1, 5, 10]) + @pytest.mark.parametrize( + "error", + [ + fake_http_error_for_code(404), + fake_http_error_for_code(410), + fake_http_error_for_code(429), + fake_http_error_for_code(500), + requests.Timeout("Fake connection timeout"), + ], + ) + def test_retry_until_failure( + self, + azure_ds, + caplog, + md_type, + expected_url, + mock_requests_session_request, + mock_url_helper_time_sleep, + error, + retries, + ): + mock_requests_session_request.side_effect = [error] * (retries + 1) + + assert ( + azure_ds.get_imds_data_with_api_fallback( + retries=retries, + md_type=md_type, + ) + == {} + ) + + assert len(mock_requests_session_request.mock_calls) == (retries + 1) + assert ( + mock_url_helper_time_sleep.mock_calls == [mock.call(1)] * retries + ) + + warnings = [ + x.message for x in caplog.records if x.levelno == logging.WARNING + ] + assert warnings == [ + "Ignoring IMDS instance metadata. " + "Get metadata from IMDS failed: %s" % error + ] + + @pytest.mark.parametrize( + "error", + [ + fake_http_error_for_code(403), + fake_http_error_for_code(501), + requests.ConnectionError("Fake Network Unreachable"), + ], + ) + def test_will_not_retry_errors( + self, + azure_ds, + caplog, + md_type, + expected_url, + mock_requests_session_request, + mock_url_helper_time_sleep, + error, + ): + fake_md = {"foo": {"bar": []}} + mock_requests_session_request.side_effect = [ + error, + mock.Mock(content=json.dumps(fake_md)), + ] + + assert ( + azure_ds.get_imds_data_with_api_fallback( + retries=5, + md_type=md_type, + ) + == {} + ) + + assert len(mock_requests_session_request.mock_calls) == 1 + assert mock_url_helper_time_sleep.mock_calls == [] + + warnings = [ + x.message for x in caplog.records if x.levelno == logging.WARNING + ] + assert warnings == [ + "Ignoring IMDS instance metadata. " + "Get metadata from IMDS failed: %s" % error + ] + + class TestProvisioning: @pytest.fixture(autouse=True) def provisioning_setup( @@ -3722,8 +3926,8 @@ def test_no_pps(self): "api-version=2021-08-01&extended=true", timeout=2, headers={"Metadata": "true"}, - retries=0, - exception_cb=dsaz.retry_on_url_exc, + retries=10, + exception_cb=dsaz.imds_readurl_exception_callback, infinite=False, ), ] @@ -3792,8 +3996,8 @@ def test_running_pps(self): "api-version=2021-08-01&extended=true", timeout=2, headers={"Metadata": "true"}, - retries=0, - exception_cb=dsaz.retry_on_url_exc, + retries=10, + exception_cb=dsaz.imds_readurl_exception_callback, infinite=False, ), mock.call( @@ -3810,8 +4014,8 @@ def test_running_pps(self): "api-version=2021-08-01&extended=true", timeout=2, headers={"Metadata": "true"}, - retries=0, - exception_cb=dsaz.retry_on_url_exc, + retries=10, + exception_cb=dsaz.imds_readurl_exception_callback, infinite=False, ), ] @@ -3904,13 +4108,13 @@ def test_savable_pps(self): "api-version=2021-08-01&extended=true", timeout=2, headers={"Metadata": "true"}, - retries=0, - exception_cb=dsaz.retry_on_url_exc, + retries=10, + exception_cb=dsaz.imds_readurl_exception_callback, infinite=False, ), mock.call( "http://169.254.169.254/metadata/instance/network?" - "api-version=2019-06-01", + "api-version=2021-08-01", timeout=2, headers={"Metadata": "true"}, retries=0, @@ -3931,8 +4135,8 @@ def test_savable_pps(self): "api-version=2021-08-01&extended=true", timeout=2, headers={"Metadata": "true"}, - retries=0, - exception_cb=dsaz.retry_on_url_exc, + retries=10, + exception_cb=dsaz.imds_readurl_exception_callback, infinite=False, ), ] From 35241f50936d105f7fad585436890c1f463f98c0 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Thu, 17 Feb 2022 20:49:15 -0700 Subject: [PATCH 0528/1174] Clean up artifacts from pytest, packaging, release with make clean (#1277) --- Makefile | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 4ead786f867..5f0c5b1bdb8 100644 --- a/Makefile +++ b/Makefile @@ -55,8 +55,28 @@ clean_pyc: @find . -type f -name "*.pyc" -delete @find . -type d -name __pycache__ -delete -clean: clean_pyc - rm -rf doc/rtd_html .tox .coverage +clean_pytest: + rm -rf .cache htmlcov + +clean_packaging: + rm -rf srpm cloud_init.egg-info/ \ + cloud-init-*.tar.gz \ + cloud-init-*.tar.gz.asc \ + cloud-init.dsc \ + cloud-init_*.build \ + cloud-init_*.buildinfo \ + cloud-init_*.changes \ + cloud-init_*.deb \ + cloud-init_*.dsc \ + cloud-init_*.orig.tar.gz \ + cloud-init_*.tar.xz \ + cloud-init_*.upload + +clean_release: + rm -rf new-upstream-changes.txt commit.msg + +clean: clean_pyc clean_pytest clean_packaging clean_release + rm -rf doc/rtd_html .tox .coverage tags yaml: @$(PYTHON) $(CWD)/tools/validate-yaml.py $(YAML_FILES) @@ -122,4 +142,5 @@ fix_spelling: .PHONY: test flake8 clean rpm srpm deb deb-src yaml .PHONY: check_version pip-test-requirements pip-requirements clean_pyc -.PHONY: unittest style-check doc fix_spelling check_spelling +.PHONY: unittest style-check doc fix_spelling +.PHONY: clean_pytest clean_packaging check_spelling clean_release From d050f6ab9b5207f95f689a191445041403a22cd8 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Fri, 18 Feb 2022 21:31:38 -0700 Subject: [PATCH 0529/1174] Include missing subcommand in manpage (#1279) --- doc/man/cloud-init.1 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/man/cloud-init.1 b/doc/man/cloud-init.1 index 3fde41483ba..2cb6313598a 100644 --- a/doc/man/cloud-init.1 +++ b/doc/man/cloud-init.1 @@ -4,7 +4,8 @@ cloud-init \- Cloud instance initialization .SH SYNOPSIS -.BR "cloud-init" " [-h] [-d] [-f FILES] [--force] [-v] {init,modules,single,query,dhclient-hook,features,analyze,collect-logs,clean,status}" +.BR "cloud-init" " [-h] [-d] [-f FILES] [--force] [-v] +{init,modules,single,query,dhclient-hook,features,analyze,devel,collect-logs,clean,status}" .SH DESCRIPTION Cloud-init provides a mechanism for cloud instance initialization. @@ -53,6 +54,10 @@ Collect and tar all cloud-init debug info. .B "clean" Remove logs and artifacts so cloud-init can re-run. +.TP +.B "devel" +Run development tools. See help output for subcommand details. + .TP .B "dhclient-hook" Run the dhclient hook to record network info. From e7343a64eb4ee906bf718fb3b871b0d78f04576e Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Mon, 21 Feb 2022 13:38:52 -0700 Subject: [PATCH 0530/1174] Holmanb/integration test fix ppa (#1287) PPA URLs in Jammy changed from ppa.launchpad.net to ppa.launchpadcontent.net. --- tests/integration_tests/modules/test_apt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integration_tests/modules/test_apt.py b/tests/integration_tests/modules/test_apt.py index 6b3a8b7cc2d..a74312656e9 100644 --- a/tests/integration_tests/modules/test_apt.py +++ b/tests/integration_tests/modules/test_apt.py @@ -152,9 +152,9 @@ def test_ppa_source(self, class_client: IntegrationInstance): "/etc/apt/sources.list.d/" "simplestreams-dev-ubuntu-trunk-{}.list".format(release) ) - + host = "launchpad" if release == "jammy" else "launchpadcontent" assert ( - "http://ppa.launchpad.net/simplestreams-dev/trunk/ubuntu" + f"http://ppa.{host}.net/simplestreams-dev/trunk/ubuntu" in ppa_path_contents ) From 0a44f1f0fe6bb2bbd572be470355ea4506fe4d37 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 21 Feb 2022 21:58:39 +0100 Subject: [PATCH 0531/1174] add "lkundrak" as contributor --- tools/.github-cla-signers | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/.github-cla-signers b/tools/.github-cla-signers index ac157a2fba4..0567a89dfc3 100644 --- a/tools/.github-cla-signers +++ b/tools/.github-cla-signers @@ -47,6 +47,7 @@ jshen28 klausenbusk KsenijaS landon912 +lkundrak lucasmoura lucendio lungj From bb9cceda1c5d86d9fda7c1d19b21dcf1d2f955d8 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Mon, 21 Feb 2022 15:27:01 -0700 Subject: [PATCH 0532/1174] Fix apt test on azure Assert that security URL is {release}-security specific. --- tests/integration_tests/modules/test_apt.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/integration_tests/modules/test_apt.py b/tests/integration_tests/modules/test_apt.py index a74312656e9..6b17512a5be 100644 --- a/tests/integration_tests/modules/test_apt.py +++ b/tests/integration_tests/modules/test_apt.py @@ -267,9 +267,13 @@ def test_security(self, class_client: IntegrationInstance): sources_list = class_client.read_from_file("/etc/apt/sources.list") # 3 lines from main, universe, and multiverse - sec_url = "deb http://security.ubuntu.com/ubuntu" + release = ImageSpecification.from_os_image().release + sec_url = f"deb http://security.ubuntu.com/ubuntu {release}-security" if class_client.settings.PLATFORM == "azure": - sec_url = "deb http://azure.archive.ubuntu.com/ubuntu/" + sec_url = ( + f"deb http://azure.archive.ubuntu.com/ubuntu/" + f" {release}-security" + ) sec_src_url = sec_url.replace("deb ", "# deb-src ") assert 3 == sources_list.count(sec_url) assert 3 == sources_list.count(sec_src_url) From 1cfa2b5ee4198ad774d7d1f4248b0d55aee39f10 Mon Sep 17 00:00:00 2001 From: Paride Legovini Date: Tue, 22 Feb 2022 19:46:31 +0100 Subject: [PATCH 0533/1174] test_ppa_source: accept both http and https URLs (#1292) software-properties 0.99.18 now adds PPAs with HTTPS URLs in sources.list when using add-apt-repository. This change only affects Jammy. We could use a regexp to match both, but it's simpler to just remove the protocol from the search string. --- tests/integration_tests/modules/test_apt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration_tests/modules/test_apt.py b/tests/integration_tests/modules/test_apt.py index 6b17512a5be..dddaca0b6a3 100644 --- a/tests/integration_tests/modules/test_apt.py +++ b/tests/integration_tests/modules/test_apt.py @@ -154,7 +154,7 @@ def test_ppa_source(self, class_client: IntegrationInstance): ) host = "launchpad" if release == "jammy" else "launchpadcontent" assert ( - f"http://ppa.{host}.net/simplestreams-dev/trunk/ubuntu" + f"://ppa.{host}.net/simplestreams-dev/trunk/ubuntu" in ppa_path_contents ) From b7f0d4fcae19e31f1b8625a08b477c6fb839a0ad Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 23 Feb 2022 07:43:01 -0700 Subject: [PATCH 0534/1174] tests: on official EC2. cloud-id actually startswith aws not ec2 (#1289) --- tests/integration_tests/modules/test_combined.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/integration_tests/modules/test_combined.py b/tests/integration_tests/modules/test_combined.py index 7a9a6e27fcf..05499580cbd 100644 --- a/tests/integration_tests/modules/test_combined.py +++ b/tests/integration_tests/modules/test_combined.py @@ -309,10 +309,10 @@ def test_instance_json_ec2(self, class_client: IntegrationInstance): v1_data = data["v1"] assert v1_data["cloud_name"] == "aws" assert v1_data["platform"] == "ec2" - # Different regions will show up as ec2-(gov|china) - assert v1_data["cloud_id"].startswith("ec2") + # Different regions will show up as aws-(gov|china) + assert v1_data["cloud_id"].startswith("aws") assert f"{v1_data['cloud_id']}" == client.read_from_file( - "/run/cloud-init/cloud-id-ec2" + "/run/cloud-init/cloud-id-aws" ) assert v1_data["subplatform"].startswith("metadata") assert ( From 0d5edc929f445e00d352be8e0dd434953287cb5c Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Wed, 23 Feb 2022 09:47:28 -0700 Subject: [PATCH 0535/1174] Integration test fix ppa (#1296) permissively allow either launchpadcontent or launchpad --- tests/integration_tests/modules/test_apt.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/integration_tests/modules/test_apt.py b/tests/integration_tests/modules/test_apt.py index dddaca0b6a3..2e07b33b04f 100644 --- a/tests/integration_tests/modules/test_apt.py +++ b/tests/integration_tests/modules/test_apt.py @@ -152,9 +152,10 @@ def test_ppa_source(self, class_client: IntegrationInstance): "/etc/apt/sources.list.d/" "simplestreams-dev-ubuntu-trunk-{}.list".format(release) ) - host = "launchpad" if release == "jammy" else "launchpadcontent" assert ( - f"://ppa.{host}.net/simplestreams-dev/trunk/ubuntu" + "://ppa.launchpad.net/simplestreams-dev/trunk/ubuntu" + in ppa_path_contents + or "://ppa.launchpadcontent.net/simplestreams-dev/trunk/ubuntu" in ppa_path_contents ) From 76eccc4633e9e4ce6becf78ec9003ae9cad3052d Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 23 Feb 2022 10:18:04 -0700 Subject: [PATCH 0536/1174] tests: create a IPv4/IPv6 VPC in Ec2 integration tests (#1291) Integration tests should create their own VPC in EC2 because an account's default VPC, subnets, security groups and ACLs cloud be configured for for limited or unexpected connectivity. --- tests/integration_tests/clouds.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/integration_tests/clouds.py b/tests/integration_tests/clouds.py index 83bc6af6a41..14eaf9c3ac5 100644 --- a/tests/integration_tests/clouds.py +++ b/tests/integration_tests/clouds.py @@ -204,6 +204,14 @@ class Ec2Cloud(IntegrationCloud): def _get_cloud_instance(self): return EC2(tag="ec2-integration-test") + def _perform_launch(self, launch_kwargs, **kwargs): + """Use a dual-stack VPC for cloud-init integration testing.""" + launch_kwargs["vpc"] = self.cloud_instance.get_or_create_vpc( + name="ec2-cloud-init-integration" + ) + pycloudlib_instance = self.cloud_instance.launch(**launch_kwargs) + return pycloudlib_instance + class GceCloud(IntegrationCloud): datasource = "gce" From 0fb738a9e54471c417b26970a705047ab3207a70 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Wed, 23 Feb 2022 11:57:59 -0700 Subject: [PATCH 0537/1174] Do not silently ignore integer uid (#1280) The docs do not make it obvious that uid is supposed to be of type string. Current behavior is to silently ignore integer uid. LP: #1875772 --- cloudinit/distros/__init__.py | 2 ++ tests/integration_tests/modules/test_users_groups.py | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py index 76acd6a3ba7..f2d9de107ed 100755 --- a/cloudinit/distros/__init__.py +++ b/cloudinit/distros/__init__.py @@ -529,6 +529,8 @@ def add_user(self, name, **kwargs): if not util.is_group(group): self.create_group(group) LOG.debug("created group '%s' for user '%s'", group, name) + if "uid" in kwargs.keys(): + kwargs["uid"] = str(kwargs["uid"]) # Check the values and create the command for key, val in sorted(kwargs.items()): diff --git a/tests/integration_tests/modules/test_users_groups.py b/tests/integration_tests/modules/test_users_groups.py index fddff681354..8fa37bb4e62 100644 --- a/tests/integration_tests/modules/test_users_groups.py +++ b/tests/integration_tests/modules/test_users_groups.py @@ -38,6 +38,10 @@ gecos: Magic Cloud App Daemon User inactive: true system: true + - name: eric + uid: 1742 + - name: archivist + uid: '1743' """ @@ -75,6 +79,10 @@ class TestUsersGroups: ), # Test the cloudy user (["passwd", "cloudy"], r"cloudy:x:[0-9]{3,4}:"), + # Test str uid + (["passwd", "eric"], r"eric:x:1742:"), + # Test int uid + (["passwd", "archivist"], r"archivist:x:1743:"), ], ) def test_users_groups(self, regex, getent_args, class_client): From 1a543a4a85b7e1ba2253c4f4c86cbd2203d86fce Mon Sep 17 00:00:00 2001 From: Shreenidhi Shedi <53473811+sshedi@users.noreply.github.com> Date: Fri, 25 Feb 2022 05:04:54 +0530 Subject: [PATCH 0538/1174] check for existing symlink while force creating symlink (#1281) If a dead symlink by the same name is present, os.path.exists returns false, use os.path.lexists instead. Signed-off-by: Shreenidhi Shedi --- cloudinit/util.py | 2 +- tests/unittests/test_util.py | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/cloudinit/util.py b/cloudinit/util.py index 569fc215836..1fadd196291 100644 --- a/cloudinit/util.py +++ b/cloudinit/util.py @@ -1886,7 +1886,7 @@ def is_link(path): def sym_link(source, link, force=False): LOG.debug("Creating symbolic link from %r => %r", link, source) - if force and os.path.exists(link): + if force and os.path.lexists(link): del_file(link) os.symlink(source, link) diff --git a/tests/unittests/test_util.py b/tests/unittests/test_util.py index 3765511bec7..3f3079b04e7 100644 --- a/tests/unittests/test_util.py +++ b/tests/unittests/test_util.py @@ -361,6 +361,52 @@ def test_mount_is_ro(self, m_mount_info): self.assertEqual(is_rw, False) +class TestSymlink(CiTestCase): + def test_sym_link_simple(self): + tmpd = self.tmp_dir() + link = self.tmp_path("link", tmpd) + target = self.tmp_path("target", tmpd) + util.write_file(target, "hello") + + util.sym_link(target, link) + self.assertTrue(os.path.exists(link)) + self.assertTrue(os.path.islink(link)) + + def test_sym_link_source_exists(self): + tmpd = self.tmp_dir() + link = self.tmp_path("link", tmpd) + target = self.tmp_path("target", tmpd) + util.write_file(target, "hello") + + util.sym_link(target, link) + self.assertTrue(os.path.exists(link)) + + util.sym_link(target, link, force=True) + self.assertTrue(os.path.exists(link)) + + def test_sym_link_dangling_link(self): + tmpd = self.tmp_dir() + link = self.tmp_path("link", tmpd) + target = self.tmp_path("target", tmpd) + + util.sym_link(target, link) + self.assertTrue(os.path.islink(link)) + self.assertFalse(os.path.exists(link)) + + util.sym_link(target, link, force=True) + self.assertTrue(os.path.islink(link)) + self.assertFalse(os.path.exists(link)) + + def test_sym_link_create_dangling(self): + tmpd = self.tmp_dir() + link = self.tmp_path("link", tmpd) + target = self.tmp_path("target", tmpd) + + util.sym_link(target, link) + self.assertTrue(os.path.islink(link)) + self.assertFalse(os.path.exists(link)) + + class TestUptime(CiTestCase): @mock.patch("cloudinit.util.boottime") @mock.patch("cloudinit.util.os.path.exists") From 3f1e3b21f09318d92e57d40c99d18fc163dfc4ab Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Thu, 24 Feb 2022 16:40:55 -0700 Subject: [PATCH 0539/1174] update changelog (New upstream snapshot 22.1-14-g2e17a0d6). --- debian/changelog | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 40adc3fb72a..a585972611e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,27 @@ -cloud-init (22.1-1-gb3d9acdd-0ubuntu1~22.04.2) UNRELEASED; urgency=medium +cloud-init (22.1-14-g2e17a0d6-0ubuntu1~22.04.1) UNRELEASED; urgency=medium * debian/apport-launcher.py: Fix string and whitespace formatting + * New upstream snapshot. + - check for existing symlink while force creating symlink (#1281) + [Shreenidhi Shedi] + - Do not silently ignore integer uid (#1280) (LP: #1875772) + - tests: create a IPv4/IPv6 VPC in Ec2 integration tests (#1291) + - Integration test fix ppa (#1296) + - tests: on official EC2. cloud-id actually startswith aws not ec2 (#1289) + - test_ppa_source: accept both http and https URLs (#1292) + [Paride Legovini] + - Fix apt test on azure + - add "lkundrak" as contributor [Lubomir Rintel] + - Holmanb/integration test fix ppa (#1287) + - Include missing subcommand in manpage (#1279) + - Clean up artifacts from pytest, packaging, release with make clean + (#1277) + - sources/azure: ensure retries on IMDS request failure (#1271) + [Chris Patterson] + - sources/azure: removed unused saveable PPS paths (#1268) + [Chris Patterson] - -- Brett Holman Thu, 17 Feb 2022 11:57:57 -0700 + -- Brett Holman Thu, 24 Feb 2022 16:40:00 -0700 cloud-init (22.1-1-gb3d9acdd-0ubuntu1~22.04.1) jammy; urgency=medium From 2703c73adac41182301e02ad95fa2dbb959a49bf Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Thu, 24 Feb 2022 16:41:45 -0700 Subject: [PATCH 0540/1174] releasing cloud-init version 22.1-14-g2e17a0d6-0ubuntu1~22.04.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index a585972611e..1b15db4f5eb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.1-14-g2e17a0d6-0ubuntu1~22.04.1) UNRELEASED; urgency=medium +cloud-init (22.1-14-g2e17a0d6-0ubuntu1~22.04.1) jammy; urgency=medium * debian/apport-launcher.py: Fix string and whitespace formatting * New upstream snapshot. From 5d1129a921efa983ff02fee2a060faab8e53510a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 31 Mar 2022 14:54:05 -0600 Subject: [PATCH 0541/1174] update changelog (New upstream snapshot 22.1-63-gd8f39d79). --- debian/changelog | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1b15db4f5eb..07584f2c8a0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,75 @@ +cloud-init (22.1-63-gd8f39d79-0ubuntu1~22.04.1) UNRELEASED; urgency=medium + + * New upstream snapshot. + - testing: add additional mocks to test_net tests (#1356) [yangzz-97] + - schema: add JSON schema for mcollective, migrator and mounts modules + (#1358) + - Honor system locale for RHEL (#1355) [Wei Shi] + - doc: Fix typo in cloud-config-run-cmds.txt example (#1359) [Ali Shirvani] + - ds-identify: also discover LXD by presence from DMI board_name = LXD + (#1311) + - black: bump pinned version to 22.3.0 to avoid click dependency issues + (#1357) + - Various doc fixes (#1330) + - testing: Add missing is_FreeBSD mock to networking test (#1353) + - Add --no-update to add-apt-repostory call (SC-880) (#1337) + - schema: add json defs for modules K-L (#1321) + (LP: #1858899, #1858900, #1858901, #1858902) + - docs: Re-order readthedocs install (#1354) + - Stop cc_ssh_authkey_fingerprints from ALWAYS creating home (#1343) + [Jeffrey 'jf' Lim] + - docs: add jinja2 pin (#1352) + - Vultr: Use find_candidate_nics, use ipv6 dns (#1344) [eb3095] + - sources/azure: move get_ip_from_lease_value out of shim (#1324) + [Chris Patterson] + - Fix cloud-init status --wait when no datasource found (#1349) + (LP: #1966085) + - schema: add JSON defs for modules resize-salt (SC-654) (#1341) + - Add myself as a future contributor (#1345) [Neal Gompa (ニール・ゴンパ)] + - Update .github-cla-signers (#1342) [Jeffrey 'jf' Lim] + - add Requires=cloud-init-hotplugd.socket in cloud-init-hotplugd.service + file (#1335) [yangzz-97] + - Fix sysconfig render when set-name is missing (#1327) + [Andrew Kutz] (LP: #1855945) + - Refactoring helper funcs out of NetworkState (#1336) [Andrew Kutz] + - url_helper: add tuple support for readurl timeout (#1328) + [Chris Patterson] + - Make fs labels match for ds-identify and docs (#1329) + - Work around bug in LXD VM detection (#1325) + - Remove redundant generator logs (#1318) + - tox: set verbose flags for integration tests (#1323) [Chris Patterson] + - net: introduce find_candidate_nics() (#1313) [Chris Patterson] + - Revert "Ensure system_cfg read before ds net config on Oracle (#1174)" + (#1326) + - Add vendor_data2 support for ConfigDrive source (#1307) [cvstealth] + - Make VMWare data source test host independent and expand testing (#1308) + [Robert Schweikert] + - Add json schemas for modules starting with P + - sources/azure: remove lease file parsing (#1302) [Chris Patterson] + - remove flaky test from ci (#1322) + - ci: Switch to python 3.10 in Travis CI (#1320) + - Better interface handling for Vultr, expect unexpected DHCP servers + (#1297) [eb3095] + - Remove unused init local artifact (#1315) + - Doc cleanups (#1317) + - docs improvements (#1312) + - add support for jinja do statements, add unit test (#1314) + [Paul Bruno] (LP: #1962759) + - sources/azure: prevent tight loops for DHCP retries (#1285) + [Chris Patterson] + - net/dhcp: surface type of DHCP lease failure to caller (#1276) + [Chris Patterson] + - Stop hardcoding systemctl location (#1278) [Robert Schweikert] + - Remove python2 syntax from docs (#1310) + - [tools/migrate-lp-user-to-github] Rename master branch to main (#1301) + [Adam Collard] + - redhat: Depend on "hostname" package (#1288) [Lubomir Rintel] + - Add native NetworkManager support (#1224) [Lubomir Rintel] + - Fix link in CLA check to point to contribution guide. (#1299) + [Adam Collard] + + -- Chad Smith Thu, 31 Mar 2022 14:54:00 -0600 + cloud-init (22.1-14-g2e17a0d6-0ubuntu1~22.04.1) jammy; urgency=medium * debian/apport-launcher.py: Fix string and whitespace formatting From 7363c209c21ba7be5567049b4fe4c2647d77b5da Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 15 Apr 2022 20:43:08 -0600 Subject: [PATCH 0542/1174] d/control: add python3-responses for unittests --- debian/control | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 8fae4be8272..7e278b2d168 100644 --- a/debian/control +++ b/debian/control @@ -21,7 +21,8 @@ Build-Depends: debhelper-compat (= 13), python3-requests, python3-serial, python3-setuptools, - python3-yaml + python3-yaml, + python3-responses XS-Python-Version: all Vcs-Browser: https://github.com/canonical/cloud-init/tree/ubuntu/devel Vcs-Git: https://github.com/canonical/cloud-init -b ubuntu/devel From 33b0b3362ccb78967761b0f37c0f54c51d820f9a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 19 Apr 2022 16:23:43 -0600 Subject: [PATCH 0543/1174] d/control: add suggests: ssh-import-id --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index 7e278b2d168..bfe00fa8220 100644 --- a/debian/control +++ b/debian/control @@ -43,6 +43,7 @@ Depends: cloud-guest-utils | cloud-utils, ${misc:Depends}, ${python3:Depends} Recommends: eatmydata, gdisk, gnupg, software-properties-common +Suggests: ssh-import-id XB-Python-Version: ${python:Versions} Description: initialization and customization tool for cloud instances Cloud-init is the industry standard multi-distribution method for From eb089246b4513066db5697e9dc368adbb218a66f Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 15 Apr 2022 20:45:43 -0600 Subject: [PATCH 0544/1174] changelog --- debian/changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index 07584f2c8a0..7bd57d909a5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,8 @@ cloud-init (22.1-63-gd8f39d79-0ubuntu1~22.04.1) UNRELEASED; urgency=medium + * d/control: + - add python3-responses for unittests + - add Suggests: ssh-import-id * New upstream snapshot. - testing: add additional mocks to test_net tests (#1356) [yangzz-97] - schema: add JSON schema for mcollective, migrator and mounts modules From 7727edcb1e640bebad42709a5b53e5259a09bd8f Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 26 Apr 2022 19:10:42 -0500 Subject: [PATCH 0545/1174] d/control: add python3-pytest-mock for unittests --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index bfe00fa8220..4d1f6445568 100644 --- a/debian/control +++ b/debian/control @@ -18,6 +18,7 @@ Build-Depends: debhelper-compat (= 13), python3-netifaces, python3-oauthlib, python3-pytest, + python3-pytest-mock, python3-requests, python3-serial, python3-setuptools, From ef9b4e400805dc65352b78feea67a0a8dbd7b8c4 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 26 Apr 2022 19:11:22 -0500 Subject: [PATCH 0546/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 7bd57d909a5..7fc4140c265 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ cloud-init (22.1-63-gd8f39d79-0ubuntu1~22.04.1) UNRELEASED; urgency=medium * d/control: - add python3-responses for unittests + - add python3-pytest-mock for unittests - add Suggests: ssh-import-id * New upstream snapshot. - testing: add additional mocks to test_net tests (#1356) [yangzz-97] From 8ad390f1a53e92ccd60505639d3845bea0c59e1c Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 4 May 2022 17:09:01 +0000 Subject: [PATCH 0547/1174] changelog: sync released changelog entries from hotfix branch --- debian/changelog | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/debian/changelog b/debian/changelog index 7fc4140c265..d316d8bf9c1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -74,6 +74,41 @@ cloud-init (22.1-63-gd8f39d79-0ubuntu1~22.04.1) UNRELEASED; urgency=medium -- Chad Smith Thu, 31 Mar 2022 14:54:00 -0600 +cloud-init (22.1-14-g2e17a0d6-0ubuntu1~22.04.5) jammy; urgency=medium + + * d/p/cpick-be9389c6-Work-around-bug-in-LXD-VM-detection-1325: + cherry-pick be9389c6: Work around bug in LXD VM detection (#1325) + * d/p/cpick-30ccd51a-ds-identify-also-discover-LXD-by-presence-from-DMI: + cherry-pick 30ccd51a: ds-identify: also discover LXD by presence + from DMI + * d/p/pick-e3307e4d-ds-identify-detect-LXD-for-VMs-launched-from-host-with: + cherry-pick e3307e4d: ds-identify: detect LXD for VMs launched from + host with > 5.10 kernel (LP: #1968085) + + -- James Falcon Wed, 06 Apr 2022 16:48:16 -0500 + +cloud-init (22.1-14-g2e17a0d6-0ubuntu1~22.04.4) jammy; urgency=medium + + * d/p/cpick-eee60329-Fix-cloud-init-status-wait-when-no-datasource-found: + cherry-pick eee60329: Fix cloud-init status --wait when no datasource + found (#1349) + + -- Chad Smith Wed, 23 Mar 2022 20:10:41 -0600 + +cloud-init (22.1-14-g2e17a0d6-0ubuntu1~22.04.3) jammy; urgency=medium + + * d/patches: include the missing quilt patch from v. 22.04.2 upload + - cpick-5e347d25-Revert-Ensure-system_cfg-read-before-ds-net-config-on + + -- James Falcon Fri, 11 Mar 2022 15:19:52 -0600 + +cloud-init (22.1-14-g2e17a0d6-0ubuntu1~22.04.2) jammy; urgency=medium + + * cherry-pick 156b927e: Revert "Ensure system_cfg read before ds + net config on Oracle (#1174)" (#1326) + + -- James Falcon Fri, 11 Mar 2022 11:55:37 -0600 + cloud-init (22.1-14-g2e17a0d6-0ubuntu1~22.04.1) jammy; urgency=medium * debian/apport-launcher.py: Fix string and whitespace formatting From fb425b463d530b8787e0156846dd6e4b5d4cab88 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 4 May 2022 17:09:42 +0000 Subject: [PATCH 0548/1174] d/postinst: remove deprecated emit_upstart from cloud.cfg on upgrade --- debian/cloud-init.postinst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst index 683ba86de6c..f7926c91c81 100644 --- a/debian/cloud-init.postinst +++ b/debian/cloud-init.postinst @@ -208,6 +208,22 @@ cleanup_lp1552999() { "$edir/cloud-init-local.service" "$edir/cloud-init.service" } +remove_deprecated_cloud_config_modules() { + local oldver="$1" last_bad_ver="22.1-14-g2e17a0d6-0ubuntu1~22.04.5" + if dpkg --compare-versions "$oldver" le "$last_bad_ver"; then + if grep -q emit_upstart /etc/cloud/cloud.cfg; then + # Redact emit_upstart if present in locally modified cloud.cfg: + # 1. "- emit_upstart" on a single line as defined in upstream + # 2. upstart_dir config which is no longer used + sed -i -e '/- emit_upstart/d' -e '/upstart_dir/d' /etc/cloud/cloud.cfg || true + if grep -q emit_upstart /etc/cloud/cloud.cfg; then + echo "DEPRECATION: unable to remove emit_upstart from /etc/cloud/cloud.cfg." + echo "This module is deprecated, you may remove it to eliminate warnings in cloud-init logs." + fi + fi + fi +} + 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 @@ -370,6 +386,8 @@ EOF # make upgrades disable network changes by cloud-init disable_network_config_on_upgrade "$2" + remove_deprecated_cloud_config_modules "$2" + fix_azure_upgrade_1611074 "$2" cleanup_ureadahead "$2" From da929be9bdeeacd32a1539484607de908be0aa00 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 4 May 2022 17:09:22 +0000 Subject: [PATCH 0549/1174] changelog --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index d316d8bf9c1..6528abf73e6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,8 @@ cloud-init (22.1-63-gd8f39d79-0ubuntu1~22.04.1) UNRELEASED; urgency=medium - add python3-responses for unittests - add python3-pytest-mock for unittests - add Suggests: ssh-import-id + * d/cloud-init.postinst: + - remove deprecated emit_upstart from cloud.cfg on upgrade * New upstream snapshot. - testing: add additional mocks to test_net tests (#1356) [yangzz-97] - schema: add JSON schema for mcollective, migrator and mounts modules From 7bb3e841f012a111d8282ca7c4ce696e57a8d415 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 11 May 2022 10:24:34 +0200 Subject: [PATCH 0550/1174] d/control: add Suggests: ssh-import-id --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 4d1f6445568..0ad1aee4bca 100644 --- a/debian/control +++ b/debian/control @@ -44,7 +44,7 @@ Depends: cloud-guest-utils | cloud-utils, ${misc:Depends}, ${python3:Depends} Recommends: eatmydata, gdisk, gnupg, software-properties-common -Suggests: ssh-import-id +Suggests: openssh-server, ssh-import-id XB-Python-Version: ${python:Versions} Description: initialization and customization tool for cloud instances Cloud-init is the industry standard multi-distribution method for From d2a59c4b4fe1345ec0886778820bced7624f8869 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 11 May 2022 10:24:53 +0200 Subject: [PATCH 0551/1174] update changelog --- debian/changelog | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6528abf73e6..9f2279f3631 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,8 @@ cloud-init (22.1-63-gd8f39d79-0ubuntu1~22.04.1) UNRELEASED; urgency=medium * d/control: - - add python3-responses for unittests - - add python3-pytest-mock for unittests - - add Suggests: ssh-import-id + - Build-Depends: add python3-responses and python3-pytest-mock for unittests + - Suggests: add openssh-server and ssh-import-id * d/cloud-init.postinst: - remove deprecated emit_upstart from cloud.cfg on upgrade * New upstream snapshot. From 7d56c61868477588dbca312dd35783370bce7356 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 May 2022 20:33:24 -0600 Subject: [PATCH 0552/1174] update changelog (New upstream release 22.2). --- debian/changelog | 117 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 114 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 9f2279f3631..0cee80fe0e7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,122 @@ -cloud-init (22.1-63-gd8f39d79-0ubuntu1~22.04.1) UNRELEASED; urgency=medium +cloud-init (22.2-0ubuntu1~22.10.1) UNRELEASED; urgency=medium * d/control: - Build-Depends: add python3-responses and python3-pytest-mock for unittests - Suggests: add openssh-server and ssh-import-id * d/cloud-init.postinst: - remove deprecated emit_upstart from cloud.cfg on upgrade - * New upstream snapshot. + * New upstream release. + - Release 22.2 (LP: #1960939) + - Fix test due to caplog incompatibility (#1461) [Alberto Contreras] + - Align rhel custom files with upstream (#1431) + [Emanuele Giuseppe Esposito] + - cc_write_files: Improve schema. (#1460) [Alberto Contreras] + - cli: Redact files with permission errors in commands (#1440) + [Alberto Contreras] (LP: #1953430) + - Improve cc_set_passwords. (#1456) [Alberto Contreras] + - testing: make fake cloud-init wait actually wait (#1459) + - Scaleway: Fix network configuration for netplan 0.102 and later (#1455) + [Maxime Corbin] + - Fix 'ephmeral' typos in disk names(#1452) [Mike Hucka] + - schema: version schema-cloud-config-v1.json (#1424) + - cc_modules: set default meta frequency value when no config available + (#1457) + - Log generic warning on non-systemd systems. (#1450) [Alberto Contreras] + - cc_snap.maybe_install_squashfuse no longer needed in Bionic++. (#1448) + [Alberto Contreras] + - Drop support of *-sk keys in cc_ssh (#1451) [Alberto Contreras] + - testing: Fix console_log tests (#1437) + - tests: cc_set_passoword update for systemd, non-systemd distros (#1449) + - Fix bug in url_helper/dual_stack() logging (#1426) + - schema: render schema paths from _CustomSafeLoaderWithMarks (#1391) + (GH: SC-929) + - testing: Make integration tests kinetic friendly (#1441) + - Handle error if SSH service no present. (#1422) + [Alberto Contreras] (GH: #1969526) + - Fix network-manager activator availability and order (#1438) + - sources/azure: remove reprovisioning marker (#1414) [Chris Patterson] + - upstart: drop vestigial support for upstart (#1421) + - testing: Ensure NoCloud detected in test (#1439) + - Update .github-cla-signers kallioli [Kevin Allioli] + - Consistently strip top-level network key (#1417) (GH: #1906187) + - testing: Fix LXD VM metadata test (#1430) + - testing: Add NoCloud setup for NoCloud test (#1425) + - Update linters and adapt code for compatibility (#1434) [Paride Legovini] + - run-container: add support for LXD VMs (#1428) [Paride Legovini] + - integration-reqs: bump pycloudlib pinned commit (#1427) [Paride Legovini] + - Fix NoCloud docs (#1423) + - Docs fixes (#1406) + - docs: Add docs for module creation (#1415) + - Remove cheetah from templater (#1416) + - tests: verify_ordered_items fallback to re.escape if needed (#1420) + - Misc module cleanup (#1418) + - docs: Fix doc warnings and enable errors (#1419) + [Alberto Contreras] (GH: #1876341) + - Refactor cloudinit.sources.NetworkConfigSource to enum (#1413) + [Alberto Contreras] (GH: #1874875) + - Don't fail if IB and Ethernet devices 'collide' (#1411) + - Use cc_* module meta defintion over hardcoded vars (SC-888) (#1385) + - Fix cc_rsyslog.py initialization (#1404) [Alberto Contreras] + - Promote cloud-init schema from devel to top level subcommand (#1402) + - mypy: disable missing imports warning for httpretty (#1412) + [Chris Patterson] + - users: error when home should not be created AND ssh keys provided + [Jeffrey 'jf' Lim] + - Allow growpart to resize encrypted partitions (#1316) + - Fix typo in integration_test.rst (#1405) [Alberto Contreras] + - cloudinit.net refactor: apply_network_config_names (#1388) + [Alberto Contreras] (GH: #1884602) + - tests/azure: add fixtures for hardcoded paths (markers and data_dir) + (#1399) [Chris Patterson] + - testing: Add responses workaround for focal/impish (#1403) + - cc_ssh_import_id: fix is_key_in_nested_dict to avoid early False + - Fix ds-identify not detecting NoCloud seed in config (#1381) + (GH: #1876375) + - sources/azure: retry dhcp for failed processes (#1401) [Chris Patterson] + - Move notes about refactorization out of CONTRIBUTING.rst (#1389) + - Shave ~8ms off generator runtime (#1387) + - Fix provisioning dhcp timeout to 20 minutes (#1394) [Chris Patterson] + - schema: module example strict testing fix seed_random + - cc_set_hostname: examples small typo (perserve vs preserve) + [Wouter Schoot] + - sources/azure: refactor http_with_retries to remove **kwargs (#1392) + [Chris Patterson] + - declare dependency on ssh-import-id (#1334) + - drop references to old dependencies and old centos script + - sources/azure: only wait for primary nic to be attached during restore + (#1378) [Anh Vo] + - cc_ntp: migrated legacy schema to cloud-init-schema.json (#1384) + (GH: SC-803) + - Network functions refactor and bugfixes (#1383) + - schema: add JSON defs for modules cc_users_groups (#1379) + (GH: SC-928, SC-846, SC-897, #1858930) + - Fix doc typo (#1382) [Alberto Contreras] + - Add support for dual stack IPv6/IPv4 IMDS to Ec2 (#1160) + - Fix KeyError when rendering sysconfig IPv6 routes (#1380) (GH: #1958506) + - Return a namedtuple from subp() (#1376) + - Mypy stubs and other tox maintenance (SC-920) (#1374) + - Distro Compatibility Fixes (#1375) + - Pull in Gentoo patches (#1372) + - schema: add json defs for modules U-Z (#1360) + (GH: #1858928, #1858929, #1858931, #1858932) + - util: atomically update sym links to avoid Suppress FileNotFoundError + when reading status (#1298) [Adam Collard] (GH: LP:1962150) + - schema: add json defs for modules scripts-timezone (SC-801) (#1365) + - docs: Add first tutorial (SC-900) (#1368) + - BUG 1473527: module ssh-authkey-fingerprints fails Input/output error… + (#1340) [Andrew Lee] (GH: #1473527) + - add arch hosts template (#1371) + - ds-identify: detect LXD for VMs launched from host with > 5.10 kernel + (#1370) (GH: #1968085) + - Support EC2 tags in instance metadata (#1309) [Eduardo Dobay] + - schema: add json defs for modules e-install (SC-651) (#1366) + - Improve "(no_create_home|system): true" test (#1367) [Jeffrey 'jf' Lim] + - Expose https_proxy env variable to ssh-import-id cmd (#1333) + [Michael Rommel] + - sources/azure: remove bind/unbind logic for hot attached nic (#1332) + [Chris Patterson] + - tox: add types-* packages to check_format env (#1362) + - tests: python 3.10 is showing up in cloudimages (#1364) - testing: add additional mocks to test_net tests (#1356) [yangzz-97] - schema: add JSON schema for mcollective, migrator and mounts modules (#1358) @@ -73,7 +184,7 @@ cloud-init (22.1-63-gd8f39d79-0ubuntu1~22.04.1) UNRELEASED; urgency=medium - Fix link in CLA check to point to contribution guide. (#1299) [Adam Collard] - -- Chad Smith Thu, 31 Mar 2022 14:54:00 -0600 + -- Brett Holman Wed, 18 May 2022 11:23:42 -0600 cloud-init (22.1-14-g2e17a0d6-0ubuntu1~22.04.5) jammy; urgency=medium From b37084988660f8216b880700138f3b3ed510e51b Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 May 2022 20:39:33 -0600 Subject: [PATCH 0553/1174] releasing cloud-init version 22.2-0ubuntu1~22.10.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 0cee80fe0e7..0d1e9bd34ed 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.2-0ubuntu1~22.10.1) UNRELEASED; urgency=medium +cloud-init (22.2-0ubuntu1~22.10.1) kinetic; urgency=medium * d/control: - Build-Depends: add python3-responses and python3-pytest-mock for unittests From 803836262f715392939a1082280a8a8517fb5785 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 18 May 2022 20:41:17 -0600 Subject: [PATCH 0554/1174] update changelog for log2dch fix --- debian/changelog | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0d1e9bd34ed..d3c97cb4495 100644 --- a/debian/changelog +++ b/debian/changelog @@ -29,16 +29,15 @@ cloud-init (22.2-0ubuntu1~22.10.1) kinetic; urgency=medium - tests: cc_set_passoword update for systemd, non-systemd distros (#1449) - Fix bug in url_helper/dual_stack() logging (#1426) - schema: render schema paths from _CustomSafeLoaderWithMarks (#1391) - (GH: SC-929) - testing: Make integration tests kinetic friendly (#1441) - Handle error if SSH service no present. (#1422) - [Alberto Contreras] (GH: #1969526) + [Alberto Contreras] (LP: #1969526) - Fix network-manager activator availability and order (#1438) - sources/azure: remove reprovisioning marker (#1414) [Chris Patterson] - upstart: drop vestigial support for upstart (#1421) - testing: Ensure NoCloud detected in test (#1439) - Update .github-cla-signers kallioli [Kevin Allioli] - - Consistently strip top-level network key (#1417) (GH: #1906187) + - Consistently strip top-level network key (#1417) (LP: #1906187) - testing: Fix LXD VM metadata test (#1430) - testing: Add NoCloud setup for NoCloud test (#1425) - Update linters and adapt code for compatibility (#1434) [Paride Legovini] @@ -51,9 +50,9 @@ cloud-init (22.2-0ubuntu1~22.10.1) kinetic; urgency=medium - tests: verify_ordered_items fallback to re.escape if needed (#1420) - Misc module cleanup (#1418) - docs: Fix doc warnings and enable errors (#1419) - [Alberto Contreras] (GH: #1876341) + [Alberto Contreras] (LP: #1876341) - Refactor cloudinit.sources.NetworkConfigSource to enum (#1413) - [Alberto Contreras] (GH: #1874875) + [Alberto Contreras] (LP: #1874875) - Don't fail if IB and Ethernet devices 'collide' (#1411) - Use cc_* module meta defintion over hardcoded vars (SC-888) (#1385) - Fix cc_rsyslog.py initialization (#1404) [Alberto Contreras] @@ -65,13 +64,13 @@ cloud-init (22.2-0ubuntu1~22.10.1) kinetic; urgency=medium - Allow growpart to resize encrypted partitions (#1316) - Fix typo in integration_test.rst (#1405) [Alberto Contreras] - cloudinit.net refactor: apply_network_config_names (#1388) - [Alberto Contreras] (GH: #1884602) + [Alberto Contreras] (LP: #1884602) - tests/azure: add fixtures for hardcoded paths (markers and data_dir) (#1399) [Chris Patterson] - testing: Add responses workaround for focal/impish (#1403) - cc_ssh_import_id: fix is_key_in_nested_dict to avoid early False - Fix ds-identify not detecting NoCloud seed in config (#1381) - (GH: #1876375) + (LP: #1876375) - sources/azure: retry dhcp for failed processes (#1401) [Chris Patterson] - Move notes about refactorization out of CONTRIBUTING.rst (#1389) - Shave ~8ms off generator runtime (#1387) @@ -86,28 +85,26 @@ cloud-init (22.2-0ubuntu1~22.10.1) kinetic; urgency=medium - sources/azure: only wait for primary nic to be attached during restore (#1378) [Anh Vo] - cc_ntp: migrated legacy schema to cloud-init-schema.json (#1384) - (GH: SC-803) - Network functions refactor and bugfixes (#1383) - - schema: add JSON defs for modules cc_users_groups (#1379) - (GH: SC-928, SC-846, SC-897, #1858930) + - schema: add JSON defs for modules cc_users_groups (#1379) (LP: #1858930) - Fix doc typo (#1382) [Alberto Contreras] - Add support for dual stack IPv6/IPv4 IMDS to Ec2 (#1160) - - Fix KeyError when rendering sysconfig IPv6 routes (#1380) (GH: #1958506) + - Fix KeyError when rendering sysconfig IPv6 routes (#1380) (LP: #1958506) - Return a namedtuple from subp() (#1376) - Mypy stubs and other tox maintenance (SC-920) (#1374) - Distro Compatibility Fixes (#1375) - Pull in Gentoo patches (#1372) - schema: add json defs for modules U-Z (#1360) - (GH: #1858928, #1858929, #1858931, #1858932) + (LP: #1858928, #1858929, #1858931, #1858932) - util: atomically update sym links to avoid Suppress FileNotFoundError - when reading status (#1298) [Adam Collard] (GH: LP:1962150) + when reading status (#1298) [Adam Collard] (LP: LP:1962150) - schema: add json defs for modules scripts-timezone (SC-801) (#1365) - docs: Add first tutorial (SC-900) (#1368) - BUG 1473527: module ssh-authkey-fingerprints fails Input/output error… - (#1340) [Andrew Lee] (GH: #1473527) + (#1340) [Andrew Lee] (LP: #1473527) - add arch hosts template (#1371) - ds-identify: detect LXD for VMs launched from host with > 5.10 kernel - (#1370) (GH: #1968085) + (#1370) (LP: #1968085) - Support EC2 tags in instance metadata (#1309) [Eduardo Dobay] - schema: add json defs for modules e-install (SC-651) (#1366) - Improve "(no_create_home|system): true" test (#1367) [Jeffrey 'jf' Lim] From c7650bde29fb34b4d8a0691cfd62212344576ecd Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Mon, 20 Jun 2022 11:01:41 +0200 Subject: [PATCH 0555/1174] d/control: Depends: add python3-debconf Build-Depends: add python3-debconf --- debian/control | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/control b/debian/control index 0ad1aee4bca..ead201005d3 100644 --- a/debian/control +++ b/debian/control @@ -10,6 +10,7 @@ Build-Depends: debhelper-compat (= 13), po-debconf, python3, python3-configobj, + python3-debconf, python3-httpretty, python3-jinja2, python3-jsonpatch, @@ -38,6 +39,7 @@ Depends: cloud-guest-utils | cloud-utils, netplan.io, procps, python3, + python3-debconf, python3-netifaces, python3-requests, python3-serial, From 4c18d7ac9b5589796c34c98a128e185c8d4111f9 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Mon, 20 Jun 2022 11:02:25 +0200 Subject: [PATCH 0556/1174] Update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index d3c97cb4495..1f9356b2b09 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (22.2-0ubuntu1~22.10.2) UNRELEASED; urgency=medium + + * d/control: add python3-debconf as Depends and Build-Depends + + -- Alberto Contreras Mon, 20 Jun 2022 10:54:54 +0200 + cloud-init (22.2-0ubuntu1~22.10.1) kinetic; urgency=medium * d/control: From 9ffb3273e265adda23ce4ccb49602bf56117d238 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 30 Jun 2022 17:14:13 -0600 Subject: [PATCH 0557/1174] gbp: add git-buildpackage conf and customization for changelogs --- debian/gbp.conf | 12 ++++++ debian/gbp_format_changelog | 84 +++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 debian/gbp.conf create mode 100755 debian/gbp_format_changelog diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 00000000000..9eb215def81 --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,12 @@ +# Configuration file for "gbp " + +# See default config settings at: /etc/git-buildpackage/gbp.conf + +# Options only affecting gbp dch +[dch] +# options passed to git-log: +git-log = --no-merges --reverse +# Customizatons can e.g. be used for line wrapping +customizations=./debian/gbp_format_changelog +multimaint-merge = False +multimaint = False diff --git a/debian/gbp_format_changelog b/debian/gbp_format_changelog new file mode 100755 index 00000000000..62a871a7a6d --- /dev/null +++ b/debian/gbp_format_changelog @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 +# Simple changelog entry formatter +# +# It simply uses the built in formatter and linewraps the text +# +# Use git-dch --customizations=//scripts/gbp_format_changelog +# or set it via gbp.conf + +import re +import textwrap + +import gbp.dch + +# FILTER_UPSTREAM_COMMMITERS are authors for which to redact [author name] +# suffix per changelog message. The reason we redact those names as they +# will be repeated for most changelog entries. + +# To override this default filter behavior, copy this file into your project's +# ./debian/ directory and adapt as needed. + +FILTER_UPSTREAM_COMMITERS = ( # cloud-init upstream author names + "Chad Smith", + "James Falcon", + "Brett Holman", +) + +FILTER_NOISY_COMMIT_REGEX = ( + r"update changelog.*", + r"refresh patches against.*", +) + +# To filter Jira tickets from "SC" project out of potential changelog comments +JIRA_PROJECT_KEY = "SC" + +UNWRAPPABLE_DELIMITERS = { + "]": "[", + ")": "(", +} + + +def _wrap_on_delimiter(text, prefix="", max_length=70) -> list: + """Break lines at specific UNWRAPPABLE_DELIMITERS. + + When a line ends with either (LP: #XXX) or [Author Name] avoid using + textwrap.wrap which breaks at the last whitespace. + + Instead break at the leading ( or [ special delimiter to ensure entire + author name or LP bug reference remains on the same line. + + Fallback to use textwrap.wrap if special conditions don't apply. + + Return a list of individual lines. + """ + if len(text) <= max_length: + return [prefix + text] + if text[-1] in UNWRAPPABLE_DELIMITERS: + delimiter = UNWRAPPABLE_DELIMITERS[text[-1]] + part1, sep, part2 = text.rpartition(delimiter) + lines = [] + for part in (part1.rstrip(), f"{sep}{part2}"): + if lines: + if len(lines[-1] + " " + part) < 70: + # Then the previous part plus current part should be joined + part = lines.pop() + " " + part + part = f" {part}" + lines.extend(_wrap_on_delimiter(part, prefix="" if lines else "+")) + return lines + return textwrap.wrap(prefix + text) + + +def format_changelog_entry(commit_info, options, last_commit=False): + entry = gbp.dch.format_changelog_entry(commit_info, options, last_commit) + if re.search(rf"\({JIRA_PROJECT_KEY}-\d+\)", entry[0]): + # Remove JIRA card references from debian/changelog comments + entry[0] = re.sub(r"\({JIRA_PROJECT_KEY}-\d+\)", "", entry[0]) + if commit_info["author"].name not in FILTER_UPSTREAM_COMMITERS: + # Only append non-upstream authors since most committers are upstream + entry.append(f"[{commit_info['author'].name}]") + if entry: + combined_entry = " ".join(entry) + for filter_re in FILTER_NOISY_COMMIT_REGEX: + if re.match(filter_re, combined_entry): + return None + return _wrap_on_delimiter(combined_entry, prefix="+") From f87f6d4b53ec92a9afc7b4c5bf7d48b961cbaadb Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 30 Jun 2022 17:16:20 -0600 Subject: [PATCH 0558/1174] updated changelog --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1f9356b2b09..84ab3aead83 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ cloud-init (22.2-0ubuntu1~22.10.2) UNRELEASED; urgency=medium * d/control: add python3-debconf as Depends and Build-Depends + * d/gbp.conf d/gbp_format_changelog: + + git-buildpackage customization for debian/changelog generation -- Alberto Contreras Mon, 20 Jun 2022 10:54:54 +0200 From 88a870ae1e4dee0ec559b41f17568ef524ce118c Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 1 Jul 2022 10:07:19 -0500 Subject: [PATCH 0559/1174] update changelog (New upstream snapshot 22.2-64-g1fcd55d6). --- debian/changelog | 100 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 96 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 84ab3aead83..f99aff16e8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,102 @@ -cloud-init (22.2-0ubuntu1~22.10.2) UNRELEASED; urgency=medium +cloud-init (22.2-64-g1fcd55d6-0ubuntu1~22.10.1) UNRELEASED; urgency=medium * d/control: add python3-debconf as Depends and Build-Depends * d/gbp.conf d/gbp_format_changelog: + git-buildpackage customization for debian/changelog generation - - -- Alberto Contreras Mon, 20 Jun 2022 10:54:54 +0200 + * New upstream snapshot. + + tests: mock dns lookup that causes long timeouts (#1555) + + tox: add unpinned env for do_format and check_format (#1554) + + cc_ssh_import_id: Substitute deprecated warn (#1553) + [Alberto Contreras] + + Remove schema errors from log (#1551) (LP: #1978422) (CVE-2022-2084) + + Update WebHookHandler to run as background thread (SC-456) (#1491) + (LP: #1910552) + + testing: Don't run custom cloud dir test on Bionic (#1542) + + bash completion: update schema command (#1543) (LP: #1979547) + + CI: add non-blocking run against the linters tip versions (#1531) + [Paride Legovini] + + Change groups within the users schema to support lists and strings + (#1545) [RedKrieg] + + make it clear which username should go in the contributing doc (#1546) + + Pin setuptools for Travis (SC-1136) (#1540) + + Fix LXD datasource crawl when BOOT enabled (#1537) + + testing: Fix wrong path in dual stack test (#1538) + + cloud-config: honor cloud_dir setting (#1523) (LP: #1976564) + [Alberto Contreras] + + Add python3-debconf to pkg-deps.json Build-Depends (#1535) + [Alberto Contreras] + + redhat spec: udev/rules.d lives under /usr/lib on rhel-based systems + (#1536) + + tests/azure: add test coverage for DisableSshPasswordAuthentication + (#1534) [Chris Patterson] + + summary: Add david-caro to the cla signers (#1527) [David Caro] + + Add support for OpenMandriva (https://openmandriva.org/) (#1520) + [Bernhard Rosenkraenzer] + + tests/azure: refactor ovf creation (#1533) [Chris Patterson] + + Improve DataSourceOVF error reporting when script disabled (#1525) + [rong] + + tox: integration-tests-jenkins: softfail if only some test failed + (#1528) [Paride Legovini] + + CI: drop linters from Travis CI (moved to GH Actions) (#1530) + [Paride Legovini] + + sources/azure: remove unused encoding support for customdata (#1526) + [Chris Patterson] + + sources/azure: remove unused metadata captured when parsing ovf + (#1524) [Chris Patterson] + + sources/azure: remove dscfg parsing from ovf-env.xml (#1522) + [Chris Patterson] + + Remove extra space from ec2 dual stack crawl message (#1521) + + tests/azure: use namespaces in generated ovf-env.xml documents (#1519) + [Chris Patterson] + + setup.py: adjust udev/rules default path (#1513) + [Emanuele Giuseppe Esposito] + + Add python3-deconf dependency (#1506) [Alberto Contreras] + + Change match macadress param for network v2 config (#1518) + [Henrique Caricatti Capozzi] + + sources/azure: remove unused userdata property from ovf (#1516) + [Chris Patterson] + + sources/azure: minor refactoring to network config generation (#1497) + [Chris Patterson] + + net: Implement link-local ephemeral ipv6 + + Rename function to avoid confusion (#1501) + + Fix cc_phone_home requiring 'tries' (#1500) (LP: #1977952) + + datasources: replace networking functions with stdlib and + cloudinit.net code + + Remove xenial references (#1472) [Alberto Contreras] + + Oracle ds changes (#1474) (LP: #1967942) [Alberto Contreras] + + improve runcmd docs (#1498) + + add 3.11-dev to Travis CI (#1493) + + Only run github actions on pull request (#1496) + + Fix integration test client creation (#1494) [Alberto Contreras] + + tox: add link checker environment, fix links (#1480) + + cc_ubuntu_advantage: Fix doc (#1487) [Alberto Contreras] + + cc_yum_add_repo: Fix repo id canonicalization (#1489) (LP: #1975818) + [Alberto Contreras] + + Add linitio as contributor in the project (#1488) [Kevin Allioli] + + net-convert: use yaml.dump for debugging python NetworkState obj + (#1484) (LP: #1975907) + + test_schema: no relative $ref URLs, replace $ref with local path + (#1486) + + cc_set_hostname: do not write "localhost" when no hostname is given + (#1453) [Emanuele Giuseppe Esposito] + + Update .github-cla-signers (#1478) [rong] + + schema: write_files defaults, versions $ref full URL and add vscode + (#1479) + + docs: fix external links, add one more to the list (#1477) + + doc: Document how to change module frequency (#1481) + + tests: bump pycloudlib (#1482) + + tests: bump pycloudlib pinned commit for kinetic Azure (#1476) + + testing: fix test_status.py (#1475) + + integration tests: If KEEP_INSTANCE = True, log IP (#1473) + + Drop mypy excluded files (#1454) [Alberto Contreras] + + Docs additions (#1470) + + Add "formatting tests" to Github Actions + + Remove unused arguments in function signature (#1471) + + Changelog: correct errant classification of LP issues as GH (#1464) + + Use Network-Manager and Netplan as default renderers for RHEL and + Fedora (#1465) [Emanuele Giuseppe Esposito] + + -- James Falcon Fri, 01 Jul 2022 10:07:15 -0500 cloud-init (22.2-0ubuntu1~22.10.1) kinetic; urgency=medium @@ -3635,7 +3727,7 @@ 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) + (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] From f84978be26fa2fc22f04eb4be0deb936d800af78 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 1 Jul 2022 10:07:25 -0500 Subject: [PATCH 0560/1174] releasing cloud-init version 22.2-64-g1fcd55d6-0ubuntu1~22.10.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f99aff16e8e..74fcfcefe2c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.2-64-g1fcd55d6-0ubuntu1~22.10.1) UNRELEASED; urgency=medium +cloud-init (22.2-64-g1fcd55d6-0ubuntu1~22.10.1) kinetic; urgency=medium * d/control: add python3-debconf as Depends and Build-Depends * d/gbp.conf d/gbp_format_changelog: From 000bf9bd54b995dadf47bc96c2d23fea8b702eaf Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 6 Jul 2022 13:44:52 +0200 Subject: [PATCH 0561/1174] d/control: lintian fixes Drop deprecated keys: XS-Python-Version and XB-Python-Version. --- debian/control | 2 -- 1 file changed, 2 deletions(-) diff --git a/debian/control b/debian/control index ead201005d3..a4c9e9a7c97 100644 --- a/debian/control +++ b/debian/control @@ -25,7 +25,6 @@ Build-Depends: debhelper-compat (= 13), python3-setuptools, python3-yaml, python3-responses -XS-Python-Version: all Vcs-Browser: https://github.com/canonical/cloud-init/tree/ubuntu/devel Vcs-Git: https://github.com/canonical/cloud-init -b ubuntu/devel Standards-Version: 4.5.0 @@ -47,7 +46,6 @@ Depends: cloud-guest-utils | cloud-utils, ${python3:Depends} Recommends: eatmydata, gdisk, gnupg, software-properties-common Suggests: openssh-server, ssh-import-id -XB-Python-Version: ${python:Versions} Description: initialization and customization tool for cloud instances Cloud-init is the industry standard multi-distribution method for cross-platform cloud instance initialization. It is supported across all major From e52c72f916b1c045e2cbcf0e537e84119bbf44f4 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 6 Jul 2022 13:47:00 +0200 Subject: [PATCH 0562/1174] d/cloud-init.lintian-overrides: lintian fixes Fix systemd-service-file-refers-to-unusual-wantedby-target format. --- debian/cloud-init.lintian-overrides | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/debian/cloud-init.lintian-overrides b/debian/cloud-init.lintian-overrides index 45037735b69..2176cba2d76 100644 --- a/debian/cloud-init.lintian-overrides +++ b/debian/cloud-init.lintian-overrides @@ -1,5 +1,7 @@ -cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/systemd/system/cloud-config.service cloud-init.target -cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/systemd/system/cloud-final.service cloud-init.target -cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/systemd/system/cloud-init-local.service cloud-init.target -cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target lib/systemd/system/cloud-init.service cloud-init.target +# cloud-init.target should not be considered as unusual +cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target cloud-init.target [lib/systemd/system/cloud-config.service] +cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target cloud-init.target [lib/systemd/system/cloud-final.service] +cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target cloud-init.target [lib/systemd/system/cloud-init-local.service] +cloud-init binary: systemd-service-file-refers-to-unusual-wantedby-target cloud-init.target [lib/systemd/system/cloud-init.service] + cloud-init binary: package-supports-alternative-init-but-no-init.d-script From 5508b40c101bbfff4483e06a2bc51c28f0cf8742 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Fri, 8 Jul 2022 13:08:40 +0200 Subject: [PATCH 0563/1174] d/cloud-init.postinst: lintian fixes Fix command-with-path-in-maintainer-script for grub-install. --- debian/cloud-init.postinst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst index f7926c91c81..268f3ec8a7d 100644 --- a/debian/cloud-init.postinst +++ b/debian/cloud-init.postinst @@ -140,7 +140,7 @@ fix_1336855() { [ -r /proc/cmdline ] || return 0 # Don't do anything unless we have grub - command -v grub-install > /dev/null 2>&1 || return 0 + command -v grub-install > /dev/null || return 0 # First, identify the kernel device for the parent. for parm in $(cat /proc/cmdline); do @@ -309,7 +309,7 @@ fix_lp1889555() { [ -f /var/lib/cloud/instance/sem/config_grub_dpkg ] || return 0 # Don't do anything unless we have grub - [ -x /usr/sbin/grub-install ] || return 0 + command -v grub-install > /dev/null || return 0 # Make sure that we are not chrooted. [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ] && return 0 From 13af9687330e6f32db59bcf6d8131103ba3b46cd Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Fri, 8 Jul 2022 13:14:15 +0200 Subject: [PATCH 0564/1174] d/source/lintian-overrides: lintian fixes silence binary-nmu-debian-revision-in-source bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1014584 --- debian/source/lintian-overrides | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 debian/source/lintian-overrides diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides new file mode 100644 index 00000000000..5b8bf5cb8f9 --- /dev/null +++ b/debian/source/lintian-overrides @@ -0,0 +1,2 @@ +# Silence lintian bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1014584 +cloud-init source: binary-nmu-debian-revision-in-source From ebd2153f83d62c03d1144efd418b2981e308adee Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Fri, 8 Jul 2022 13:15:09 +0200 Subject: [PATCH 0565/1174] update changelog --- debian/changelog | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/debian/changelog b/debian/changelog index 74fcfcefe2c..67e4abebb5e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,17 @@ +cloud-init (22.2-64-g1fcd55d6-0ubuntu1~22.10.2) UNRELEASED; urgency=medium + + * d/control: lintian fixes: + + Drop deprecated keys: XS-Python-Version and XB-Python-Version. + * d/cloud-init.lintian-overrides: lintian fixes: + + Fix systemd-service-file-refers-to-unusual-wantedby-target format. + * d/cloud-init.postinst: lintian fixes: + + Fix command-with-path-in-maintainer-script for grub-install. + * d/source/lintian-overrides: lintian fixes: + + silence binary-nmu-debian-revision-in-source bug: + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1014584 + + -- Alberto Contreras Fri, 08 Jul 2022 13:14:41 +0200 + cloud-init (22.2-64-g1fcd55d6-0ubuntu1~22.10.1) kinetic; urgency=medium * d/control: add python3-debconf as Depends and Build-Depends From 93781454bf4c63754173f814ed2e17405fe2237e Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Fri, 29 Jul 2022 18:39:32 +0200 Subject: [PATCH 0566/1174] d/gbp_format_changelog: add alberto as filtered contributor --- debian/gbp_format_changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/gbp_format_changelog b/debian/gbp_format_changelog index 62a871a7a6d..42b89da1a07 100755 --- a/debian/gbp_format_changelog +++ b/debian/gbp_format_changelog @@ -22,6 +22,7 @@ FILTER_UPSTREAM_COMMITERS = ( # cloud-init upstream author names "Chad Smith", "James Falcon", "Brett Holman", + "Alberto Contreras", ) FILTER_NOISY_COMMIT_REGEX = ( From 942d213e0b929f74e02ed413c6b16b263b81b73d Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Fri, 29 Jul 2022 18:40:16 +0200 Subject: [PATCH 0567/1174] update changelog --- debian/changelog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 67e4abebb5e..209ab765849 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,8 +9,9 @@ cloud-init (22.2-64-g1fcd55d6-0ubuntu1~22.10.2) UNRELEASED; urgency=medium * d/source/lintian-overrides: lintian fixes: + silence binary-nmu-debian-revision-in-source bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1014584 + * d/gbp_format_changelog: add alberto as filtered contributor - -- Alberto Contreras Fri, 08 Jul 2022 13:14:41 +0200 + -- Alberto Contreras Fri, 29 Jul 2022 18:39:44 +0200 cloud-init (22.2-64-g1fcd55d6-0ubuntu1~22.10.1) kinetic; urgency=medium From 16caf55047d590cce4c70ac5a2ae525f98e96f00 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Fri, 29 Jul 2022 18:53:36 +0200 Subject: [PATCH 0568/1174] update changelog (New upstream snapshot 22.2-115-g6e498773). --- debian/changelog | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 209ab765849..58fd4097e99 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.2-64-g1fcd55d6-0ubuntu1~22.10.2) UNRELEASED; urgency=medium +cloud-init (22.2-115-g6e498773-0ubuntu1~22.10.1) UNRELEASED; urgency=medium * d/control: lintian fixes: + Drop deprecated keys: XS-Python-Version and XB-Python-Version. @@ -10,8 +10,46 @@ cloud-init (22.2-64-g1fcd55d6-0ubuntu1~22.10.2) UNRELEASED; urgency=medium + silence binary-nmu-debian-revision-in-source bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1014584 * d/gbp_format_changelog: add alberto as filtered contributor - - -- Alberto Contreras Fri, 29 Jul 2022 18:39:44 +0200 + * New upstream snapshot. + + network: add system_info network activator cloud.cfg overrides (#1619) + (LP: #1982857) + + lxd: lvm avoid thinpool when kernel module absent + + lxd: enable MTU configuration in cloud-init + + cc_set_passwords fixes (#1590) + + Modernise importer.py and type ModuleDetails (#1605) + + config: Def activate_by_schema_keys for t-z (#1613) + + config: define activate_by_schema_keys for p-r mods (#1611) + + clean: add param to remove /etc/machine-id for golden image creation + + config: define `activate_by_schema_keys` for a-f mods (#1608) + + config: define activate_by_schema_keys for s mods (#1612) + + config: Define activate_by_schema_keys for g-n mods (#1610) + + meta-schema: add infra to skip inapplicable modules + + sources/azure: don't set cfg["password"] for default user pw (#1592) + [Chris Patterson] + + schema: activate grub-dpkg deprecations (#1600) + + cc_lxd: Add btrfs and lvm lxd storage options (SC-1026) (#1585) + + cc_ubuntu_autoinstall: support live-installer autoinstall config + + clean: allow third party cleanup scripts in /etc/cloud/clean.d (#1581) + + sources/azure: refactor chassis asset tag handling (#1574) + [Chris Patterson] + + bsd: Don't assume that root user is in root group (#1587) + + Update govc command in VMWare walkthrough (#1576) [manioo8] + + sources/azure: increase read-timeout to 60 seconds for wireserver + (#1571) [Chris Patterson] + + Resource leak cleanup (#1556) + + Fix expire passwords for hashed passwords (#1577) (LP: #1979065) + [Sadegh Hayeri] + + mounts: fix suggested_swapsize for > 64GB hosts (#1569) + [Steven Stallion] + + Update chpasswd schema to deprecate password parsing (#1517) + + Schema deprecation handling (#1549) + + sources/azure: refactor ovf-env.xml parsing (#1550) [Chris Patterson] + + schema: Force stricter validation (#1547) + + ubuntu advantage config: http_proxy, https_proxy (#1512) + [Fabian Lichtenegger-Lukas] + + net: fix interface matching support (#1552) (LP: #1979877) + + -- Alberto Contreras Fri, 29 Jul 2022 18:51:43 +0200 cloud-init (22.2-64-g1fcd55d6-0ubuntu1~22.10.1) kinetic; urgency=medium From c8a788ac1aa12602634983a409c0f6e6ddede581 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 29 Jul 2022 11:27:35 -0600 Subject: [PATCH 0569/1174] releasing cloud-init version 22.2-115-g6e498773-0ubuntu1~22.10.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 58fd4097e99..5cccfb9f214 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.2-115-g6e498773-0ubuntu1~22.10.1) UNRELEASED; urgency=medium +cloud-init (22.2-115-g6e498773-0ubuntu1~22.10.1) kinetic; urgency=medium * d/control: lintian fixes: + Drop deprecated keys: XS-Python-Version and XB-Python-Version. From ff46f3512e6528f1b18aaeb1447b3388e4c58a6a Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 10 Aug 2022 22:24:09 +0200 Subject: [PATCH 0570/1174] update changelog (New upstream snapshot 22.2-139-gb64ba456). --- debian/changelog | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/debian/changelog b/debian/changelog index 5cccfb9f214..fca6a9d866c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,37 @@ +cloud-init (22.2-139-gb64ba456-0ubuntu1~22.10.1) UNRELEASED; urgency=medium + + * New upstream snapshot. + + test: use fake filesystem to avoid file removal (#1647) + + tox: Fix tip-flake8 and tip-mypy (#1635) + + config: Add wireguard config module (#1570) + [Fabian Lichtenegger-Lukas] + + tests: can run without azure-cli, tests expect inactive ansible + (#1643) + + typing: Type UrlResponse.contents (#1633) + + testing: fix references to `DEPRECATED.` (#1641) + + ssh_util: Handle sshd_config.d folder (LP: #1968873) + + schema: Enable deprecations in cc_update_etc_hosts (#1631) + + Add Ansible Config Module (#1579) + + util: Support Idle process state in get_proc_ppid() (#1637) + + schema: Enable deprecations in cc_growpart (#1628) + + schema: Enable deprecations in cc_users_groups (#1627) + + util: Fix error path and parsing in get_proc_ppid() + + main: avoid downloading full contents cmdline urls (#1606) + (LP: #1937319) + + schema: Enable deprecations in cc_scripts_vendor (#1629) + + schema: Enable deprecations in cc_set_passwords (#1630) + + sources/azure: add experimental support for preprovisioned os disks + (#1622) [Chris Patterson] + + Remove configobj a_to_u calls (#1632) [Stefano Rivera] + + cc_debug: Drop this module (#1614) + + schema: add aggregate descriptions in anyOf/oneOf (#1636) + + testing: migrate test_sshutil to pytest (#1617) + + testing: Fix test_ca_certs integration test (#1626) + + testing: add support for pycloudlib's pro images (#1604) + + testing: migrate test_cc_set_passwords to pytest (#1615) + + -- Alberto Contreras Wed, 10 Aug 2022 22:23:47 +0200 + cloud-init (22.2-115-g6e498773-0ubuntu1~22.10.1) kinetic; urgency=medium * d/control: lintian fixes: From ddf5500bdc1049e868228f45c2aabb1e6444bad5 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 10 Aug 2022 22:24:22 +0200 Subject: [PATCH 0571/1174] releasing cloud-init version 22.2-139-gb64ba456-0ubuntu1~22.10.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index fca6a9d866c..b19ae3d65e1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.2-139-gb64ba456-0ubuntu1~22.10.1) UNRELEASED; urgency=medium +cloud-init (22.2-139-gb64ba456-0ubuntu1~22.10.1) kinetic; urgency=medium * New upstream snapshot. + test: use fake filesystem to avoid file removal (#1647) From 99e37992962bc0a26e2e2ac876510da24965524f Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Fri, 19 Aug 2022 10:49:39 -0600 Subject: [PATCH 0572/1174] update changelog (New upstream release 22.3). --- debian/changelog | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/debian/changelog b/debian/changelog index b19ae3d65e1..b916d60cf35 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,30 @@ +cloud-init (22.3-0ubuntu1~22.10.1) UNRELEASED; urgency=medium + + * New upstream release. + + Release 22.3 (#1662) (LP: #1986703) + + sources: obj.pkl cache should be written anyime get_data is run + (#1669) + + schema: drop release number from version file (#1664) + + pycloudlib: bump to quiet azure HTTP info logs (#1668) + + test: fix wireguard integration tests (#1666) + + Github is deprecating the 18.04 runner starting 12.1 (#1665) + + integration tests: Ensure one setup for all tests (#1661) + + tests: ansible test fixes (#1660) + + Prevent concurrency issue in test_webhook_hander.py (#1658) + + Workaround net_setup_link race with udev (#1655) (LP: #1983516) + + test: drop erroneous lxd assertion, verify command succeeded (#1657) + + Fix Chrony usage on Centos Stream (#1648) (LP: #1885952) + [Sven Haardiek] + + sources/azure: handle network unreachable errors for savable PPS + (#1642) [Chris Patterson] + + Return cc_set_hostname to PER_INSTANCE frequency (#1651) + (LP: #1983811) + + test: Collect integration test time by default (#1638) + + test: Drop forced package install hack in lxd integration test (#1649) + + schema: Resolve user-data if --system given (#1644) (LP: #1983306) + + -- Brett Holman Fri, 19 Aug 2022 10:49:08 -0600 + cloud-init (22.2-139-gb64ba456-0ubuntu1~22.10.1) kinetic; urgency=medium * New upstream snapshot. From 3e80971eb672127cf55e0b50462ef6b50aa4b4b1 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Fri, 19 Aug 2022 10:50:10 -0600 Subject: [PATCH 0573/1174] releasing cloud-init version 22.3-0ubuntu1~22.10.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index b916d60cf35..b876774fd31 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.3-0ubuntu1~22.10.1) UNRELEASED; urgency=medium +cloud-init (22.3-0ubuntu1~22.10.1) kinetic; urgency=medium * New upstream release. + Release 22.3 (#1662) (LP: #1986703) From 25e53a3451f3d08ed9a6e6460ee26a8549b80539 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Fri, 19 Aug 2022 11:10:24 -0600 Subject: [PATCH 0574/1174] this is salvageable --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0ff76617043..e0c1f36a0e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -396,7 +396,7 @@ (#1277) - sources/azure: ensure retries on IMDS request failure (#1271) [Chris Patterson] - - sources/azure: removed unused savable PPS paths (#1268) [Chris Patterson] + - sources/azure: removed unused saveable PPS paths (#1268) [Chris Patterson] - integration tests: fix Azure failures (#1269) 22.1 From 384d1bd2329c322ef5ceee6e9a8552db608a9afe Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 23 Aug 2022 14:30:14 -0600 Subject: [PATCH 0575/1174] update changelog (New upstream snapshot 22.3-3-g9f0efc47). --- debian/changelog | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/debian/changelog b/debian/changelog index b876774fd31..da0898633e0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +cloud-init (22.3-3-g9f0efc47-0ubuntu1~22.10.1) UNRELEASED; urgency=medium + + * New upstream snapshot. + + DataSourceVMware: fix var use before init (#1674) (LP: #1987005) + [Andrew Kutz] + + rpm/copr: ensure RPM represents new clean.d dir artifacts (#1680) + + test: avoid centos leaked check of /etc/yum.repos.d/epel-testing.repo + (#1676) + + typo correction in Changelog + + -- Chad Smith Tue, 23 Aug 2022 14:30:10 -0600 + cloud-init (22.3-0ubuntu1~22.10.1) kinetic; urgency=medium * New upstream release. From 4ca5381a855ec91a7bda5c45595bc02d0985f2af Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 23 Aug 2022 14:30:20 -0600 Subject: [PATCH 0576/1174] releasing cloud-init version 22.3-3-g9f0efc47-0ubuntu1~22.10.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index da0898633e0..37334586c6e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.3-3-g9f0efc47-0ubuntu1~22.10.1) UNRELEASED; urgency=medium +cloud-init (22.3-3-g9f0efc47-0ubuntu1~22.10.1) kinetic; urgency=medium * New upstream snapshot. + DataSourceVMware: fix var use before init (#1674) (LP: #1987005) From e894e93713e110b0520e65d181b4bc3df4befa88 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Tue, 30 Aug 2022 14:28:32 -0600 Subject: [PATCH 0577/1174] update changelog (New upstream snapshot 22.3-13-g70ce6442). --- debian/changelog | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/debian/changelog b/debian/changelog index 37334586c6e..30d88c9c0ce 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,21 @@ +cloud-init (22.3-13-g70ce6442-0ubuntu1~22.10.1) UNRELEASED; urgency=medium + + * New upstream snapshot. + + Fix v2 interface matching when no MAC (LP: #1986551) + + test: reduce number of network dependencies in flaky test (#1702) + + docs: publish cc_ubuntu_autoinstall docs to rtd (#1696) + + net: Fix EphemeraIPNetwork (#1697) + + test: make ansible test work across older versions (#1691) + + Networkd multi-address support/fix (#1685) [Teodor Garzdin] + + make: drop broken targets (#1688) + + net: Passthough v2 netconfigs in netplan systems (#1650) + (LP: #1978543) + + NM ipv6 connection does not work on Azure and Openstack (#1616) + [Emanuele Giuseppe Esposito] + + Fix check_format_tip (#1679) + + -- Brett Holman Tue, 30 Aug 2022 14:28:27 -0600 + cloud-init (22.3-3-g9f0efc47-0ubuntu1~22.10.1) kinetic; urgency=medium * New upstream snapshot. From b6263a6777c9d5984046bd0e60d02310fafa6945 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Tue, 30 Aug 2022 14:28:44 -0600 Subject: [PATCH 0578/1174] releasing cloud-init version 22.3-13-g70ce6442-0ubuntu1~22.10.1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 30d88c9c0ce..da7591c7686 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.3-13-g70ce6442-0ubuntu1~22.10.1) UNRELEASED; urgency=medium +cloud-init (22.3-13-g70ce6442-0ubuntu1~22.10.1) kinetic; urgency=medium * New upstream snapshot. + Fix v2 interface matching when no MAC (LP: #1986551) From 93f96d613e87cf933198bc1bc49018d28da28ca4 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Mon, 26 Sep 2022 17:32:19 +0200 Subject: [PATCH 0579/1174] d/control: drop python3-httpretty from Build-Depends --- debian/control | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/control b/debian/control index a4c9e9a7c97..9e3193c1f8b 100644 --- a/debian/control +++ b/debian/control @@ -11,7 +11,6 @@ Build-Depends: debhelper-compat (= 13), python3, python3-configobj, python3-debconf, - python3-httpretty, python3-jinja2, python3-jsonpatch, python3-jsonschema, From fa58360169b137c628c6ce264bc736f7b9805d83 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Mon, 26 Sep 2022 17:32:58 +0200 Subject: [PATCH 0580/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index da7591c7686..b62a992602c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (22.3-13-g70ce6442-0ubuntu1~22.10.2) UNRELEASED; urgency=medium + + * d/control: drop python3-httpretty from Build-Depends + + -- Alberto Contreras Mon, 26 Sep 2022 17:32:23 +0200 + cloud-init (22.3-13-g70ce6442-0ubuntu1~22.10.1) kinetic; urgency=medium * New upstream snapshot. From 8be3470785037065e9471ee35ea44664122a9ac3 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Wed, 26 Oct 2022 16:24:32 -0500 Subject: [PATCH 0581/1174] Add NWCS to the datasource list --- debian/cloud-init.templates | 6 +++--- debian/po/templates.pot | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index 3cf4eafb830..26f920f41de 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, LXD, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, LXD, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, VMware: reads data from guestinfo table or env vars, Vultr: Vultr Cloud, LXD: Reads /dev/lxd/sock representation of instance data, None: Failsafe datasource +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, LXD, NWCS, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, LXD, NWCS, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, VMware: reads data from guestinfo table or env vars, Vultr: Vultr Cloud, LXD: Reads /dev/lxd/sock representation of instance data, NWCS: NWCS, 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. diff --git a/debian/po/templates.pot b/debian/po/templates.pot index ba0fb51b88e..3171457cb48 100644 --- a/debian/po/templates.pot +++ b/debian/po/templates.pot @@ -173,6 +173,12 @@ msgstr "" msgid "Vultr: Vultr Cloud" msgstr "" +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "NWCS: NWCS" +msgstr "" + #. Type: multiselect #. Choices #: ../cloud-init.templates:1001 From c1393d95332946a9a579bf13bf3ea8d90a437870 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Wed, 26 Oct 2022 16:25:47 -0500 Subject: [PATCH 0582/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index b62a992602c..0892ca278aa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ cloud-init (22.3-13-g70ce6442-0ubuntu1~22.10.2) UNRELEASED; urgency=medium * d/control: drop python3-httpretty from Build-Depends + * d/cloud-init.templates: Add NWCS to datasource list -- Alberto Contreras Mon, 26 Sep 2022 17:32:23 +0200 From 56059181369c8f3b7e22a5062a2b8e1e9a4933fc Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 15 Nov 2022 14:35:52 -0600 Subject: [PATCH 0583/1174] update changelog --- debian/changelog | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0892ca278aa..9c3b623a6cd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,12 @@ -cloud-init (22.3-13-g70ce6442-0ubuntu1~22.10.2) UNRELEASED; urgency=medium +cloud-init (22.4-0ubuntu1) UNRELEASED; urgency=medium * d/control: drop python3-httpretty from Build-Depends * d/cloud-init.templates: Add NWCS to datasource list + * Upstream snapshot based on 22.4 upstream release. List of changes + from upstream can be found at + https://raw.githubusercontent.com/canonical/cloud-init/22.4/ChangeLog - -- Alberto Contreras Mon, 26 Sep 2022 17:32:23 +0200 + -- James Falcon Tue, 15 Nov 2022 14:23:44 -0600 cloud-init (22.3-13-g70ce6442-0ubuntu1~22.10.1) kinetic; urgency=medium From 60fff38a4f308675ee632e8210c3c85df512b4bc Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 15 Nov 2022 14:36:23 -0600 Subject: [PATCH 0584/1174] releasing cloud-init version 22.4-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9c3b623a6cd..51a7c25c9f7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.4-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (22.4-0ubuntu1) lunar; urgency=medium * d/control: drop python3-httpretty from Build-Depends * d/cloud-init.templates: Add NWCS to datasource list From 7d96553910b2c802d7a38b4122cf4b3c566a9030 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 15 Nov 2022 17:13:27 -0700 Subject: [PATCH 0585/1174] changelog: update fixed bugs in d/changelog (#1841) --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index 51a7c25c9f7..a012b06f156 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (22.4-0ubuntu2) lunar; urgency=medium + + * d/changelog: account for closed bugs released in 22.4-0ubuntu1 + + -- Chad Smith Tue, 15 Nov 2022 16:34:07 -0700 + cloud-init (22.4-0ubuntu1) lunar; urgency=medium * d/control: drop python3-httpretty from Build-Depends @@ -5,6 +11,9 @@ cloud-init (22.4-0ubuntu1) lunar; urgency=medium * Upstream snapshot based on 22.4 upstream release. List of changes from upstream can be found at https://raw.githubusercontent.com/canonical/cloud-init/22.4/ChangeLog + * Bugs fixed in this snapshot: + (LP: #1962343, #1913461, #1883122, #1989686, #1307667, #1990070, #1991567) + (LP: #1991024, #1990041, #1993836) -- James Falcon Tue, 15 Nov 2022 14:23:44 -0600 From 8c3e8fb2d8160c9969b10e19299405cf6a5390c0 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 15 Nov 2022 18:44:30 -0700 Subject: [PATCH 0586/1174] changelogs: sync released hotfix d/changelog entries and Changelog --- ChangeLog | 29 +++++++++++++++++++++++++++++ debian/changelog | 21 +++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/ChangeLog b/ChangeLog index 71ee96ad3c5..b3b45df08e1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -117,6 +117,35 @@ - Identify Huawei Cloud as OpenStack (#1689) [huang xinjie] - doc: add reporting suggestion to FAQ (SC-1236) (#1698) +22.3.4 + - Fix Oracle DS primary interface when using IMDS (LP: #1989686) + +22.3.3 + - Fix Oracle DS not setting subnet when using IMDS (LP: #1989686) + +22.3.2 + - azure: define new attribute for pre-22.3 pickles (#1725) + - sources/azure: ensure instance id is always correct (#1727) + +22.3.1 + - Fix v2 interface matching when no MAC (LP: #1986551) + - test: reduce number of network dependencies in flaky test (#1702) + - docs: publish cc_ubuntu_autoinstall docs to rtd (#1696) + - net: Fix EphemeraIPNetwork (#1697) [Alberto Contreras] + - test: make ansible test work across older versions (#1691) + - Networkd multi-address support/fix (#1685) [Teodor Garzdin] + - make: drop broken targets (#1688) + - net: Passthough v2 netconfigs in netplan systems (#1650) + [Alberto Contreras] (LP: #1978543) + - NM ipv6 connection does not work on Azure and Openstack (#1616) + [Emanuele Giuseppe Esposito] + - Fix check_format_tip (#1679) [Alberto Contreras] + - DataSourceVMware: fix var use before init (#1674) + [Andrew Kutz] (LP: #1987005) + - rpm/copr: ensure RPM represents new clean.d dir artifacts (#1680) + - test: avoid centos leaked check of /etc/yum.repos.d/epel-testing.repo + (#1676) + 22.3 - sources: obj.pkl cache should be written anyime get_data is run (#1669) - schema: drop release number from version file (#1664) diff --git a/debian/changelog b/debian/changelog index a012b06f156..60bbafb7c6d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,27 @@ cloud-init (22.4-0ubuntu1) lunar; urgency=medium -- James Falcon Tue, 15 Nov 2022 14:23:44 -0600 +cloud-init (22.3.4-0ubuntu1) kinetic; urgency=medium + + * New upstream bug fix release. + + Release 22.3.4 (LP: #1986703) + + Fix Oracle DS primary interface when using IMDS (#1757) + (LP: #1989686) + + -- Brett Holman Fri, 30 Sep 2022 16:07:44 -0600 + +cloud-init (22.3.3-0ubuntu1~22.10.1) kinetic; urgency=medium + + * New upstream bug fix release. + + Release 22.3.3 (LP: #1986703) + + Fix Oracle DS not setting subnet when using IMDS (#1735) + (LP: #1989686) + + azure: define new attribute for pre-22.3 pickles (#1725) + + sources/azure: ensure instance id is always correct (#1727) + [Chris Patterson] + + -- Brett Holman Mon, 19 Sep 2022 13:13:06 -0600 + cloud-init (22.3-13-g70ce6442-0ubuntu1~22.10.1) kinetic; urgency=medium * New upstream snapshot. From 4209b6218cf52aba9dc34ca7dd8cfc61809ecf25 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 15 Nov 2022 19:10:16 -0700 Subject: [PATCH 0587/1174] release 22.4-0ubuntu3 --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index 60bbafb7c6d..bf552912cf6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (22.4-0ubuntu3) lunar; urgency=medium + + * d/changelog: Sync released d/changelog entries + - 22.3.4-0ubuntu1 and 22.3.3-0ubuntu1~22.10.1 + * Changelog: Sync release entries in Changlog: + - 22.3.1, 22.3.2, 22.3.3 and 22.3.4 + + -- Chad Smith Tue, 15 Nov 2022 19:08:24 -0700 + cloud-init (22.4-0ubuntu2) lunar; urgency=medium * d/changelog: account for closed bugs released in 22.4-0ubuntu1 From 84ef967f4d27024c70cba5d9a8f3d1780a74ca32 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 18 Nov 2022 16:43:12 -0600 Subject: [PATCH 0588/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index bf552912cf6..7d83b4ce0d3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (22.4-0ubuntu4) UNRELEASED; urgency=medium + + * Upstream snapshot based on upstream commit 74ed1387. + - Bugs fixed in this snapshot: (LP: #1844191, #1906849, #1992512) + + -- James Falcon Fri, 18 Nov 2022 16:41:49 -0600 + cloud-init (22.4-0ubuntu3) lunar; urgency=medium * d/changelog: Sync released d/changelog entries From 7259f1867304de51b6c2c61131c22110a83aec6b Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 18 Nov 2022 16:44:30 -0600 Subject: [PATCH 0589/1174] releasing cloud-init version 22.4-0ubuntu4 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 7d83b4ce0d3..d6f915ba1a5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.4-0ubuntu4) UNRELEASED; urgency=medium +cloud-init (22.4-0ubuntu4) lunar; urgency=medium * Upstream snapshot based on upstream commit 74ed1387. - Bugs fixed in this snapshot: (LP: #1844191, #1906849, #1992512) From 55834cd68740f1adadc30d2bbc1bcaebf8c0f0ae Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 21 Nov 2022 15:05:26 -0600 Subject: [PATCH 0590/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index d6f915ba1a5..883be58f32a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (22.4.1-0ubuntu1) UNRELEASED; urgency=medium + + * Upstream snapshot based on upstream commit c038808e. + + -- James Falcon Mon, 21 Nov 2022 15:02:34 -0600 + cloud-init (22.4-0ubuntu4) lunar; urgency=medium * Upstream snapshot based on upstream commit 74ed1387. From 9e65c300b010f6b0fbfbc43c40d3e2cc07cfbf71 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 21 Nov 2022 15:05:46 -0600 Subject: [PATCH 0591/1174] releasing cloud-init version 22.4.1-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 883be58f32a..323aed6f36f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.4.1-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (22.4.1-0ubuntu1) lunar; urgency=medium * Upstream snapshot based on upstream commit c038808e. From 46790000d9edcd555fe9b3876afda8a00ac382da Mon Sep 17 00:00:00 2001 From: s-makin Date: Tue, 22 Nov 2022 20:34:28 +0000 Subject: [PATCH 0592/1174] Docs: adding relative links - index.rst: changed contributing link to :ref: - found CONTRIBUTING.rst had rtd.io links still in it - added labels to several topic pages to fix that issue - changed all of those to :ref: links --- CONTRIBUTING.rst | 14 ++++++-------- doc-requirements.txt | 2 +- doc/rtd/index.rst | 5 ++--- doc/rtd/topics/code_review.rst | 3 ++- doc/rtd/topics/module_creation.rst | 11 ++--------- doc/rtd/topics/modules.rst | 3 +++ doc/rtd/topics/network-config-format-v2.rst | 2 -- doc/rtd/topics/tutorial.rst | 7 +++---- 8 files changed, 19 insertions(+), 28 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 62628fd50a0..e9e2549989b 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -1,3 +1,5 @@ +.. _contributing: + Contributing to cloud-init ************************** @@ -17,15 +19,12 @@ Before any pull request can be accepted, you must do the following: * Add your Github username (alphabetically) to the in-repository list that we use to track CLA signatures: `tools/.github-cla-signers`_ -* Add or update any `unit tests`_ accordingly -* Add or update any `integration tests`_ (if applicable) +* Add or update any :ref:`unit tests` accordingly +* Add or update any :ref:`integration_tests` (if applicable) * Format code (using black and isort) with `tox -e do_format` * Ensure unit tests and linting pass using `tox`_ * Submit a PR against the `main` branch of the `cloud-init` repository -.. _unit tests: https://cloudinit.readthedocs.io/en/latest/topics/testing.html -.. _integration tests: https://cloudinit.readthedocs.io/en/latest/topics/integration_tests.html - The detailed instructions ------------------------- @@ -77,7 +76,7 @@ Follow these steps to submit your first pull request to cloud-init: git remote add upstream git@github.com:canonical/cloud-init.git git push origin main -* Read through the cloud-init `Code Review Process`_, so you understand +* Read through the cloud-init :ref:`Code Review Process`, so you understand how your changes will end up in cloud-init's codebase. * Submit your first cloud-init pull request, adding your Github username to the @@ -182,14 +181,13 @@ Do these things for each feature or bug - Click 'Create Pull Request` Then, a cloud-init committer will review your changes and -follow up in the pull request. Look at the `Code Review Process`_ doc +follow up in the pull request. Look at the :ref:`Code Review Process` doc to understand the following steps. Feel free to ping and/or join ``#cloud-init`` on Libera irc if you have any questions. .. _tox: https://tox.readthedocs.io/en/latest/ -.. _Code Review Process: https://cloudinit.readthedocs.io/en/latest/topics/code_review.html Design ====== diff --git a/doc-requirements.txt b/doc-requirements.txt index 6f48062e28f..359da21d6c7 100644 --- a/doc-requirements.txt +++ b/doc-requirements.txt @@ -3,4 +3,4 @@ furo m2r2 pyyaml sphinx -sphinx-design +sphinx_design diff --git a/doc/rtd/index.rst b/doc/rtd/index.rst index 94d7c882104..fd062e23d05 100644 --- a/doc/rtd/index.rst +++ b/doc/rtd/index.rst @@ -1,6 +1,6 @@ .. _index: -cloud-init Documentation +cloud-init documentation ######################## Cloud-init is the *industry standard* multi-distribution method for @@ -28,7 +28,7 @@ projects, contributions, suggestions, fixes and constructive feedback. * Read our `Code of conduct`_ * Ask questions in the ``#cloud-init`` `IRC channel on Libera`_ * Join the `cloud-init mailing list`_ -* `Contribute on Github`_ +* :ref:`Contribute on Github` * `Release schedule`_ Having trouble? We would like to help! @@ -107,6 +107,5 @@ Having trouble? We would like to help! .. _IRC channel on Libera: https://kiwiirc.com/nextclient/irc.libera.chat/cloud-init .. _cloud-init mailing list: https://launchpad.net/~cloud-init .. _mailing list archive: https://lists.launchpad.net/cloud-init/ -.. _Contribute on Github: https://cloudinit.readthedocs.io/en/latest/topics/contributing.html .. _Release schedule: https://discourse.ubuntu.com/t/cloud-init-release-schedule/32244 .. _Report bugs on Launchpad: https://bugs.launchpad.net/cloud-init/+filebug diff --git a/doc/rtd/topics/code_review.rst b/doc/rtd/topics/code_review.rst index 20c81eac9f2..2be78ed5831 100644 --- a/doc/rtd/topics/code_review.rst +++ b/doc/rtd/topics/code_review.rst @@ -1,4 +1,5 @@ -******************* +.. _code_review_process: + Code Review Process ******************* diff --git a/doc/rtd/topics/module_creation.rst b/doc/rtd/topics/module_creation.rst index 69a6a8aeb6b..56cadec4808 100644 --- a/doc/rtd/topics/module_creation.rst +++ b/doc/rtd/topics/module_creation.rst @@ -70,14 +70,8 @@ Guidelines module definition in ``/etc/cloud/cloud.cfg[.d]`` has been modified to pass arguments to this module. -* Your module name must be included in `schema-cloud-config.json`_ - under ``$defs.all_modules``, in order to be accepted as a module key in - the :ref:`base config`. - -* Add the new module to `Module Reference`_. - * If your module introduces any new cloud-config keys, you must provide a - schema definition in `schema-cloud-config.json`_. + schema definition in `cloud-init-schema.json`_. * The ``meta`` variable must exist and be of type `MetaSchema`_. * ``id``: The module id. In most cases this will be the filename without @@ -127,9 +121,8 @@ in the ``cloud_final_modules`` section before the ``final-message`` module. .. _MetaSchema: https://github.com/canonical/cloud-init/blob/3bcffacb216d683241cf955e4f7f3e89431c1491/cloudinit/config/schema.py#L58 .. _OSFAMILIES: https://github.com/canonical/cloud-init/blob/3bcffacb216d683241cf955e4f7f3e89431c1491/cloudinit/distros/__init__.py#L35 .. _settings.py: https://github.com/canonical/cloud-init/blob/3bcffacb216d683241cf955e4f7f3e89431c1491/cloudinit/settings.py#L66 -.. _schema-cloud-config.json: https://github.com/canonical/cloud-init/blob/main/cloudinit/config/schemas/schema-cloud-config-v1.json +.. _cloud-init-schema.json: https://github.com/canonical/cloud-init/blob/main/cloudinit/config/schemas/versions.schema.cloud-config.json .. _cloud.cfg.tmpl: https://github.com/canonical/cloud-init/blob/main/config/cloud.cfg.tmpl .. _cloud_init_modules: https://github.com/canonical/cloud-init/blob/b4746b6aed7660510071395e70b2d6233fbdc3ab/config/cloud.cfg.tmpl#L70 .. _cloud_config_modules: https://github.com/canonical/cloud-init/blob/b4746b6aed7660510071395e70b2d6233fbdc3ab/config/cloud.cfg.tmpl#L101 .. _cloud_final_modules: https://github.com/canonical/cloud-init/blob/b4746b6aed7660510071395e70b2d6233fbdc3ab/config/cloud.cfg.tmpl#L144 -.. _Module Reference: https://github.com/canonical/cloud-init/blob/main/doc/rtd/topics/modules.rst diff --git a/doc/rtd/topics/modules.rst b/doc/rtd/topics/modules.rst index b0ad83e496b..0274d7bc8b0 100644 --- a/doc/rtd/topics/modules.rst +++ b/doc/rtd/topics/modules.rst @@ -37,6 +37,9 @@ Module Reference .. automodule:: cloudinit.config.cc_rh_subscription .. automodule:: cloudinit.config.cc_rightscale_userdata .. automodule:: cloudinit.config.cc_rsyslog + +.. _mod-runcmd: + .. automodule:: cloudinit.config.cc_runcmd .. automodule:: cloudinit.config.cc_salt_minion .. automodule:: cloudinit.config.cc_scripts_per_boot diff --git a/doc/rtd/topics/network-config-format-v2.rst b/doc/rtd/topics/network-config-format-v2.rst index b3e1df27cb3..5327441796f 100644 --- a/doc/rtd/topics/network-config-format-v2.rst +++ b/doc/rtd/topics/network-config-format-v2.rst @@ -233,7 +233,6 @@ Example: ``addresses: [192.168.14.2/24, 2001:1::1/64]`` **gateway4**: or **gateway6**: *<(scalar)>* -Deprecated, see `netplan#default-routes`_. Set default gateway for IPv4/6, for manual address configuration. This requires setting ``addresses`` too. Gateway IPs must be in a form recognized by ``inet_pton(3)`` @@ -573,6 +572,5 @@ This is a complex example which shows most available features: :: dhcp4: yes .. _netplan: https://netplan.io -.. _netplan#default-routes: https://netplan.io/reference#default-routes .. _netplan#dhcp-overrides: https://netplan.io/reference#dhcp-overrides .. vi: textwidth=79 diff --git a/doc/rtd/topics/tutorial.rst b/doc/rtd/topics/tutorial.rst index e8bed272b3d..aadbe45b1ee 100644 --- a/doc/rtd/topics/tutorial.rst +++ b/doc/rtd/topics/tutorial.rst @@ -48,7 +48,7 @@ following file on your local filesystem at ``/tmp/my-user-data``: Here we are defining our cloud-init user data in the :ref:`cloud-config` format, using the -`runcmd`_ module to define a command to run. When applied, it +:ref:`runcmd module ` to define a command to run. When applied, it should write ``Hello, World!`` to ``/var/tmp/hello-world.txt``. Launch a container with our user data @@ -128,8 +128,8 @@ and we can remove the container using: What's next? ============ -In this tutorial, we used the runcmd_ module to execute a shell command. -The full list of modules available can be found in +In this tutorial, we used the :ref:`runcmd module ` to execute a +shell command. The full list of modules available can be found in :ref:`modules documentation`. Each module contains examples of how to use it. @@ -138,4 +138,3 @@ examples of more common use cases. .. _LXD: https://linuxcontainers.org/lxd/ .. _other installation options: https://linuxcontainers.org/lxd/getting-started-cli/#other-installation-options -.. _runcmd: https://cloudinit.readthedocs.io/en/latest/topics/modules.html#runcmd From 49fd78bebe8a7e2d459bacc24e00c433d5666388 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 22 Nov 2022 18:03:08 -0600 Subject: [PATCH 0593/1174] Make 3.12 failures not fail the build (#1873) Since 3.12 is the development release, failures of it shouldn't fail the overall build. --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index d3421e17333..45cfbf7ec77 100644 --- a/.travis.yml +++ b/.travis.yml @@ -152,3 +152,5 @@ matrix: - python: 3.9 - python: 3.8 - python: 3.7 + allow_failures: + - python: 3.12-dev From 189a39610c8a5dcb05045dc6ab449b280ebd86b8 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 23 Nov 2022 21:54:33 +0100 Subject: [PATCH 0594/1174] status: handle ds not defined in status.json (#1876) Handles any situation where `status.json` does not yet contain datasource information, by gracefully fulfilling a `datasource=None` in `StatusDetails`. LP: #1997559 --- cloudinit/cmd/status.py | 20 ++++++++++------ tests/unittests/cmd/test_cloud_id.py | 11 +++++++++ tests/unittests/cmd/test_status.py | 34 ++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 7 deletions(-) diff --git a/cloudinit/cmd/status.py b/cloudinit/cmd/status.py index df136288d21..e1c37a78c41 100644 --- a/cloudinit/cmd/status.py +++ b/cloudinit/cmd/status.py @@ -13,11 +13,12 @@ import os import sys from time import gmtime, sleep, strftime -from typing import Any, Dict, List, NamedTuple, Tuple, Union +from typing import Any, Dict, List, NamedTuple, Optional, Tuple, Union from cloudinit import safeyaml from cloudinit.cmd.devel import read_cfg_paths from cloudinit.distros import uses_systemd +from cloudinit.helpers import Paths from cloudinit.util import get_cmdline, load_file, load_json CLOUDINIT_DISABLED_FILE = "/etc/cloud/cloud-init.disabled" @@ -63,7 +64,7 @@ class StatusDetails(NamedTuple): description: str errors: List[str] last_update: str - datasource: str + datasource: Optional[str] TABULAR_LONG_TMPL = """\ @@ -124,7 +125,7 @@ def handle_status_args(name, args) -> int: sys.stdout.flush() details = get_status_details(paths) sleep(0.25) - details_dict: Dict[str, Union[str, List[str], Dict[str, Any]]] = { + details_dict: Dict[str, Union[None, str, List[str], Dict[str, Any]]] = { "datasource": details.datasource, "boot_status_code": details.boot_status_code.value, "status": details.status.value, @@ -195,7 +196,7 @@ def get_bootstatus(disable_file, paths) -> Tuple[UXAppBootStatusCode, str]: return (bootstatus_code, reason) -def get_status_details(paths=None) -> StatusDetails: +def get_status_details(paths: Optional[Paths] = None) -> StatusDetails: """Return a dict with status, details and errors. @param paths: An initialized cloudinit.helpers.paths object. @@ -206,7 +207,7 @@ def get_status_details(paths=None) -> StatusDetails: status = UXAppStatus.NOT_RUN errors = [] - datasource = "" + datasource: Optional[str] = "" status_v1 = {} status_file = os.path.join(paths.run_dir, "status.json") @@ -228,9 +229,14 @@ def get_status_details(paths=None) -> StatusDetails: status = UXAppStatus.RUNNING description = "Running in stage: {0}".format(value) elif key == "datasource": + if value is None: + # If ds not yet written in status.json, then keep previous + # description + datasource = value + continue description = value - datasource, _, _ = value.partition(" ") - datasource = datasource.lower().replace("datasource", "") + ds, _, _ = value.partition(" ") + datasource = ds.lower().replace("datasource", "") elif isinstance(value, dict): errors.extend(value.get("errors", [])) start = value.get("start") or 0 diff --git a/tests/unittests/cmd/test_cloud_id.py b/tests/unittests/cmd/test_cloud_id.py index 80600555531..bf87269a72c 100644 --- a/tests/unittests/cmd/test_cloud_id.py +++ b/tests/unittests/cmd/test_cloud_id.py @@ -45,6 +45,16 @@ ) +STATUS_DETAILS_RUNNING_DS_NONE = status.StatusDetails( + status.UXAppStatus.RUNNING, + status.UXAppBootStatusCode.UNKNOWN, + "", + [], + "", + None, +) + + @pytest.fixture(autouse=True) def setup_mocks(mocker): mocker.patch( @@ -203,6 +213,7 @@ def test_cloud_id_lookup_json_instance_data_adds_cloud_id_to_json( (STATUS_DETAILS_DISABLED, 2), (STATUS_DETAILS_NOT_RUN, 3), (STATUS_DETAILS_RUNNING, 0), + (STATUS_DETAILS_RUNNING_DS_NONE, 0), ), ) @mock.patch(M_PATH + "get_status_details") diff --git a/tests/unittests/cmd/test_status.py b/tests/unittests/cmd/test_status.py index 6ae3b398742..52a02c35404 100644 --- a/tests/unittests/cmd/test_status.py +++ b/tests/unittests/cmd/test_status.py @@ -38,6 +38,40 @@ def config(tmpdir): class TestStatus: maxDiff = None + @mock.patch( + M_PATH + "load_file", + return_value=( + '{"v1": {"datasource": null, "init": {"errors": [], "finished": ' + 'null, "start": null}, "init-local": {"errors": [], "finished": ' + 'null, "start": 1669231096.9621563}, "modules-config": ' + '{"errors": [], "finished": null, "start": null},' + '"modules-final": {"errors": [], "finished": null, ' + '"start": null}, "modules-init": {"errors": [], "finished": ' + 'null, "start": null}, "stage": "init-local"} }' + ), + ) + @mock.patch(M_PATH + "os.path.exists", return_value=True) + @mock.patch( + M_PATH + "get_bootstatus", + return_value=( + status.UXAppBootStatusCode.ENABLED_BY_GENERATOR, + "Cloud-init enabled by systemd cloud-init-generator", + ), + ) + def test_get_status_details_ds_none( + self, m_get_boot_status, m_p_exists, m_load_json, tmpdir + ): + paths = mock.Mock() + paths.run_dir = str(tmpdir) + assert status.StatusDetails( + status.UXAppStatus.RUNNING, + status.UXAppBootStatusCode.ENABLED_BY_GENERATOR, + "Running in stage: init-local", + [], + "Wed, 23 Nov 2022 19:18:16 +0000", + None, # datasource + ) == status.get_status_details(paths) + @pytest.mark.parametrize( [ "ensured_file", From ba242ed18eb0ac6ace4505139be645bb8e39f220 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 24 Nov 2022 00:29:37 -0700 Subject: [PATCH 0595/1174] Release 22.4.2 (#1878) Bump the version in cloudinit/version.py to 22.4.2 and update ChangeLog. --- ChangeLog | 3 +++ cloudinit/version.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 25916f26e5f..97e27e69366 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +22.4.2 + - status: handle ds not defined in status.json (#1876) (LP: #1997559) + 22.4.1 - net: skip duplicate mac check for netvsc nic and its VF (#1853) [Anh Vo] (LP: #1844191) diff --git a/cloudinit/version.py b/cloudinit/version.py index 4b739354901..f2d62c04845 100644 --- a/cloudinit/version.py +++ b/cloudinit/version.py @@ -4,7 +4,7 @@ # # This file is part of cloud-init. See LICENSE file for license information. -__VERSION__ = "22.4.1" +__VERSION__ = "22.4.2" _PACKAGED_VERSION = "@@PACKAGED_VERSION@@" FEATURES = [ From 7e03ec8e6661e6a179e0f592c7a730f415751350 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Thu, 24 Nov 2022 08:46:14 +0100 Subject: [PATCH 0596/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 323aed6f36f..4f65188455b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (22.4.2-0ubuntu1) UNRELEASED; urgency=medium + + * Upstream snapshot based on upstream commit 893df0d6. + - Bugs fixed in this snapshot: (LP: #1997559) + + -- Alberto Contreras Thu, 24 Nov 2022 08:39:08 +0100 + cloud-init (22.4.1-0ubuntu1) lunar; urgency=medium * Upstream snapshot based on upstream commit c038808e. From 089dcad6ccce5f953e2161c6c8b232317f5b25ec Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Thu, 24 Nov 2022 08:47:42 +0100 Subject: [PATCH 0597/1174] releasing cloud-init version 22.4.2-0ubuntu1 --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4f65188455b..1c32173b1f1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.4.2-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (22.4.2-0ubuntu1) lunar; urgency=medium * Upstream snapshot based on upstream commit 893df0d6. - Bugs fixed in this snapshot: (LP: #1997559) From 78f631ab00e5fa0f06d43241cd0b4ead3f8960a7 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 15 Dec 2022 16:11:35 -0700 Subject: [PATCH 0598/1174] update changelog (new upstream snapshot) --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1c32173b1f1..1e73b934268 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (22.4.2-0ubuntu2) UNRELEASED; urgency=medium + + * Upstream snapshot based on upstream/main at 040090a3. + - Bugs fixed in this snapshot: (LP: #1994980, #1998655, #1999042) + (LP: #1997559) + + -- Chad Smith Thu, 15 Dec 2022 16:11:35 -0700 + cloud-init (22.4.2-0ubuntu1) lunar; urgency=medium * Upstream snapshot based on upstream commit 893df0d6. From c13bf7399048d9e1e2e66e06afd33b0d0d25ced7 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 15 Dec 2022 16:11:39 -0700 Subject: [PATCH 0599/1174] releasing cloud-init version 22.4.2-0ubuntu2 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1e73b934268..21028953600 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (22.4.2-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (22.4.2-0ubuntu2) lunar; urgency=medium * Upstream snapshot based on upstream/main at 040090a3. - Bugs fixed in this snapshot: (LP: #1994980, #1998655, #1999042) (LP: #1997559) - -- Chad Smith Thu, 15 Dec 2022 16:11:35 -0700 + -- Chad Smith Thu, 15 Dec 2022 16:11:37 -0700 cloud-init (22.4.2-0ubuntu1) lunar; urgency=medium From 66266c8bf30654c137b56d958707d241f80b3853 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 13 Jan 2023 08:40:49 -0600 Subject: [PATCH 0600/1174] update changelog (new upstream snapshot) --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 21028953600..10742166f58 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (22.4.2-0ubuntu3) UNRELEASED; urgency=medium + + * Upstream snapshot based on upstream/main at bdc7b040. + - Bugs fixed in this snapshot: (LP: #2001737, #1998526, #2000596) + (LP: #1851438) + + -- James Falcon Fri, 13 Jan 2023 08:40:49 -0600 + cloud-init (22.4.2-0ubuntu2) lunar; urgency=medium * Upstream snapshot based on upstream/main at 040090a3. From 63131051d2cec908c82be946e7ad1da8c4f7a2a3 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 3 Feb 2023 15:35:51 -0600 Subject: [PATCH 0601/1174] update changelog (new upstream snapshot) --- debian/changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index 10742166f58..e2788d1b12c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,9 @@ cloud-init (22.4.2-0ubuntu3) UNRELEASED; urgency=medium * Upstream snapshot based on upstream/main at bdc7b040. - Bugs fixed in this snapshot: (LP: #2001737, #1998526, #2000596) (LP: #1851438) + * Upstream snapshot based on upstream/main at 3b8b4692. + - Bugs fixed in this snapshot: (LP: #1998998, #1997922, #2002969) + (LP: #2003562, #1999680) -- James Falcon Fri, 13 Jan 2023 08:40:49 -0600 From 8378187a942493875c0068639537cb19eaca2e32 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 3 Feb 2023 15:36:19 -0600 Subject: [PATCH 0602/1174] releasing cloud-init version 22.4.2-0ubuntu3 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index e2788d1b12c..535749cbdc5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.4.2-0ubuntu3) UNRELEASED; urgency=medium +cloud-init (22.4.2-0ubuntu3) lunar; urgency=medium * Upstream snapshot based on upstream/main at bdc7b040. - Bugs fixed in this snapshot: (LP: #2001737, #1998526, #2000596) @@ -7,7 +7,7 @@ cloud-init (22.4.2-0ubuntu3) UNRELEASED; urgency=medium - Bugs fixed in this snapshot: (LP: #1998998, #1997922, #2002969) (LP: #2003562, #1999680) - -- James Falcon Fri, 13 Jan 2023 08:40:49 -0600 + -- James Falcon Fri, 03 Feb 2023 15:36:12 -0600 cloud-init (22.4.2-0ubuntu2) lunar; urgency=medium From 64b57b834da1217b681234f6cb404a70e97df885 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 22 Feb 2023 18:01:41 +0100 Subject: [PATCH 0603/1174] update changelog (new upstream snapshot) --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index 535749cbdc5..88db2bd3669 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +cloud-init (22.4.2-0ubuntu4) UNRELEASED; urgency=medium + + * Upstream snapshot based on 23.1. + List of changes from upstream can be found at + https://raw.githubusercontent.com/canonical/cloud-init/23.1/ChangeLog + - Bugs fixed in this snapshot: (LP: #1990513, #1999164, #1931174) + (LP: #1815990) + + -- Alberto Contreras Wed, 22 Feb 2023 18:01:41 +0100 + cloud-init (22.4.2-0ubuntu3) lunar; urgency=medium * Upstream snapshot based on upstream/main at bdc7b040. From 655d83a83faa8732ad9ba63d6c6330a3afa1319e Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 22 Feb 2023 18:17:54 +0100 Subject: [PATCH 0604/1174] releasing cloud-init version 23.1-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 88db2bd3669..47f8efc598c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (22.4.2-0ubuntu4) UNRELEASED; urgency=medium +cloud-init (23.1-0ubuntu1) lunar; urgency=medium * Upstream snapshot based on 23.1. List of changes from upstream can be found at @@ -6,7 +6,7 @@ cloud-init (22.4.2-0ubuntu4) UNRELEASED; urgency=medium - Bugs fixed in this snapshot: (LP: #1990513, #1999164, #1931174) (LP: #1815990) - -- Alberto Contreras Wed, 22 Feb 2023 18:01:41 +0100 + -- Alberto Contreras Wed, 22 Feb 2023 18:15:10 +0100 cloud-init (22.4.2-0ubuntu3) lunar; urgency=medium From 7f9812b9dedbfd48e9b63b8b519d5e2310606182 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 2 Mar 2023 14:04:23 -0600 Subject: [PATCH 0605/1174] update changelog (new upstream snapshot) --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 47f8efc598c..4f4a30f12dc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (23.1-0ubuntu2) UNRELEASED; urgency=medium + + * Upstream snapshot based on main at d1ffbea5. + - Bugs fixed in this snapshot: (LP: #2008727) + + -- James Falcon Thu, 02 Mar 2023 14:04:23 -0600 + cloud-init (23.1-0ubuntu1) lunar; urgency=medium * Upstream snapshot based on 23.1. From e35d3ea44ae6dd8a0197276d4ec4782306f5a1b3 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 2 Mar 2023 14:05:53 -0600 Subject: [PATCH 0606/1174] releasing cloud-init version 23.1-0ubuntu2 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4f4a30f12dc..0704e4a81f8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (23.1-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (23.1-0ubuntu2) lunar; urgency=medium * Upstream snapshot based on main at d1ffbea5. - Bugs fixed in this snapshot: (LP: #2008727) - -- James Falcon Thu, 02 Mar 2023 14:04:23 -0600 + -- James Falcon Thu, 02 Mar 2023 14:05:48 -0600 cloud-init (23.1-0ubuntu1) lunar; urgency=medium From 03d7b2372da6aaf87c2f5004bedfb2774eb307c4 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 2 Mar 2023 16:45:44 -0600 Subject: [PATCH 0607/1174] update changelog (new upstream snapshot) --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 0704e4a81f8..26a1dee87b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (23.1-0ubuntu3) UNRELEASED; urgency=medium + + * Upstream snapshot based on main at 4896402b. + + -- James Falcon Thu, 02 Mar 2023 16:45:44 -0600 + cloud-init (23.1-0ubuntu2) lunar; urgency=medium * Upstream snapshot based on main at d1ffbea5. From eeb3c884b5bb1bbac6276415d2b805fa1a9dadd5 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Thu, 2 Mar 2023 16:46:14 -0600 Subject: [PATCH 0608/1174] releasing cloud-init version 23.1-0ubuntu3 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 26a1dee87b1..98826869e9b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,8 @@ -cloud-init (23.1-0ubuntu3) UNRELEASED; urgency=medium +cloud-init (23.1.1-0ubuntu1) lunar; urgency=medium * Upstream snapshot based on main at 4896402b. - -- James Falcon Thu, 02 Mar 2023 16:45:44 -0600 + -- James Falcon Thu, 02 Mar 2023 16:46:05 -0600 cloud-init (23.1-0ubuntu2) lunar; urgency=medium From 739ec73815072444fcbc98845c5b75ad235865ca Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Fri, 10 Feb 2023 11:40:47 +0100 Subject: [PATCH 0609/1174] d/cloud-init.preinst: Oracle to remove network disabling config file Oracle to remove vestigial /etc/cloud.cloud.cfg.d/99-disable-network-config.cfg because system config is now honored before datasource config LP: #1956788 --- debian/cloud-init.preinst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/cloud-init.preinst b/debian/cloud-init.preinst index 6168aecf2a0..0dcef7c4f88 100644 --- a/debian/cloud-init.preinst +++ b/debian/cloud-init.preinst @@ -181,6 +181,13 @@ cleanup_lp1552999() { "$hdir/cloud-init-local.service" "$hdir/cloud-init.service" } +cleanup_oci_network_lp1956788() { + # Remove vestigial /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg + # from Oracle now that datasource honors system cfg above datasource cfg. + grep DataSourceOracle /var/lib/cloud/instance/datasource > /dev/null 2>&1 || return 0 + rm -f /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg +} + case "$1" in install|upgrade) if dpkg --compare-versions "$2" le "0.5.11-0ubuntu1"; then @@ -224,6 +231,8 @@ case "$1" in fi cleanup_lp1552999 "$oldver" + cleanup_oci_network_lp1956788 + esac #DEBHELPER# From 49f66f14c1a3e2ffd2d7b721fbeb28c32743b09e Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Thu, 2 Mar 2023 12:43:58 +0100 Subject: [PATCH 0610/1174] update changelog --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 98826869e9b..0b2238d9b3d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (23.1.1-0ubuntu2) UNRELEASED; urgency=medium + + * d/cloud-init.preinst: Oracle to remove vestigial /etc/cloud.cloud.cfg.d/ + 99-disable-network-config.cfg because system config is now honored before + datasource config (LP: #1956788) + + -- Alberto Contreras Thu, 02 Mar 2023 12:40:49 +0100 + cloud-init (23.1.1-0ubuntu1) lunar; urgency=medium * Upstream snapshot based on main at 4896402b. From fa935d4cf7e542d0686d8b1ac55df0229b4adac1 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 8 Mar 2023 13:36:52 -0700 Subject: [PATCH 0611/1174] d/postinst: prefer yaml.safe_load. yaml.load requires Loader param It's been deprecated for a while, Ubuntu 23.04 sync'd 6.0.1 which dropped support for an optional Loader parameter making it required. This broke dpkg-reconfigured cloud-init on MAAS Ubuntu 23.04 system deployments which now exit non-zero due to changed yaml.load call-signature. LP: #2009746 --- debian/cloud-init.postinst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/cloud-init.postinst b/debian/cloud-init.postinst index 268f3ec8a7d..079b429dcb5 100644 --- a/debian/cloud-init.postinst +++ b/debian/cloud-init.postinst @@ -38,10 +38,10 @@ def update(src, cand): REMOVER = object if len(sys.argv) == 5: REMOVER = sys.argv[4] -newcfg = yaml.load(newyaml) +newcfg = yaml.safe_load(newyaml) with open(fname, "r") as fp: - cfg = yaml.load(fp) + cfg = yaml.safe_load(fp) if not cfg: cfg = {} cfg = update(cfg, newcfg) From 3a78e137acfb427cbf9527ee1a475b43ba371067 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 8 Mar 2023 13:41:19 -0700 Subject: [PATCH 0612/1174] update changelog --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 0b2238d9b3d..b2927b8ebae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,7 @@ cloud-init (23.1.1-0ubuntu2) UNRELEASED; urgency=medium + * d/cloud-init.postinst: MAAS prefer yaml.safe_load over yaml.load + (LP: #2009746) * d/cloud-init.preinst: Oracle to remove vestigial /etc/cloud.cloud.cfg.d/ 99-disable-network-config.cfg because system config is now honored before datasource config (LP: #1956788) From b2481a883c5b5b86c5b6488bf73c5cf9f25c4ecf Mon Sep 17 00:00:00 2001 From: Benjamin Drung Date: Thu, 16 Feb 2023 18:20:06 +0100 Subject: [PATCH 0613/1174] Add Apport general hook Apport 2.25.0-0ubuntu1 removed the buggy `add_cloud_info` from the ubuntu general hook. Add an Apport general hook that reads `/run/cloud-init/instance-data.json` if present. LP: #1724623 Thanks for the initial version: John Chittum --- debian/apport-general-hook.py | 99 +++++++++++++++++++++++++++++++++++ debian/rules | 1 + 2 files changed, 100 insertions(+) create mode 100644 debian/apport-general-hook.py diff --git a/debian/apport-general-hook.py b/debian/apport-general-hook.py new file mode 100644 index 00000000000..fccac954ce5 --- /dev/null +++ b/debian/apport-general-hook.py @@ -0,0 +1,99 @@ +"""General Apport hook for all reports that are using cloud-init.""" + +import json +import logging + + +def _get_azure_data(ds_data) -> dict[str, str]: + compute = ds_data.get("meta_data", {}).get("imds", {}).get("compute") + if not compute: + return {} + name_to_report_map = { + "publisher": "ImagePublisher", + "offer": "ImageOffer", + "sku": "ImageSKU", + "version": "ImageVersion", + "vmSize": "VMSize", + } + azure_data = {} + for src_key, report_key_name in name_to_report_map.items(): + azure_data[report_key_name] = compute[src_key] + return azure_data + + +def _get_ec2_data(ds_data) -> dict[str, str]: + document = ( + ds_data.get("dynamic", {}).get("instance-identity", {}).get("document") + ) + if not document: + return {} + wanted_keys = { + "architecture", + "billingProducts", + "imageId", + "instanceType", + "region", + } + return { + key: value for key, value in document.items() if key in wanted_keys + } + + +PLATFORM_SPECIFIC_INFO = {"azure": _get_azure_data, "ec2": _get_ec2_data} + + +def add_datasource_specific_info(report, platform: str, ds_data) -> None: + """Add datasoure specific information from the ds dictionary. + + ds_data contains the "ds" entry from data from + /run/cloud/instance-data.json. + """ + platform_info = PLATFORM_SPECIFIC_INFO.get(platform) + if not platform_info: + return + retrieved_data = platform_info(ds_data) + for key, value in retrieved_data.items(): + if not value: + continue + report[platform.capitalize() + key.capitalize()] = value + + +def add_info(report, ui) -> None: + """Entry point for Apport. + + Add a subset of non-sensitive cloud-init data from + /run/cloud/instance-data.json that will be helpful for debugging. + """ + try: + with open("/run/cloud-init/instance-data.json", "r") as fopen: + instance_data = json.load(fopen) + except FileNotFoundError: + logging.getLogger().warning( + "cloud-init run data not found on system. " + "Unable to add cloud-specific data." + ) + return + + v1 = instance_data.get("v1") + if not v1: + logging.getLogger().warning( + "instance-data.json lacks 'v1' metadata. Present keys: %s", + sorted(instance_data.keys()), + ) + return + + for key, report_key in { + "cloud_id": "CloudID", + "cloud_name": "CloudName", + "machine": "CloudArchitecture", + "platform": "CloudPlatform", + "region": "CloudRegion", + "subplatform": "CloudSubPlatform", + }.items(): + value = v1.get(key) + if value: + report[report_key] = value + + add_datasource_specific_info( + report, v1["platform"], instance_data.get("ds") + ) diff --git a/debian/rules b/debian/rules index 108a944208c..9e2718b0ca8 100755 --- a/debian/rules +++ b/debian/rules @@ -23,5 +23,6 @@ override_dh_auto_install: 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-general-hook.py debian/cloud-init/usr/share/apport/general-hooks/cloud-init.py install -m 0644 -D debian/apport-launcher.py debian/cloud-init/usr/share/apport/package-hooks/cloud-init.py flist=$$(find $(CURDIR)/debian/ -type f -name version.py) && sed -i 's,@@PACKAGED_VERSION@@,$(DEB_VERSION),' $${flist:-did-not-find-version-py-for-replacement} From 50c1ca1c6d80f3d120e1ec99e50ecffe2a57c857 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 20 Mar 2023 10:23:45 -0600 Subject: [PATCH 0614/1174] add bdrung as contributor --- tools/.github-cla-signers | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/.github-cla-signers b/tools/.github-cla-signers index d8cca015964..eb656d7fca5 100644 --- a/tools/.github-cla-signers +++ b/tools/.github-cla-signers @@ -11,6 +11,7 @@ andrewbogott andrewlukoshko antonyc aswinrajamannar +bdrung beantaxi beezly berolinux From fe5bfa1e8c300b5ccf049246c11664f73a8fc7be Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 20 Mar 2023 10:23:56 -0600 Subject: [PATCH 0615/1174] update changelog --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index b2927b8ebae..a91ba3204a8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,7 @@ cloud-init (23.1.1-0ubuntu2) UNRELEASED; urgency=medium + * d/apport-general-hook.py: Add general apport hook to append cloud type, + image and instance size information to bug reports (LP: #1724623) * d/cloud-init.postinst: MAAS prefer yaml.safe_load over yaml.load (LP: #2009746) * d/cloud-init.preinst: Oracle to remove vestigial /etc/cloud.cloud.cfg.d/ From 5f74ac49e1b6fce4d27404388118c1fe29eb4408 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 21 Mar 2023 14:43:52 -0600 Subject: [PATCH 0616/1174] update changelog (new upstream snapshot) --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index a91ba3204a8..6c838161844 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,8 @@ cloud-init (23.1.1-0ubuntu2) UNRELEASED; urgency=medium * d/cloud-init.preinst: Oracle to remove vestigial /etc/cloud.cloud.cfg.d/ 99-disable-network-config.cfg because system config is now honored before datasource config (LP: #1956788) + * Upstream snapshot based on upstream/main at 85b2fbc2. + - Bugs fixed in this snapshot: (LP: #1956788) -- Alberto Contreras Thu, 02 Mar 2023 12:40:49 +0100 From 0943afdb1d3752985e77da2fa501c71a9bf7665a Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 21 Mar 2023 14:44:15 -0600 Subject: [PATCH 0617/1174] releasing cloud-init version 23.1.1-0ubuntu2 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 6c838161844..e29c28b2189 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (23.1.1-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (23.1.1-0ubuntu2) lunar; urgency=medium * d/apport-general-hook.py: Add general apport hook to append cloud type, image and instance size information to bug reports (LP: #1724623) @@ -10,7 +10,7 @@ cloud-init (23.1.1-0ubuntu2) UNRELEASED; urgency=medium * Upstream snapshot based on upstream/main at 85b2fbc2. - Bugs fixed in this snapshot: (LP: #1956788) - -- Alberto Contreras Thu, 02 Mar 2023 12:40:49 +0100 + -- Chad Smith Tue, 21 Mar 2023 14:43:55 -0600 cloud-init (23.1.1-0ubuntu1) lunar; urgency=medium From da43bdcd5e8fa7ca8e8d364865613dec6a89786c Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 29 Mar 2023 13:03:26 -0600 Subject: [PATCH 0618/1174] update changelog (new upstream snapshot) --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index e29c28b2189..67a5dd14ac8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (23.1.1-0ubuntu3) UNRELEASED; urgency=medium + + * Upstream snapshot based on upstream/main at d6ac22e1. + - Bugs fixed in this snapshot: (LP: #2011783, #2008888) + + -- Chad Smith Wed, 29 Mar 2023 13:03:26 -0600 + cloud-init (23.1.1-0ubuntu2) lunar; urgency=medium * d/apport-general-hook.py: Add general apport hook to append cloud type, From 08bf4b556e4b301d9bbce483e501f5857f83ea02 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 22 May 2023 16:08:55 -0500 Subject: [PATCH 0619/1174] Remove pep8 dependency It is no longer used and no longer exists in mantic. --- debian/control | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/control b/debian/control index 9e3193c1f8b..2214402616f 100644 --- a/debian/control +++ b/debian/control @@ -6,7 +6,6 @@ Maintainer: Ubuntu Developers Build-Depends: debhelper-compat (= 13), dh-python, iproute2, - pep8, po-debconf, python3, python3-configobj, From 519ab750f075b3718f7d41717095b831f5b2f4f8 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 22 May 2023 16:10:15 -0500 Subject: [PATCH 0620/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index 67a5dd14ac8..5f595fddc35 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ cloud-init (23.1.1-0ubuntu3) UNRELEASED; urgency=medium + * d/control: Remove pep8 dependency. It is no longer used. * Upstream snapshot based on upstream/main at d6ac22e1. - Bugs fixed in this snapshot: (LP: #2011783, #2008888) From 20e8ba2ada66ed6d08fae36ea31d1138f7511bdb Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 24 May 2023 19:05:50 +0200 Subject: [PATCH 0621/1174] update changelog (new upstream snapshot) --- debian/changelog | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5f595fddc35..a131cbea09d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,13 @@ -cloud-init (23.1.1-0ubuntu3) UNRELEASED; urgency=medium +cloud-init (23.2-0ubuntu1) UNRELEASED; urgency=medium * d/control: Remove pep8 dependency. It is no longer used. - * Upstream snapshot based on upstream/main at d6ac22e1. - - Bugs fixed in this snapshot: (LP: #2011783, #2008888) + * Upstream snapshot based on 23.2. + List of changes from upstream can be found at + https://raw.githubusercontent.com/canonical/cloud-init/23.2/ChangeLog + - Bugs fixed in this snapshot: (LP: #2011783, #2008888, #1854594, #2016350) + (LP: #1881925, #2013967, #2011291) - -- Chad Smith Wed, 29 Mar 2023 13:03:26 -0600 + -- Alberto Contreras Wed, 24 May 2023 19:05:50 +0200 cloud-init (23.1.1-0ubuntu2) lunar; urgency=medium From 4f127b488eb5771dfff42bb3aeac688a496bc210 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 24 May 2023 19:08:18 +0200 Subject: [PATCH 0622/1174] releasing cloud-init version 23.2-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index a131cbea09d..dfc9f088edc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (23.2-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (23.2-0ubuntu1) mantic; urgency=medium * d/control: Remove pep8 dependency. It is no longer used. * Upstream snapshot based on 23.2. @@ -7,7 +7,7 @@ cloud-init (23.2-0ubuntu1) UNRELEASED; urgency=medium - Bugs fixed in this snapshot: (LP: #2011783, #2008888, #1854594, #2016350) (LP: #1881925, #2013967, #2011291) - -- Alberto Contreras Wed, 24 May 2023 19:05:50 +0200 + -- Alberto Contreras Wed, 24 May 2023 19:06:03 +0200 cloud-init (23.1.1-0ubuntu2) lunar; urgency=medium From 5d276ef2838a31fa9cf7f9a91f00c243a0221bf5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 27 Jun 2023 22:28:43 -0600 Subject: [PATCH 0623/1174] update changelog (new upstream snapshot) --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index dfc9f088edc..78abbb5404e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +cloud-init (23.3~1ge5a617fe-0ubuntu1) UNRELEASED; urgency=medium + + * Upstream snapshot based on upstream/main at e5a617fe. + - Bugs fixed in this snapshot: (LP: #2025180, #2025180, #1999952) + (LP: #1798055) + + -- Chad Smith Tue, 27 Jun 2023 22:28:43 -0600 + cloud-init (23.2-0ubuntu1) mantic; urgency=medium * d/control: Remove pep8 dependency. It is no longer used. From d8caff0367a943de3baa229a7fba610ec3ecd221 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 28 Jun 2023 09:58:56 -0600 Subject: [PATCH 0624/1174] releasing cloud-init version 23.3~1ge5a617fe-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 78abbb5404e..418c527d458 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -cloud-init (23.3~1ge5a617fe-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (23.3~1ge5a617fe-0ubuntu1) mantic; urgency=medium * Upstream snapshot based on upstream/main at e5a617fe. - Bugs fixed in this snapshot: (LP: #2025180, #2025180, #1999952) (LP: #1798055) - -- Chad Smith Tue, 27 Jun 2023 22:28:43 -0600 + -- Chad Smith Wed, 28 Jun 2023 09:57:55 -0600 cloud-init (23.2-0ubuntu1) mantic; urgency=medium From b9a30f059cab2064f94ac1d092748960105aa873 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Tue, 11 Jul 2023 10:15:16 +0200 Subject: [PATCH 0625/1174] update changelog (new upstream snapshot) --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 418c527d458..277061d9696 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (23.3~2gcf474da7-0ubuntu1) UNRELEASED; urgency=medium + + * Upstream snapshot based on upstream/main at cf474da7. + - Bugs fixed in this snapshot: (LP: #2013403) + + -- Alberto Contreras Tue, 11 Jul 2023 10:15:16 +0200 + cloud-init (23.3~1ge5a617fe-0ubuntu1) mantic; urgency=medium * Upstream snapshot based on upstream/main at e5a617fe. From 645974e14116c05b85d63209fe8f66a332c3f2fb Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Tue, 11 Jul 2023 10:22:44 +0200 Subject: [PATCH 0626/1174] releasing cloud-init version 23.3~2gcf474da7-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 277061d9696..f8ea1d4a11a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ -cloud-init (23.3~2gcf474da7-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (23.3~2gcf474da7-0ubuntu1) mantic; urgency=medium * Upstream snapshot based on upstream/main at cf474da7. - Bugs fixed in this snapshot: (LP: #2013403) - -- Alberto Contreras Tue, 11 Jul 2023 10:15:16 +0200 + -- Alberto Contreras Tue, 11 Jul 2023 10:22:04 +0200 cloud-init (23.3~1ge5a617fe-0ubuntu1) mantic; urgency=medium From 7d16c32af16d0958033a130e99a87548fc7fb9c3 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Tue, 18 Jul 2023 17:34:00 +0200 Subject: [PATCH 0627/1174] update changelog (new upstream snapshot) --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index f8ea1d4a11a..3ffcbf82399 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (23.3~3gebd7b2b6-0ubuntu1) UNRELEASED; urgency=medium + + * Upstream snapshot based on upstream/main at ebd7b2b6. + + -- Alberto Contreras Tue, 18 Jul 2023 17:34:00 +0200 + cloud-init (23.3~2gcf474da7-0ubuntu1) mantic; urgency=medium * Upstream snapshot based on upstream/main at cf474da7. From 982947c030e25cb7d08d1ab329c9a730b2de2c6e Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Tue, 18 Jul 2023 17:37:14 +0200 Subject: [PATCH 0628/1174] releasing cloud-init version 23.3~3gebd7b2b6-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3ffcbf82399..27124b5d71a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,8 @@ -cloud-init (23.3~3gebd7b2b6-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (23.3~3gebd7b2b6-0ubuntu1) mantic; urgency=medium * Upstream snapshot based on upstream/main at ebd7b2b6. - -- Alberto Contreras Tue, 18 Jul 2023 17:34:00 +0200 + -- Alberto Contreras Tue, 18 Jul 2023 17:37:07 +0200 cloud-init (23.3~2gcf474da7-0ubuntu1) mantic; urgency=medium From 4a9342fc694ddea18b1c8233da40ba0a24c1fee2 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Wed, 26 Jul 2023 11:48:49 -0500 Subject: [PATCH 0629/1174] update changelog (new upstream snapshot) --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 27124b5d71a..ee959cbd487 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (23.3~4ga31370af-0ubuntu1) UNRELEASED; urgency=medium + + * Upstream snapshot based on upstream/main at a31370af. + - Bugs fixed in this snapshot: (LP: #1923363, #2028562, #2028784) + + -- James Falcon Wed, 26 Jul 2023 11:48:49 -0500 + cloud-init (23.3~3gebd7b2b6-0ubuntu1) mantic; urgency=medium * Upstream snapshot based on upstream/main at ebd7b2b6. From 69296f0089cd8b042e9a3ec3026be4949e337f9c Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 24 Jul 2023 11:32:11 -0500 Subject: [PATCH 0630/1174] Removed unused NetworkManager hook --- debian/cloud-init.maintscript | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/cloud-init.maintscript b/debian/cloud-init.maintscript index 93aff81c6a9..28c19b4578f 100644 --- a/debian/cloud-init.maintscript +++ b/debian/cloud-init.maintscript @@ -6,3 +6,4 @@ 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~ +rm_conffile /etc/NetworkManager/dispatcher.d/hook-network-manager 23.3~4ga31370af-0ubuntu1~ From c463a33c9adea9d08b504b45027c7cd30172180f Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 31 Jul 2023 11:29:05 -0500 Subject: [PATCH 0631/1174] update changelog --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index ee959cbd487..f0581684183 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ cloud-init (23.3~4ga31370af-0ubuntu1) UNRELEASED; urgency=medium * Upstream snapshot based on upstream/main at a31370af. - Bugs fixed in this snapshot: (LP: #1923363, #2028562, #2028784) + * d/cloud-init.maintscript: Remove the unused hook-network-manager + conffile. (LP: #2027861) -- James Falcon Wed, 26 Jul 2023 11:48:49 -0500 From fb6959e341d12c7920432b7166d61cd46bfbe0c4 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 25 Jul 2023 10:46:15 -0500 Subject: [PATCH 0632/1174] Add python3-passlib to build-depends for testing --- debian/control | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 2214402616f..a2119142eb8 100644 --- a/debian/control +++ b/debian/control @@ -22,7 +22,8 @@ Build-Depends: debhelper-compat (= 13), python3-serial, python3-setuptools, python3-yaml, - python3-responses + python3-responses, + python3-passlib Vcs-Browser: https://github.com/canonical/cloud-init/tree/ubuntu/devel Vcs-Git: https://github.com/canonical/cloud-init -b ubuntu/devel Standards-Version: 4.5.0 From ed240f49b948641874f448182363698ea03bca6f Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 31 Jul 2023 11:30:43 -0500 Subject: [PATCH 0633/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index f0581684183..c246eb47e61 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,7 @@ cloud-init (23.3~4ga31370af-0ubuntu1) UNRELEASED; urgency=medium - Bugs fixed in this snapshot: (LP: #1923363, #2028562, #2028784) * d/cloud-init.maintscript: Remove the unused hook-network-manager conffile. (LP: #2027861) + * d/control: Add python3-passlib as needed for testing -- James Falcon Wed, 26 Jul 2023 11:48:49 -0500 From 913bd53cd00d0fee9a4dd79f50c9561a221fb8f0 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Wed, 26 Jul 2023 11:51:04 -0500 Subject: [PATCH 0634/1174] releasing cloud-init version 23.3~4ga31370af-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index c246eb47e61..a8d991c05e2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (23.3~4ga31370af-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (23.3~4ga31370af-0ubuntu1) mantic; urgency=medium * Upstream snapshot based on upstream/main at a31370af. - Bugs fixed in this snapshot: (LP: #1923363, #2028562, #2028784) @@ -6,7 +6,7 @@ cloud-init (23.3~4ga31370af-0ubuntu1) UNRELEASED; urgency=medium conffile. (LP: #2027861) * d/control: Add python3-passlib as needed for testing - -- James Falcon Wed, 26 Jul 2023 11:48:49 -0500 + -- James Falcon Mon, 31 Jul 2023 11:38:42 -0500 cloud-init (23.3~3gebd7b2b6-0ubuntu1) mantic; urgency=medium From f66adafc9f1a82d81c56328472aca65d3749cbbc Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Mon, 21 Aug 2023 15:18:45 +0200 Subject: [PATCH 0635/1174] debian/cloud-init.templates: enable Akamai by default Add Akamai to the default templates to allow datasource discovery. Co-authored-by: Chad Smith --- debian/cloud-init.templates | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/cloud-init.templates b/debian/cloud-init.templates index 26f920f41de..8fe71a40a2d 100644 --- a/debian/cloud-init.templates +++ b/debian/cloud-init.templates @@ -1,8 +1,8 @@ Template: cloud-init/datasources Type: multiselect -Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, LXD, NWCS, None -Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, LXD, NWCS, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, VMware: reads data from guestinfo table or env vars, Vultr: Vultr Cloud, LXD: Reads /dev/lxd/sock representation of instance data, NWCS: NWCS, None: Failsafe datasource +Default: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, LXD, NWCS, Akamai, None +Choices-C: NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, LXD, NWCS, Akamai, 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, Hetzner: Hetzner Cloud, IBMCloud: IBM Cloud. Previously softlayer or bluemix., Oracle: Oracle Compute Infrastructure, Exoscale: Exoscale, RbxCloud: HyperOne and Rootbox platforms, UpCloud: UpCloud, VMware: reads data from guestinfo table or env vars, Vultr: Vultr Cloud, LXD: Reads /dev/lxd/sock representation of instance data, NWCS: NWCS, Akamai: Akamai and Linode platforms, 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. From 15c314ac88edfc125880d98ce9b38eb531ecd7ba Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Tue, 22 Aug 2023 13:42:22 +0200 Subject: [PATCH 0636/1174] update changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index a8d991c05e2..04ff81b68b5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +cloud-init (23.3~4ga31370af-0ubuntu2) UNRELEASED; urgency=medium + + * d/cloud-init.templates: enable Akamai by default. + Add Akamai to the default templates to allow datasource discovery. + + -- Alberto Contreras Tue, 22 Aug 2023 13:40:50 +0200 + cloud-init (23.3~4ga31370af-0ubuntu1) mantic; urgency=medium * Upstream snapshot based on upstream/main at a31370af. From 8aef35ba534ace59a10fd63f4b14a41dd9733daa Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 28 Aug 2023 12:33:13 -0600 Subject: [PATCH 0637/1174] update changelog (new upstream snapshot) --- debian/changelog | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 04ff81b68b5..d0d1421881b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,14 @@ -cloud-init (23.3~4ga31370af-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (23.3-0ubuntu1) UNRELEASED; urgency=medium * d/cloud-init.templates: enable Akamai by default. Add Akamai to the default templates to allow datasource discovery. + * Upstream snapshot based on 23.3. + List of changes from upstream can be found at + https://raw.githubusercontent.com/canonical/cloud-init/23.3/ChangeLog + - Bugs fixed in this snapshot: (LP: #2030788, #1980150, #1884127) + (LP: #1998539) - -- Alberto Contreras Tue, 22 Aug 2023 13:40:50 +0200 + -- Chad Smith Mon, 28 Aug 2023 12:33:13 -0600 cloud-init (23.3~4ga31370af-0ubuntu1) mantic; urgency=medium From 4fee625ebf23f0ef8395fdedbf485a6b11f61083 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 28 Aug 2023 13:15:57 -0600 Subject: [PATCH 0638/1174] debconf-updatepo: fix lintian warnings about d/po/templates.pot --- debian/po/templates.pot | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/debian/po/templates.pot b/debian/po/templates.pot index 3171457cb48..8b3e93f6fd2 100644 --- a/debian/po/templates.pot +++ b/debian/po/templates.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: cloud-init\n" "Report-Msgid-Bugs-To: cloud-init@packages.debian.org\n" -"POT-Creation-Date: 2021-05-12 12:22-0400\n" +"POT-Creation-Date: 2023-08-28 13:14-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -29,12 +29,6 @@ msgstr "" msgid "ConfigDrive: Reads data from Openstack Config Drive" msgstr "" -#. Type: multiselect -#. Choices -#: ../cloud-init.templates:1001 -msgid "LXD: Reads /dev/lxd/sock representation of instance data" -msgstr "" - #. Type: multiselect #. Choices #: ../cloud-init.templates:1001 @@ -173,12 +167,24 @@ msgstr "" msgid "Vultr: Vultr Cloud" msgstr "" +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "LXD: Reads /dev/lxd/sock representation of instance data" +msgstr "" + #. Type: multiselect #. Choices #: ../cloud-init.templates:1001 msgid "NWCS: NWCS" msgstr "" +#. Type: multiselect +#. Choices +#: ../cloud-init.templates:1001 +msgid "Akamai: Akamai and Linode platforms" +msgstr "" + #. Type: multiselect #. Choices #: ../cloud-init.templates:1001 From e88c914cd1965311010d84933256a93e56db03b5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 28 Aug 2023 13:16:56 -0600 Subject: [PATCH 0639/1174] update changelog --- debian/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/changelog b/debian/changelog index d0d1421881b..4d2212d8b93 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ cloud-init (23.3-0ubuntu1) UNRELEASED; urgency=medium + * d/po/templates.pot: refresh with debconf-updatepo * d/cloud-init.templates: enable Akamai by default. Add Akamai to the default templates to allow datasource discovery. * Upstream snapshot based on 23.3. From 397c1086fe373a9c18323921ba66a67bfbbd073f Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 28 Aug 2023 12:33:19 -0600 Subject: [PATCH 0640/1174] releasing cloud-init version 23.3-0ubuntu1 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4d2212d8b93..9418f8117a9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -cloud-init (23.3-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (23.3-0ubuntu1) mantic; urgency=medium * d/po/templates.pot: refresh with debconf-updatepo * d/cloud-init.templates: enable Akamai by default. @@ -9,7 +9,7 @@ cloud-init (23.3-0ubuntu1) UNRELEASED; urgency=medium - Bugs fixed in this snapshot: (LP: #2030788, #1980150, #1884127) (LP: #1998539) - -- Chad Smith Mon, 28 Aug 2023 12:33:13 -0600 + -- Chad Smith Mon, 28 Aug 2023 12:33:17 -0600 cloud-init (23.3~4ga31370af-0ubuntu1) mantic; urgency=medium From a3e52ada9c13c6b0eae2aad4f5b6093bd6597fbd Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 28 Sep 2023 13:57:30 -0600 Subject: [PATCH 0641/1174] d/contol: add python3-apt to Recommends cc_apt_configure will use apt_pkg from this deb if present to read apt configuration for Dir::Etc::sourceparts/sourcelist values. When absent, rely on the command apt-config dump. --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index a2119142eb8..052354dc406 100644 --- a/debian/control +++ b/debian/control @@ -43,7 +43,7 @@ Depends: cloud-guest-utils | cloud-utils, python3-serial, ${misc:Depends}, ${python3:Depends} -Recommends: eatmydata, gdisk, gnupg, software-properties-common +Recommends: eatmydata, gdisk, gnupg, python3-apt, software-properties-common Suggests: openssh-server, ssh-import-id Description: initialization and customization tool for cloud instances Cloud-init is the industry standard multi-distribution method for From c8a0d2669679f0d21c60f169ac9eb98f7535f89c Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Thu, 28 Sep 2023 13:59:34 -0600 Subject: [PATCH 0642/1174] update changelog --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 9418f8117a9..5af3c74edaf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cloud-init (23.3-0ubuntu2) UNRELEASED; urgency=medium + + * d/control: add python3-apt as Recommends to read APT config from apt_pkg + + -- Chad Smith Thu, 28 Sep 2023 13:57:45 -0600 + cloud-init (23.3-0ubuntu1) mantic; urgency=medium * d/po/templates.pot: refresh with debconf-updatepo From b57be07558d4bc579307af9eca4f04d19499f057 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Mon, 16 Oct 2023 10:21:32 -0500 Subject: [PATCH 0643/1174] update changelog (new upstream snapshot) --- debian/changelog | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5af3c74edaf..f8f718d2540 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,10 @@ -cloud-init (23.3-0ubuntu2) UNRELEASED; urgency=medium +cloud-init (23.4~1gc84369ac-0ubuntu1) UNRELEASED; urgency=medium * d/control: add python3-apt as Recommends to read APT config from apt_pkg + * Upstream snapshot based on main at c84369ac. + - Bugs fixed in this snapshot: (LP: #2034273, #2030729) - -- Chad Smith Thu, 28 Sep 2023 13:57:45 -0600 + -- James Falcon Mon, 16 Oct 2023 10:21:32 -0500 cloud-init (23.3-0ubuntu1) mantic; urgency=medium From f4fc711a2c60caac0ab831b0a8350092b7862df7 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Mon, 16 Oct 2023 17:48:44 -0600 Subject: [PATCH 0644/1174] Add patch do-not-block-user-login.patch --- debian/patches/do-not-block-user-login.patch | 28 ++++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 29 insertions(+) create mode 100644 debian/patches/do-not-block-user-login.patch create mode 100644 debian/patches/series diff --git a/debian/patches/do-not-block-user-login.patch b/debian/patches/do-not-block-user-login.patch new file mode 100644 index 00000000000..e68ff8eb15c --- /dev/null +++ b/debian/patches/do-not-block-user-login.patch @@ -0,0 +1,28 @@ +Description: Do not block user login +Author: Brett Holman +Origin: other +Bug: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/2039505 +Last-Update: 2023-10-16 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ + +--- a/systemd/cloud-config.service.tmpl ++++ b/systemd/cloud-config.service.tmpl +@@ -3,7 +3,6 @@ + Description=Apply the settings specified in cloud-config + After=network-online.target cloud-config.target + After=snapd.seeded.service +-Before=systemd-user-sessions.service + Wants=network-online.target cloud-config.target + {% if variant == "rhel" %} + ConditionPathExists=!/etc/cloud/cloud-init.disabled +--- a/systemd/cloud-init.service.tmpl ++++ b/systemd/cloud-init.service.tmpl +@@ -38,6 +38,7 @@ + Before=shutdown.target + Conflicts=shutdown.target + {% endif %} ++Before=systemd-user-sessions.service + {% if variant == "rhel" %} + ConditionPathExists=!/etc/cloud/cloud-init.disabled + ConditionKernelCommandLine=!cloud-init=disabled diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 00000000000..03f83056447 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +do-not-block-user-login.patch From 46ec0c24d38957c502c508bf2fa02377785f0e78 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Wed, 18 Oct 2023 12:46:38 -0600 Subject: [PATCH 0645/1174] update changelog --- debian/changelog | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f8f718d2540..3359e486633 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,12 @@ cloud-init (23.4~1gc84369ac-0ubuntu1) UNRELEASED; urgency=medium + * d/p/do-not-block-user-login.patch: + - Revert behavior, allow user login after cloud-init stage (LP: #2039505) * d/control: add python3-apt as Recommends to read APT config from apt_pkg * Upstream snapshot based on main at c84369ac. - Bugs fixed in this snapshot: (LP: #2034273, #2030729) - -- James Falcon Mon, 16 Oct 2023 10:21:32 -0500 + -- Brett Holman Thu, 18 Oct 2023 13:18:45 -0600 cloud-init (23.3-0ubuntu1) mantic; urgency=medium From f17b889d4a26eb307c5a0b84700a503c4b9a82ee Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 20 Oct 2023 15:40:18 -0500 Subject: [PATCH 0646/1174] refresh quilt --- debian/patches/do-not-block-user-login.patch | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/debian/patches/do-not-block-user-login.patch b/debian/patches/do-not-block-user-login.patch index e68ff8eb15c..177ccb22b2c 100644 --- a/debian/patches/do-not-block-user-login.patch +++ b/debian/patches/do-not-block-user-login.patch @@ -14,15 +14,5 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ After=snapd.seeded.service -Before=systemd-user-sessions.service Wants=network-online.target cloud-config.target - {% if variant == "rhel" %} - ConditionPathExists=!/etc/cloud/cloud-init.disabled ---- a/systemd/cloud-init.service.tmpl -+++ b/systemd/cloud-init.service.tmpl -@@ -38,6 +38,7 @@ - Before=shutdown.target - Conflicts=shutdown.target - {% endif %} -+Before=systemd-user-sessions.service - {% if variant == "rhel" %} ConditionPathExists=!/etc/cloud/cloud-init.disabled ConditionKernelCommandLine=!cloud-init=disabled From 7c12679ddc8c1beb561395fdb63622671a271628 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 20 Oct 2023 15:40:25 -0500 Subject: [PATCH 0647/1174] update changelog (new upstream snapshot) --- debian/changelog | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3359e486633..54c4bb1b39c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,12 +1,13 @@ -cloud-init (23.4~1gc84369ac-0ubuntu1) UNRELEASED; urgency=medium +cloud-init (23.4~1g14b76c44-0ubuntu1) UNRELEASED; urgency=medium * d/p/do-not-block-user-login.patch: - Revert behavior, allow user login after cloud-init stage (LP: #2039505) * d/control: add python3-apt as Recommends to read APT config from apt_pkg - * Upstream snapshot based on main at c84369ac. + * Upstream snapshot based on main at 14b76c44. - Bugs fixed in this snapshot: (LP: #2034273, #2030729) + (LP: #2038945, #2039453) - -- Brett Holman Thu, 18 Oct 2023 13:18:45 -0600 + -- James Falcon Fri, 20 Oct 2023 15:40:25 -0500 cloud-init (23.3-0ubuntu1) mantic; urgency=medium From e59a4ea07d46720edabdbef1d99094a15e181fd5 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 31 Oct 2023 21:42:21 -0600 Subject: [PATCH 0648/1174] fix d/p/do-not-block-user-login.patch Commit f17b889d unintentionally redacted the second part of the changeset moving Before=systemd-user-sessions.service from cloud-config.service back into cloud-init.service. Replace the dropped patchset. --- debian/patches/do-not-block-user-login.patch | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/patches/do-not-block-user-login.patch b/debian/patches/do-not-block-user-login.patch index 177ccb22b2c..09681c18c95 100644 --- a/debian/patches/do-not-block-user-login.patch +++ b/debian/patches/do-not-block-user-login.patch @@ -16,3 +16,13 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ Wants=network-online.target cloud-config.target ConditionPathExists=!/etc/cloud/cloud-init.disabled ConditionKernelCommandLine=!cloud-init=disabled +--- a/systemd/cloud-init.service.tmpl ++++ b/systemd/cloud-init.service.tmpl +@@ -38,6 +38,7 @@ Conflicts=shutdown.target + Before=shutdown.target + Conflicts=shutdown.target + {% endif %} ++Before=systemd-user-sessions.service + ConditionPathExists=!/etc/cloud/cloud-init.disabled + ConditionKernelCommandLine=!cloud-init=disabled + ConditionEnvironment=!KERNEL_CMDLINE=cloud-init=disabled From 56169430ba547be3166956abcf9ea11e556818e4 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Mon, 23 Oct 2023 17:31:26 -0400 Subject: [PATCH 0649/1174] azure: check for primary interface when performing DHCP (#4465) * azure: check for primary interface when performing DHCP For Savable PPS we rely on a connectivity check to IMDS to determine if the NIC is primary. However, in some cases, connectivity may be delayed and we incorrectly assume the NIC is not primary. Instead of relying on connectivity, check the DHCP-provided route configuration for the presence of Wireserver and/or IMDS IPs. - Return bool from _setup_ephemeral_networking() indicating primary NIC or not. - Remove _check_if_nic_is_primary() used in Savable PPS. - Add a relevant diagnostic to assist debugging failures when a secondary NIC is chosen. - Remove some tests that are redundant. Signed-off-by: Chris Patterson --- cloudinit/sources/DataSourceAzure.py | 101 ++++--- tests/unittests/sources/test_azure.py | 387 ++++++++++---------------- 2 files changed, 208 insertions(+), 280 deletions(-) diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py index e8389c72205..d4bdba35950 100644 --- a/cloudinit/sources/DataSourceAzure.py +++ b/cloudinit/sources/DataSourceAzure.py @@ -19,12 +19,13 @@ from cloudinit import net, sources, ssh_util, subp, util from cloudinit.event import EventScope, EventType +from cloudinit.net import device_driver from cloudinit.net.dhcp import ( NoDHCPLeaseError, NoDHCPLeaseInterfaceError, NoDHCPLeaseMissingDhclientError, ) -from cloudinit.net.ephemeral import EphemeralDHCPv4 +from cloudinit.net.ephemeral import EphemeralDHCPv4, EphemeralIPv4Network from cloudinit.reporting import events from cloudinit.sources.azure import errors, identity, imds, kvp from cloudinit.sources.helpers import netlink @@ -364,6 +365,24 @@ def _get_subplatform(self): subplatform_type = "seed-dir" return "%s (%s)" % (subplatform_type, self.seed) + @azure_ds_telemetry_reporter + def _check_if_primary(self, ephipv4: EphemeralIPv4Network) -> bool: + if not ephipv4.static_routes: + # Primary nics must contain routes. + return False + + routed_networks = [r[0] for r in ephipv4.static_routes] + wireserver_route = f"{self._wireserver_endpoint}/32" + primary = any( + n in routed_networks + for n in [ + "169.254.169.254/32", + wireserver_route, + ] + ) + + return primary + @azure_ds_telemetry_reporter def _setup_ephemeral_networking( self, @@ -371,7 +390,7 @@ def _setup_ephemeral_networking( iface: Optional[str] = None, retry_sleep: int = 1, timeout_minutes: int = 5, - ) -> None: + ) -> bool: """Setup ephemeral networking. Keep retrying DHCP up to specified number of minutes. This does @@ -381,13 +400,19 @@ def _setup_ephemeral_networking( :param timeout_minutes: Number of minutes to keep retrying for. :raises NoDHCPLeaseError: If unable to obtain DHCP lease. + + :returns: True if NIC is determined to be primary. """ if self._ephemeral_dhcp_ctx is not None: raise RuntimeError( "Bringing up networking when already configured." ) - LOG.debug("Requested ephemeral networking (iface=%s)", iface) + report_diagnostic_event( + "Bringing up ephemeral networking with iface=%s: %r" + % (iface, net.get_interfaces()), + logger_func=LOG.debug, + ) self._ephemeral_dhcp_ctx = EphemeralDHCPv4( self.distro, iface=iface, @@ -458,15 +483,37 @@ def _setup_ephemeral_networking( if lease is None: self._ephemeral_dhcp_ctx = None raise NoDHCPLeaseError() - else: - # Ensure iface is set. - self._ephemeral_dhcp_ctx.iface = lease["interface"] - # Update wireserver IP from DHCP options. - if "unknown-245" in lease: - self._wireserver_endpoint = get_ip_from_lease_value( - lease["unknown-245"] - ) + # Ensure iface is set. + iface = lease["interface"] + self._ephemeral_dhcp_ctx.iface = iface + + # Update wireserver IP from DHCP options. + if "unknown-245" in lease: + self._wireserver_endpoint = get_ip_from_lease_value( + lease["unknown-245"] + ) + + driver = device_driver(iface) + ephipv4 = self._ephemeral_dhcp_ctx._ephipv4 + if ephipv4 is None: + raise RuntimeError("dhcp context missing ephipv4") + + primary = self._check_if_primary(ephipv4) + report_diagnostic_event( + "Obtained DHCP lease on interface %r " + "(primary=%r driver=%r router=%r routes=%r lease=%r)" + % ( + iface, + primary, + driver, + ephipv4.router, + ephipv4.static_routes, + lease, + ), + logger_func=LOG.debug, + ) + return primary @azure_ds_telemetry_reporter def _teardown_ephemeral_networking(self) -> None: @@ -1006,32 +1053,6 @@ def _report_ready_for_pps( if create_marker: self._create_report_ready_marker() - @azure_ds_telemetry_reporter - def _check_if_nic_is_primary(self, ifname: str) -> bool: - """Check if a given interface is the primary nic or not.""" - # For now, only a VM's primary NIC can contact IMDS and WireServer. If - # DHCP fails for a NIC, we have no mechanism to determine if the NIC is - # primary or secondary. In this case, retry DHCP until successful. - self._setup_ephemeral_networking(iface=ifname, timeout_minutes=20) - - # Primary nic detection will be optimized in the future. The fact that - # primary nic is being attached first helps here. Otherwise each nic - # could add several seconds of delay. - imds_md = self.get_metadata_from_imds(report_failure=False) - if imds_md: - # Only primary NIC will get a response from IMDS. - LOG.info("%s is the primary nic", ifname) - return True - - # If we are not the primary nic, then clean the dhcp context. - LOG.warning( - "Failed to fetch IMDS metadata using nic %s. " - "Assuming this is not the primary nic.", - ifname, - ) - self._teardown_ephemeral_networking() - return False - @azure_ds_telemetry_reporter def _wait_for_hot_attached_primary_nic(self, nl_sock): """Wait until the primary nic for the vm is hot-attached.""" @@ -1073,12 +1094,16 @@ def _wait_for_hot_attached_primary_nic(self, nl_sock): # won't be in primary_nic_found = false state for long. if not primary_nic_found: LOG.info("Checking if %s is the primary nic", ifname) - primary_nic_found = self._check_if_nic_is_primary(ifname) + primary_nic_found = self._setup_ephemeral_networking( + iface=ifname, timeout_minutes=20 + ) # Exit criteria: check if we've discovered primary nic if primary_nic_found: LOG.info("Found primary nic for this VM.") break + else: + self._teardown_ephemeral_networking() except AssertionError as error: report_diagnostic_event(str(error), logger_func=LOG.error) diff --git a/tests/unittests/sources/test_azure.py b/tests/unittests/sources/test_azure.py index a3353ba73b1..51bb0c7235c 100644 --- a/tests/unittests/sources/test_azure.py +++ b/tests/unittests/sources/test_azure.py @@ -13,7 +13,7 @@ from cloudinit import distros, dmi, helpers, subp, url_helper from cloudinit.atomic_helper import b64e, json_dumps -from cloudinit.net import dhcp +from cloudinit.net import dhcp, ephemeral from cloudinit.reporting.handlers import HyperVKvpReportingHandler from cloudinit.sources import UNSET from cloudinit.sources import DataSourceAzure as dsaz @@ -84,6 +84,15 @@ def mock_chassis_asset_tag(): yield m +@pytest.fixture(autouse=True) +def mock_device_driver(): + with mock.patch( + MOCKPATH + "device_driver", + return_value="fake_driver", + ) as m: + yield m + + @pytest.fixture def mock_generate_fallback_config(): with mock.patch( @@ -121,11 +130,31 @@ def fake_read(key: str) -> str: @pytest.fixture -def mock_ephemeral_dhcp_v4(): +def mock_ephemeral_dhcp_v4(mock_ephemeral_ipv4_network): with mock.patch( MOCKPATH + "EphemeralDHCPv4", + ) as m: + m.return_value._ephipv4 = mock_ephemeral_ipv4_network.return_value + yield m + + +@pytest.fixture +def mock_ephemeral_ipv4_network(): + with mock.patch( + "cloudinit.net.ephemeral.EphemeralIPv4Network", autospec=True, ) as m: + m.return_value.distro = "ubuntu" + m.return_value.interface = "eth0" + m.return_value.ip = "10.0.0.4" + m.return_value.prefix_or_mask = "32" + m.return_value.broadcast = "255.255.255.255" + m.return_value.router = "10.0.0.1" + m.return_value.static_routes = [ + ("0.0.0.0/0", "10.0.0.1"), + ("168.63.129.16/32", "10.0.0.1"), + ("169.254.169.254/32", "10.0.0.1"), + ] yield m @@ -177,15 +206,6 @@ def mock_net_dhcp_maybe_perform_dhcp_discovery(): yield m -@pytest.fixture -def mock_net_dhcp_EphemeralIPv4Network(): - with mock.patch( - "cloudinit.net.ephemeral.EphemeralIPv4Network", - autospec=True, - ) as m: - yield m - - @pytest.fixture(autouse=True) def mock_get_interfaces(): with mock.patch( @@ -1005,7 +1025,6 @@ def setUp(self): mock.patch.object( dsaz, "EphemeralDHCPv4", - autospec=True, ) ) self.m_dhcp.return_value.lease = {} @@ -2868,25 +2887,6 @@ def test_determine_pps_with_reprovision_marker( ] -@mock.patch("os.path.isfile", return_value=False) -class TestReprovision(CiTestCase): - def setUp(self): - super(TestReprovision, self).setUp() - tmp = self.tmp_dir() - self.waagent_d = self.tmp_path("/var/lib/waagent", tmp) - self.paths = helpers.Paths({"cloud_dir": tmp}) - dsaz.BUILTIN_DS_CONFIG["data_dir"] = self.waagent_d - - @mock.patch(MOCKPATH + "DataSourceAzure._poll_imds") - def test_reprovision_calls__poll_imds(self, _poll_imds, isfile): - """_reprovision will poll IMDS.""" - isfile.return_value = False - _poll_imds.return_value = construct_ovf_env() - dsa = dsaz.DataSourceAzure({}, distro=mock.Mock(), paths=self.paths) - dsa._reprovision() - _poll_imds.assert_called_with() - - class TestPreprovisioningHotAttachNics(CiTestCase): def setUp(self): super(TestPreprovisioningHotAttachNics, self).setUp() @@ -2924,7 +2924,6 @@ def test_detect_nic_attach_reports_ready_and_waits_for_detach( @mock.patch(MOCKPATH + "DataSourceAzure._report_ready") @mock.patch(MOCKPATH + "DataSourceAzure.wait_for_link_up") @mock.patch("cloudinit.sources.helpers.netlink.wait_for_nic_attach_event") - @mock.patch(MOCKPATH + "imds.fetch_metadata_with_api_fallback") @mock.patch(MOCKPATH + "EphemeralDHCPv4", autospec=True) @mock.patch(MOCKPATH + "DataSourceAzure._wait_for_nic_detach") @mock.patch("os.path.isfile") @@ -2933,7 +2932,6 @@ def test_wait_for_nic_attach_multinic_attach( m_isfile, m_detach, m_dhcpv4, - m_imds, m_attach, m_link_up, m_report_ready, @@ -2953,22 +2951,27 @@ def test_wait_for_nic_attach_multinic_attach( } # Simulate two NICs by adding the same one twice. - md = { - "interface": [ - IMDS_NETWORK_METADATA["interface"][0], - IMDS_NETWORK_METADATA["interface"][0], - ] - } - m_isfile.return_value = True m_attach.side_effect = [ "eth0", "eth1", ] - dhcp_ctx = mock.MagicMock(lease=lease) - dhcp_ctx.obtain_lease.return_value = lease - m_dhcpv4.return_value = dhcp_ctx - m_imds.side_effect = [md] + dhcp_ctx_primary = mock.MagicMock(lease=lease) + dhcp_ctx_primary.obtain_lease.return_value = lease + dhcp_ctx_primary._ephipv4 = ephemeral.EphemeralIPv4Network( + distro="ubuntu", + interface="eth0", + ip="10.0.0.4", + prefix_or_mask="32", + broadcast="255.255.255.255", + router="10.0.0.1", + static_routes=[ + ("0.0.0.0/0", "10.0.0.1"), + ("168.63.129.16/32", "10.0.0.1"), + ("169.254.169.254/32", "10.0.0.1"), + ], + ) + m_dhcpv4.side_effect = [dhcp_ctx_primary] dsa._wait_for_pps_savable_reuse() @@ -2977,100 +2980,35 @@ def test_wait_for_nic_attach_multinic_attach( self.assertEqual(1, m_attach.call_count) # DHCP and network metadata calls will only happen on the primary NIC. self.assertEqual(1, m_dhcpv4.call_count) - self.assertEqual(1, m_imds.call_count) # no call to bring link up on secondary nic self.assertEqual(1, m_link_up.call_count) # reset mock to test again with primary nic being eth1 + dhcp_ctx_primary.interface = "eth1" + dhcp_ctx_secondary = mock.MagicMock(lease=lease) + dhcp_ctx_secondary.obtain_lease.return_value = lease + dhcp_ctx_secondary._ephipv4 = ephemeral.EphemeralIPv4Network( + distro="ubuntu", + interface="eth0", + ip="10.0.0.4", + prefix_or_mask="32", + broadcast="255.255.255.255", + router="10.0.0.1", + static_routes=None, + ) m_detach.reset_mock() m_attach.reset_mock() m_dhcpv4.reset_mock() + m_dhcpv4.side_effect = [dhcp_ctx_secondary, dhcp_ctx_primary] m_link_up.reset_mock() m_attach.side_effect = ["eth0", "eth1"] - m_imds.reset_mock() - m_imds.side_effect = [{}, md] dsa = dsaz.DataSourceAzure({}, distro=distro, paths=self.paths) dsa._wait_for_pps_savable_reuse() self.assertEqual(1, m_detach.call_count) self.assertEqual(2, m_attach.call_count) self.assertEqual(2, m_dhcpv4.call_count) - self.assertEqual(2, m_imds.call_count) self.assertEqual(2, m_link_up.call_count) - @mock.patch("cloudinit.url_helper.time.sleep", autospec=True) - @mock.patch("requests.Session.request", autospec=True) - @mock.patch(MOCKPATH + "EphemeralDHCPv4", autospec=True) - @mock.patch(MOCKPATH + "time", autospec=True) - @mock.patch("cloudinit.sources.azure.imds.time", autospec=True) - def test_check_if_nic_is_primary_retries_on_failures( - self, m_imds_time, m_time, m_dhcpv4, m_request, m_sleep - ): - """Retry polling for network metadata on all failures except timeout - and network unreachable errors""" - distro = mock.MagicMock() - distro.get_tmp_exec_path = self.tmp_dir - dsa = dsaz.DataSourceAzure({}, distro=distro, paths=self.paths) - lease = { - "interface": "eth9", - "fixed-address": "192.168.2.9", - "routers": "192.168.2.1", - "subnet-mask": "255.255.255.0", - "unknown-245": "624c3620", - } - - m_req = mock.Mock(content=json.dumps({"not": "empty"})) - errors = ( - [requests.Timeout("Fake connection timeout")] * 5 - + [requests.ConnectionError("Fake Network Unreachable")] * 5 - + [fake_http_error_for_code(410)] * 5 - + [m_req] - ) - m_request.side_effect = errors - m_dhcpv4.return_value.lease = lease - fake_time = 0.0 - fake_time_increment = 5.0 - - def fake_timer(): - nonlocal fake_time, fake_time_increment - fake_time += fake_time_increment - return fake_time - - m_time.side_effect = fake_timer - m_imds_time.side_effect = fake_timer - - is_primary = dsa._check_if_nic_is_primary("eth0") - self.assertEqual(True, is_primary) - assert len(m_request.mock_calls) == len(errors) - - # Re-run tests to verify max http failures. - attempts = 3 - fake_time = 0.0 - fake_time_increment = 300 / attempts - - m_time.side_effect = fake_timer - m_imds_time.side_effect = fake_timer - m_request.reset_mock() - errors = 100 * [fake_http_error_for_code(410)] - m_request.side_effect = errors - - dsa = dsaz.DataSourceAzure({}, distro=distro, paths=self.paths) - - is_primary = dsa._check_if_nic_is_primary("eth1") - self.assertEqual(False, is_primary) - assert len(m_request.mock_calls) == attempts - - # Re-run tests to verify max connection error retries. - m_request.reset_mock() - m_request.side_effect = [ - requests.ConnectionError("Fake Network Unreachable") - ] * 15 - - dsa = dsaz.DataSourceAzure({}, distro=distro, paths=self.paths) - - is_primary = dsa._check_if_nic_is_primary("eth1") - self.assertEqual(False, is_primary) - assert len(m_request.mock_calls) == attempts - @mock.patch("cloudinit.distros.networking.LinuxNetworking.try_set_link_up") def test_wait_for_link_up_returns_if_already_up(self, m_is_link_up): """Waiting for link to be up should return immediately if the link is @@ -3120,8 +3058,7 @@ def test_wait_for_all_nics_ready_raises_if_socket_fails(self, m_socket): @mock.patch("cloudinit.net.find_fallback_nic", return_value="eth9") -@mock.patch("cloudinit.net.ephemeral.EphemeralIPv4Network") -@mock.patch("cloudinit.net.ephemeral.maybe_perform_dhcp_discovery") +@mock.patch(MOCKPATH + "EphemeralDHCPv4") @mock.patch( "cloudinit.sources.helpers.netlink.wait_for_media_disconnect_connect" ) @@ -3140,7 +3077,6 @@ def test_poll_imds_re_dhcp_on_timeout( m_fetch_reprovisiondata, m_media_switch, m_dhcp, - m_net, m_fallback, ): """The poll_imds will retry DHCP on IMDS timeout.""" @@ -3155,7 +3091,7 @@ def test_poll_imds_re_dhcp_on_timeout( "subnet-mask": "255.255.255.0", "unknown-245": "624c3620", } - m_dhcp.return_value = [lease] + m_dhcp.obtain_lease.return_value = [lease] m_media_switch.return_value = None dhcp_ctx = mock.MagicMock(lease=lease) dhcp_ctx.obtain_lease.return_value = lease @@ -3175,7 +3111,6 @@ def test_poll_imds_skips_dhcp_if_ctx_present( m_fetch_reprovisiondata, m_media_switch, m_dhcp, - m_net, m_fallback, ): """The poll_imds function should reuse the dhcp ctx if it is already @@ -3191,15 +3126,12 @@ def test_poll_imds_skips_dhcp_if_ctx_present( self.assertEqual(0, m_media_switch.call_count) @mock.patch("os.path.isfile") - @mock.patch(MOCKPATH + "EphemeralDHCPv4", autospec=True) def test_poll_imds_does_dhcp_on_retries_if_ctx_present( self, - m_ephemeral_dhcpv4, m_isfile, m_fetch_reprovisiondata, m_media_switch, m_dhcp, - m_net, m_fallback, ): """The poll_imds function should reuse the dhcp ctx if it is already @@ -3225,94 +3157,11 @@ def test_poll_imds_does_dhcp_on_retries_if_ctx_present( dsa._ephemeral_dhcp_ctx = m_dhcp_ctx dsa._poll_imds() self.assertEqual(1, m_dhcp_ctx.clean_network.call_count) - self.assertEqual(1, m_ephemeral_dhcpv4.call_count) + self.assertEqual(1, m_dhcp.call_count) self.assertEqual(0, m_media_switch.call_count) self.assertEqual(2, m_fetch_reprovisiondata.call_count) -@mock.patch(MOCKPATH + "DataSourceAzure._report_ready", mock.MagicMock()) -@mock.patch(MOCKPATH + "subp.subp", mock.MagicMock()) -@mock.patch(MOCKPATH + "util.write_file", mock.MagicMock()) -@mock.patch( - "cloudinit.sources.helpers.netlink.wait_for_media_disconnect_connect" -) -@mock.patch("cloudinit.net.ephemeral.EphemeralIPv4Network", autospec=True) -@mock.patch("cloudinit.net.ephemeral.maybe_perform_dhcp_discovery") -@mock.patch( - MOCKPATH + "imds.fetch_reprovision_data", side_effect=[b"ovf data"] -) -class TestAzureDataSourcePreprovisioning(CiTestCase): - def setUp(self): - super(TestAzureDataSourcePreprovisioning, self).setUp() - tmp = self.tmp_dir() - self.waagent_d = self.tmp_path("/var/lib/waagent", tmp) - self.paths = helpers.Paths({"cloud_dir": tmp}) - dsaz.BUILTIN_DS_CONFIG["data_dir"] = self.waagent_d - - def test_poll_imds_returns_ovf_env( - self, m_fetch_reprovisiondata, m_dhcp, m_net, m_media_switch - ): - """The _poll_imds method should return the ovf_env.xml.""" - m_media_switch.return_value = None - m_dhcp.return_value = [ - { - "interface": "eth9", - "fixed-address": "192.168.2.9", - "routers": "192.168.2.1", - "subnet-mask": "255.255.255.0", - } - ] - dsa = dsaz.DataSourceAzure({}, distro=mock.Mock(), paths=self.paths) - dsa._ephemeral_dhcp_ctx = None - self.assertTrue(len(dsa._poll_imds()) > 0) - self.assertEqual(m_dhcp.call_count, 1) - m_net.assert_any_call( - dsa.distro, - broadcast="192.168.2.255", - interface="eth9", - ip="192.168.2.9", - prefix_or_mask="255.255.255.0", - router="192.168.2.1", - static_routes=None, - ) - self.assertEqual(m_net.call_count, 1) - - def test__reprovision_calls__poll_imds( - self, m_fetch_reprovisiondata, m_dhcp, m_net, m_media_switch - ): - """The _reprovision method should call poll IMDS.""" - m_media_switch.return_value = None - m_dhcp.return_value = [ - { - "interface": "eth9", - "fixed-address": "192.168.2.9", - "routers": "192.168.2.1", - "subnet-mask": "255.255.255.0", - "unknown-245": "624c3620", - } - ] - hostname = "myhost" - username = "myuser" - content = construct_ovf_env(username=username, hostname=hostname) - m_fetch_reprovisiondata.side_effect = [content] - dsa = dsaz.DataSourceAzure({}, distro=mock.Mock(), paths=self.paths) - dsa._ephemeral_dhcp_ctx = None - md, _ud, cfg, _d = dsa._reprovision() - self.assertEqual(md["local-hostname"], hostname) - self.assertEqual(cfg["system_info"]["default_user"]["name"], username) - self.assertEqual(m_dhcp.call_count, 1) - m_net.assert_any_call( - dsa.distro, - broadcast="192.168.2.255", - interface="eth9", - ip="192.168.2.9", - prefix_or_mask="255.255.255.0", - router="192.168.2.1", - static_routes=None, - ) - self.assertEqual(m_net.call_count, 1) - - class TestRemoveUbuntuNetworkConfigScripts(CiTestCase): with_logs = True @@ -3569,11 +3418,31 @@ def test_retry_process_error( ] assert mock_sleep.mock_calls == [mock.call(1)] assert mock_report_diagnostic_event.mock_calls == [ + mock.call( + "Bringing up ephemeral networking with iface=None: " + "[('dummy0', '9e:65:d6:19:19:01', None, None), " + "('enP3', '00:11:22:33:44:02', 'unknown_accel', '0x3'), " + "('eth0', '00:11:22:33:44:00', 'hv_netvsc', '0x3'), " + "('eth2', '00:11:22:33:44:01', 'unknown', '0x3'), " + "('eth3', '00:11:22:33:44:02', " + "'unknown_with_unknown_vf', '0x3'), " + "('lo', '00:00:00:00:00:00', None, None)]", + logger_func=dsaz.LOG.debug, + ), mock.call( "Command failed: cmd=['failed', 'cmd'] " "stderr='test_stderr' stdout='test_stdout' exit_code=4", logger_func=dsaz.LOG.error, - ) + ), + mock.call( + "Obtained DHCP lease on interface 'fakeEth0' " + "(primary=True driver='fake_driver' router='10.0.0.1' " + "routes=[('0.0.0.0/0', '10.0.0.1'), " + "('168.63.129.16/32', '10.0.0.1'), " + "('169.254.169.254/32', '10.0.0.1')] " + "lease={'interface': 'fakeEth0'})", + logger_func=dsaz.LOG.debug, + ), ] @pytest.mark.parametrize( @@ -3670,6 +3539,64 @@ def test_retry_times_out( assert error_reasons == [error_reason] * 3 +class TestCheckIfPrimary: + @pytest.mark.parametrize( + "static_routes", + [ + [("168.63.129.16/32", "10.0.0.1")], + [("169.254.169.254/32", "10.0.0.1")], + ], + ) + def test_primary(self, azure_ds, static_routes): + ephipv4 = ephemeral.EphemeralIPv4Network( + distro="ubuntu", + interface="eth0", + ip="10.0.0.4", + prefix_or_mask="32", + broadcast="255.255.255.255", + router="10.0.0.1", + static_routes=static_routes, + ) + + assert azure_ds._check_if_primary(ephipv4) is True + + def test_primary_via_wireserver_specified_in_option_245(self, azure_ds): + ephipv4 = ephemeral.EphemeralIPv4Network( + distro="ubuntu", + interface="eth0", + ip="10.0.0.4", + prefix_or_mask="32", + broadcast="255.255.255.255", + router="10.0.0.1", + static_routes=[("1.2.3.4/32", "10.0.0.1")], + ) + azure_ds._wireserver_endpoint = "1.2.3.4" + + assert azure_ds._check_if_primary(ephipv4) is True + + @pytest.mark.parametrize( + "static_routes", + [ + [], + [("0.0.0.0/0", "10.0.0.1")], + [("10.10.10.10/16", "10.0.0.1")], + ], + ) + def test_secondary(self, azure_ds, static_routes): + ephipv4 = ephemeral.EphemeralIPv4Network( + distro="ubuntu", + interface="eth0", + ip="10.0.0.4", + prefix_or_mask="32", + broadcast="255.255.255.255", + router="10.0.0.1", + static_routes=static_routes, + ) + azure_ds._wireserver_endpoint = "1.2.3.4" + + assert azure_ds._check_if_primary(ephipv4) is False + + class TestInstanceId: def test_metadata(self, azure_ds, mock_dmi_read_dmi_data): azure_ds.metadata = {"instance-id": "test-id"} @@ -3692,7 +3619,7 @@ def provisioning_setup( mock_azure_get_metadata_from_fabric, mock_azure_report_failure_to_fabric, mock_net_dhcp_maybe_perform_dhcp_discovery, - mock_net_dhcp_EphemeralIPv4Network, + mock_ephemeral_ipv4_network, mock_dmi_read_dmi_data, mock_get_interfaces, mock_get_interface_mac, @@ -3720,9 +3647,7 @@ def provisioning_setup( self.mock_net_dhcp_maybe_perform_dhcp_discovery = ( mock_net_dhcp_maybe_perform_dhcp_discovery ) - self.mock_net_dhcp_EphemeralIPv4Network = ( - mock_net_dhcp_EphemeralIPv4Network - ) + self.mock_ephemeral_ipv4_network = mock_ephemeral_ipv4_network self.mock_dmi_read_dmi_data = mock_dmi_read_dmi_data self.mock_get_interfaces = mock_get_interfaces self.mock_get_interface_mac = mock_get_interface_mac @@ -3952,7 +3877,6 @@ def test_savable_pps(self): "ethAttached1" ) self.mock_readurl.side_effect = [ - mock.MagicMock(contents=json.dumps(self.imds_md).encode()), mock.MagicMock(contents=json.dumps(self.imds_md).encode()), mock.MagicMock(contents=construct_ovf_env().encode()), mock.MagicMock(contents=json.dumps(self.imds_md).encode()), @@ -3962,15 +3886,6 @@ def test_savable_pps(self): self.azure_ds._check_and_get_data() assert self.mock_readurl.mock_calls == [ - mock.call( - "http://169.254.169.254/metadata/instance?" - "api-version=2021-08-01&extended=true", - exception_cb=mock.ANY, - headers={"Metadata": "true"}, - infinite=True, - log_req_resp=True, - timeout=30, - ), mock.call( "http://169.254.169.254/metadata/instance?" "api-version=2021-08-01&extended=true", @@ -4097,9 +4012,6 @@ def test_savable_pps_early_unplug(self, fabric_side_effect): ) self.mock_readurl.side_effect = [ mock.MagicMock(contents=json.dumps(self.imds_md).encode()), - mock.MagicMock( - contents=json.dumps(self.imds_md["network"]).encode() - ), mock.MagicMock(contents=construct_ovf_env().encode()), mock.MagicMock(contents=json.dumps(self.imds_md).encode()), ] @@ -4108,7 +4020,7 @@ def test_savable_pps_early_unplug(self, fabric_side_effect): ) # Fake DHCP teardown failure. - ipv4_net = self.mock_net_dhcp_EphemeralIPv4Network + ipv4_net = self.mock_ephemeral_ipv4_network ipv4_net.return_value.__exit__.side_effect = [ subp.ProcessExecutionError( cmd=["failed", "cmd"], @@ -4122,15 +4034,6 @@ def test_savable_pps_early_unplug(self, fabric_side_effect): self.azure_ds._check_and_get_data() assert self.mock_readurl.mock_calls == [ - mock.call( - "http://169.254.169.254/metadata/instance?" - "api-version=2021-08-01&extended=true", - exception_cb=mock.ANY, - headers={"Metadata": "true"}, - infinite=True, - log_req_resp=True, - timeout=30, - ), mock.call( "http://169.254.169.254/metadata/instance?" "api-version=2021-08-01&extended=true", From 1ea2c5ac71bf76366aaa9120e865247ddfb5582c Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 24 Oct 2023 14:27:52 -0500 Subject: [PATCH 0650/1174] Update version number and merge ChangeLog from 23.3.3 into main (#4553) --- ChangeLog | 7 +++++++ cloudinit/version.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a9b8eb8ca31..4856a6dc1c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +23.3.3 + - Fix pip-managed ansible on pip < 23.0.1 (#4403) + +23.3.2 + - Revert "ds-identify/CloudStack: $DS_MAYBE if vm running on vmware/xen (#4281)" + (#4511) (LP: #2039453) + 23.3.1 - apt: kill dirmngr/gpg-agent without gpgconf dependency (LP: #2034273) - integration tests: Fix cgroup parsing (#4402) diff --git a/cloudinit/version.py b/cloudinit/version.py index e61c6586dbb..a7a1d552864 100644 --- a/cloudinit/version.py +++ b/cloudinit/version.py @@ -4,7 +4,7 @@ # # This file is part of cloud-init. See LICENSE file for license information. -__VERSION__ = "23.3.1" +__VERSION__ = "23.3.3" _PACKAGED_VERSION = "@@PACKAGED_VERSION@@" FEATURES = [ From 741cc6e5b84139c0b80897a01c965d8c33ef42b8 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 2 Oct 2023 10:32:55 -0600 Subject: [PATCH 0651/1174] schema: add network-config support to schema subcommand (#4482) By default, cloud-init schema command will look for processed network config at /run/cloud-init/network-config.json and report any schema validation errors on the commandline. To suport this feature: - return False when validate_cloudconfig_file does not validate a file - skip valdation on either empty network-config schema or network version 2 - add a new --schema-type param to schema subcommand to allow for providing source network-config YAML files and validate as network-config instead of cloud-config - Add schema_type parameter to validate_cloudconfig_file allowing for plumbing 'network-config' type to schema validation call-sites - distill messaging to report config type and cfg files. Avoid classifying network-config as 'cloud-config', avoid lowercase yaml - When --config-file does not provide known header, label this cfg_type as UNKNOWN_CONFIG_HEADER for messaging Additionally, drop unnecessary jsonschema.ValidationError imports as that is already done at the module level. --- cloudinit/config/schema.py | 135 +++++++++++---- doc/rtd/reference/cli.rst | 3 + tests/unittests/config/test_schema.py | 238 +++++++++++++++++++++----- 3 files changed, 306 insertions(+), 70 deletions(-) diff --git a/cloudinit/config/schema.py b/cloudinit/config/schema.py index b70685ae3a1..575cfb13d3e 100644 --- a/cloudinit/config/schema.py +++ b/cloudinit/config/schema.py @@ -299,7 +299,6 @@ def _anyOf( format anyOf_type_XXX, raise those schema errors instead of calling best_match. """ - from jsonschema import ValidationError from jsonschema.exceptions import best_match all_errors = [] @@ -345,7 +344,6 @@ def _oneOf( It treats occurrences of `error_type` as non-errors, but yield them for external processing. Useful to process schema annotations, as `deprecated`. """ - from jsonschema import ValidationError from jsonschema.exceptions import best_match subschemas = enumerate(oneOf) @@ -569,12 +567,12 @@ def validate_cloudconfig_schema( if log_details: details = _format_schema_problems( errors, - prefix="Invalid cloud-config provided:\n", + prefix=f"Invalid {schema_type} provided:\n", separator="\n", ) else: details = ( - "Invalid cloud-config provided: " + f"Invalid {schema_type} provided: " "Please run 'sudo cloud-init schema --system' to " "see the schema errors." ) @@ -816,28 +814,47 @@ def _get_config_type_and_rendered_userdata( def validate_cloudconfig_file( config_path: str, schema: dict, + schema_type: str = "cloud-config", annotate: bool = False, instance_data_path: str = None, -): +) -> bool: """Validate cloudconfig file adheres to a specific jsonschema. @param config_path: Path to the yaml cloud-config file to parse, or None to default to system userdata from Paths object. @param schema: Dict describing a valid jsonschema to validate against. + @param schema_type: One of network-config or cloud-config. @param annotate: Boolean set True to print original config file with error annotations on the offending lines. @param instance_data_path: Path to instance_data JSON, used for text/jinja rendering. - @raises SchemaValidationError containing any of schema_errors encountered. - @raises RuntimeError when config_path does not exist. + :return: True when validation was performed successfully + :raises SchemaValidationError containing any of schema_errors encountered. + :raises RuntimeError when config_path does not exist. """ - decoded_userdata = _get_config_type_and_rendered_userdata( - config_path, load_file(config_path, decode=True), instance_data_path - ) - if decoded_userdata.userdata_type != "text/cloud-config": - return # Neither nested #cloud-config in jinja2 nor raw #cloud-config - content = decoded_userdata.content + decoded_content = load_file(config_path, decode=True) + if not decoded_content: + print( + "Empty '%s' found at %s. Nothing to validate." + % (schema_type, config_path) + ) + return False + + if schema_type in ("network-config",): + decoded_config = UserDataTypeAndDecodedContent( + schema_type, decoded_content + ) + else: + decoded_config = _get_config_type_and_rendered_userdata( + config_path, decoded_content, instance_data_path + ) + if decoded_config.userdata_type not in ( + "network-config", + "text/cloud-config", + ): + return False + content = decoded_config.content errors = process_merged_cloud_config_part_problems(content) try: if annotate: @@ -858,7 +875,7 @@ def validate_cloudconfig_file( errors.append( SchemaProblem( "format-l{line}.c{col}".format(line=line, col=column), - "File {0} is not valid yaml. {1}".format(config_path, str(e)), + "File {0} is not valid YAML. {1}".format(config_path, str(e)), ), ) schema_error = SchemaValidationError(errors) @@ -872,7 +889,22 @@ def validate_cloudconfig_file( if not isinstance(cloudconfig, dict): # Return a meaningful message on empty cloud-config if not annotate: - raise RuntimeError("Cloud-config is not a YAML dict.") + raise RuntimeError( + f"{schema_type} {config_path} is not a YAML dict." + ) + if schema_type == "network-config": + # Pop optional top-level "network" key when present + netcfg = cloudconfig.get("network", cloudconfig) + if not netcfg: + print("Skipping network-config schema validation on empty config.") + return False + elif netcfg.get("version") != 1: + print( + "Skipping network-config schema validation." + " No network schema for version:" + f" {netcfg.get('version')}" + ) + return False try: validate_cloudconfig_schema( cloudconfig, schema, strict=True, log_deprecations=False @@ -899,6 +931,7 @@ def validate_cloudconfig_file( print(message) if errors: raise SchemaValidationError(schema_errors=errors) from e + return True def _sort_property_order(value): @@ -1315,12 +1348,28 @@ def get_parser(parser=None): if not parser: parser = argparse.ArgumentParser( prog="cloudconfig-schema", - description="Validate cloud-config files or document schema", + description=( + "Schema validation and documentation of instance-data" + " configuration provided to cloud-init. This includes:" + " user-data, vendor-data and network-config" + ), ) parser.add_argument( "-c", "--config-file", - help="Path of the cloud-config yaml file to validate", + help=( + "Path of the cloud-config or network-config YAML file to validate" + ), + ) + parser.add_argument( + "-t", + "--schema-type", + type=str, + choices=["cloud-config", "network-config"], + help=( + "When providing --config-file, the schema type to validate config" + " against. Default: cloud-config" + ), ) parser.add_argument( "-i", @@ -1336,7 +1385,10 @@ def get_parser(parser=None): "--system", action="store_true", default=False, - help="Validate the system cloud-config userdata", + help=( + "Validate the system instance-data provided as vendor-data" + " user-data and network-config" + ), ) parser.add_argument( "-d", @@ -1351,7 +1403,7 @@ def get_parser(parser=None): "--annotate", action="store_true", default=False, - help="Annotate existing cloud-config file with errors", + help="Annotate existing instance-data files any discovered errors", ) return parser @@ -1364,6 +1416,11 @@ def handle_schema_args(name, args): "Expected one of --config-file, --system or --docs arguments", sys_exit=True, ) + if any([args.system, args.docs]) and args.schema_type: + print( + "WARNING: The --schema-type parameter is inapplicable when either" + " --system or --docs present" + ) if args.annotate and args.docs: error( "Invalid flag combination. Cannot use --annotate with --docs", @@ -1388,7 +1445,7 @@ def handle_schema_args(name, args): else: instance_data_path = paths.get_runpath("instance_data_sensitive") if args.config_file: - config_files = (("user-data", args.config_file),) + config_files = ((args.schema_type, args.config_file),) else: if os.getuid() != 0: error( @@ -1404,13 +1461,14 @@ def handle_schema_args(name, args): ) return # Helps typing config_files = (("user-data", userdata_file),) - vendor_config_files = ( + supplemental_config_files = ( ("vendor-data", paths.get_ipath("vendor_cloud_config")), ("vendor2-data", paths.get_ipath("vendor2_cloud_config")), + ("network-config", paths.get_ipath("network_config")), ) - for cfg_type, vendor_file in vendor_config_files: - if vendor_file and os.path.exists(vendor_file): - config_files += ((cfg_type, vendor_file),) + for cfg_type, cfg_file in supplemental_config_files: + if cfg_file and os.path.exists(cfg_file): + config_files += ((cfg_type, cfg_file),) if not os.path.exists(config_files[0][1]): error( f"Config file {config_files[0][1]} does not exist", @@ -1429,31 +1487,46 @@ def handle_schema_args(name, args): error_types = [] for idx, (cfg_type, cfg_file) in enumerate(config_files, 1): + performed_schema_validation = False if multi_config_output: print(f"\n{idx}. {cfg_type} at {cfg_file}:") + if cfg_type == "network-config": + cfg_schema = get_schema(cfg_type) + schema_type = cfg_type + else: + cfg_schema = full_schema + cfg_type = "user-data" if cfg_type == "cloud-config" else cfg_type + schema_type = "cloud-config" try: - validate_cloudconfig_file( - cfg_file, full_schema, args.annotate, instance_data_path + performed_schema_validation = validate_cloudconfig_file( + cfg_file, + cfg_schema, + schema_type, + args.annotate, + instance_data_path, ) except SchemaValidationError as e: + if not cfg_type: + cfg_type = "UNKNOWN_CONFIG_HEADER" if not args.annotate: - print(f"{nested_output_prefix}Invalid cloud-config {cfg_file}") + print(f"{nested_output_prefix}Invalid {cfg_type} {cfg_file}") error( str(e), fmt=nested_output_prefix + "Error: {}\n", ) error_types.append(cfg_type) except RuntimeError as e: - print(f"{nested_output_prefix}Invalid cloud-config {cfg_type}") + print(f"{nested_output_prefix}Invalid {cfg_type}") error(str(e), fmt=nested_output_prefix + "Error: {}\n") error_types.append(cfg_type) else: - cfg = cfg_file if args.config_file else cfg_type - print(f"{nested_output_prefix}Valid cloud-config: {cfg}") + if performed_schema_validation: + cfg = cfg_file if args.config_file else cfg_type + print(f"{nested_output_prefix}Valid schema {cfg}") if error_types: error( ", ".join(error_type for error_type in error_types), - fmt="Error: Invalid cloud-config schema: {}\n", + fmt="Error: Invalid schema: {}\n", sys_exit=True, ) diff --git a/doc/rtd/reference/cli.rst b/doc/rtd/reference/cli.rst index 490173439aa..04e05c55e40 100644 --- a/doc/rtd/reference/cli.rst +++ b/doc/rtd/reference/cli.rst @@ -307,6 +307,9 @@ Validate cloud-config files using jsonschema. * :command:`-h, --help`: Show this help message and exit. * :command:`-c CONFIG_FILE, --config-file CONFIG_FILE`: Path of the cloud-config YAML file to validate. +* :command:`-t SCHEMA_TYPE, --schema-type SCHEMA_TYPE`: The schema type to + validate --config-file against. One of: cloud-config, network-config. + Default: cloud-config. * :command:`--system`: Validate the system cloud-config user data. * :command:`-d DOCS [cc_module ...], --docs DOCS [cc_module ...]`: Print schema module diff --git a/tests/unittests/config/test_schema.py b/tests/unittests/config/test_schema.py index 6a804c1de63..1cf1b9477ff 100644 --- a/tests/unittests/config/test_schema.py +++ b/tests/unittests/config/test_schema.py @@ -19,7 +19,6 @@ import pytest -from cloudinit import log from cloudinit.config.schema import ( VERSIONED_USERDATA_SCHEMA_FILE, MetaSchema, @@ -644,7 +643,6 @@ def test_validateconfig_strict_metaschema_do_not_raise_exception( def test_validateconfig_logs_deprecations( self, schema, config, expected_msg, log_deprecations, caplog ): - log.setup_logging() validate_cloudconfig_schema( config, schema, @@ -740,7 +738,7 @@ def test_validateconfig_file_error_on_non_yaml_scanner_error( config_file = tmpdir.join("my.yaml") config_file.write("#cloud-config\nasdf:\nasdf") error_msg = ( - f".*errors: format-l3.c1: File {config_file} is not valid yaml.*" + f".*errors: format-l3.c1: File {config_file} is not valid YAML.*" ) with pytest.raises(SchemaValidationError, match=error_msg): validate_cloudconfig_file(config_file.strpath, {}, annotate) @@ -753,7 +751,7 @@ def test_validateconfig_file_error_on_non_yaml_parser_error( config_file = tmpdir.join("my.yaml") config_file.write("#cloud-config\n{}}") error_msg = ( - f"errors: format-l2.c3: File {config_file} is not valid yaml." + f"errors: format-l2.c3: File {config_file} is not valid YAML." ) with pytest.raises(SchemaValidationError, match=error_msg): validate_cloudconfig_file(config_file.strpath, {}, annotate) @@ -808,14 +806,14 @@ def test_validateconfig_file_no_cloud_cfg( cloud_config_file = paths.get_ipath_cur("cloud_config") write_file(cloud_config_file, b"") - error_msg = ( - "Cloud config schema errors: format-l1.c1: " - f'Unrecognized user-data header in {cloud_config_file}: "".\n' - "Expected first line to be one of: #!, ## template: jinja," - " #cloud-boothook, #cloud-config," + validate_cloudconfig_file( + config_path=cloud_config_file, schema=schema, annotate=annotate + ) + out, _err = capsys.readouterr() + assert ( + f"Empty 'cloud-config' found at {cloud_config_file}." + " Nothing to validate" in out ) - with pytest.raises(SchemaValidationError, match=error_msg): - validate_cloudconfig_file(cloud_config_file, schema, annotate) class TestSchemaDocMarkdown: @@ -1648,6 +1646,31 @@ def test_main_exclusive_args(self, _read_cfg_paths, params, capsys): ) assert expected == err + @pytest.mark.parametrize( + "params,expectation", + [ + pytest.param(["--docs all"], does_not_raise()), + pytest.param(["--system"], pytest.raises(SystemExit)), + ], + ) + @mock.patch(M_PATH + "os.getuid", return_value=100) + def test_main_ignores_schema_type( + self, _read_cfg_paths, _os_getuid, params, expectation, capsys + ): + """Main ignores --schema-type param when --system or --docs present.""" + params = list(itertools.chain(*[a.split() for a in params])) + with mock.patch( + "sys.argv", ["mycmd", "--schema-type", "network-config"] + params + ): + with expectation: + main() + out, _err = capsys.readouterr() + expected = ( + "WARNING: The --schema-type parameter is inapplicable when" + " either --system or --docs present" + ) + assert expected in out + def test_main_missing_args(self, _read_cfg_paths, capsys): """Main exits non-zero and reports an error on missing parameters.""" with mock.patch("sys.argv", ["mycmd"]): @@ -1702,14 +1725,55 @@ def test_main_validates_config_file(self, _read_cfg_paths, tmpdir, capsys): with mock.patch("sys.argv", myargs): assert 0 == main(), "Expected 0 exit code" out, _err = capsys.readouterr() - assert f"Valid cloud-config: {myyaml}\n" == out + assert f"Valid schema {myyaml}\n" == out + @pytest.mark.parametrize( + "net_config,net_output,error_raised", + ( + pytest.param( + "network:\n version: 1\n config:\n - type: physical\n" + " name: eth0\n subnets:\n - type: dhcp\n", + " Valid schema network-config", + does_not_raise(), + id="netv1_schema_validated", + ), + pytest.param( + "network:\n version: 2\n ethernets:\n eth0:\n dhcp4:true\n", + "Skipping network-config schema validation." + " No network schema for version: 2", + does_not_raise(), + id="netv2_validation_is_skipped", + ), + pytest.param( + "network:\n", + "Skipping network-config schema validation on empty config.", + does_not_raise(), + id="empty_net_validation_is_skipped", + ), + pytest.param( + "network:\n version: 1\n config:\n - type: physical\n" + " name: eth0\n subnets:\n - type: dhcp\n", + " Invalid network-config {network_file}", + pytest.raises(SystemExit), + id="netv1_schema_errors_handled", + ), + ), + ) @mock.patch(M_PATH + "read_cfg_paths") @mock.patch(M_PATH + "os.getuid", return_value=0) - def test_main_validates_system_userdata_and_vendordata( - self, _read_cfg_paths, _getuid, read_cfg_paths, capsys, mocker, paths + def test_main_validates_system_userdata_vendordata_and_network_config( + self, + _read_cfg_paths, + _getuid, + read_cfg_paths, + net_config, + net_output, + error_raised, + capsys, + mocker, + paths, ): - """When --system is provided, main validates system userdata.""" + """When --system is provided, main validates all config userdata.""" paths.get_ipath = paths.get_ipath_cur read_cfg_paths.return_value = paths cloud_config_file = paths.get_ipath_cur("cloud_config") @@ -1718,31 +1782,34 @@ def test_main_validates_system_userdata_and_vendordata( write_file(vd_file, b"#cloud-config\nssh_import_id: [me]") vd2_file = paths.get_ipath_cur("vendor2_cloud_config") write_file(vd2_file, b"#cloud-config\nssh_pw_auth: true") + network_file = paths.get_ipath_cur("network_config") + write_file(network_file, net_config) myargs = ["mycmd", "--system"] - with mock.patch("sys.argv", myargs): - main() + with error_raised: + with mock.patch("sys.argv", myargs): + main() out, _err = capsys.readouterr() + net_output = net_output.format(network_file=network_file) + data_types = "user-data, vendor-data, vendor2-data, network-config" expected = dedent( - """\ - Found cloud-config data types: user-data, vendor-data, vendor2-data + f"""\ + Found cloud-config data types: {data_types} - 1. user-data at {ud_file}: - Valid cloud-config: user-data + 1. user-data at {cloud_config_file}: + Valid schema user-data 2. vendor-data at {vd_file}: - Valid cloud-config: vendor-data + Valid schema vendor-data 3. vendor2-data at {vd2_file}: - Valid cloud-config: vendor2-data + Valid schema vendor2-data + + 4. network-config at {network_file}: + {net_output} """ ) - assert ( - expected.format( - ud_file=cloud_config_file, vd_file=vd_file, vd2_file=vd2_file - ) - == out - ) + assert expected == out @mock.patch(M_PATH + "os.getuid", return_value=1000) def test_main_system_userdata_requires_root( @@ -1855,7 +1922,7 @@ class TestNetworkSchema: "src_config, expectation", ( pytest.param( - {"network": {"version": 2}}, + {"network": {"config": [], "version": 2}}, pytest.raises( SchemaValidationError, match=re.escape("network.version: 2 is not one of [1]"), @@ -1876,12 +1943,17 @@ class TestNetworkSchema: id="config_key_required", ), pytest.param( - {"network": {"version": 1, "config": [{"type": "typo"}]}}, + { + "network": { + "version": 1, + "config": [{"name": "me", "type": "typo"}], + } + }, pytest.raises( SchemaValidationError, match=( - r"network.config.0: {'type': 'typo'} is not valid " - "under any of the given schemas" + r"network.config.0: {'name': 'me', 'type': 'typo'} is" + " not valid under any of the given schemas" ), ), id="unknown_config_type_item", @@ -1944,7 +2016,10 @@ class TestNetworkSchema: def test_network_schema(self, src_config, expectation): with expectation: validate_cloudconfig_schema( - config=src_config, schema=self.net_schema, strict=True + config=src_config, + schema=self.net_schema, + schema_type="netork-config", + strict=True, ) @@ -2050,7 +2125,10 @@ def test_validate_full_schema(self, config): class TestHandleSchemaArgs: - Args = namedtuple("Args", "config_file docs system annotate instance_data") + + Args = namedtuple( + "Args", "config_file schema_type docs system annotate instance_data" + ) @pytest.mark.parametrize( "annotate, expected_output", @@ -2071,7 +2149,7 @@ class TestHandleSchemaArgs: # D2: Default: ``false``. Deprecated in version 22.2. Use ``package_upgrade`` instead. # D3: Default: ``false``. Deprecated in version 22.2. Use ``package_reboot_if_required`` instead. - Valid cloud-config: {cfg_file} + Valid schema {cfg_file} """ # noqa: E501 ), ), @@ -2085,7 +2163,7 @@ class TestHandleSchemaArgs: ``false``. Deprecated in version 22.2. Use ``package_update`` instead.,\ apt_upgrade: Default: ``false``. Deprecated in version 22.2. Use \ ``package_upgrade`` instead.\ - Valid cloud-config: {cfg_file} + Valid schema {cfg_file} """ # noqa: E501 ), ), @@ -2120,6 +2198,7 @@ def test_handle_schema_args_annotate_deprecated_config( ) args = self.Args( config_file=str(user_data_fn), + schema_type="cloud-config", annotate=annotate, docs=None, system=None, @@ -2160,14 +2239,14 @@ def test_handle_schema_args_annotate_deprecated_config( False, dedent( """\ - Invalid cloud-config {cfg_file} + Invalid user-data {cfg_file} """ # noqa: E501 ), dedent( """\ Error: Cloud config schema errors: hostname: 123 is not of type 'string' - Error: Invalid cloud-config schema: user-data + Error: Invalid schema: user-data """ # noqa: E501 ), @@ -2214,6 +2293,87 @@ def test_handle_schema_args_jinja_with_errors( ) args = self.Args( config_file=str(user_data_fn), + schema_type="cloud-config", + annotate=annotate, + docs=None, + system=None, + instance_data=None, + ) + with expectation: + handle_schema_args("unused", args) + out, err = capsys.readouterr() + assert ( + expected_out.format(cfg_file=user_data_fn, id_path=id_path) == out + ) + assert ( + expected_err.format(cfg_file=user_data_fn, id_path=id_path) == err + ) + assert "deprec" not in caplog.text + assert read_cfg_paths.call_args_list == [ + mock.call(fetch_existing_datasource="trust") + ] + + @pytest.mark.parametrize( + "uid, annotate, expected_out, expected_err, expectation", + [ + pytest.param( + 0, + False, + dedent( + """\ + Invalid UNKNOWN_CONFIG_HEADER {cfg_file} + """ # noqa: E501 + ), + dedent( + """\ + Error: Cloud config schema errors: format-l1.c1: Unrecognized user-data header in {cfg_file}: "#bogus-config". + Expected first line to be one of: #!, ## template: jinja, #cloud-boothook, #cloud-config, #cloud-config-archive, #cloud-config-jsonp, #include, #include-once, #part-handler + + Error: Invalid schema: UNKNOWN_CONFIG_HEADER + + """ # noqa: E501 + ), + pytest.raises(SystemExit), + id="root_no_annotate_exception_with_unique_errors", + ), + ], + ) + @mock.patch(M_PATH + "os.getuid") + @mock.patch(M_PATH + "read_cfg_paths") + def test_handle_schema_args_unknown_header( + self, + read_cfg_paths, + getuid, + uid, + annotate, + expected_out, + expected_err, + expectation, + paths, + caplog, + capsys, + tmpdir, + ): + getuid.return_value = uid + paths.get_ipath = paths.get_ipath_cur + read_cfg_paths.return_value = paths + user_data_fn = tmpdir.join("user-data") + if uid == 0: + id_path = paths.get_runpath("instance_data_sensitive") + else: + id_path = paths.get_runpath("instance_data") + with open(user_data_fn, "w") as f: + f.write( + dedent( + """\ + #bogus-config + hostname: notgonnamakeit + """ + ) + ) + args = self.Args( + config_file=str(user_data_fn), + schema_type=None, annotate=annotate, docs=None, system=None, From 689fe209759d0abd888d84696cc6131b8f9fed90 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Fri, 29 Sep 2023 15:39:45 -0600 Subject: [PATCH 0652/1174] network: warn invalid cfg add /run/cloud-init/network-config (#4482) When reading netcfg from the environment, validate version 1 against known JSON network-config schema and warnings on invalid schema. Persist the processed network-config at /run/cloud-init/network-config.json as a symlink to /var/lib/cloud/instance/network-config.json. --- cloudinit/helpers.py | 1 + cloudinit/stages.py | 27 +++++++++++++++++++ doc/rtd/reference/network-config.rst | 6 +++++ .../modules/test_combined.py | 21 +++++++++++++++ tests/unittests/test_stages.py | 14 +++++++++- 5 files changed, 68 insertions(+), 1 deletion(-) diff --git a/cloudinit/helpers.py b/cloudinit/helpers.py index 5f5ff372699..e00045effec 100644 --- a/cloudinit/helpers.py +++ b/cloudinit/helpers.py @@ -347,6 +347,7 @@ def __init__(self, path_cfgs: dict, ds=None): # file "instance_data_sensitive": "instance-data-sensitive.json", "combined_cloud_config": "combined-cloud-config.json", + "network_config": "network-config.json", "instance_id": ".instance-id", "manual_clean_marker": "manual-clean", "obj_pkl": "obj.pkl", diff --git a/cloudinit/stages.py b/cloudinit/stages.py index 5e8e91a4320..891dfa73e14 100644 --- a/cloudinit/stages.py +++ b/cloudinit/stages.py @@ -934,6 +934,22 @@ def _find_networking_config(self): ) def _apply_netcfg_names(self, netcfg): + ncfg_instance_path = self.paths.get_ipath_cur("network_config") + network_link = self.paths.get_runpath("network_config") + if not self._network_already_configured(): + if os.path.exists(ncfg_instance_path): + if netcfg != util.load_json( + util.load_file(ncfg_instance_path) + ): + atomic_helper.write_json( + ncfg_instance_path, netcfg, mode=0o600 + ) + else: + atomic_helper.write_json( + ncfg_instance_path, netcfg, mode=0o600 + ) + if not os.path.islink(network_link): + util.sym_link(ncfg_instance_path, network_link) try: LOG.debug("applying net config names for %s", netcfg) self.distro.networking.apply_network_config_names(netcfg) @@ -956,6 +972,8 @@ def apply_network_config(self, bring_up): Find the config, determine whether to apply it, apply it via the distro, and optionally bring it up """ + from cloudinit.config.schema import validate_cloudconfig_schema + netcfg, src = self._find_networking_config() if netcfg is None: LOG.info("network config is disabled by %s", src) @@ -992,6 +1010,15 @@ def should_run_on_boot_event(): # refresh netcfg after update netcfg, src = self._find_networking_config() + if netcfg and netcfg.get("version") == 1: + validate_cloudconfig_schema( + config=netcfg, + schema_type="network-config", + strict=False, + log_details=True, + log_deprecations=True, + ) + # ensure all physical devices in config are present self.distro.networking.wait_for_physdevs(netcfg) diff --git a/doc/rtd/reference/network-config.rst b/doc/rtd/reference/network-config.rst index 53057d78759..d9e67cf7ea5 100644 --- a/doc/rtd/reference/network-config.rst +++ b/doc/rtd/reference/network-config.rst @@ -16,6 +16,12 @@ precedence; each item overriding the previous. - **Kernel command line**: ``ip=`` or ``network-config=`` +Cloud-init will write out the following files representing the network-config +processed: + +- :file:`/run/cloud-init/network-config.json`: world-readable JSON containing + the selected source network-config JSON used by cloud-init network renderers. + User data cannot change an instance's network configuration. In the absence of network configuration in any of the above sources, ``cloud-init`` will write out a network configuration that will issue a DHCP request on a "first" diff --git a/tests/integration_tests/modules/test_combined.py b/tests/integration_tests/modules/test_combined.py index 09d3e52ce19..9cf3e57ad8a 100644 --- a/tests/integration_tests/modules/test_combined.py +++ b/tests/integration_tests/modules/test_combined.py @@ -326,6 +326,27 @@ def test_combined_cloud_config_json( assert data["features"] == get_features() assert data["system_info"]["default_user"]["name"] == "ubuntu" + @pytest.mark.skipif( + PLATFORM not in ("lxd_vm", "lxd_container"), + reason="Test is LXD specific", + ) + def test_network_config_json(self, class_client: IntegrationInstance): + client = class_client + network_json = client.read_from_file( + "/run/cloud-init/network-config.json" + ) + devname = "eth0" if PLATFORM == "lxd_container" else "enp5s0" + assert { + "config": [ + { + "name": devname, + "subnets": [{"control": "auto", "type": "dhcp"}], + "type": "physical", + } + ], + "version": 1, + } == json.loads(network_json) + @pytest.mark.skipif( PLATFORM != "lxd_container", reason="Test is LXD container specific", diff --git a/tests/unittests/test_stages.py b/tests/unittests/test_stages.py index f8cb32c2e15..3afee411c13 100644 --- a/tests/unittests/test_stages.py +++ b/tests/unittests/test_stages.py @@ -1,6 +1,7 @@ # This file is part of cloud-init. See LICENSE file for license information. """Tests related to cloudinit.stages module.""" +import json import os import stat @@ -27,6 +28,7 @@ def setup(self, tmpdir): "paths": {"cloud_dir": self.tmpdir, "run_dir": self.tmpdir}, } } + tmpdir.mkdir("instance") self.init.datasource = FakeDataSource(paths=self.init.paths) self._real_is_new_instance = self.init.is_new_instance self.init.is_new_instance = mock.Mock(return_value=True) @@ -420,6 +422,13 @@ def fake_network_config(): self.init.distro.apply_network_config.assert_called_with( net_cfg, bring_up=True ) + assert net_cfg == json.loads( + self.tmpdir.join("instance/network-config.json").read() + ) + assert net_cfg == json.loads( + self.tmpdir.join("network-config.json").read() + ) + assert os.path.islink(self.tmpdir.join("network-config.json")) @mock.patch("cloudinit.distros.ubuntu.Distro") def test_apply_network_on_same_instance_id(self, m_ubuntu, caplog): @@ -517,9 +526,12 @@ def test_apply_network_disabled_when_no_default_boot( self, m_ubuntu, m_macs, caplog ): """Don't apply network if datasource has no BOOT event.""" - self._apply_network_setup(m_macs) + net_cfg = self._apply_network_setup(m_macs) self.init.apply_network_config(True) self.init.distro.apply_network_config.assert_not_called() + assert net_cfg == json.loads( + self.tmpdir.join("network-config.json").read() + ) assert ( "No network config applied. Neither a new instance nor datasource " "network update allowed" in caplog.text From 159db3a77005727261bb907164dd69d56d97f90b Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 2 Oct 2023 15:11:22 -0600 Subject: [PATCH 0653/1174] schema: add cloud_init_deepest_matches for best error message (#4482) Plug cloud_init_deppest_matches into any oneOf subschema calculation for most likely schema error match. This function will prefer the deepest match into the json_schema path with the exception that it prefers error messages for the matching subschema error for any instance containing a 'type' key. This means, when the subschema defines a required type: key. The cloud_init_deepest_match will raise the matching errors for the specific subschema containing the matching type: XXX over any other errors. Also drop unhelpful shema validation errors: 'blah' is not valid under any of the given schemas. This is replaced with specific validation errors for each unmatched subschema. --- cloudinit/config/schema.py | 47 +++++++++++++++---- .../config/test_cc_apt_pipelining.py | 11 +++-- tests/unittests/config/test_cc_bootcmd.py | 6 +-- tests/unittests/config/test_cc_ca_certs.py | 2 +- tests/unittests/config/test_cc_growpart.py | 10 ++-- tests/unittests/config/test_cc_mounts.py | 9 ++-- .../config/test_cc_update_etc_hosts.py | 7 +-- .../unittests/config/test_cc_users_groups.py | 19 +++++--- tests/unittests/config/test_schema.py | 7 ++- tests/unittests/reporting/test_reporting.py | 40 ++++++++++++---- 10 files changed, 112 insertions(+), 46 deletions(-) diff --git a/cloudinit/config/schema.py b/cloudinit/config/schema.py index 575cfb13d3e..523c8446f67 100644 --- a/cloudinit/config/schema.py +++ b/cloudinit/config/schema.py @@ -245,6 +245,39 @@ def format_message(key: str): return f"{description}{changed_new_deprecated}".rstrip() +def cloud_init_deepest_matches(errors, instance) -> List[ValidationError]: + """Return the best_match errors based on the deepest match in the json_path + + This is useful for anyOf and oneOf subschemas where the most-specific error + tends to be the most appropriate. + """ + best_matches = [] + path_depth = 0 + is_type = isinstance(instance, dict) and "type" in instance + for err in errors: + if is_type: + # Most appropriate subschema matches given type + if instance["type"] in err.schema.get("properties", {}).get( + "type", {} + ).get("enum", []): + return [err] + + if hasattr(err, "json_path"): + if err.json_path[-4:] == "type": + # Prioritize cloud-init 'type'-related errors exclusively + best_matches.append(err) + elif err.path and err.path[0] == "type": + # Use err.paths instead of json_path on jsonschema <= 3.2 + # Prioritize cloud-init 'type'-related errors exclusively + best_matches.append(err) + elif len(err.path) == path_depth: + best_matches.append(err) + elif len(err.path) > path_depth: + path_depth = len(err.path) + best_matches = [err] + return best_matches + + def _validator( _validator, deprecated: bool, @@ -315,7 +348,11 @@ def _anyOf( if not errs: all_deprecations.extend(deprecations) break - if "type" in instance and "anyOf_type" in subschema.get("$ref", ""): + if ( + isinstance(instance, dict) + and "type" in instance + and "anyOf_type" in subschema.get("$ref", "") + ): if f"anyOf_type_{instance['type']}" in subschema["$ref"]: # A matching anyOf_type_XXX $ref indicates this is likely the # best_match ValidationError. Skip best_match below. @@ -344,8 +381,6 @@ def _oneOf( It treats occurrences of `error_type` as non-errors, but yield them for external processing. Useful to process schema annotations, as `deprecated`. """ - from jsonschema.exceptions import best_match - subschemas = enumerate(oneOf) all_errors = [] all_deprecations = [] @@ -363,11 +398,7 @@ def _oneOf( break all_errors.extend(errs) else: - yield best_match(all_errors) - yield ValidationError( - "%r is not valid under any of the given schemas" % (instance,), - context=all_errors, - ) + yield from cloud_init_deepest_matches(all_errors, instance) more_valid = [s for i, s in subschemas if validator.is_valid(instance, s)] if more_valid: diff --git a/tests/unittests/config/test_cc_apt_pipelining.py b/tests/unittests/config/test_cc_apt_pipelining.py index 1890da290a0..1b7d807f321 100644 --- a/tests/unittests/config/test_cc_apt_pipelining.py +++ b/tests/unittests/config/test_cc_apt_pipelining.py @@ -2,6 +2,8 @@ """Tests cc_apt_pipelining handler""" +import re + import pytest import cloudinit.config.cc_apt_pipelining as cc_apt_pipelining @@ -45,9 +47,12 @@ def test_false_disables_pipelining(self, m_write_file): # Invalid schemas ( {"apt_pipelining": "bogus"}, - "Cloud config schema errors: apt_pipelining: 'bogus' is not of" - " type 'integer', apt_pipelining: 'bogus' is not valid under" - " any of the given schemas", + re.escape( + "Cloud config schema errors: apt_pipelining: 'bogus' is" + " not of type 'boolean', apt_pipelining: 'bogus' is not" + " of type 'integer', apt_pipelining: 'bogus' is not one" + " of ['none', 'unchanged', 'os']" + ), ), ), ) diff --git a/tests/unittests/config/test_cc_bootcmd.py b/tests/unittests/config/test_cc_bootcmd.py index a0fc40b3b47..f6772df8a53 100644 --- a/tests/unittests/config/test_cc_bootcmd.py +++ b/tests/unittests/config/test_cc_bootcmd.py @@ -145,10 +145,8 @@ class TestBootCMDSchema: ] }, "Cloud config schema errors: bootcmd.1: 20 is not of type" - " 'array', bootcmd.1: 20 is not valid under any of the given" - " schemas, bootcmd.3: {'a': 'n'} is not of type 'array'," - " bootcmd.3: {'a': 'n'} is not valid under any of the given" - " schemas", + " 'array', bootcmd.1: 20 is not of type 'string', bootcmd.3:" + " {'a': 'n'} is not of type 'array'", ), ), ) diff --git a/tests/unittests/config/test_cc_ca_certs.py b/tests/unittests/config/test_cc_ca_certs.py index dfbd8d921e7..b93fda765fe 100644 --- a/tests/unittests/config/test_cc_ca_certs.py +++ b/tests/unittests/config/test_cc_ca_certs.py @@ -446,7 +446,7 @@ def test_deprecate_key_warnings(self, update_ca_certs, caplog): ] for warning in expected_warnings: assert warning in caplog.text - assert "DEPRECAT" in caplog.text + assert "deprecat" in caplog.text assert 1 == update_ca_certs.call_count @mock.patch.object(cc_ca_certs, "update_ca_certs") diff --git a/tests/unittests/config/test_cc_growpart.py b/tests/unittests/config/test_cc_growpart.py index 06af2ad6a50..5b97f7bdbe3 100644 --- a/tests/unittests/config/test_cc_growpart.py +++ b/tests/unittests/config/test_cc_growpart.py @@ -678,9 +678,8 @@ class TestGrowpartSchema: {"growpart": {"mode": "false"}}, pytest.raises( SchemaValidationError, - match=( - "growpart.mode: 'false' is not valid under any of the" - " given schemas" + match=re.escape( + "growpart.mode: 'false' is not one of [False" ), ), ), @@ -688,9 +687,8 @@ class TestGrowpartSchema: {"growpart": {"mode": "a"}}, pytest.raises( SchemaValidationError, - match=( - "growpart.mode: 'a' is not valid under any of the" - " given schemas" + match=re.escape( + "growpart.mode: 'a' is not one of ['auto'," ), ), ), diff --git a/tests/unittests/config/test_cc_mounts.py b/tests/unittests/config/test_cc_mounts.py index 37f3b48e6bd..a2dada8ae85 100644 --- a/tests/unittests/config/test_cc_mounts.py +++ b/tests/unittests/config/test_cc_mounts.py @@ -612,13 +612,16 @@ class TestMountsSchema: ({"swap": {"size": "1.5MB"}}, "swap.size:"), ( {"swap": {"maxsize": "1.5MT"}}, - "swap.maxsize: '1.5MT' is not valid", + re.escape("swap.maxsize: '1.5MT' does not match '^([0-9]+)?"), ), ( {"swap": {"maxsize": "..5T"}}, - "swap.maxsize: '..5T' is not valid", + re.escape("swap.maxsize: '..5T' does not match '^([0-9]+)?"), + ), + ( + {"swap": {"size": "K"}}, + "swap.size: 'K' is not of type 'integer'", ), - ({"swap": {"size": "K"}}, "swap.size: 'K' is not valid"), ], ) @test_helpers.skipUnlessJsonSchema() diff --git a/tests/unittests/config/test_cc_update_etc_hosts.py b/tests/unittests/config/test_cc_update_etc_hosts.py index 244ac170af3..43eb94364b5 100644 --- a/tests/unittests/config/test_cc_update_etc_hosts.py +++ b/tests/unittests/config/test_cc_update_etc_hosts.py @@ -2,6 +2,7 @@ import logging import os +import re import shutil import pytest @@ -98,9 +99,9 @@ class TestUpdateEtcHosts: {"manage_etc_hosts": "templatey"}, pytest.raises( SchemaValidationError, - match=( - "manage_etc_hosts: 'templatey' is not valid under any" - " of the given schemas" + match=re.escape( + "manage_etc_hosts: 'templatey' is not one of" + " ['template']", ), ), ), diff --git a/tests/unittests/config/test_cc_users_groups.py b/tests/unittests/config/test_cc_users_groups.py index 635e0b631e6..3300b77b2b7 100644 --- a/tests/unittests/config/test_cc_users_groups.py +++ b/tests/unittests/config/test_cc_users_groups.py @@ -337,7 +337,10 @@ class TestUsersGroupsSchema: {"users": [{"name": "bbsw", "garbage-key": None}]}, pytest.raises( SchemaValidationError, - match="is not valid under any of the given schemas", + match=( + "users.0: {'name': 'bbsw', 'garbage-key': None} is" + " not of type 'string'" + ), ), True, ), @@ -407,7 +410,9 @@ class TestUsersGroupsSchema: {"user": ["no_list_allowed"]}, pytest.raises( SchemaValidationError, - match=re.escape("user: ['no_list_allowed'] is not valid "), + match=re.escape( + "user: ['no_list_allowed'] is not of type 'string'" + ), ), True, ), @@ -425,7 +430,10 @@ class TestUsersGroupsSchema: }, pytest.raises( SchemaValidationError, - match="errors: users.0: {'inactive': True", + match=( + "errors: users.0.inactive: True is not of type" + " 'string'" + ), ), True, ), @@ -491,10 +499,7 @@ class TestUsersGroupsSchema: {"users": [{"name": "a", "expiredate": "2038,1,19"}]}, pytest.raises( SchemaValidationError, - match=( - "users.0: {'name': 'a', 'expiredate': '2038,1,19'}" - " is not valid under any of the given schemas" - ), + match=("users.0.expiredate: '2038,1,19' is not a 'date'"), ), True, ), diff --git a/tests/unittests/config/test_schema.py b/tests/unittests/config/test_schema.py index 1cf1b9477ff..b658d26b0a2 100644 --- a/tests/unittests/config/test_schema.py +++ b/tests/unittests/config/test_schema.py @@ -112,8 +112,11 @@ class TestVersionedSchemas: ( ({}, None), ({"version": "v1"}, None), - ({"version": "v2"}, "is not valid"), - ({"version": "v1", "final_message": -1}, "is not valid"), + ({"version": "v2"}, "is not one of ['v1']"), + ( + {"version": "v1", "final_message": -1}, + "is not of type 'string'", + ), ({"version": "v1", "final_message": "some msg"}, None), ), ) diff --git a/tests/unittests/reporting/test_reporting.py b/tests/unittests/reporting/test_reporting.py index a6cf6a95504..9ed82583d7e 100644 --- a/tests/unittests/reporting/test_reporting.py +++ b/tests/unittests/reporting/test_reporting.py @@ -2,6 +2,7 @@ # # This file is part of cloud-init. See LICENSE file for license information. +import re from unittest import mock import pytest @@ -537,10 +538,19 @@ class TestReportingSchema: ({"reporting": "a"}, "'a' is not of type 'object'"), ({"reporting": {"a": "b"}}, "'b' is not of type 'object'"), # BAD: invalid type - ({"reporting": {"a": {"type": "b"}}}, "not valid"), + ( + {"reporting": {"a": {"type": "b"}}}, + re.escape("'b' is not one of ['log']"), + ), # BAD: invalid additional properties - ({"reporting": {"a": {"type": "print", "a": "b"}}}, "not valid"), - ({"reporting": {"a": {"type": "log", "a": "b"}}}, "not valid"), + ( + {"reporting": {"a": {"type": "print", "a": "b"}}}, + "'a' was unexpected", + ), + ( + {"reporting": {"a": {"type": "log", "a": "b"}}}, + "'a' was unexpected", + ), ( { "reporting": { @@ -551,14 +561,26 @@ class TestReportingSchema: } } }, - "not valid", + "'a' was unexpected", + ), + ( + {"reporting": {"a": {"type": "hyperv", "a": "b"}}}, + "'a' was unexpected", ), - ({"reporting": {"a": {"type": "hyperv", "a": "b"}}}, "not valid"), # BAD: missing required properties - ({"reporting": {"a": {"level": "FATAL"}}}, "not valid"), - ({"reporting": {"a": {"endpoint": "http://a"}}}, "not valid"), - ({"reporting": {"a": {"kvp_file_path": "/a/b"}}}, "not valid"), - ({"reporting": {"a": {"type": "webhook"}}}, "not valid"), + ({"reporting": {"a": {"level": "FATAL"}}}, "'type' is a required"), + ( + {"reporting": {"a": {"endpoint": "http://a"}}}, + "'type' is a required", + ), + ( + {"reporting": {"a": {"kvp_file_path": "/a/b"}}}, + "'endpoint' is a required", + ), + ( + {"reporting": {"a": {"type": "webhook"}}}, + "'endpoint' is a required", + ), ], ) def test_schema_validation(self, config, error_msg): From bdca040549f248b431eb3188f681823f17c5faaf Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Mon, 2 Oct 2023 15:22:11 -0600 Subject: [PATCH 0654/1174] schema: network-config optional network key. route uses oneOf (#4482) network-config schema now permits optional top-level network key. We should generally be using oneOf declarations in JSON schema. Fix anyOf_type_route schema definition. Update route definition to oneOf from anyOf requiring either 'network' or 'destination' key, combined with a 'gateway' key. --- .../schemas/schema-network-config-v1.json | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/cloudinit/config/schemas/schema-network-config-v1.json b/cloudinit/config/schemas/schema-network-config-v1.json index e69b9abfa96..c77885ecc18 100644 --- a/cloudinit/config/schemas/schema-network-config-v1.json +++ b/cloudinit/config/schemas/schema-network-config-v1.json @@ -417,7 +417,7 @@ "anyOf_type_route": { "type": "object", "additionalProperties": false, - "anyOf": [ + "oneOf": [ { "required": [ "network", @@ -566,13 +566,20 @@ } } }, - "required": [ - "network" - ], - "properties": { - "network": { + "oneOf": [ + { "$ref": "#/$defs/network_config_version1" + }, + { + "required": [ + "network" + ], + "properties": { + "network": { + "$ref": "#/$defs/network_config_version1" + } + }, + "additionalProperties": false } - }, - "additionalProperties": false + ] } From ba3031c96f76b58cf5f287badf526e845b62e67d Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Tue, 24 Oct 2023 12:01:50 +0200 Subject: [PATCH 0655/1174] test: unpin pytest After https://github.com/pytest-dev/pytest/pull/11125 being included in pytest==7.4, pytest can be unpinned. --- integration-requirements.txt | 4 ++-- test-requirements.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/integration-requirements.txt b/integration-requirements.txt index 510f013f40b..ee1d03fe0ff 100644 --- a/integration-requirements.txt +++ b/integration-requirements.txt @@ -3,11 +3,11 @@ # pycloudlib==1!5.6.0 -# Await pytest > 7.3.2. Breaking change in `testpaths` treatment forced +# Avoid breaking change in `testpaths` treatment forced # test/unittests/conftest.py to be loaded by our integration-tests tox env # resulting in an unmet dependency issue: # https://github.com/pytest-dev/pytest/issues/11104 -pytest<=7.3.1 +pytest!=7.3.2 packaging passlib diff --git a/test-requirements.txt b/test-requirements.txt index b74b3e30513..19488b943d7 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,10 +1,10 @@ # Needed generally in tests -# Await pytest > 7.3.2. Breaking change in `testpaths` treatment forced +# Avoid breaking change in `testpaths` treatment forced # test/unittests/conftest.py to be loaded by our integration-tests tox env # resulting in an unmet dependency issue: # https://github.com/pytest-dev/pytest/issues/11104 -pytest<=7.3.1 +pytest!=7.3.2 pytest-cov pytest-mock From 08784cd00405a21704da6e98612c823809a99029 Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Tue, 24 Oct 2023 15:40:58 +0200 Subject: [PATCH 0656/1174] fix(read-dependencies): handle version specifiers containing [~!] --- tools/read-dependencies | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/read-dependencies b/tools/read-dependencies index 167231634c6..9d83ba59de6 100755 --- a/tools/read-dependencies +++ b/tools/read-dependencies @@ -210,8 +210,11 @@ def parse_pip_requirements(requirements_path): dep = line.split(";")[0] # remove version requirements - if re.search("[>=.<]+", dep): - dep_names.append(re.split(r"[>=.<]+", dep)[0].strip()) + version_comparison = re.compile(r"[~!>=.<]+") + if version_comparison.search(dep): + dep_names.append( + version_comparison.split(dep)[0].strip() + ) else: dep_names.append(dep) return dep_names From 2fa5ba0ec96ca1c22e34eb76a0e95109254bca76 Mon Sep 17 00:00:00 2001 From: James Falcon Date: Fri, 29 Sep 2023 17:26:17 -0500 Subject: [PATCH 0657/1174] Support QEMU in integration tests Make use of new QEMU support in pycloudlib and bump pycloudlib accordingly. --- integration-requirements.txt | 2 +- tests/integration_tests/clouds.py | 9 +++++++++ tests/integration_tests/conftest.py | 2 ++ tests/integration_tests/integration_settings.py | 5 +++-- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/integration-requirements.txt b/integration-requirements.txt index ee1d03fe0ff..9a0f7075202 100644 --- a/integration-requirements.txt +++ b/integration-requirements.txt @@ -1,7 +1,7 @@ # PyPI requirements for cloud-init integration testing # https://cloudinit.readthedocs.io/en/latest/topics/integration_tests.html # -pycloudlib==1!5.6.0 +pycloudlib==1!5.8.0 # Avoid breaking change in `testpaths` treatment forced # test/unittests/conftest.py to be loaded by our integration-tests tox env diff --git a/tests/integration_tests/clouds.py b/tests/integration_tests/clouds.py index 662f6b888a7..ad8c6664f1a 100644 --- a/tests/integration_tests/clouds.py +++ b/tests/integration_tests/clouds.py @@ -19,6 +19,7 @@ LXDContainer, LXDVirtualMachine, Openstack, + Qemu, ) from pycloudlib.cloud import BaseCloud, ImageType from pycloudlib.ec2.instance import EC2Instance @@ -401,3 +402,11 @@ def _get_cloud_instance(self) -> IBM: return IBM( tag="integration-test-ibm", ) + + +class QemuCloud(IntegrationCloud): + datasource = "qemu" + cloud_instance = Qemu + + def _get_cloud_instance(self): + return Qemu(tag="qemu-integration-test") diff --git a/tests/integration_tests/conftest.py b/tests/integration_tests/conftest.py index 9148230feaf..fa729b7da8e 100644 --- a/tests/integration_tests/conftest.py +++ b/tests/integration_tests/conftest.py @@ -23,6 +23,7 @@ LxdVmCloud, OciCloud, OpenstackCloud, + QemuCloud, _LxdIntegrationCloud, ) from tests.integration_tests.instances import ( @@ -42,6 +43,7 @@ "ibm": IbmCloud, "lxd_container": LxdContainerCloud, "lxd_vm": LxdVmCloud, + "qemu": QemuCloud, "openstack": OpenstackCloud, } os_list = ["ubuntu"] diff --git a/tests/integration_tests/integration_settings.py b/tests/integration_tests/integration_settings.py index 6282def444d..339889af686 100644 --- a/tests/integration_tests/integration_settings.py +++ b/tests/integration_tests/integration_settings.py @@ -16,14 +16,15 @@ RUN_UNSTABLE = False # One of: -# lxd_container -# lxd_vm # azure # ec2 # gce # ibm +# lxd_container +# lxd_vm # oci # openstack +# qemu PLATFORM = "lxd_container" # The cloud-specific instance type to run. E.g., a1.medium on AWS From 42902f296e56b686b756c061753557fc129029ca Mon Sep 17 00:00:00 2001 From: James Falcon Date: Tue, 24 Oct 2023 09:49:34 -0500 Subject: [PATCH 0658/1174] Ensure all tests passed and/or are skipped --- integration-requirements.txt | 2 +- tests/integration_tests/modules/test_cli.py | 4 ++++ .../integration_tests/modules/test_combined.py | 1 + .../modules/test_jinja_templating.py | 4 ++++ .../modules/test_ssh_keysfile.py | 17 +++++++++++++++++ .../test_multi_part_user_data_handling.py | 7 +++++++ tests/integration_tests/test_upgrade.py | 2 +- 7 files changed, 35 insertions(+), 2 deletions(-) diff --git a/integration-requirements.txt b/integration-requirements.txt index 9a0f7075202..1f8b54a543c 100644 --- a/integration-requirements.txt +++ b/integration-requirements.txt @@ -1,7 +1,7 @@ # PyPI requirements for cloud-init integration testing # https://cloudinit.readthedocs.io/en/latest/topics/integration_tests.html # -pycloudlib==1!5.8.0 +pycloudlib>=5.10.0,<1!6 # Avoid breaking change in `testpaths` treatment forced # test/unittests/conftest.py to be loaded by our integration-tests tox env diff --git a/tests/integration_tests/modules/test_cli.py b/tests/integration_tests/modules/test_cli.py index e1bcd7c7ab8..8fafc33e8d3 100644 --- a/tests/integration_tests/modules/test_cli.py +++ b/tests/integration_tests/modules/test_cli.py @@ -6,6 +6,7 @@ import pytest from tests.integration_tests.instances import IntegrationInstance +from tests.integration_tests.integration_settings import PLATFORM VALID_USER_DATA = """\ #cloud-config @@ -49,6 +50,9 @@ def test_valid_userdata(client: IntegrationInstance): ) +@pytest.mark.skipif( + PLATFORM == "qemu", reason="QEMU only supports #cloud-config userdata" +) @pytest.mark.user_data(INVALID_USER_DATA_HEADER) def test_invalid_userdata(client: IntegrationInstance): """Test `cloud-init schema` with invalid userdata. diff --git a/tests/integration_tests/modules/test_combined.py b/tests/integration_tests/modules/test_combined.py index 9cf3e57ad8a..72385971043 100644 --- a/tests/integration_tests/modules/test_combined.py +++ b/tests/integration_tests/modules/test_combined.py @@ -264,6 +264,7 @@ def test_correct_datasource_detected( "gce": "DataSourceGCELocal", "oci": "DataSourceOracle", "openstack": "DataSourceOpenStackLocal [net,ver=2]", + "qemu": "DataSourceNoCloud [seed=/dev/vda][dsmode=net]", } assert ( platform_datasources[client.settings.PLATFORM] diff --git a/tests/integration_tests/modules/test_jinja_templating.py b/tests/integration_tests/modules/test_jinja_templating.py index 694125a43b7..93810c76153 100644 --- a/tests/integration_tests/modules/test_jinja_templating.py +++ b/tests/integration_tests/modules/test_jinja_templating.py @@ -2,6 +2,7 @@ import pytest from tests.integration_tests.instances import IntegrationInstance +from tests.integration_tests.integration_settings import PLATFORM from tests.integration_tests.util import ( verify_clean_log, verify_ordered_items_in_text, @@ -22,6 +23,9 @@ """ +@pytest.mark.skipif( + PLATFORM == "qemu", reason="QEMU only supports #cloud-config header" +) @pytest.mark.user_data(USER_DATA) def test_runcmd_with_variable_substitution(client: IntegrationInstance): """Test jinja substitution. diff --git a/tests/integration_tests/modules/test_ssh_keysfile.py b/tests/integration_tests/modules/test_ssh_keysfile.py index 628ad91fe8a..bf7ce0e6f2c 100644 --- a/tests/integration_tests/modules/test_ssh_keysfile.py +++ b/tests/integration_tests/modules/test_ssh_keysfile.py @@ -5,6 +5,7 @@ from paramiko.ssh_exception import SSHException from tests.integration_tests.instances import IntegrationInstance +from tests.integration_tests.integration_settings import PLATFORM from tests.integration_tests.releases import CURRENT_RELEASE, IS_UBUNTU from tests.integration_tests.util import get_test_rsa_keypair @@ -128,6 +129,10 @@ def common_verify(client, expected_keys): @pytest.mark.skipif( not IS_UBUNTU, reason="Tests permissions specific to Ubuntu releases" ) +@pytest.mark.skipif( + PLATFORM == "qemu", + reason="QEMU cloud manually adding key interferes with test", +) @pytest.mark.user_data(DEFAULT_KEYS_USERDATA) def test_authorized_keys_default(client: IntegrationInstance): expected_keys = [ @@ -159,6 +164,10 @@ def test_authorized_keys_default(client: IntegrationInstance): @pytest.mark.skipif( not IS_UBUNTU, reason="Tests permissions specific to Ubuntu releases" ) +@pytest.mark.skipif( + PLATFORM == "qemu", + reason="QEMU cloud manually adding key interferes with test", +) @pytest.mark.user_data(AUTHORIZED_KEYS2_USERDATA) def test_authorized_keys2(client: IntegrationInstance): expected_keys = [ @@ -190,6 +199,10 @@ def test_authorized_keys2(client: IntegrationInstance): @pytest.mark.skipif( not IS_UBUNTU, reason="Tests permissions specific to Ubuntu releases" ) +@pytest.mark.skipif( + PLATFORM == "qemu", + reason="QEMU cloud manually adding key interferes with test", +) @pytest.mark.user_data(NESTED_KEYS_USERDATA) def test_nested_keys(client: IntegrationInstance): expected_keys = [ @@ -213,6 +226,10 @@ def test_nested_keys(client: IntegrationInstance): @pytest.mark.skipif( not IS_UBUNTU, reason="Tests permissions specific to Ubuntu releases" ) +@pytest.mark.skipif( + PLATFORM == "qemu", + reason="QEMU cloud manually adding key interferes with test", +) @pytest.mark.user_data(EXTERNAL_KEYS_USERDATA) def test_external_keys(client: IntegrationInstance): expected_keys = [ diff --git a/tests/integration_tests/test_multi_part_user_data_handling.py b/tests/integration_tests/test_multi_part_user_data_handling.py index 95e5eebd506..4b52e389bc4 100644 --- a/tests/integration_tests/test_multi_part_user_data_handling.py +++ b/tests/integration_tests/test_multi_part_user_data_handling.py @@ -7,6 +7,7 @@ from cloudinit.cmd.devel.make_mime import create_mime_message from tests.integration_tests.instances import IntegrationInstance +from tests.integration_tests.integration_settings import PLATFORM PER_FREQ_TEMPLATE = """\ #!/bin/bash @@ -64,6 +65,9 @@ MIME_WITH_ERRORS = create_mime_message(CLOUD_CONFIG_FILES)[0].as_string() +@pytest.mark.skipif( + PLATFORM == "qemu", reason="QEMU only supports #cloud-config userdata" +) @pytest.mark.ci @pytest.mark.user_data(USER_DATA) def test_per_freq(client: IntegrationInstance): @@ -119,6 +123,9 @@ def test_per_freq(client: IntegrationInstance): # E2: \d+ is not of type 'string'""" +@pytest.mark.skipif( + PLATFORM == "qemu", reason="QEMU only supports #cloud-config userdata" +) @pytest.mark.ci @pytest.mark.user_data(MIME_WITH_ERRORS) def test_mime_with_error_parts(client: IntegrationInstance): diff --git a/tests/integration_tests/test_upgrade.py b/tests/integration_tests/test_upgrade.py index 02f2dee960b..83b87065923 100644 --- a/tests/integration_tests/test_upgrade.py +++ b/tests/integration_tests/test_upgrade.py @@ -138,7 +138,7 @@ def test_clean_boot_of_upgraded_package(session_cloud: IntegrationCloud): assert post_json["v1"]["datasource"].startswith( "DataSourceAzure" ) - if PLATFORM == "gce": + if PLATFORM in ["gce", "qemu"]: # GCE regenerates network config per boot AND # GCE uses fallback config AND # #4474 changed fallback configuration. From 5e245911ee676c7a14bf65dbb6ca23e6d11730b6 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Tue, 26 Sep 2023 10:24:02 -0500 Subject: [PATCH 0659/1174] MAAS: Add datasource to init-local timeframe Set kernel commandline network configuration source to have precedence over initramfs config in init-local timeframe. --- cloudinit/sources/DataSourceMAAS.py | 21 +++++++++++++++++++++ tests/unittests/sources/test_common.py | 1 + 2 files changed, 22 insertions(+) diff --git a/cloudinit/sources/DataSourceMAAS.py b/cloudinit/sources/DataSourceMAAS.py index 7a270719d67..1e88ac10a71 100644 --- a/cloudinit/sources/DataSourceMAAS.py +++ b/cloudinit/sources/DataSourceMAAS.py @@ -12,6 +12,8 @@ import time from cloudinit import sources, url_helper, util +from cloudinit.net.cmdline import KlibcNetworkConfigSource +from cloudinit.sources import NetworkConfigSource LOG = logging.getLogger(__name__) MD_VERSION = "2012-03-01" @@ -164,6 +166,24 @@ def check_instance_id(self, sys_cfg): return self.id_hash == get_id_from_ds_cfg(ncfg) +class DataSourceMAASLocal(DataSourceMAAS): + network_config_sources = ( + NetworkConfigSource.CMD_LINE, + NetworkConfigSource.SYSTEM_CFG, + NetworkConfigSource.DS, + NetworkConfigSource.INITRAMFS, + ) + + def _get_data(self): + if not KlibcNetworkConfigSource().is_applicable(): + # We booted from disk. Initramfs didn't bring up a network, so + # nothing to do. Wait until network timeframe to run _get_data() + LOG.debug("No initramfs applicable config") + return False + LOG.debug("Found initramfs applicable config") + return super()._get_data() + + def get_oauth_helper(cfg): """Return an oauth helper instance for values in cfg. @@ -300,6 +320,7 @@ class MAASSeedDirMalformed(Exception): # Used to match classes to dependencies datasources = [ + (DataSourceMAAS, (sources.DEP_FILESYSTEM,)), (DataSourceMAAS, (sources.DEP_FILESYSTEM, sources.DEP_NETWORK)), ] diff --git a/tests/unittests/sources/test_common.py b/tests/unittests/sources/test_common.py index d7424ebb87e..48db1de2697 100644 --- a/tests/unittests/sources/test_common.py +++ b/tests/unittests/sources/test_common.py @@ -44,6 +44,7 @@ Hetzner.DataSourceHetzner, IBMCloud.DataSourceIBMCloud, LXD.DataSourceLXD, + MAAS.DataSourceMAAS, NoCloud.DataSourceNoCloud, OpenNebula.DataSourceOpenNebula, Oracle.DataSourceOracle, From ed197e4eb6727f12da44555672174cc779496079 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 25 Oct 2023 09:13:12 -0600 Subject: [PATCH 0660/1174] maas tests: avoid using CiTest case and prefer pytest.tmpdir fixture --- tests/unittests/sources/test_maas.py | 102 +++++++++++---------------- 1 file changed, 41 insertions(+), 61 deletions(-) diff --git a/tests/unittests/sources/test_maas.py b/tests/unittests/sources/test_maas.py index 7315772802f..e8ac225f7f7 100644 --- a/tests/unittests/sources/test_maas.py +++ b/tests/unittests/sources/test_maas.py @@ -1,26 +1,18 @@ # This file is part of cloud-init. See LICENSE file for license information. -import os -import shutil -import tempfile from copy import copy from unittest import mock +import pytest import yaml from cloudinit import url_helper from cloudinit.sources import DataSourceMAAS -from tests.unittests.helpers import CiTestCase, populate_dir +from tests.unittests.helpers import populate_dir -class TestMAASDataSource(CiTestCase): - def setUp(self): - super(TestMAASDataSource, self).setUp() - # Make a temp directoy for tests to use. - self.tmp = tempfile.mkdtemp() - self.addCleanup(shutil.rmtree, self.tmp) - - def test_seed_dir_valid(self): +class TestMAASDataSource: + def test_seed_dir_valid(self, tmpdir): """Verify a valid seeddir is read as such.""" userdata = b"valid01-userdata" @@ -31,20 +23,20 @@ def test_seed_dir_valid(self): "public-keys": "ssh-rsa AAAAB3Nz...aC1yc2E= keyname", } - my_d = os.path.join(self.tmp, "valid") + my_d = tmpdir.join("valid").strpath populate_dir(my_d, data) ud, md, vd = DataSourceMAAS.read_maas_seed_dir(my_d) - self.assertEqual(userdata, ud) + assert userdata == ud for key in ("instance-id", "local-hostname"): - self.assertEqual(data["meta-data/" + key], md[key]) + assert data["meta-data/" + key] == md[key] # verify that 'userdata' is not returned as part of the metadata - self.assertFalse(("user-data" in md)) - self.assertIsNone(vd) + assert "user-data" not in md + assert vd is None - def test_seed_dir_valid_extra(self): + def test_seed_dir_valid_extra(self, tmpdir): """Verify extra files do not affect seed_dir validity.""" userdata = b"valid-extra-userdata" @@ -55,19 +47,19 @@ def test_seed_dir_valid_extra(self): "foo": "bar", } - my_d = os.path.join(self.tmp, "valid_extra") + my_d = tmpdir.join("valid_extra").strpath populate_dir(my_d, data) ud, md, _vd = DataSourceMAAS.read_maas_seed_dir(my_d) - self.assertEqual(userdata, ud) + assert userdata == ud for key in ("instance-id", "local-hostname"): - self.assertEqual(data["meta-data/" + key], md[key]) + assert data["meta-data/" + key] == md[key] # additional files should not just appear as keys in metadata atm - self.assertFalse(("foo" in md)) + assert "foo" not in md - def test_seed_dir_invalid(self): + def test_seed_dir_invalid(self, tmpdir): """Verify that invalid seed_dir raises MAASSeedDirMalformed.""" valid = { @@ -76,47 +68,37 @@ def test_seed_dir_invalid(self): "user-data": "", } - my_based = os.path.join(self.tmp, "valid_extra") + my_based = tmpdir.join("valid_extra").strpath # missing 'userdata' file my_d = "%s-01" % my_based invalid_data = copy(valid) del invalid_data["local-hostname"] populate_dir(my_d, invalid_data) - self.assertRaises( - DataSourceMAAS.MAASSeedDirMalformed, - DataSourceMAAS.read_maas_seed_dir, - my_d, - ) + with pytest.raises(DataSourceMAAS.MAASSeedDirMalformed): + DataSourceMAAS.read_maas_seed_dir(my_d) # missing 'instance-id' my_d = "%s-02" % my_based invalid_data = copy(valid) del invalid_data["instance-id"] populate_dir(my_d, invalid_data) - self.assertRaises( - DataSourceMAAS.MAASSeedDirMalformed, - DataSourceMAAS.read_maas_seed_dir, - my_d, - ) + with pytest.raises(DataSourceMAAS.MAASSeedDirMalformed): + DataSourceMAAS.read_maas_seed_dir(my_d) - def test_seed_dir_none(self): + def test_seed_dir_none(self, tmpdir): """Verify that empty seed_dir raises MAASSeedDirNone.""" - my_d = os.path.join(self.tmp, "valid_empty") - self.assertRaises( - DataSourceMAAS.MAASSeedDirNone, - DataSourceMAAS.read_maas_seed_dir, - my_d, - ) + my_d = tmpdir.join("valid_extra").strpath + with pytest.raises(DataSourceMAAS.MAASSeedDirNone): + DataSourceMAAS.read_maas_seed_dir(my_d) - def test_seed_dir_missing(self): + def test_seed_dir_missing(self, tmpdir): """Verify that missing seed_dir raises MAASSeedDirNone.""" - self.assertRaises( - DataSourceMAAS.MAASSeedDirNone, - DataSourceMAAS.read_maas_seed_dir, - os.path.join(self.tmp, "nonexistantdirectory"), - ) + with pytest.raises(DataSourceMAAS.MAASSeedDirNone): + DataSourceMAAS.read_maas_seed_dir( + tmpdir.join("doesnotexist").strpath + ) def mock_read_maas_seed_url(self, data, seed, version="19991231"): """mock up readurl to appear as a web server at seed has provided data. @@ -141,7 +123,7 @@ def my_readurl(*args, **kwargs): mock_readurl.side_effect = my_readurl return DataSourceMAAS.read_maas_seed_url(seed, version=version) - def test_seed_url_valid(self): + def test_seed_url_valid(self, tmpdir): """Verify that valid seed_url is read as such.""" valid = { "meta-data/instance-id": "i-instanceid", @@ -154,14 +136,12 @@ def test_seed_url_valid(self): my_ver = "1999-99-99" ud, md, vd = self.mock_read_maas_seed_url(valid, my_seed, my_ver) - self.assertEqual(valid["meta-data/instance-id"], md["instance-id"]) - self.assertEqual( - valid["meta-data/local-hostname"], md["local-hostname"] - ) - self.assertEqual(valid["meta-data/public-keys"], md["public-keys"]) - self.assertEqual(valid["user-data"], ud) + assert valid["meta-data/instance-id"] == md["instance-id"] + assert valid["meta-data/local-hostname"] == md["local-hostname"] + assert valid["meta-data/public-keys"] == md["public-keys"] + assert valid["user-data"] == ud # vendor-data is yaml, which decodes a string - self.assertEqual(valid["meta-data/vendor-data"].decode(), vd) + assert valid["meta-data/vendor-data"].decode() == vd def test_seed_url_vendor_data_dict(self): expected_vd = {"key1": "value1"} @@ -174,12 +154,12 @@ def test_seed_url_vendor_data_dict(self): valid, "http://example.com/foo" ) - self.assertEqual(valid["meta-data/instance-id"], md["instance-id"]) - self.assertEqual(expected_vd, vd) + assert valid["meta-data/instance-id"] == md["instance-id"] + assert expected_vd == vd @mock.patch("cloudinit.sources.DataSourceMAAS.url_helper.OauthUrlHelper") -class TestGetOauthHelper(CiTestCase): +class TestGetOauthHelper: base_cfg = { "consumer_key": "FAKE_CONSUMER_KEY", "token_key": "FAKE_TOKEN_KEY", @@ -200,7 +180,7 @@ def test_other_fields_not_passed_through(self, m_helper): m_helper.assert_has_calls([mock.call(**self.base_cfg)]) -class TestGetIdHash(CiTestCase): +class TestGetIdHash: v1_cfg = { "consumer_key": "CKEY", "token_key": "TKEY", @@ -213,7 +193,7 @@ class TestGetIdHash(CiTestCase): def test_v1_expected(self): """Test v1 id generated as expected working behavior from config.""" result = DataSourceMAAS.get_id_from_ds_cfg(self.v1_cfg.copy()) - self.assertEqual(self.v1_id, result) + assert self.v1_id == result def test_v1_extra_fields_are_ignored(self): """Test v1 id ignores unused entries in config.""" @@ -221,4 +201,4 @@ def test_v1_extra_fields_are_ignored(self): cfg["consumer_secret"] = "BOO" cfg["unrelated"] = "HI MOM" result = DataSourceMAAS.get_id_from_ds_cfg(cfg) - self.assertEqual(self.v1_id, result) + assert self.v1_id == result From 60cbfe7a5ddb4261554d80e64c52a8233d9e1dfa Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Wed, 25 Oct 2023 12:18:02 -0600 Subject: [PATCH 0661/1174] tests: maas test for DataSourceMAASLocal get_data --- tests/unittests/sources/test_maas.py | 66 +++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/tests/unittests/sources/test_maas.py b/tests/unittests/sources/test_maas.py index e8ac225f7f7..2e037981ad5 100644 --- a/tests/unittests/sources/test_maas.py +++ b/tests/unittests/sources/test_maas.py @@ -6,7 +6,7 @@ import pytest import yaml -from cloudinit import url_helper +from cloudinit import helpers, settings, url_helper from cloudinit.sources import DataSourceMAAS from tests.unittests.helpers import populate_dir @@ -157,6 +157,70 @@ def test_seed_url_vendor_data_dict(self): assert valid["meta-data/instance-id"] == md["instance-id"] assert expected_vd == vd + @pytest.mark.parametrize( + "initramfs_file, cmdline_value, expected", + ( + pytest.param( + None, + "no net in cmdline", + False, + id="no_maas_local_when_missing_run_files_and_cmdline", + ), + pytest.param( + "some initramfs cfg", + "no net in cmdline", + False, + id="no_maas_local_when_run_files_and_no_cmdline", + ), + pytest.param( + "some initframfs cfg", + "ip=dhcp cmdline config", + True, + id="maas_local_when_run_and_ip_cmdline_present", + ), + ), + ) + @pytest.mark.usefixtures("fake_filesystem") + @mock.patch("cloudinit.util.get_cmdline") + def tests_wb_local_stage_detects_datasource_on_initramfs_network( + self, cmdline, initramfs_file, cmdline_value, expected, tmpdir + ): + """Only detect local MAAS datasource net config is seen in initframfs + + MAAS Ephemeral launches provide initramfs network configuration to the + instance being launched. Assert that MAASDataSourceLocal can only be + discovered and detected when initramfs net config is applicable. + + The datasource needs to also prioritize the network config on disk + before initramfs configuration. Because the ephemeral instance + launches provide a custom cloud-config-url that will provide + network configuration to the VM which is more complete than the + initramfs config. + """ + cmdline.return_value = cmdline_value + ds = DataSourceMAAS.DataSourceMAASLocal( + settings.CFG_BUILTIN, None, helpers.Paths({"cloud_dir": tmpdir}) + ) + tmpdir.mkdir("run") + + # Create valid maas seed dir so parent DataSourceMAAS.get_data succeeds + tmpdir.mkdir("seed") + seed_dir = tmpdir.join("seed/maas") + seed_dir.mkdir() + userdata = b"valid01-userdata" + data = { + "meta-data/instance-id": "i-valid01", + "meta-data/local-hostname": "valid01-hostname", + "user-data": userdata, + "public-keys": "ssh-rsa AAAAB3Nz...aC1yc2E= keyname", + } + populate_dir(seed_dir.strpath, data) + + if initramfs_file: + klibc_net_cfg = tmpdir.join("run/net-eno.conf") + klibc_net_cfg.write(initramfs_file) + assert expected == ds.get_data() + @mock.patch("cloudinit.sources.DataSourceMAAS.url_helper.OauthUrlHelper") class TestGetOauthHelper: From 2df2af41c9a0ae7c4675e79f08edd6d923f9af23 Mon Sep 17 00:00:00 2001 From: Alec Warren Date: Thu, 26 Oct 2023 11:41:58 -0400 Subject: [PATCH 0662/1174] fix: added mock to stop leaking journalctl that slows down unit test (#4556) In test_logs.py, test_collect_logs_includes_optional_userdata() would leak the journalctl subprocess call because it did not mock subprocess.call() like test_collect_logs_creates_tarfile() does. This would cause the unit test to take a long time to run because it was calling the actual journalctl command. Fixes GH-4536 --- tests/unittests/cmd/devel/test_logs.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/unittests/cmd/devel/test_logs.py b/tests/unittests/cmd/devel/test_logs.py index 9eb00d51c94..a40d53c6ef3 100644 --- a/tests/unittests/cmd/devel/test_logs.py +++ b/tests/unittests/cmd/devel/test_logs.py @@ -183,9 +183,22 @@ def fake_subp(cmd): subp(cmd) # Pass through tar cmd so we can check output return SubpResult(expected_subp[cmd_tuple], "") + def fake_subprocess_call(cmd, stdout=None, stderr=None): + cmd_tuple = tuple(cmd) + if cmd_tuple not in expected_subp: + raise AssertionError( + "Unexpected command provided to subprocess: {0}".format( + cmd + ) + ) + stdout.write(expected_subp[cmd_tuple]) + fake_stderr = mock.MagicMock() mocker.patch(M_PATH + "subp", side_effect=fake_subp) + mocker.patch( + M_PATH + "subprocess.call", side_effect=fake_subprocess_call + ) mocker.patch(M_PATH + "sys.stderr", fake_stderr) mocker.patch(M_PATH + "CLOUDINIT_LOGS", [log1, log2]) mocker.patch(M_PATH + "CLOUDINIT_RUN_DIR", run_dir) From 1905c8969997499bee4e29d188648cd69981e134 Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 24 Oct 2023 10:16:03 -0600 Subject: [PATCH 0663/1174] summit-notes: add 2023 notes for reference in mailinglist/discourse Provide an unauthenticated view of meeting notes for those without google accounts. Original meeting notes live in a shared google drive document. To provide a point of reference for those in the community without google accounts we have refactored the notes to markdown and will host them in the cloud-init repository so that both discourse trip reports and mailinglist threads can reference these notes without have to bloat the email or discourse post with details. Co-authored-by: Sally Makin --- Makefile | 1 + doc/summit/2023_summit_shared_notes.md | 908 +++++++++++++++++++++++++ 2 files changed, 909 insertions(+) create mode 100644 doc/summit/2023_summit_shared_notes.md diff --git a/Makefile b/Makefile index b8167a05346..18e72acbf94 100644 --- a/Makefile +++ b/Makefile @@ -131,6 +131,7 @@ _CHECK_SPELLING := find doc -type f -exec spellintian {} + | \ -e 'doc/examples/cloud-config-power-state.txt: Bye Bye' \ -e 'doc/examples/cloud-config.txt: Bye Bye' \ -e 'doc/rtd/topics/cli.rst: DOCS DOCS' \ + -e 'doc/summit/2023_summit_shared_notes.md: Moustafa Moustafa' \ -e 'dependant' diff --git a/doc/summit/2023_summit_shared_notes.md b/doc/summit/2023_summit_shared_notes.md new file mode 100644 index 00000000000..3afa300156d --- /dev/null +++ b/doc/summit/2023_summit_shared_notes.md @@ -0,0 +1,908 @@ +# Cloud-init summit digest + +Hello cloud-init community! + +We wanted to provide a summary of the notes from the August 2023 cloud-init +Summit in a more digestible fashion so that those without Google accounts can +also review the meeting notes to get up to speed on the conversations and +topics covered at the event. + +We will soon link event highlights, presentation materials and maybe a couple +of videos of presentations on our documentation site at: +https://cloudinit.readthedocs.io/en/latest/development/summit.html + +For those who weren't able to attend, this meeting was Canonical's first +hybrid attendance summit, with both physical and virtual participants. +The running notes are transcribed from a shared Google document to provide +simpler access. The original shared notes +[are also available](https://docs.google.com/document/d/1unINhucL6wcn7xqIL6IIAik8nwuacq5d-u0e3K0437s). + +## Our thanks + +First of all, many thanks to our sponsors for the event: + +- Microsoft Azure folks for providing meeting rooms, video conferencing and + lunches/snacks for both days at their Redmond Campus. +- Canonical for sponsoring travel and the group dinner on Wednesday night. +- The presenters who made this event possible by providing excellent content, + demos and discussions. + +## Topic schedule + +Below is an ordered list of scheduled topics that were covered, and the +presenters who led those efforts: + +### Summit day 1 + +1. **Presentation** Recent Features / Roadmap / Q & A: Brett Holman (Canonical) +1. **Presentation** Intro to our new technical author: Sally Makin (Canonical) +1. **Presentation** FreeBSD State of the Union: Mina Galic (FreeBSD Foundation) +1. **Presentation** Status of cloud-init versions and support in various + distribution downstreams: Chad Smith (Canonical) +1. **Roundtable** Python version support matrix and deprecation plan: James + Falcon (Canonical) +1. **Roundtable** Status of distribution downstream patches: Brett Holman + (Canonical) +1. **Roundtable** Status of testing and/or publication of cloud-init in various + OSes: Chad Smith (Canonical) +1. **Demo** Integration testing updates for pycloudlib: James Falcon +1. **Presentation** Security policy overview: Chad Smith +1. **Demo** Ubuntu live installer: Dan Bungert (Canonical) +1. **Demo** Canonical CPC, test framework John Chittum (Canonical public cloud + Manager) +1. **Demo** Cloud-init schema validation and validation service: Alberto + Contreras (Canonical) + +### Summit day 2 + +13. **Presentation** Cloud-init and Alpine: Dermot Bradley (AlpineLinux) +1. **Presentation** Documentation overhaul and policy for cloud-init (Sally + Makin) +1. **Roundtable** Boot speed in cloud-init: Chad Smith, Alberto Contreras, + Catherine Redfield (Canonical) +1. **Demo** instance-id in LXD: James Falcon (Canonical) +1. **Demo** Cloud testing tools in the cloud-init ecosystem: Chris Patterson, + Ahn Vo (Microsoft) +1. **Roundtable** Rotten tomatoes: what can the cloud-init project do better? +1. **Discussion** ISC-dhclient deprecation status: Brett Holman +1. **Breakout sessions** With Oracle and AWS: Fabio Martins and Kyler Horner + (Canonical) + + +Many thanks to all of our presenters and participants! + +Below is the wall-of-text transcribed from our shared meeting notes. A response +will also be provided to this thread when we have published our distilled trip +report to our documentation at https://cloudinit.readthedocs.io. + +Happy hacking, + +Chad Smith + +cloud-init upstream developer + + + + + +# cloud-init summit August 2023 notes + +## Attendees + +The cloud-init summit had representation both in-person and remotely from the +following community members: + +| Name | Company/Project/Role | Attendance | +| ------------------ | ---------------------------------- | ----------------- | +| Alberto Contreras | Canonical / Server-CPC / SW Eng | In person | +| Brett Holman | Canonical / Server / SW Eng | In person | +| Calvin Mwadime | Canonical / Server-CPC / SW Eng | Remote | +| Catherine Redfield | Canonical / Server-CPC / SW Eng | Remote | +| Chad Smith | Canonical / Server / SW Eng | In person | +| Christian Ehrhardt | Canonical / Server / Manager | Remote | +| Daniel Bungert | Canonical / Foundations / SW Eng | In person | +| Fabio Martins | Canonical / Support Eng | In person | +| James Falcon | Canonical / Server / SW Eng | In person | +| John Chittum | Canonical / CPC / Manager | In person | +| Kyler Horner | Canonical / Support Eng / TAM | In person | +| Sally Makin | Canonical / Server / Documentation | Remote | +| Deepika Rajadesingan | Oracle | Remote | +| Eric Mackay | Oracle | In person | +| Guillaume Beaudoin | Oracle / Platform images | In person | +| Harsha Koonaparaju | Oracle | Remote | +| Paul Graydon | Oracle | In person | +| Rajesh Harekal | Oracle | Remote | +| Anh Vo | Microsoft / Azure Linux | In person | +| Chris Patterson | Microsoft | In person | +| Lexi Nadolski | Microsoft | Remote | +| Minghe Ren | Microsoft | In person | +| Moustafa Moustafa | Microsoft | Remote | +| Nell Shamrell-Harrington | Microsoft / Rust Foundation | In person | +| Peyton Robertson | Microsoft | In person | +| Huijuan Zhao | Redhat | Remote | +| Wei Shi | Redhat / CentOS | Remote | +| Yaju Cao | Redhat | Remote | +| Bastian Blank | Amazon / Debian | In person | +| Frederick Lefebvre | ASW / Amazon Linux | In Person | +| Noah Meyerhans | Amazon | In Person | +| Andrew Jorgensen | GCP / Guest Ecosystem / Staff Eng | Both | +| Justin Haynes | GCP | In person | +| Mina Galić | FreeBSD Foundation / maintainer | Remote | +| Dermot Bradly | AlpineLinux / Maintainer | Remote | +| Robert Schweikert | SUSE / Distinguished eng | In person | +| Matthew Penington | AWS / EC2 Commercial Linux/SDE | In person | +| Matt Chidambaram | Cloud Migration/ DevOs SRE | Remote | +| Kristjan Onu | National Research Council Canada | Remote | + +## Day 1 running notes, per session + +### Presentation: recent features / roadmap / Q and A + +Presented by: Brett Holman (Canonical) + +* [Slides: cloud-init summit intro](https://docs.google.com/presentation/d/1i4ufgXcfQ9rQLIfgeqMMkr6w5Bpu-RrhAaPTxo0BofM/edit?usp=sharing) +* CVEs, code changes, new clouds added and config modules provided +* Versioning policy: time-based versions `YY.` +e.g. 22.1, 22.2 etc +* Feedback / discussion: + * NoahM: New docs -- I can now quickly navigate to solutions + +### Presentation: Intro to our new Technical Author + +Presented by: Sally Makin (Canonical) + +* [Slides](https://docs.google.com/presentation/d/12ZFawGOxlzg_J5bYtcE_anYbNFiFVHb2xFTyOQy9rio/edit?usp=sharing) +* [Recording](https://drive.google.com/file/d/1v23sXtyo4AILTyqRIH2CtVkl5zVgi7oY/view?usp=sharing) + +### Presentation: FreeBSD State of the Union + +Presented by: Mina Galic (FreeBSD Foundation) + +* [Talk notes](https://scratchpad.pkgbase.live/q0Ajf3LtTaqXXH0v99Sykg?view#) +* At the start of this project there were 130 failing tests on BSD. +* Since FreeBSD 13.2 release, unit tests are being fixed upstream. +* Biggest issues: + * Not being able to test on your target platform has been a real challenge. + * Trying to ensure we have fully integrated cloud-init CI within FreeBSD's + test infrastructure. +* Looking to get cloud vendors to provide official FreeBSD images with + cloud-init installed. +* Mina has been driving integration tests working on LXD platform for ease of + free and local integration test runs. + * LXD Virtio vSocket support complexities are causing trouble for BSD due to + the lack of a vSocket module. + * BSD has a Hyper-V module, but no vSocket. + * Spent time trying to convert Hyper-V socket module to support vSocket. +* Network refactors that resulted in InfiniBand support for cloud-init. Tabled + that effort due to lack of resources, testing and expertise. + * What is missing from BSD for network refactor: + * Missing a lot of IPv6 support; progress is slow but outside contributors + have added a lot of functionality. +* Two big issues with BSD: filesystem hierarchy standard (FHS) + * Every Unix has its own FHS standard. + * BSD use of `/run` is actually written to the root filesystem (it's not + ephemeral as cloud-init treats it). + * Need to push distro-specific treatment of ephemeral filesystem. +* AIX has announced that they would like to join the cloud hype. +* The hope from Mina's work has paved enough of a path to [sic] + +### Presentation: Status of cloud-init versions and support in various distribution downstreams + +Presented by: Chad Smith (Canonical) + +* Refresh our understanding of downstream support matrix lifetime. +* Review Ubuntu, Debian, openSUSE, FreeBSD, Alpine, Amazon Linux. +* Are distributions pushing updates into stable releases? + * Ubuntu pulls the latest release to stable releases: 20.04, 22.04, 23.04 + * Canonical provides ESM (Expanded Security Maintenance). + * cloud-init +* Frederick: Can cloud-init make a backwards compatibility for release? + * Define with labels whether changesets are backward compatible or not +* Noah: cloud-init is not consistently clear whether interface changes or + behavior changes, so downstream consumers can better assess risk profile. + * [Concern]: Don't have a defined policy for determining whether we will + pull the latest cloud-init releases into stable releases on Debian/Amazon + Linux. + * Frederick: Lack of a contract is what hinders us here, if we can be more + strenuous for our [sic] +* James: Ubuntu tries to keep behavior consistent on stable releases, and has + downstream debian/patches to hold stable behavior. +* ChrisP: Azure finds the update process valuable especially in relation to + their datasource. +* Chad: This release process is a large burden on the project. +* John: New features on ESM Ubuntu versions? Divergence between cloud-init + versions. +* Noah: Amazon Linux and Debian try to suggest to customers to migrate to newer + releases, instead of trying to backport those features to stable releases +* NoahM: Would it make sense to generalize the SRU process more for other + distros to better engage a broader group of contributors and drive quality? +* James: From the Ubuntu perspective we have a history of finding regressions + after each SRU. This may impact partners if we require a vote on releases to + ensure stable release updates are 'approved' for various downstreams. +* Noah: Try leaning toward pushing some of the SRU. +* John C: Have clouds/partners/distros publish/queue testing. +* Robert S: We could ask clouds to sponsor accounts for distribution testing + * Want to drive ability to [sic] +* [ACTION] Releases: document and downstream patches we apply +* Noah M: do you have a separate policy for how you approach those downstream + patches +* [ACTION] cloud-init PRs that break compatibility add a new 'breaking-change' + label. + * Alberto: Also in the commit message? + * John C: Potential templates in commit messages indicating breaking change. + * John C: [Example of convention](https://www.conventionalcommits.org/en/v1.0.0) +* Robert S: Need more conspicuous [breaking change] in release notes for the + release. + * Want this in the release changelog or in git commit messages as metadata + -- it raises awareness. +* [Quotable]: "You have to deal with me if you want the stuff" -- Robert S + * Robert S: Can we add a prefix in commit message metadata to differentiate + "bug fix" from "feature". + * [Outcome] Multiple people preferring changelog route +* SUSE patches are found here: https://build.opensuse.org/package/show/Cloud:Tools/cloud-init + * Is https://repology.org/project/cloud-init/versions up to date? +* [ACTION] Community, Partners Clouds and Distro maintainers please update the + support matrix by end of cloud-init summit with the latest details of what + version of cloud-init is where, and whether that release receives updates. + +| Distro/Release | Cloud-init version | Receives cloud-init updates | End of Life | +| -------------------- | ------------------ | --------------------------- | ---------------- | +| Ubuntu 16.04, 18.04 | 21.1-19, 23.1.2 | CVE / Security | Depends on ESM | +| Ubuntu 20.04, 22.04, 23.04 | latest | yes | Not EOL | +| SLE 12 | 20.2 | Only CVE fixes | Oct 31st 2027 | +| SLE 15 | 23.1 | Yes | Jul 31st 2031 | +| openSUSE Leap | 23.1 | Yes | Not EOL | +| openSUSE Tumbleweed | 23.1 | Yes | Never | +| Oracle Linux 7 | 19.4 | CVE / Security | Dec 24 + depends | +| Oracle Linux 8 | 22.1 | | Jul 29 + depends | +| Oracle Linux 9 | 22.1 | | Jul 32 + depends | +| RHEL 8 | 23.1 | CVE / Security | | +| RHEL 9 | 23.1 | CVE / Security | | + +#### Release patch links + +* [Ubuntu 20.04](https://github.com/canonical/cloud-init/tree/ubuntu/focal/debian/patches) +* [Ubuntu 22.04](https://github.com/canonical/cloud-init/tree/ubuntu/jammy/debian/patches) +* [Suse Patches](https://build.opensuse.org/package/show/Cloud:Tools/cloud-init) + +### Roundtable: Python version support matrix and deprecation plan + +Chaired by: James Falcon (Canonical) + +* Record current Python versions under long term support by various + distributions versions. +* Ubuntu: LTS support matrix. +* Policy for deprecation. +* What keeps you on an older version? +* SUSE freezes once the distro hits stable. + * openSUSE 15 concluded that Python 3.11 and all dependencies [sic] +* Chris P: Why do you want to update to newer python version? + * James: Newer features provided. +* John C: how to add new Python features and maintain ESM / LTS support? +* Fred L/Noah M: The cost of moving to newer Python versions is "beyond + annoying" -- it would be helpful to take into account the costs of that + shift to newer features as it forces downstream work. +* Noah M: If there are critical security fixes added to upstream, is it + possible for ease of downstream adoption of security features? +* Robert S: How do we test this across multiple versions when we end up + developing with our local Python version. This leads to gaps because we are + human. Does this come down to testing to assert? + * How can we integrate unit tests so that each flavor and/or distribution can + be exercised everywhere to assert we don't have regressions? +* Robert S: I still pull in new major versions of cloud-init into supported + versions (including 3.6). + * "I have no fear", update twice a year. + * It's not possible to test everywhere, OpenStack is one of those cases. + * Customers are very helpful in that regard as they will prefer to test + newer versions and collaborate with SUSE on verification. +* Robert S: Potential pivot to Python 3.11 in 9 months. +* Mina: 3 supported BSD releases (12.4, 13.2. 11.X) have been EOL for a few + months now: + * Next release is 14, coming out as soon as OpenSSL integration is completed + and current LLVM release 16. + * 3rd party software: all FreeBSD releases contain the same version of + cloud-init. So latest cloud-init releases are published to all active + supported releases. + * Also, there is a quarterly release of those ports to provide "stable + adopters" with only bug and security issues being fixed. + * Bleeding edge version of cloud-init is available in the form of the + `net/cloud-init-devel` port. +* Chris P: How many distros actually pull regular new upstream cloud-init + versions which may need additional testing? + * Noah: Debian don't currently regularly pull cloud-init into supported + releases -- only backport when we need to. + +| Distribution/Release | Python version | End of life | Takes upstream release | +| -------------------- | -------------- | ----------- | ---------------------- | +| Ubuntu/Bionic (18.04)| 3.6 | ~2030? | Security only | +| Ubuntu/Focal (20.04) | 3.8 | ~2025 | Yes | +| SUSE | 3.6 | ~9--12 months | | +| openSUSE 15 | 3.6 (soon 3.11)| Not EOL | Yes | +| Mariner 2 | 3.9 | No EOL | Yes | +| RHEL 8 | 3.6 | May 2024? | Python 38 available but not default | +| Amazon Linux 2023 | 3.9 | ~2028 | Not systematically | + + +### Roundtable: status of distribution downstream patches + +Hosted by: Brett Holman (Canonical) + +* [REQUEST] Looking for public download patches that partners are willing to + review. +* Chris P: Azure Mariner team carries downstream patches. +* Amazon Linux has private patches that it may make sense to upstream -- it's a + [ACTION]. +* Cloud-init upstream wants to avoid breaking private downstream patches if/when we change internal APIs or function signatures. +* Robert S: + * cloud-init documentation would be helpful to generate a list of what + distributions. + * James: We already generate distribution support in the rendered docs. + * Noah: `cloud-config.tmpl` does also override and filter out certain modules + +### Roundtable: status of testing and/or publication of cloud-init in various OSes + +Hosted by: Chad Smith (Canonical) + +* What gates publication of cloud-init on each distribution? +* Review Ubuntu, Debian, openSUSE, FreeBSD, Alpine, RedHat if possible. +* Noah M: May not be giving away that we are not running integration tests locally. + * We rely on upstream testing behavior during releases for quality + * Debian: Unittests run as part of the package build process. + * Existing upstream integration tests not run in Debian or Amazon Linux right + now. + * Amazon Linux has similar integration-type tests -- realistically, + can/should be converted to [sic] + * Different framework for testing packages in the distribution in general: + * Possible refactor of Amazon Linux could be reasonable for [sic] + * May be worthwhile to investigate running integration tests with Debian + and Amazon Linux. +* Chad: Better documentation would take it a long way. +* Chris P: We rely on cloud-int upstream testing to get the breadth of testing + for broad features. + * Test with cloud-init upgraded in images at scale, to check for regressions. + * Looking for checkbox for release. + * Noah M: are you testing cloud-init features specifically or using existing + test infra to see if you have regressions related to [sic] +* Chad: So we have people leverage existing testing as well as people testing + things more pertinent to them. +* Guillerme: Oracle have general infrastructure tests that watch for + regressions with new cloud-init images. +* Chad: We want to make it easy to let others run integration tests while also + getting that feedback from other platforms. Are there any public endpoints + that upstream can consume? +* Dermot: What about cloud providers provide a "stock metadata" that allows + providers to provide emulated content to mock the IMDS? + * Robert: Once we mock IMDS, there are other platform services. + +### Demo: Integration testing updates for pycloudlib + +Presented by: James Falcon (Canonical) + +* [Slides: Integration testing updates](https://docs.google.com/presentation/d/1e5p9FW9EI9FxnEyLPhpIA79GVGdyQ2aIVyX8Ggb29L8/) +* Generalized for all clouds. +* Noah M: How do you get the new version of cloud-init on the image under test? + * James: We start from a public image -> + * Launch image -> + * Upgrade cloud-init -> + * Run `cloud-init clean --logs` +* Pycloudlib: + * Most Linux distributions are supported given the ability to discover. +* James: + * Per-PR testing CI runs on Ubuntu on LXD. + * Why would CI [sic] + * Jenkins daily runners give a healthy signal on GCE, EC2, Azure. + * For Rust project: they talked directly to GitHub about increasing governor. + * Chris P: Is there a mechanism to validate certain PRs on Azure? + * In Rust: Bohrs-bot in GitHub to kick off conditional jobs: + * https://forge.rust-lang.org/infra/docs/bors.html + * Fork of https://github.com/rust-lang/homu +* Chris P: Is Jenkins publicly accessible? + * Chad: Nope -- security issue, due to malicious plugins. + * Chris: We would like to trigger specific test runs on Azure. +* Ahn: Do you use merge-queue? To queue CI run after Merging? +* Mina: How has the move from BZR -> GH changed your workflow? + * It feels like there is a stumbling block in how pull requests are being + designed given that some workflows are not ideal for some teams. +* James: I don't think it's realistic for cloud-init upstream to test all + distros in our Jenkins test runner. + * Chris P: What is the blocker to that: cost? + * John C: Some testing accounts are tied to costs and accounts that are + sponsored. + * Chris P: If we can sort cloud accounts/costs, would that provide us with + testing? + * John C: Looking at our matrix, we have to understand the depth we want in + the support matrix -- of how many instance types/sizes. + * Discussions with cloud platforms are needed to determine what instance + type/distro matrix is "good enough". + * Robert S: This matrix only continues to grow and is not sustainable for all + clouds and all distros. It's a combinatorial problem. + * We want the ability to specialize tests to a given cloud based on where the + changes are scoped (per datasource/per distro) to reduce test matrix costs + and make testing sustainable. +* Chris P: If you see upstream tests, does that give you a sense of certainty + that allows you to avoid certain tests? + * Robert S: I just take it and accept the work being done upstream and say + "thank you". +* Robert S: pycloudlib has a dependency problem that makes it hard because it + pulls in all Botocore Azure SDK etc. to support all platforms. + * For some projects in SUSE they have conditional build flags that + limit/segment the dependencies to make it easier to only depend on certain + SDKs. +* Chad: It's possible to add more segmentation in our tests, but would be + valuable. +* Waldi: Debian uses Apache Libcloud. +* Frederick L: There are a number of moving pieces trying to track with the + test matrix. Clouds should be best placed to define proper testing. + * Clouds should do more of the testing as they are best placed to do that + testing. +* John C: Sounds like it talks around a web service that would allow for + posting test results. + * Mina: Can we establish a way to trigger specific builds on Azure on a + per-PR basis? +* Robert S: We have OpenQA, but there's still the issue of cost. + * If upstream works on documentation for integration testing per + distribution, downstreams can consume that and try to leverage those docs + to make per-distro test runs. + * If we have a 30-step procedure for how best to integration test. + * Might want to solve a small problem to define manual steps to enable + downstreams to better integration test, allow developers to enable + integration-tests on their distro/cloud rather than trying to define + bigger funding/policies and public services. + * If it's relatively easy for SUSE to kickoff and run tests, but we'd want more documentation on the procedure for setup and integration test runs +* Takeaways: + * [ACTION] Better docs for integration-tests to onboard other distros/clouds for + testing. + * [ACTION] Improve visibility to upstream test status. + * [ACTION] Microsoft or other clouds engaged in integration-testing should + determine (per-cloud/distro) what makes sense for leveraging where partners + are investing their development time. + * Entire test matrix is likely too large for any single entity to test + everything. +* Robert S: "This is an fdisk problem; this is not my problem". + +### Presentation: Security policy overview + +Presented by: Chad Smith (Canonical) + +* For upstream GitHub pull requests that warrant a security review, add the + label "security". +* [Overview for filing new security issues](https://github.com/canonical/cloud-init/security/policy) +* Either: + 1. Send an email to `cloud-init-security@lists.canonical.com` reporting the + security bug, or + 1. [File a bug](https://bugs.launchpad.net/ubuntu/+source/cloud-init/+filebug) + and mark it as "Private Security". +* After the bug is received, the issue is triaged within 2 working days of + being reported and a response is sent to the reporter. +* The `cloud-init-security@lists.canonical.com` is private. +* Any vulnerability disclosed to the mailing list or filing a private security + bug should be treated as embargoed, since any affected parties will + coordinate a reasonable disclosure release date: + * Disclosure date is based on bug severity, affected party development time + for the release and fix publication +* If a CVE is warranted, the Canonical security team will reserve a CVE ID that + will be represented on the bug and the published bug fix. +* At the disclosure date, an email is sent to `cloud-init@lists.launchpad.net`. +* Review new or dropped contacts needed for security notifications? + [REDACTED emails] + +### Demo: Ubuntu live installer + +Presented by: Dan Bungert (Canonical) + +* [Slides: Subiquity, Autoinstall, and Cloud-init](https://docs.google.com/presentation/d/1Qd3soaBnbz0f3zmtp1IXMotwAqsUW0Llvx5dTbCW_7g/edit#slide=id.g239da370174_0_22) + +### Demo: Canonical CPC, test framework + +Presented by: John Chittum (Canonical public cloud manager) + +* [Slides: Ubuntu Build And Test CloudInit](https://drive.google.com/file/d/1gwrHqpXB9gpY_ddx38jxRY81QDKAV0uu/view?usp=sharing) + + +### Demo: Cloud-init schema validation and validation service + +Presented by: Alberto Contreras (Canonical) + +* [Slides: cloud-init schemas](https://docs.google.com/presentation/d/1Pn2I3dWw4rzbZWxuuU9mTrtbhlJonq3NsX0DLAztkK4) +* Minimal: Some distros have different schemas, how to deal with that? +* Chad: Separate schema files? +* Robert S: This is going to be an "after the fact thing". Users are not going + to use it. +* [ACTION] Print schema warnings / errors to the console / journald: More + visibility. +* Chris P, Robert S, AWS: Hard-error on schema errors is very valuable. +* [ACTION]: Do not show subsequent error traces in the case of a non-valid + cloud-config. +* Noah M: I want hard errors at console for schema validation problems. + * Dermot: Some cloud providers don't give console support by default, so + expecting the "error" output console being your primary means of + communication will not help certain platforms. + * Chris P: Customize strict failures depending on use-case and clouds. + * [ACTION] Investigate providing an option to make schema errors a hard + error at system boot that is configurable by cloud/distro image + creation. Imagine `error_handling` config keys. + +## Day 2 running notes, per session + +### Presentation: cloud-init and Alpine Linux + +Presented by: Dermot Bradley (Alpine Linux) +* [Slides: cloud-init and alpine](https://drive.google.com/file/d/1S1p5d-8aC36H2WPJuE84OK1ynZWv4cfj/view?usp=drive_link) +* 3 years package maintainer for cloud-init and cloud-utils. +* Musl vs. glibc (developer focus is POSIX-compliance, reluctance to + non-POSIX compliance) any strong non-POSIX features devs rely on make this a + blocker to Alpine devs due to Musl dependency. +* Non systemd, busybox's init and [sic] +* Alpine doesn't "not like" systemd, but systemd developers don't support + alternatives to glibc so it makes systemd support tough. +* Alpine not udev, they use mdev. Initframfs uses mdev, so udev support, while + packaged, may cause config friction with other parses of the busybox init + stack. +* `sudo` is packaged but not used in favor of `doas` due to some of the fairly + frequent security concerns with `sudo`. +* Nocould-net writes to ENI and seeing secondary writes of ENI config files + that don't effectively ifdown the previous temporary interfaces. +* Renderer issues with multi-IPv4 addresses showing up in wrong net config + section, likely problems with network config/internal conversion logic. +* Fix hook-hotplug to avoid hadcoding bash for the script. +* Fix lock_passwd: Openssh config: password: * behavior is difference in BSD + vs. Linux; "special cased" due to PAM enabled. + * If PAM is not enabled, * means locked. + * Alpine has PAM/Kerberos/other: + * Alpine has to build images with PAM-enabled otherwise passwords [sic] +* Problems: + * Alpine has to grab latest Python for edge repo. + * Edge repo moves to latest Python 1-2 days for new Python version. + * Could create a window where cloud-init could be broken. +* Future work: + * Alternatives to SSH: dropbear and tinySSH. + * `cc_wireguard` for Alpine, non-Ubuntu. + * Improve console output layout to make it 80 chars wide given IPv6 + output/routes, line-wrap etc. +* [Tooling Dermot uses for creating images](https://github.com/dermotbradley/create-alpine-disk-image) +* Questions: + * Is it worth calling out specific distribution concerns/dependencies in + cloud-init docs (mdev/busybox/non-bash/doas concerns)? + * Noah M: do you need to make it granular per distro: POSIX/non-POSIX + approaches? + * Dermot: May not need much in the way of docs. + * For systemd/non-systemd environments, Alpine isn't alone, Gentoo is in + that, Gentoo directory provides cloud-init code drop-ins. + * Checked in IRC channel to get an impression from the project, didn't + get a handle on the project stance. Opinion is that maybe Alpine is the + only distro using `init.d`. + * Brett H: There was an effort recently -- [Devuan](https://www.devuan.org/) + attempted to add cloud-init and they didn't try to upstream it, COS + (Google) may be using OpenRC, carry sid? + * How do you, as Alpine maintainer, track new issues/features/development or + what needs/ongoing work? + * Prioritization is up to Dermot as maintainer. + * Alpine has official cloud-init images for AWS. + * [Tinycloud](https://gitlab.alpinelinux.org/alpine/cloud/tiny-cloud) that core Alpine developers use. + * [ACTION - done] Dermot to provide links to "official images" in clouds or public + repository/website/service: [Alpine Linux website and downloads](https://alpinelinux.org/cloud/) + * Cost prohibitive to host "official" images in multiple clouds etc. + * Some talk about making official images on GCP and other clouds. + * One person paying for all clouds. + * Noah M: talk to Debian publishing from, AWS account is sponsored by + AWS... there are similar accounts. + * [ACTION] Noah M can help Dermot get in touch with right people for + open source engagement to start talks about open source sponsor + accounts for hosting "official images". + +### Presentation: Documentation overhaul and policy for cloud-init + +Presented by: Sally Makin (Canonical) + +* [Slides](https://docs.google.com/presentation/d/1aULy2jy6yil-wncMLLcHYWsDbFwRjS9aVOvxH-UQk08/edit?usp=sharing) +* Mina: I've seen some people complain that the style is a bit hard to read... + that the fonts are too thin and light -- maybe try Atkinson Hyperlegible. +* Kyler just opened an issue on the docs for how arrow navigation works (module + page, not working as expected). +* Robert S: https://cloud-init.readthedocs.io is distro agnostic, people + discovering docs may get the opposite impression with Canonical/Ubuntu in the + URL -- others may be concerned: + * What do other distro downstreams do? Reflect docs? + * Sally: https://readthedocs.com requires using the company name in the slug + as it's pulled from the repo. I asked RTD support if we could get rid of + that, they said absolutely not. +* Mina suggests https://cloud-init.io (+1 from Noah): + * [ACTION] Access may be an issue, Sally will investigate + +### Roundtable: boot speed in cloud-init + +Chaired by: Chad, Alberto, Catherine Redfield (Canonical) + +* [Slides for discussion points](https://docs.google.com/presentation/d/1OunV5fXFBkxg61y4wzApNmpEbmqIUlLpA9DQ92g7D0Y/edit#slide=id.g25f04f72223_2_0) +* Robert S: Ran time to SSH tests on SUSE years ago. GCE: 38.5s EC2: 52.2s + Azure: 104s. After time to SSH, rest of come up is reasonably consistent. + Does time cloud-init takes make a big difference? +* Noah: These numbers have come way down. Cloud-init is now a bigger part of + it. EC2 has made Amazon Linux changes: IO is a really significant contributor + when IO is cold. Reducing data loaded from disk helps a lot. E.g., reduce + size of initrd. All modules and dependencies being loaded contributes a lot. +* Mina: Firecracker is the biggest one contributing to FreeBSD. + * MicroVM hypervisor: AWS open source project, EC2-specific hypervisor + * Optimizing BSD for Firecracker leads to approaches that could be applicable + to generic hypervisors (Colin Percival) ec2-boot-bench for getting + fine-grained launch time instruments (time to network response, port 22 + open etc). +* Chad: Agreement that time to SSH/network availability on first boot is the + priority. +* Andrew J: Time to SSH may not be what all users actually care about, but it's + what Gartner and others measure when they compare clouds, so it matters + anyway, and it's not a bad proxy measurement. +* EC2 -- vast majority of instances don't reboot, they are torn down after + they're no longer used, upgrade to new instances. +* John C: "time to workload" suggestion from some clouds, but "what workload" + is the important question... hard to define besides just treating SSH. +* Dermot: Typically running chrony (waits til time sync) impact boot time, + individual [sic] +* Mina: Some large cloud-init scenarios include reboot to ensure everything + comes up. +* John: In Kubernetes, time to serve container is most important. +* Noah: Early init might not be as small as you think. Especially BIOS boot. + * 13 CPU instruction 508 bytes of disk at the same time lots of I/Os -- that + significantly impacts cost to boot. + * Less pronounced in UEFI. +* Chad: Compression has a large effect on initrd time. Tradeoff between image + size and speed. Also, complexity of storage and networking stack. Can be 2+ + minutes for very complex instance types (back to slides so not taking notes + on that). +* Dermot: Does GRUB currently make use of any seed passed by UEFI? That would + speed up initial entropy seeding. Re: stage 3 improvements. +* Noah: Time spent generating SSH host keys. +* Noah: Can we reduce IMDS keys and limit the initial crawl footprint for + init-local? + * Can we ask for a single JSON representation of critical config data. + * Guillaume: We might not get a warm initial response but if it's never + asked for it will never be put into any roadmap either. + * CatRed: To answer your initial question, we know what minimal keys we need, + * To ask for individual keys, it may make sense to look at a single URL to + obtain that data. + * Could we ask for "cloud-init-local" URL from IMDS to seed content? + * Noah M: Early boot keys is not necessarily cloud-init-specific so it may be + easier to define a generalized "early boot config" that isn't + cloud-specific. + * Noah M: The CPU cost associated with multiple requests amortized across all + of EC2 is likely to be very high; the potential for savings is also high + and therefore may be justified in order to improve boot time, improve + performance, and reduce costs. + * Also consider early boot keys in non-network locations (e.g., SMBIOS). +* Dermot: Also look at caching opening the JSON schema file. +* Chad/John: Avoid cost of ephemeral DHCP by keeping the IMDS data local to + the instance rather than using network (also cuts down security concerns). +* Chad: Considering pre-compiled binary too, but that would be a big + effort/cost. +* Noah: Rather than re-initializing everything, can we use a persistent + process? + * Investigated a signal/flag condition that'd avoid loading Python in later + boot stages to avoid the Python initialization cost. + * Noah has seen hundreds of milliseconds for Python spin-up. + * Chad: Also an option to have a smaller cloud-init with reduced stages. +* Biggest question around removing host key types: are certain ones required + for compliance? In Amazon we had to re-enable older types for FIPS. +* Chris: On some distros, SSH starts early and then needs to restart after SSH + module. If the module moved earlier, we might be able to cut the restart. +* Robert: For use cases that need large scale, you'll probably have a minimal + cloud-config, so we probably shouldn't worry about efficiencies in the later + modules. +* Dan: We've had a few bugs around implicit ordering cycles. +* Chad: If we change/remove waiting for snap seeding, there's no indication + that cloud-init is actually waiting for snap seeding. +* Minimal cloud-init in a precompiled language. + * Nells: Would definitely be interested in collaborating should Rust be + pursued. +* [ACTION] John: Get from clouds/partners: what is the minimal system/features + that partners care about. + * User creation, SSH key setup, what kind of network config is needed. + * E.g., smart NICs, appliances, or immutable apps/solutions. +* Robert: Images with cloud-init vs. images with Ignition + Afterburn. On the + spot numbers for consideration: + * Data collected on EC2 on t2.micro in us-east-1. + * Instance of SLE-Micro which uses Ignition/Afterburn. + * Startup finished in 2.860s (kernel) + 12.437s (initrd). + * SLES 15 SP5 basically the same initrd (no Ignition/Afterburn). + * Startup finished in 2.716s (kernel) + 5.160s (initrd). + * Cloud-init in this instance (all services per `systemd-analyze`) 11.143s. + * Off this 9.248s cloud-init-local.service. +* Log levels: + * []: Noted that they do find the logs saying how many bytes are read -- + logs helpful for debugging. + +### Demo: instance-id in LXD + +Presented by: James + +* Followed by roundtable +* [Roundtable slides: instance-id](https://docs.google.com/presentation/d/1VYYKUErQcMiYLFN0Slisz-bYT8f_iskiu-bkyWrZp70/edit#slide=id.g2595c67feb8_0_0) +* Can we determine a consistent set of rules for when we get a new instance-id + from clouds and what it means to cloud-init for those cases? +* Noah M: If a host is rebooted and IMDS is unavailable, cloud-init (upon + seeing new instance ID) triggers the "re-run" behavior which is undesirable. + * If we have a way to see instance-id out of something like SMBIOS, it would + prevent unnecessarily triggering re-run from cloud-init. +* Chad: This is happening because datasource moved from "DataSourceEC2" to + "DataSourceNone". We can likely improve this behavior as instances usually + aren't being moved between clouds. +* Some clouds use regen network per boot: + * Amazon Linux regenerates network every boot and doesn't use cloud-init for + that. + * Frederick: Some customers felt they wanted to block IMDS access after first + boot for their use case. +* Mina: Any goal to make modules more idempotent? + * Chad: A good ideal and something that we can document as policy/intent for + both module creation as well as ongoing module review. + * [ACTION] follow-up to define policy or approach for better ensuring and + reviewing idempotent `PER_INSTANCE` defined `cc_*` module runs in light of + reruns will be idempotent. +* Is it useful to have a separate mechanism to define a scoped IS change to + limit scope of the config changes cloud-init takes (network vs. everything + vs. an individual config modules)? + +### Demo: cloud testing tools in cloud-init ecosystem + +Presented by: Chris Patterson and Ahn Vo (Microsoft) + +* We all build our own tools/testing/performance/reliability. +* Are there tools out there for perf and reliability that could be leveraged? + * We may all have downstream/specific tools to scrape cloud-init logs looking + at `cloud-init.logs` to scape WARNINGS/ERRORS from logs to determine [sic] +* Azure spends a lot of time to detect errors as discovered in-house, to define + dhclient failed to bring up networking in PPS stage. +* If there were a repo where partners can provide their `regex` for log + analysis, to determine failures and watch for regressions. +* LISA tools do their own thing, we do our own thing. +* Anh: cloud-init collect logs; can we supplement or reduce the files that are + being collected, maybe with a manifest? + * Chad: sounds like a good feature request. + * [ACTION] file a bug for this feature for extending default behavior. +* Chris P: Are there scripts/checkpoints for regressions? + * Robert S: When I do cloud-init update to latest release I create new images + and launch on cloud X,Y,Z uses [sic] +* Chris P: are there plans to surface `cloud-init status --format=json`? + * Brett H: work in progress on warnings raised through cloud-init status + * There is a desire from Azure to also reflect schema warnings as more visible in console logs + +### Roundtable: Rotten tomatoes: what can the cloud-init project do better? + +Brainstorming session on areas for improvement, policy changes, automation, +feature sets, and communication changes that may help improve cloud-init as a +project / engagement from communities. Open season for suggestions, gripes, +improvements to be had! + +**How should we engage the community more? What blocks you?** + +* Former IRC meetings are no longer held, having synchronous meetings wasn't + supportable and significantly useful for broad timezone support. + * Mina: That status meeting was always at a terrible time... for people with + small children in Europe, anyway. + +**Preferred communication?** +* Noah: Mailing list + * Robert: Mail is good. Meetings were nice but too busy and not great time to + attend. Weekly summary would be nice. + * Noah: More than just `git log`, but a top level summary would be best. + * Maybe weekly link list of landed PRs, GH account name. + * [ACTION] Work with NellS (Microsoft) to better define weekly digests from + GitHub and reporting (to cloud-init mailing list) the landed PRs and + authors, maybe supplemental context. +* Robert: It'd be good to better highlight the problems/actions taken for a + CVE, especially when historical data is involved. + * [ACTION] review security policy for data we release to our security + partners. If we know we are dealing with distro-specific and packaging + concerns, it's best to provide that to partners during embargo time to + allow them to prepare. +* Noah M: Small request -- really dislike "squash merge" on all pull requests. + * It discards what I've done and the way I've architected the cohesive + changes and understanding the intent. Prevents my ability in the future to + understand the thought process for my changeset to bisect problems when + they show up. +* Mina: That sounds like what I was talking about yesterday with respect to the + PR workflow... https://jg.gg/2018/09/29/stacked-diffs-versus-pull-requests/ + * Stacked Diffs Versus Pull Requests | Jackson Gabbard's Blog + * A post from Jackson Gabbard on Jackson Gabbard's Blog provided by: + https://jg.gg + * Mina: "I'll just open more pull requests" -- that's really difficult to do + though, if they build on each other. +* [ACTION] Define policy or option for opting out of squash merges and what + expectations there are around pull requests that want to avoid squash merges, + and put it to the mailing list: + * Mina: If opting out of squash merges, we probably want CI to pass on each + commit. + * Noah M: Part of the value of preserving individual commits is that you can + use `git bisect` to check those commits individually and assert which + commit broke. + * Your individual commits shouldn't break the code so you need to + understand what went wrong. + +**Strong opinions around the mailing list vs. Discourse (forums)** + +* John C: The nice thing about Discourse is that you can set up digests that + act like mailing lists, Discourse provides the opportunity to dive deeper if + necessary. +* James: Appreciate the ability to subscribe to individual threads. +* Noah + Robert: Prefer email. +* Robert S: Document list of config modules per distro. + +### Roundtable: ISC-dhclient deprecation status + +Chaired by: Brett Holman (Canonical) + +* Review of changes that have happened in cloud-init for DHCP support. +* Questions/comments? + * Robert S: SUSE has an interest in getting rid of the dhcpclient, file a + request to make NetworkManager's dhclient callable from the command line. +* [INVESTIGATION] Dermot: Is IPv6 support considered in this + migration/deprecation?? +* Noah M: EC2 Amazon Linux: Talked about using a link local IPv4 address + statically, or randomly choosing the address to avoid round trips with DHCP + server, which is unnecessary. + * EC2 doesn't use IPv6 LL but rather Unique Local address. + * VPC == funny network, not proper layer2 network, don't have to worry about + address conflicts + * Brett H: Can be used as performance optimization but not cloud generic. + * Walkthrough of PRs to support this feature set over the last year. +* Robert S: Maybe we rip all it out and farm it out to the kernel, Oracle + requires network address in initrd. +* John C: initrd for Ubuntu is only a fallback mechanism if kernel itself does + not boot -- straight kernel == no initrd. +* Chris P: In most cases we are doing DHCP on boot, why not have that DHCP + config already in the image? + * For iSCSI solutions, initrd has to have network up to get hold of the + storage, so leverage it where necessary. + * And NetworkManager has a DHCP engine that is not exposed on the command + line -- might be able to get solutions that provide this. +* Amazon Linux: uses systemd-networkd. + +### Wrap-up / Thanks + +* Takeaways / roundtable / group retrospective on how the summit was organized. +* Physical summit location query + * Seattle most likely candidate for next summit. + * If European physical summit, may not have as much attendance from west + coast clouds. + * Merging cloud-init with UDS location as a separate conference? + * What could be better handled next summit: + * Communication? + * Planning of firm talk start/stop talk times Y/N? + * Types of talks, discussions, demos? + * Timing of talks/timezone? + * How to increase participation? + * How was remote accessibility? + * Should we open this up this event more broadly to the general community + for drop-ins via public mailing list post/IRC post of talk times? + * [YOUR_SUGGESTION_HERE] +* Would virtual conference get engagement? +* Project improvements + * Communication channels? + * Security publications? + * Release frequencies: ~time based quarterly + * Release hotfixes: patch release versioning on a 23.2.X pushed to GitHub, + email sent out with the update. + * [YOUR_IDEA_HERE] + * Action items, investigations and follow-ups. + * Continue to drive toward multi-distro/cloud integration-test adoption: + * Add more official docs around integration test procedure for a new + platform/distro. + +Potential breakout development sessions from earlier discussions: +* Nells: Bring RUST GitHub workflows and policy to cloud-init. +* Better enabling integration-test use in non-Ubuntu environments. + * Walk through procedure to get other distributions, drive live demo of + integration testing, propose doc updates for extending integration tests on + a new distribution. +* Strawman proposal for Schema warnings treated as hard errors (want + configurable setting in images for certain platforms bool T/F, default False). +* Branch schema warnings emitted to console, not just logs. +* [ACTION] Review and discuss policy changes [around commits](https://www.conventionalcommits.org/en/v1.0.0). + +Notes: +* Amazon Linux: every 2 years for release, would be more likely to snapshot + cloud-init upstream released. + * Some custom config modules for SELinux startup and other modules that may + make sense to drive some of those changes. +* AL2023: version repositories. + * When launching 2023 it's pinned to a specific version of the repository. +* AL1, AL2 and 2023 are different products: + * Realistically have only shipped 3 versions of cloud-init. From 57c0314978a8eb8f60d9692280e878985348786b Mon Sep 17 00:00:00 2001 From: Chad Smith Date: Tue, 17 Oct 2023 16:10:02 -0600 Subject: [PATCH 0664/1174] boothook: allow stdout/stderr to emit to cloud-init-output.log Fixes GH-3016 --- cloudinit/handlers/boot_hook.py | 3 +- .../modules/test_boothook.py | 39 +++++++++++++++++++ .../test_multi_part_user_data_handling.py | 26 +++++++++++++ tests/unittests/test_builtin_handlers.py | 26 +++++++++++++ 4 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 tests/integration_tests/modules/test_boothook.py diff --git a/cloudinit/handlers/boot_hook.py b/cloudinit/handlers/boot_hook.py index 2f373620c93..7ef30072ba9 100644 --- a/cloudinit/handlers/boot_hook.py +++ b/cloudinit/handlers/boot_hook.py @@ -47,7 +47,8 @@ def handle_part(self, data, ctype, filename, payload, frequency): env = os.environ.copy() if self.instance_id is not None: env["INSTANCE_ID"] = str(self.instance_id) - subp.subp([filepath], env=env) + LOG.debug("Executing boothook") + subp.subp([filepath], env=env, capture=False) except subp.ProcessExecutionError: util.logexc(LOG, "Boothooks script %s execution error", filepath) except Exception: diff --git a/tests/integration_tests/modules/test_boothook.py b/tests/integration_tests/modules/test_boothook.py new file mode 100644 index 00000000000..e2a289b4f29 --- /dev/null +++ b/tests/integration_tests/modules/test_boothook.py @@ -0,0 +1,39 @@ +# This file is part of cloud-init. See LICENSE file for license information. +import re + +import pytest + +from tests.integration_tests.instances import IntegrationInstance +from tests.integration_tests.util import verify_clean_log + +USER_DATA = """\ +#cloud-boothook +#!/bin/sh +# Error below will generate stderr +BOOTHOOK/0 +echo BOOTHOOKstdout +echo "BOOTHOOK: $INSTANCE_ID: is called every boot." >> /boothook.txt +""" + + +@pytest.mark.user_data(USER_DATA) +def test_boothook_header_runs_part_per_instance(client: IntegrationInstance): + """Test boothook handling creates a script that runs per-boot. + Streams stderr and stdout are directed to /var/log/cloud-init-output.log. + """ + instance_id = client.instance.execute("cloud-init query instance-id") + RE_BOOTHOOK = f"BOOTHOOK: {instance_id}: is called every boot" + log = client.read_from_file("/var/log/cloud-init.log") + verify_clean_log(log) + output = client.read_from_file("/boothook.txt") + assert 1 == len(re.findall(RE_BOOTHOOK, output)) + client.restart() + output = client.read_from_file("/boothook.txt") + assert 2 == len(re.findall(RE_BOOTHOOK, output)) + output_log = client.read_from_file("/var/log/cloud-init-output.log") + expected_msgs = [ + "BOOTHOOKstdout", + "boothooks/part-001: 3: BOOTHOOK/0: not found", + ] + for msg in expected_msgs: + assert msg in output_log diff --git a/tests/integration_tests/test_multi_part_user_data_handling.py b/tests/integration_tests/test_multi_part_user_data_handling.py index 4b52e389bc4..a81c9fd9aea 100644 --- a/tests/integration_tests/test_multi_part_user_data_handling.py +++ b/tests/integration_tests/test_multi_part_user_data_handling.py @@ -64,6 +64,18 @@ ] MIME_WITH_ERRORS = create_mime_message(CLOUD_CONFIG_FILES)[0].as_string() +CLOUD_CONFIG_ARCHIVE = """ +#cloud-config-archive +- type: 'text/cloud-boothook' + content: | + #!/bin/sh + echo "BOOTHOOK: $(date -R): this is called every boot." | tee /run/boothook.txt +- type: 'text/cloud-config' + content: | + bootcmd: + - [sh, -c, 'echo "BOOTCMD: $(date -R): $INSTANCE_ID" | tee /run/bootcmd.txt'] +""" # noqa: E501 + @pytest.mark.skipif( PLATFORM == "qemu", reason="QEMU only supports #cloud-config userdata" @@ -139,3 +151,17 @@ def test_mime_with_error_parts(client: IntegrationInstance): assert ( "Failed at merging in cloud config part from cfg-invalid.yaml" in log ) + + +@pytest.mark.ci +@pytest.mark.user_data(CLOUD_CONFIG_ARCHIVE) +def test_cloud_config_archive_boot_hook_logging(client: IntegrationInstance): + """ + boot-hook and bootcmd scripts run per boot and log to cloud-init-outout.log + """ + cmd = "cloud-init schema --system" + assert "Valid schema user-data" in client.execute(cmd).stdout + client.restart() + log = client.read_from_file("/var/log/cloud-init-output.log") + assert 2 == len(re.findall("BOOTHOOK:.*", log)) + assert 2 == len(re.findall("BOOTCMD:.*", log)) diff --git a/tests/unittests/test_builtin_handlers.py b/tests/unittests/test_builtin_handlers.py index 6ae156ee251..cc3f2801708 100644 --- a/tests/unittests/test_builtin_handlers.py +++ b/tests/unittests/test_builtin_handlers.py @@ -11,6 +11,7 @@ from cloudinit import atomic_helper, handlers, helpers, util from cloudinit.cmd.devel import read_cfg_paths +from cloudinit.handlers.boot_hook import BootHookPartHandler from cloudinit.handlers.cloud_config import CloudConfigPartHandler from cloudinit.handlers.jinja_template import ( JinjaLoadError, @@ -25,6 +26,7 @@ ) from cloudinit.settings import PER_ALWAYS, PER_INSTANCE, PER_ONCE from tests.unittests.helpers import CiTestCase, mock, skipUnlessJinja +from tests.unittests.util import FakeDataSource INSTANCE_DATA_FILE = "instance-data-sensitive.json" @@ -427,3 +429,27 @@ def test_get_script_folder_per_instance(self): def test_get_script_folder_per_once(self): self.do_test_frequency(PER_ONCE) + + +@pytest.mark.allow_all_subp +@pytest.mark.usefixtures("fake_filesystem") +class TestBootHookHandler: + def test_handle_part(self, paths, tmpdir, capfd): + paths.get_ipath = paths.get_ipath_cur + datasource = FakeDataSource(paths=paths) + handler = BootHookPartHandler(paths=paths, datasource=datasource) + # Setup /dev/null file for supb because no data param present + tmpdir.mkdir("/dev/") + tmpdir.join("dev/null").write("") + assert handler.boothook_dir == f"{tmpdir}/cloud_dir/instance/boothooks" + payload = f"#!/bin/sh\necho id:$INSTANCE_ID | tee {tmpdir}/boothook\n" + handler.handle_part( + data="dontcare", + ctype="text/cloud-boothook", + filename="part-001", + payload=payload, + frequency=None, + ) + assert payload == util.load_file(f"{handler.boothook_dir}/part-001") + assert "id:i-testing\n" == util.load_file(f"{tmpdir}/boothook") + assert "id:i-testing\n" == capfd.readouterr().out From ac115a955324b83ec32432805cb403fcf97bf6c0 Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Fri, 27 Oct 2023 13:59:03 -0600 Subject: [PATCH 0665/1174] Clarify boothook docs (#4543) --- doc/rtd/explanation/boot.rst | 5 ++--- doc/rtd/reference/datasources/configdrive.rst | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/rtd/explanation/boot.rst b/doc/rtd/explanation/boot.rst index 02176a0121f..457c4155990 100644 --- a/doc/rtd/explanation/boot.rst +++ b/doc/rtd/explanation/boot.rst @@ -107,9 +107,8 @@ mounted, including ones that have stale (previous instance) references in :file:`/etc/fstab`. As such, entries in :file:`/etc/fstab` other than those necessary for cloud-init to run should not be done until after this stage. -A part-handler will run at this stage, as will boothooks including -cloud-config ``bootcmd``. The user of this functionality has to be aware -that the system is in the process of booting when their code runs. +A part-handler and :ref:`boothooks` +will run at this stage. .. _boot-Config: diff --git a/doc/rtd/reference/datasources/configdrive.rst b/doc/rtd/reference/datasources/configdrive.rst index 17913517819..8ce5e6a22c9 100644 --- a/doc/rtd/reference/datasources/configdrive.rst +++ b/doc/rtd/reference/datasources/configdrive.rst @@ -95,7 +95,7 @@ default it is 'pass', meaning this datasource should not be read. Set it to datasources after network config. The difference between 'local' and 'net' is that local will not require -networking to be up before user-data actions (or boothooks) are run. +networking to be up before user-data actions are run. ``instance-id`` --------------- From 1da5b67c4e7cdc7bd73cec172c367c9de779c87f Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Fri, 27 Oct 2023 16:26:46 -0400 Subject: [PATCH 0666/1174] azure/imds: ensure new errors are logged immediately when retrying (#4468) When retrying to fetch metadata from IMDS there is a backoff for logging to avoid flooding the logs. In the current implementation we have to wait until the next backoff log to see the transition. Always log when the current error does not match the previous one. Signed-off-by: Chris Patterson --- cloudinit/sources/azure/imds.py | 20 +- tests/unittests/sources/azure/test_imds.py | 363 ++++++++++++++++----- 2 files changed, 298 insertions(+), 85 deletions(-) diff --git a/cloudinit/sources/azure/imds.py b/cloudinit/sources/azure/imds.py index 8ab2b652c51..7a831f85247 100644 --- a/cloudinit/sources/azure/imds.py +++ b/cloudinit/sources/azure/imds.py @@ -4,7 +4,7 @@ import logging from time import time -from typing import Dict, Optional +from typing import Dict, Optional, Type, Union import requests @@ -45,6 +45,7 @@ def __init__( self.retry_deadline = retry_deadline self._logging_threshold = 1.0 self._request_count = 0 + self._last_error: Union[None, Type, int] = None def exception_callback(self, req_args, exception) -> bool: self._request_count += 1 @@ -80,6 +81,23 @@ def exception_callback(self, req_args, exception) -> bool: else: log = False + # Always log if error does not match previous. + if exception.code is not None: + # This is an HTTP response with failing code, log if different. + if self._last_error != exception.code: + log = True + self._last_error = exception.code + elif ( + # No previous error to match against. + self._last_error is None + # Previous error is exception code (int). + or not isinstance(self._last_error, type) + # Previous error is different class. + or not isinstance(exception.cause, self._last_error) + ): + log = True + self._last_error = type(exception.cause) + if log or not retry: report_diagnostic_event( "Polling IMDS failed attempt %d with exception: %r" diff --git a/tests/unittests/sources/azure/test_imds.py b/tests/unittests/sources/azure/test_imds.py index a7c1bdf052f..cb87a39dc6a 100644 --- a/tests/unittests/sources/azure/test_imds.py +++ b/tests/unittests/sources/azure/test_imds.py @@ -8,6 +8,7 @@ import pytest import requests +import responses from cloudinit.sources.azure import imds from cloudinit.url_helper import UrlError, readurl @@ -23,6 +24,24 @@ def __init__(self, regex) -> None: def __eq__(self, other) -> bool: return bool(re.match("^" + self.regex + "$", other)) + def __repr__(self) -> str: + return repr(self.regex) + + +@pytest.fixture(autouse=True) +def caplog(caplog): + # Ensure caplog is set to debug. + caplog.set_level(logging.DEBUG) + yield caplog + + +@pytest.fixture +def mock_requests(): + with responses.RequestsMock( + assert_all_requests_are_fired=True + ) as response: + yield response + @pytest.fixture def wrapped_readurl(): @@ -67,6 +86,49 @@ def fake_http_error_for_code(status_code: int): ) +REQUESTS_CONNECTION_ERROR = requests.ConnectionError("Fake connection error") + +REQUESTS_TIMEOUT_ERROR = requests.Timeout("Fake connection timeout") + + +def add_errors_to_mock_requests(mock_requests, errors, url): + def callback_connection_error(request): + raise REQUESTS_CONNECTION_ERROR + + def callback_timeout(request): + raise REQUESTS_TIMEOUT_ERROR + + for error in errors: + if isinstance(error, int): + mock_requests.add( + method=responses.GET, + url=url, + status=error, + ) + elif error == REQUESTS_CONNECTION_ERROR: + mock_requests.add_callback( + method=responses.GET, + url=url, + callback=callback_connection_error, + ) + elif error == REQUESTS_TIMEOUT_ERROR: + mock_requests.add_callback( + method=responses.GET, + url=url, + callback=callback_timeout, + ) + else: + assert False + + +def regex_for_http_error(error): + if isinstance(error, int): + return f".*{error!s}.*" + + # Returns 'Fake connection error' or 'Fake connection timeout' + return f".*{error!s}.*" + + class TestFetchMetadataWithApiFallback: default_url = ( "http://169.254.169.254/metadata/instance?" @@ -75,6 +137,9 @@ class TestFetchMetadataWithApiFallback: fallback_url = ( "http://169.254.169.254/metadata/instance?api-version=2019-06-01" ) + + # Early versions of responses do not appreciate the parameters... + base_url = "http://169.254.169.254/metadata/instance" headers = {"Metadata": "true"} timeout = 30 @@ -82,14 +147,17 @@ class TestFetchMetadataWithApiFallback: def test_basic( self, caplog, - mock_requests_session_request, retry_deadline, wrapped_readurl, + mock_requests, ): fake_md = {"foo": {"bar": []}} - mock_requests_session_request.side_effect = [ - mock.Mock(content=json.dumps(fake_md)), - ] + mock_requests.add( + method=responses.GET, + url=self.base_url, + json=fake_md, + status=200, + ) md = imds.fetch_metadata_with_api_fallback( retry_deadline=retry_deadline @@ -121,17 +189,20 @@ def test_basic( @pytest.mark.parametrize("retry_deadline", [0.0, 1.0, 60.0]) def test_basic_fallback( - self, - caplog, - mock_requests_session_request, - retry_deadline, - wrapped_readurl, + self, caplog, retry_deadline, wrapped_readurl, mock_requests ): fake_md = {"foo": {"bar": []}} - mock_requests_session_request.side_effect = [ - UrlError("No IMDS version", code=400), - mock.Mock(content=json.dumps(fake_md)), - ] + mock_requests.add( + method=responses.GET, + url=self.base_url, + status=400, + ) + mock_requests.add( + method=responses.GET, + url=self.base_url, + json=fake_md, + status=200, + ) md = imds.fetch_metadata_with_api_fallback( retry_deadline=retry_deadline @@ -163,10 +234,17 @@ def test_basic_fallback( logging.DEBUG, StringMatch(r"\[0/infinite\] open.*"), ), + ( + LOG_PATH, + logging.INFO, + StringMatch("Polling IMDS failed attempt 1 with.*400.*"), + ), ( LOG_PATH, logging.WARNING, - "Failed to fetch metadata from IMDS: No IMDS version", + StringMatch( + "Failed to fetch metadata from IMDS:.*400 Client Error.*" + ), ), ( LOG_PATH, @@ -181,44 +259,53 @@ def test_basic_fallback( ( "cloudinit.url_helper", logging.DEBUG, - StringMatch("Read from.*"), + f"Read from {self.fallback_url} (200, 20b) after 1 attempts", ), ] @pytest.mark.parametrize( "error", [ - fake_http_error_for_code(404), - fake_http_error_for_code(410), - fake_http_error_for_code(429), - fake_http_error_for_code(500), - requests.ConnectionError("Fake connection error"), - requests.Timeout("Fake connection timeout"), + 404, + 410, + 429, + 500, + REQUESTS_CONNECTION_ERROR, + REQUESTS_TIMEOUT_ERROR, ], ) - @pytest.mark.parametrize("max_attempts,retry_deadline", [(2, 1.0)]) + @pytest.mark.parametrize("error_count,retry_deadline", [(1, 2.0)]) def test_will_retry_errors( self, caplog, - max_attempts, retry_deadline, - mock_requests_session_request, + mock_requests, mock_url_helper_time_sleep, error, + error_count, ): fake_md = {"foo": {"bar": []}} - mock_requests_session_request.side_effect = [ - error, - mock.Mock(content=json.dumps(fake_md)), - ] + add_errors_to_mock_requests( + mock_requests, [error] * error_count, self.base_url + ) + mock_requests.add( + method=responses.GET, + url=self.base_url, + json=fake_md, + status=200, + ) md = imds.fetch_metadata_with_api_fallback( retry_deadline=retry_deadline ) assert md == fake_md - assert len(mock_requests_session_request.mock_calls) == max_attempts - assert mock_url_helper_time_sleep.mock_calls == [mock.call(1)] + assert ( + mock_url_helper_time_sleep.mock_calls + == [mock.call(1)] * error_count + ) + + error_regex = regex_for_http_error(error) assert caplog.record_tuples == [ ( "cloudinit.url_helper", @@ -229,8 +316,8 @@ def test_will_retry_errors( LOG_PATH, logging.INFO, StringMatch( - "Polling IMDS failed attempt 1 with exception:" - f".*{error!s}.*" + "Polling IMDS failed attempt 1 with exception: " + f"{error_regex}" ), ), ( @@ -255,24 +342,32 @@ def test_will_retry_errors_on_fallback( self, caplog, retry_deadline, - mock_requests_session_request, + mock_requests, mock_url_helper_time_sleep, ): - error = fake_http_error_for_code(400) fake_md = {"foo": {"bar": []}} - mock_requests_session_request.side_effect = [ - error, - fake_http_error_for_code(429), - mock.Mock(content=json.dumps(fake_md)), - ] - max_attempts = len(mock_requests_session_request.side_effect) + mock_requests.add( + method=responses.GET, + url=self.base_url, + status=400, + ) + mock_requests.add( + method=responses.GET, + url=self.base_url, + status=429, + ) + mock_requests.add( + method=responses.GET, + url=self.base_url, + json=fake_md, + status=200, + ) md = imds.fetch_metadata_with_api_fallback( retry_deadline=retry_deadline ) assert md == fake_md - assert len(mock_requests_session_request.mock_calls) == max_attempts assert mock_url_helper_time_sleep.mock_calls == [mock.call(1)] assert caplog.record_tuples == [ ( @@ -284,14 +379,15 @@ def test_will_retry_errors_on_fallback( LOG_PATH, logging.INFO, StringMatch( - "Polling IMDS failed attempt 1 with exception:" - f".*{error!s}.*" + "Polling IMDS failed attempt 1 with exception:.*400.*" ), ), ( LOG_PATH, logging.WARNING, - "Failed to fetch metadata from IMDS: fake error", + StringMatch( + "Failed to fetch metadata from IMDS:.*400 Client Error.*" + ), ), ( LOG_PATH, @@ -307,8 +403,7 @@ def test_will_retry_errors_on_fallback( LOG_PATH, logging.INFO, StringMatch( - "Polling IMDS failed attempt 1 with exception:" - f".*{error!s}.*" + "Polling IMDS failed attempt 1 with exception:.*429.*" ), ), ( @@ -331,45 +426,51 @@ def test_will_retry_errors_on_fallback( @pytest.mark.parametrize( "error", [ - fake_http_error_for_code(404), - fake_http_error_for_code(410), - fake_http_error_for_code(429), - fake_http_error_for_code(500), - requests.ConnectionError("Fake connection error"), - requests.Timeout("Fake connection timeout"), + 404, + 410, + 429, + 500, + REQUESTS_CONNECTION_ERROR, + REQUESTS_TIMEOUT_ERROR, ], ) @pytest.mark.parametrize( - "max_attempts,retry_deadline", [(1, 0.0), (2, 1.0), (301, 300.0)] + "error_count,retry_deadline", [(1, 0.0), (2, 1.0), (301, 300.0)] ) def test_retry_until_failure( self, error, - max_attempts, + error_count, retry_deadline, caplog, - mock_requests_session_request, + mock_requests, mock_url_helper_time_sleep, ): - mock_requests_session_request.side_effect = error + add_errors_to_mock_requests( + mock_requests, [error] * error_count, self.base_url + ) with pytest.raises(UrlError) as exc_info: imds.fetch_metadata_with_api_fallback( retry_deadline=retry_deadline ) - assert exc_info.value.cause == error + error_regex = regex_for_http_error(error) + assert re.search(error_regex, str(exc_info.value.cause)) # Connection errors max out at 11 attempts. - max_attempts = ( - 11 - if isinstance(error, requests.ConnectionError) - and max_attempts > 11 - else max_attempts - ) - assert len(mock_requests_session_request.mock_calls) == (max_attempts) + if error == REQUESTS_CONNECTION_ERROR and error_count > 11: + error_count = ( + 11 + if error == REQUESTS_CONNECTION_ERROR and error_count > 11 + else error_count + ) + + # mock_requests will assert since not all calls were made. + mock_requests.assert_all_requests_are_fired = False + assert mock_url_helper_time_sleep.mock_calls == [mock.call(1)] * ( - max_attempts - 1 + error_count - 1 ) logs = [x for x in caplog.record_tuples if x[0] == LOG_PATH] @@ -379,23 +480,25 @@ def test_retry_until_failure( logging.INFO, StringMatch( f"Polling IMDS failed attempt {i} with exception:" - f".*{error!s}.*" + f"{error_regex}" ), ) - for i in range(1, max_attempts + 1) + for i in range(1, error_count + 1) ] + [ ( LOG_PATH, logging.WARNING, - f"Failed to fetch metadata from IMDS: {error!s}", + StringMatch( + f"Failed to fetch metadata from IMDS: {error_regex}", + ), ) ] @pytest.mark.parametrize( "error", [ - fake_http_error_for_code(403), - fake_http_error_for_code(501), + 403, + 501, ], ) @pytest.mark.parametrize("retry_deadline", [0.0, 1.0, 60.0]) @@ -404,22 +507,22 @@ def test_will_not_retry_errors( error, retry_deadline, caplog, - mock_requests_session_request, + mock_requests, mock_url_helper_time_sleep, ): - fake_md = {"foo": {"bar": []}} - mock_requests_session_request.side_effect = [ - error, - mock.Mock(content=json.dumps(fake_md)), - ] + mock_requests.add( + method=responses.GET, + url=self.base_url, + status=error, + ) with pytest.raises(UrlError) as exc_info: imds.fetch_metadata_with_api_fallback( retry_deadline=retry_deadline ) - assert exc_info.value.cause == error - assert len(mock_requests_session_request.mock_calls) == 1 + error_regex = regex_for_http_error(error) + assert re.search(error_regex, str(exc_info.value.cause)) assert mock_url_helper_time_sleep.mock_calls == [] assert caplog.record_tuples == [ @@ -433,27 +536,33 @@ def test_will_not_retry_errors( logging.INFO, StringMatch( "Polling IMDS failed attempt 1 with exception:" - f".*{error!s}.*" + f".*{error_regex}" ), ), ( LOG_PATH, logging.WARNING, - f"Failed to fetch metadata from IMDS: {error!s}", + StringMatch( + f"Failed to fetch metadata from IMDS: {error_regex!s}" + ), ), ] + @pytest.mark.parametrize("body", ["", "invalid", ""]) @pytest.mark.parametrize("retry_deadline", [0.0, 1.0, 60.0]) def test_non_json_repsonse( self, + body, retry_deadline, caplog, - mock_requests_session_request, + mock_requests, wrapped_readurl, ): - mock_requests_session_request.side_effect = [ - mock.Mock(content=b"bad data") - ] + mock_requests.add( + method=responses.GET, + url=self.base_url, + body=body, + ) with pytest.raises(ValueError): imds.fetch_metadata_with_api_fallback( @@ -481,6 +590,47 @@ def test_non_json_repsonse( ) ] + def test_logs_all_errors( + self, + caplog, + mock_requests, + mock_url_helper_time_sleep, + ): + fake_md = {"foo": {"bar": []}} + + errors = ( + [404] * 10 + + [410] * 10 + + [429] * 10 + + [500] * 10 + + [REQUESTS_CONNECTION_ERROR] * 10 + + [REQUESTS_TIMEOUT_ERROR] * 10 + ) + + add_errors_to_mock_requests(mock_requests, errors, self.base_url) + mock_requests.add( + method=responses.GET, + url=self.base_url, + json=fake_md, + ) + + md = imds.fetch_metadata_with_api_fallback(retry_deadline=300) + + assert md == fake_md + assert mock_url_helper_time_sleep.mock_calls == [mock.call(1)] * ( + len(errors) + ) + + expected_logs = [ + StringMatch( + f"Polling IMDS failed attempt {i} with exception:" + f"{regex_for_http_error(error)}" + ) + for i, error in enumerate(errors, start=1) + ] + logs = [t[2] for t in caplog.record_tuples if "Polling IMDS" in t[2]] + assert logs == expected_logs + class TestFetchReprovisionData: url = ( @@ -490,6 +640,9 @@ class TestFetchReprovisionData: headers = {"Metadata": "true"} timeout = 30 + # Early versions of responses do not appreciate the parameters... + base_url = "http://169.254.169.254/metadata/reprovisiondata" + def test_basic( self, caplog, @@ -685,3 +838,45 @@ def test_will_not_retry_errors( f"{exc_info.value!r}", ), ] + + def test_logs_unique_errors( + self, + caplog, + mock_requests, + mock_url_helper_time_sleep, + ): + content = b"ovf content" + + errors = ( + [404] * 10 + + [410] * 10 + + [429] * 10 + + [404] * 10 + + [410] * 10 + + [429] * 10 + ) + + add_errors_to_mock_requests(mock_requests, errors, self.base_url) + mock_requests.add( + method=responses.GET, + url=self.base_url, + body=content, + ) + + ovf = imds.fetch_reprovision_data() + + assert ovf == content + assert mock_url_helper_time_sleep.mock_calls == [mock.call(1)] * ( + len(errors) + ) + + backoff_logs = [ + StringMatch( + f"Polling IMDS failed attempt {i} with exception:" + f"{regex_for_http_error(error)}" + ) + for i, error in enumerate(errors, start=1) + if i == 1 or math.log2(i).is_integer() or (i - 1) % 10 == 0 + ] + logs = [t[2] for t in caplog.record_tuples if "Polling IMDS" in t[2]] + assert logs == backoff_logs From 8b7e10c086f8d3021a412794bad40e15283d448f Mon Sep 17 00:00:00 2001 From: Brett Holman Date: Fri, 27 Oct 2023 16:56:46 -0600 Subject: [PATCH 0667/1174] doc: Fix incorrect statement about `cloud-init analyze` --- doc/rtd/explanation/analyze.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/rtd/explanation/analyze.rst b/doc/rtd/explanation/analyze.rst index 017e2e5fced..10f41608639 100644 --- a/doc/rtd/explanation/analyze.rst +++ b/doc/rtd/explanation/analyze.rst @@ -27,8 +27,8 @@ The :command:`analyze` command requires one of the four subcommands: Availability ============ -The :command:`analyze` subcommand is generally available across all -distributions, with the exception of Gentoo and FreeBSD. +The :command:`analyze boot` subcommand only works on operating systems that +use `systemd`. Subcommands =========== From 832fd5b47a4063d0fd99e233352948861cc847c7 Mon Sep 17 00:00:00 2001 From: Sally Date: Sun, 29 Oct 2023 15:13:13 +0000 Subject: [PATCH 0668/1174] Add summit digest/trip report to docs (#4561) Also moved images out of the repo (including the ones from previous years) and added to the Ubuntu asset manager for hosting to avoid bloating the repo as time goes on! --- doc/rtd/development/summit.rst | 1 + doc/rtd/development/summit/2017_bridge.jpg | Bin 195074 -> 0 bytes doc/rtd/development/summit/2017_meeting.jpg | Bin 218105 -> 0 bytes doc/rtd/development/summit/2017_seattle.jpg | Bin 73978 -> 0 bytes doc/rtd/development/summit/2017_summit.rst | 10 +- doc/rtd/development/summit/2018_roadmap.jpg | Bin 119405 -> 0 bytes doc/rtd/development/summit/2018_summit.rst | 6 +- doc/rtd/development/summit/2018_talk.jpg | Bin 106470 -> 0 bytes .../development/summit/2018_waterfront.jpg | Bin 2092024 -> 0 bytes doc/rtd/development/summit/2019_amazon.jpg | Bin 693468 -> 0 bytes doc/rtd/development/summit/2019_market.jpg | Bin 734597 -> 0 bytes doc/rtd/development/summit/2019_summit.rst | 4 +- doc/rtd/development/summit/2023_summit.rst | 183 ++++++++++++++++++ 13 files changed, 192 insertions(+), 12 deletions(-) delete mode 100644 doc/rtd/development/summit/2017_bridge.jpg delete mode 100644 doc/rtd/development/summit/2017_meeting.jpg delete mode 100644 doc/rtd/development/summit/2017_seattle.jpg delete mode 100644 doc/rtd/development/summit/2018_roadmap.jpg delete mode 100644 doc/rtd/development/summit/2018_talk.jpg delete mode 100644 doc/rtd/development/summit/2018_waterfront.jpg delete mode 100644 doc/rtd/development/summit/2019_amazon.jpg delete mode 100644 doc/rtd/development/summit/2019_market.jpg create mode 100644 doc/rtd/development/summit/2023_summit.rst diff --git a/doc/rtd/development/summit.rst b/doc/rtd/development/summit.rst index 9c78e5b7e70..decc567baf2 100644 --- a/doc/rtd/development/summit.rst +++ b/doc/rtd/development/summit.rst @@ -22,3 +22,4 @@ Previous summits cloud-init: Summit 2017 summit/2018_summit.rst summit/2019_summit.rst + summit/2023_summit.rst diff --git a/doc/rtd/development/summit/2017_bridge.jpg b/doc/rtd/development/summit/2017_bridge.jpg deleted file mode 100644 index dfaffeb55fa9cf3a6c7e2a5b904a722e1a112675..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195074 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

LKhWSn1CF zehR!doiC1@@d4Cdccs6=I`g%9X1cK|?1&u3>J0qmu#j5dK|i{=?R(-ToY@=&7nn?saM2weA zkUhrxH@YGQ+w4cpU)ba2j?w2^#|=gf3n26vqtj*YI6Rf+(gKw!Tv)Go)WT4R~gWC&Z^7ZAY5>0?IRhneyCEKL4a zr)+XJw4IVZ8`9T+==LW4-;&WJCnpm_pA#GaEz$_1nJAcJoGS5^sF zaq{DHCNg%Pld#pdE7g7rTef!gHKnb{FUyiSg9#O8>_U^ zv)S~&nqATQeyZIJBV%aNz&+I2rB>1ULRyFLf$>%ru<`)>5}-CJ?UhB_Z&s0aRc#Lg zUTKQuO6@eKR_D*j8oZSDv$w%B@Kjbw9w^j&3Xr?xja!cB_@X1Jzlk8VNtB4w{Ow)F>#23)pi-Ar97E zNbH+?yKh9x$6b;RAH;#^XlSGKOG81feyIn5P+wjMhGS{2>WF{>bhHcdNXlKdiDg)eY5&El=CefVZY|H zm$vP#AXh82cZf9ceqmh=Et%CvaHJ(1xe&2ycpDA;iinZ@TS=k3yqX2%4+>D#)C;bA zEN+q3NH<+nE!TEQ{{USRLvVNk!RDjd5O;YVt2b;|ecC>XU9%tEA-8;Cw(cw0j!Xxb1c?(Ry=LTT+Q2w@*RHUnQQ1 z*IjvL@SL$@OLZN=2k54FW`2QTwM){|d^b->BYR7N&PR%KdnY-M4b(Y{rEF#q84|?z zI;o^Ofc|UNJ03X&J&bVv(?L|86@ubV;UTlmny03|qLgrZuATKEZ#cQ&le!eA$GYe^Z<&bIVUp2T0r-# zA0^e34tRhe?UIEM_TH~PYnuFQrjm6v!udKdR&F(^l=fAi01m$Ex{if7z-eJFE~940 zG{!vdb44+~;h+_cgCT$&ak}}2x0lglRk>n;LTj$Q?Bc*Gy+~VI1aEkF#mo(O z1Uaq%2A!Y#1y#31Id3d+w>c@kV zPdAYVe3s0@-A1X}h#q``Y@R3^BMY8b_q4RMjljDrbo?hP9KRMq$msXGF5F7#Iqh&7xlk*$z_<=R zcNfOQ;u(1mV##6BLm7LTYi);1=6WuN8}?ET5i@a)OY)q_Bxh*HmbA1TjaJG8rnhuXbvITcG|oJt8mgxw)2gX2s`timPq~x+4m)Mo0Y(XL9$@+8BdF{7}4?pNBx!J zPUieO>;CXRl9PRv;(cVruMsW%g2j!>o-Z2qdlFW?zR$?=4*KQ??!61y!9BH=k}^2> zQ}H1TF*SghK_u$7mh$D*d9U_6h?BhdZ6xdrhkv4x_DeidOxU(RwD07zao=|F&reT} z><;C}#7lJ;=<`(KXIC0lEIphF7ORd8FjLTs$ zJ1+#1Z+%;R7amMq^?GH3OiRL$6OP!tiyS);7X^)0`0qoD?q+s@rq=G{epv;CM$GW%D3%kR>h19|S z0K(1zCQfb~oJi)GaZZQnU~~^IpzvC6Zv(Ll&hg)6;%6Oi4$9+rygFSZvD4#78zAvv z=-UIAHW9f^Gt~HoCF!>@gFcD~*yvSR^6b)(J7p zdP_~T@+4oX-kkQ#(nH%@n-muR0O+}z!6A|wCWw2qkblWg%vm2#h8Z#dcHxX5U#j#{ zaJi(F@ynRV@!bB=jAUWX1oIcA4S zhQ#sDKpr~V{MT26Kk(CInJSqed#S+ftbWTA*vG_1sN3e}P_-x+=&zH2Z!m0g9tqR3 zT_=;H@|xXc(qrvoZs|4lRp;fL$4227X3xWhhSgPC*7ru~aU*OG*^V0A>Ki!ud8%`8 zn~v5#+6boUY=OgjwR&N?PHy9$Br|TCDLCxaQ35>DQrQ$MsvrW^o*v^K zbZ={^+mDzbS00|uP-A0=794KI^|cgYxVI`N0m;@>s|F?KY;YsM6=9s7 zbhd%fydFT(h-n6kHod&noxa?G>X4XtdVD!5AnOLS5!EXo*sxW`c9v0Ss;~9&NIj

CN}RISS(wKcS`UUSLSoacv|~& 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 cqhujHi{uhnLBLlq0px diff --git a/doc/rtd/development/summit/2017_meeting.jpg b/doc/rtd/development/summit/2017_meeting.jpg deleted file mode 100644 index 723958b2236f72a055ef674658036b461e6c5b25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218105 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℞%Zg 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 GAOG1Ldd|xL diff --git a/doc/rtd/development/summit/2017_summit.rst b/doc/rtd/development/summit/2017_summit.rst index 9c0c0921afe..803154e2d08 100644 --- a/doc/rtd/development/summit/2017_summit.rst +++ b/doc/rtd/development/summit/2017_summit.rst @@ -6,10 +6,8 @@ cloud-init: Summit in Seattle, Washington This article was written by Joshua Powers and `originally published`_ on 31 August 2017. It is shared here `under license`_ with no changes. -.. image:: 2017_seattle.jpg - :alt: +.. image:: https://assets.ubuntu.com/v1/e4b097cf-2017_seattle.jpg :align: center - :scale: 70% Last week the cloud-init development team from Canonical ran a two-day summit in Seattle, Washington. The purpose of the summit was to meet with contributors @@ -22,8 +20,7 @@ cloud teams, as well as the maintainers of cloud-init from Red Hat, SUSE, and of course, Ubuntu. Special thanks go to Google for hosting us and to Microsoft for buying everyone dinner! -.. image:: 2017_meeting.jpg - :alt: +.. image:: https://assets.ubuntu.com/v1/8c221862-2017_meeting.jpg :align: center Demos @@ -65,8 +62,7 @@ During the summit, we took time to have merge review and bug squashing time. During this time, attendees came with outstanding bugs to discuss possible fixes as well as go through outstanding merge requests and get live reviews. -.. image:: 2017_bridge.jpg - :alt: +.. image:: https://assets.ubuntu.com/v1/ac44f440-2017_bridge.jpg :align: center Conclusions diff --git a/doc/rtd/development/summit/2018_roadmap.jpg b/doc/rtd/development/summit/2018_roadmap.jpg deleted file mode 100644 index f42d3e88c76451c755076c18bb303004531fc863..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119405 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 z 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

+McCV|G-QYiz7{~U*^;_hZ%lN@R(_Qsj8 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 z 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 diff --git a/doc/rtd/development/summit/2018_summit.rst b/doc/rtd/development/summit/2018_summit.rst index c8b1574e9de..aa659bb8d76 100644 --- a/doc/rtd/development/summit/2018_summit.rst +++ b/doc/rtd/development/summit/2018_summit.rst @@ -6,7 +6,7 @@ cloud-init: Summit 2018 This article was written by Joshua Powers and `originally published`_ on 27 August 2018. It is shared here `under license`_ with no changes. -.. image:: 2018_waterfront.jpg +.. image:: https://assets.ubuntu.com/v1/04d0b05b-2018_waterfront.jpg :alt: Seattle waterfront :align: center @@ -23,7 +23,7 @@ Like last year, the even was held in Seattle, Washington. A special thanks goes to Microsoft for providing breakfast and lunch while hosting us and to the Amazon Linux and AWS teams for buying everyone dinner! -.. image:: 2018_roadmap.jpg +.. image:: https://assets.ubuntu.com/v1/78642b7c-2018_roadmap.jpg :alt: Roadmap talk :align: center @@ -73,7 +73,7 @@ During the summit, we took time to have merge review and bug squashing time. During this time, attendees came with outstanding bugs to discuss possible fixes as well as go through outstanding merge requests and get live reviews. -.. image:: 2018_talk.jpg +.. image:: https://assets.ubuntu.com/v1/7d203365-2018_talk.jpg :alt: Another talk :align: center diff --git a/doc/rtd/development/summit/2018_talk.jpg b/doc/rtd/development/summit/2018_talk.jpg deleted file mode 100644 index 20a6687d5d75a9b3ec6613ac59ce6fb18996a03d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106470 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

DrJh`1H$=Rw+XozNTQJP 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%0Dw{1_ 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

Wk)0toP)OGtFcIc&|m_2dl!9ypk)%}dA29B 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

fvyg}HgQGN=pngu6#0TF~6{{oo zN7x7sQp(k=8p@ucJ=!@HSM;et28U)(n1;0=UD*|N*pi_42;lD##!m{EH7ixKnZyF- z^Lt`vOq&`(5a{fIGuu9L_?u-OX6!sS>>w8<<) zMf6uE(b{}^-pJu+PXWw7Ik#^iyJA<=V(F4;f=9Vx(06UK--MS8udg-)F@4>@1_d(f zP2Ci)kTJQeNEXF`*us%*i{Z4=#HJYzcD%$sgUwFKJciZwazuP=zax7GTKn^7O`#9IOvEP$Fyx5fq_A$B0{4x z3$%r&|M>6*lRHf`!`S3_a7&t-f=?6!BLqlb9wtbkF#?}6+}hoW30i(3#1fbT&w$y6owA|b^b=>p56Eum__2XUaV zj=mH=d(x{ZeDb27^#Aa@F$(hVN{&AIHC%MFb6OBVDGYDQ(3b=S7$==)#hN(YANM!25^ zww9#H&E^oi=N6_?z9<`hEZfs*aK0eg$acr~VAXLIhvC>&^A+?y1Jf1k-rq~CS9=;f z+&(?AwD!0_y1>T;w^8}UFYeV3&w9iNvE15aO@HB_f!%)7gVmusI(MA64^Db9J}ND) zTKsKmMZ}J@>J75D4_GudWJ)xAxw?N|`TK3wGhfX(6%`Ac-`-Iv-S^01ZngAL&PJMy zziFBupST%!kB2v_=j^ZR^JhXky3Qo2v9!B_rOAB!X@dlbiPB%UR$YFxsM6*Vd-lw0 zgTgb%S}k*}bZT^nTweWca{Tek`%c%V?NxP|JF~9vMBdoMh%p{`S26 z#OT@i0o8uD-vruh%MDg9Mo*NkmHth5wc923_OA_#4?br5h-6tw-q~RorBZP0MOggf zT~9wLWE^qiKe(f@XZ+1U%f28f+1a)Hk#7zrbmb1rtD9%F8C>hPta6y%&;F%hsN%xi zvywxbk0%Aa@z{}6Jv6cFB+C_(+0f?W*=^MbZxW+J4|@dpK=7Npe5 zjey>U7q{Sy3nqvjvI3xvX4*c6s;)5-R?jkE-;q3-_u?GTC_1qAQ)d7bZ+V z>(d19^B{9(<< zA!sIo)IA)LyvdWI;B{95D4@wezT{x?0)H!#8!)J-7T<&3{-3OVO8I?J9XR&f;8!38 z#YhwkZjFL7Qi=YzYlyyj)jKb$V%i$u+pCLIlcMC{ar{5*lXAM6h6#f{1Ey+lqYuHR ztRaP7sa3k4CZ<)nmcSaG4D^UBP7LSJ;YK|G*6?&>QU~7=+HtEK_#CWI%cDhvVdU6g z02vX$s<^@Z^b*J{0sO#`jZT2f7?UkzbR)@%28!MoYsR9>J%ravu(*&eoJWVJUxIH? zj|9eV#PL4$y@?ap!U4s`_Hx()A0SgRNQj`*s1U0%4Y^CrW@1b$!tDU#_@nZKVPRMv zN`hfw!ij|bX;B8YelWk2zyWr+Hp}omtV^8f@$c0|gKC4-tf{Baio(AP?rD&qYD5d1 z^AzBU8mt$bfeveA8l|j`nKIXXBC~y>urgfe6go$c7~>lLBUQ_*O<lF7$AIt2!w}{b9tyez5swDhUn62pymaPT!*Cf2$#EuKLQ;)0y@;8w!KJl#qkX! zAX6_Cj8g*o!!U@cU7JH|MQzb^QraA-n}8(V}P(NH6y8QAViBG8knrWjx{t)OJ>_DM$mS!DF2 zlt~~Z*b*Y4AuKX27(&gn5YFO2y09`F% z8f>PYjy;iG9nFWpeb@m&;IV^RAIn7Hf-&J8nGR?iC>snRtPuyI;O_uv1R6Os+CyNr z0~_$BC9q&jx`v=;dbwH1Wd$+d56ir1n5V-CjGnN15+SPO(bW0&f&(HWyeHs-wK`~c4uKjTzX04K$1oveq|F01 zU>MmBzx7cB^eVHh)2Xks}}Kf)u4=Dtz2 zaA>-8A=Hx1hRq(N9^!FOk;89XB;p8ajiWGsp*dcj5K$fLLedL4N_1edF%g6;mqSMj zpbD{?uuy4Y@~kJ2L-Xx2es>vs*Pp#Yn6FtA3GH7mjva51n zL%YA*`dqJ}_EPWItLE1?nx7hs&*<@0iQfI2P`xcbn!8R-eb3VC!~EuF{I)#q3LJc! zdGj>KOl+#&x$q07m9|VG4S98^-n(@e5v|ljBNrRKzuef?rBPOxztzx(t~>Hs)DiEU zYjOhJIs-NlUb6R@nCHp-tgIKmGA+uwx9>*yTB@qUo>R^9TRpsXPj7tAN_J5&)I-aShRZ(vLg78n_yn@xD8A(rentKfVCg=;gd&MqpVVU|BFOccQ*|Yzf z;hoOdPg=X(4g_sx|0E?U57$4z!Bswvn0Zf}tJOGhE^@D`lE7em?X@%*@un0fGDefQ zS%37@MZB?#73aj>at6*GEstg=yJGrqr7;LhYLk!8No@^our5hnr$NKPRro{odG*o4 z&SNemOsB-Vg@ewjy+K&3g~4!7NoV1?fO}p)Z@%A0kSA_C#iO%4ypi&Q@ZZ+r_JcN+MKKDw4lCe1E(S|Eu0hqZCc3 z{p(%vM!W8#XFY!2dS+EFYjJ+_iR2{?;h#<_hxsb_JtP(bEPm)z*3YKxxb6^n0TU6O{Bq24ilzl1o8KF20HUYCCE z$b4}Z4;S;$#(nk*)-)cX2M?5Mtf{4~p-YkK;C*TBxlw6S?0j%v{igQ=F4A#Q58_^> zAIUSa?a+=-zaQ1DQ!`ybbae}E2}8u!~BLX7&)8q^6MUoN0H0B5o4^wm0$}g&PGW6 z>?3jVs=fd|w}mbIbi}I9kj(PTQ6EZgjUWhL#Dteln4!)UHP|H97jHOPc^N3PuUP>U z8Lb2MKWq@ZF}l!rb4Qs=Bq(*Dqlb|>0SCvjCHpO4L&M4}uuOg+iulIyq>b2na$x+2 z7Fz&^)J_NdA!D!@m;nSPmLj{`>dDuxmQ@?J>X8A{khW6Kjgg{ietA=O(3FLswm zgQ<(}AOOnbZATXwumfOEo_vZy8d2~jN-@|#CBz9wb%Jz13|j&fnV?`IWHZ#7u#1w7 zfu$P}xyP&smQ!`u`xZVc8$#f}LZ zgDFTA@wA!`9Vcr^y>>~kNZKGy7+;|zz+ZJ}Wxc?fuv5(}f{YohMCKxeBQ%Jrh%CSC zLlp@|H8hD-h*5+1Pg9yY;GT=Oq~zk7g{&6H2?BUgV$H zyQ-w+w3YG|fz!PyTS-5Rf9Q=rXJhI3eg*=jjol+DFXQf|`+Og&Hy`kkB>B88zk6t^ zaQ=G9>TArC8Sm8s&+{CY5}Gbmn@E@V7~NJTzoT^f+D+1r%WgOH9Z7i>?ljIqSd`56 zRjAP}xYUwu8pQv-fV#!M!0CL8Vgt3KZw4Wd>96j~6X^<`{-=y{#xoQ3l|w9ky!xq> zvB&&IT(IwldYoGT|>7q%S=IIAW}js45@0IgscR%hX=@ z=B(IM*O?uB?rIx~q&t_lxR{X_^D*c1uBZg7BJD?Qr)-j|Q$N$)TZoJO@Y3?0 zTz|CL!A()4Km+BwIIFr(n>X)`(Pzb7A0}06W2<9n7r*t4eQr8)*s5dV*`wVw8K;Ry zHz>YlA51g+nXbyd<<5lJ_`YqxGGyVo4=%)A}txS64bZY<(jUr@CnFq|x#7I$+`xigOc-XF7iqzPx;UEND9O zW%zR^r_Mu{HbqJChNp)&+!j`Jy7fXjDx~;aog+tO-i0l1W8HHJC4j>v3#6w zp1da@yox}e`fhNEy+zf<9?Bx5kiLe9NT$dx5}8BLB&HzD1e7;yCQ=A-K~5o2(qBUq z^=K8xpmdUWfPN2kkJHX(=p7{hCs}Kxm`XU(7GoXN*9J>Z$!h}3TZrLJY()2<(I9~s zfjC3^yKD7#z7&9G!X}nUGX*l#n@q@#1BlLWC=wKBhZfw#@p3R0hqqDuL}t#xEF}SK z%Ap`o638ey*x|xRaAaH;m0(u{Ildq*MnqVyx^cA&+3OxWc%khH(m1NsSOfzK!79pV z^8ZzGL%xV`71}={spaTR9;_wsGy>r)WMn5KSc5JZ@B9Am=~}3^0m|AR(XA_Dv;ceI zaqt6F)PP$N^z#AqAddqDG6IZr`e*G61eO>G+LytxObd2DkisvQz)+i@uN5qsWz{_* z8w8`m>z@J&@alnjA2(D0R0SgEKSVD71A)O9g3I&~z|DY)LfPq7$Xy7~>qHj`k|`ih zEKhEuAV7fL+tD*EQy(xE3%t2IKD8QwTIgvwcLw^eCxMLmhw1X?rxi~@ljFGlIX;d6 zvfXMDH(+#F0~dSGKi}ZpF)Is%Iic(X=F-S2iX%F#1mao3b>|cX)TNh!O+O0#E#jD9 z<7)s4sY1Ay4rvG}e>lN;4pJQ#cmep0yo3e`xiy5Ug9in@dL~Ad>A2SLNU~O9fG9KI^zf~s)tXvW2`(>sR~CTak6v+VN z6_W1X8Po0{jo&|7(Wfq;1ns498#bQANLdTuQpV((Vi;Zor{96O4U#ap1;KP2Ph6su zwZZ{-gCn);5rHNs!Uf@%SCDE{Iy9oD7+2kJM%LQ(KsD*8PRn!;p7X#i5#fk6#Q-nJ zY|@vm=gWc_HKoO&AVTLnbxCIBuVJ;oGvJ>1^9)#c1HLuIh6tBiC(NT4E?jQcvlZb^ zGTgCVOo!SoINvW}6&&zm(tQ%*;apREFezfBI7j-k!<$d=861wm;JU_j4*lqJJTwJg zJ~;ZVoq~A=S)7LqedrzG|A|Ta^E8F5=<6oeO^`Z8O`{}5%fi<98)PNIuXZPgG_Org zchrZgXTNZX=--fMFl!&BtX&o+&tNIc+;%d~cqaAK<#SpPMr(=>z)8NHZQ&2V5d6)z zy~%kz20kc`!|(RxX__W!NKLN0vJkPo{I1weI4R`E%CF$>Y-cA>>AtxsR!quhdpTE0 z517wX$sZL@uJL~XT>g57r|!tiheJqheuFPu*-R{a=))+rfcFjnQs_reYsJ|s&%y9X zEEPj|I?gT9a1IlkTCHOk5>I+}GGGXA3PSe`zBmvu1fn*?sn+GV0Y8920?~QhE!pz8 zcE!u#Ut_JClk7i*)+QdyjMONZH5!dNYUEa|m!Ng`TXxf>a=k;~574xoO%}7@!=oPd zoeFo+rD#^+)&(O*c6&6M+%y<3-IzcHvTbZ9J!{w%8cu?M4k`R+CYHW(qKRiTfQ{Yj zpQc4P>nfPkmZNq8tOM>5)S|FMpz{S&&}i?=V5yh^U0mwv`&^iEIYhJyHZ#>B=5z zhvzJ$x1L}w0fedGre?@gVWxU*A2R&0L!P_wudjU8CFr5yz7&E>> zWRMY(_84m@?>>i}`D8K!d%q^Mzrd1w$TI0)DhBD_QfjOg!-DZoTAxb0R` zjBp|4l>qZ0hE(L|D}=# zVJ*;bW=+-*p(hB#2t;bCF>>a>gs3H;kpkeBj-G4l{X}Z1s1cyVT({$8M!uLlcANyY zDQb~KQV+86!$CrLJ*!q)i-C-C=Nn>WLD~?)5&`lC(Lx!`@#|N`8J|U-izL21(IU{Z=1G1JsSZw%+vI zYazO4RGM3_{iIVt$;8$%hoH!t6Kqd-96v;6yxafNY-qyjsj#H+w2Iexb0N3F&@8Xc zxQV{tK9iG=7}WC;E6VRZ<)|-;bx}R@D|y=L?j7s)*iLmi!mS5^KVAvv`E1HIhpty? z;Z{@LUvqumvI*m>Dl3H@eu`Rcx?*0idc>>3PxYk9n%dul$iv5Pd?>WCRqV3xNNaZY z@yk&iI}@ka=a!!_wX3E}ELod|*D=F4;m#w%xX4-ENw@iOQu#9{nu9(9%ID^{FWJs* z$@M?g7&U*UU}KBVwcy_b&0UX7zcJIBvk2)tdbQ_P@Ea$>Cx)vF8;VAPq!0dGWMEbH z%s9ZNfH7zv&$Uu3uAT933byTXYR+Gp+hx<=S#`@*rXV#W?bda}B&)XvBNr88yVLju zxu=-UPu!7>-IE>rag&|jUDc}-j%Qr~k;+<=dt16FxW%tF+F+iVkMY~rPKO1_k7uXb zC)6CQYzw>U!*=8a6-)4j6lztQTOaOut6~Q0_~oK0XUnzmu8g+Aj3IL>8HvVbM)z#tM?|e+?d_yz; zGCfjdvry+6zVOn~WG~DmC4Oa9(0IS^a!8}d39nyqD#YP!Ns9wc0d8aSt@Y!Fsrw)C zQa|Op_#xF~SLbI{?y@7oHeUCIDL z)0OMwI=|3$=F+fE@K+A+=BG_+7%@pGW$E;|7HYAUXenn*o8VQMp*C$EsPxXe*X_*& zA4lu$to&c@`Ej~u&xJ_8PKPosQLOm~9jOO}L`^CHla= zwu%{+QPN_3nPz{+*m&I+hfnn$w`yY?_a>-`3oz1mIBeQB$zfo^T8T`{*l3dL{Tso| zFkC#53X~{_d{+rOd1G`|A`qmv1dKG*GN^qx20(_$*rvnheQe(Lzx#arvqW#N1y{a# z;dv|m(UfmXGau_!_-0lO=#>7wy(WJR>pr(GONo$3UZ;tX_~P#-BNZ2R3`A5gPxN?i zwtDvXrkC;4-YX5sp#mYF12kQ}9nP~kytT6QS!wyhyrcuGtvOzB)YGmnN&5f@+}ZU? z+Fk4AP6kB~T4)1)-m)p(^X01i0oMhKjS688H-As-$wc|E_@IG$i>P*i3UV?0}(qe)q(tl0pr&dTF`UO!Yb{?E^1Y2akS#BDU`My}Q;$w_Qto z%so>LU472Q-psdz$pg;oex`coPCa8TjELLt9R09Uuf+#FO`FC|25Bw>O5HqR~HzO zRP)8vjiy9-RWI8^KkKsbtKRt&Vg>P0A5vrOBEKKb?C{1JmyOPDIvz=HvwM%u#+H_{O2lu}HUs|r(3_o~laO`d8 zmutSlDt4wEQBG-#X+J#DzODV|t(J2!WaHO%vrb$!fi$JxO^%&{~n;Yg;GZJH~8NzTpETp|^~B+(;|{^JA1NnUytgg~N)md;F+Xj;D+mz)MdBB~mcb`};|= z8Nu8cDtg{iC~GA97f{kVWMqH|4KQ;B%sHMa`dcjUI{1y~LO3x=3UrInq%{GQ5kX2I zz7oWZgsX+XJ!z(I36SzZmIc~B%>2IkkAojZ7XyX`B0r!Br`2#`unXrmTp-lKQJ&lYjLIp-Sj~Jv1peMW?j~#HYp{P_O&sEGHi;T{G#dg^zKXat?In#q?R0|I*22GFLp7-Cu;^}D+qHU>Br+LQE*8k|L=PWZ9 z3}%k}CLF#${-r0$IM(mm*(;3&baRn?T?u-ee7WxrS9-9js{PO|=BRnsF`@15RJ_q=r^0OpB9M6k*`3S6IA66bYtM zsU}5G%eMR`_>vfC@)Sp$HJoMiKie|XDhQ7rmC$Ap=Twe$cpQGKUdEF{>;&p+0)KF% z_`xawptB@UcL7$;GH|UU-7lf$#94Wf6E~o-Cxxj2=K(N0onEd?#}85>@#Ut$@F>|* zmLw94X(9wL24ip^s3O3??xF;Me`G2GyCQks32yl+8izbz!QD>_{>;p!{S+FU9#4bb zK?@Xu2}$R4*?>>pJb0PxEI2}wh4hAT|IiykUhw}I&*S3P-QpuIZSw`p*ot~5+0hUJbiLQynbIm%>bvMV;<=FG!dw@CpQK87oV zA`Q2~CNUDF=XM$#9z7VZrY8Kh7WME{$?WfCq&fiyOu)A0(Q`h5d@N2YG%# z=)EDev(isG`Wt|CRB2czf&*YWGTR4YDeh>AFarobw5^y~0`gPm+O0p#bL!4Y*%pn0B+$sE%sdu=UyS{ z?lK?DJ9;@#*CSap?o@%T0P@gPB-aA$43JwOfAFX!14j`fxoN=KW{+TI6MdF#4s0)U z;ACw#EYRQ{1Wt>CN(dv`!M{le$`vve+B!+SPfB?X^OxoEl$pe%T}@11 z`hPa*2ylv^i53IAb=dBMVahk&?c(YOn@%iAhZTg8#c=&5H1C#m%nZ5Y+@+J8?%-ot z@N@@Pv%^{m#kBL3_9PP}OUaVQuokqhhGM=Q|DD?cZCrG4#6V~rCu0Xj{B!eiB-qIf zq4&o|(ZcS!5eR`m_s6#PKfeN}Nb(Eg*Ps^VSHR(_=I*fQ!Itz4I@SktU8no;JsCp1lC4Cm+3L%Dkhsm9KH|VjnIBA zFj-co2lJ5pXTxFgw+=>BNjp}Pvf)|SLaLDhiyXhPF6G5{ndh z7Fn#`LNLLTsurk$Cnam?|I7YI4J|dWJ-KvDIEvsGLRA5BeW6pzIys3{wGGZNErl_8 z*1=XGvIMm?>NxRP*!>Xvj*B>eU(NFN6KJF@HzApm?=iXc*|E(|XK&xiS4~l`$UW|F z_}AHX6UFr7#}g;^Y&!c$#C9a**3F}4q2-npLlVM@2?65nvTNV2wu(I9xz(c2OEzj1 zk9$f`4pokRG*9Qo@NbcZq&giLnIr3yyv1|l94Avg_9g@fsr!08C{amKx0PWSC^j@I zbZruku|L9O9pvIjZ*3cOyFo_b<|Bgf$)g5IKGuT1w5~bbc{#5{3kuJ;cGfQ8vqLT9hpJcnR;u;eEaaZGsBNjyl*}4;K%W3$!yXhTu$|^ZN zZ!prlvtw`6WRJnv<9w@qItnQhE^{19X}<~1M{dSQbO=9|mEW^vl+82pruU;F8AYz- z?y;-^R=T|DhgY*KLno{c&h!MBOow(1?hINA@R(9D8Ej5^y!tQE$_%R?8{7}k<}rLf zllJ0Qi`uVqKGVMmTl}6i6ir6V^E$`~i=GO8?bp9^99kggu5@0GcWCJC^}js|dHFUc zzIL8vA+>PrJ;_N5D7~08yP=_i%jQd2noP~jc|)g(&do}XGgHK_-Rn!eBOCYZ!>f@`8%;xP8m{P4(Gnnn$fymR$X{pbFPl*iT zp7L-|F>K8B=4Yu1COa-Q$>MMGRR@v}#<*7CLhol}qZSiDErOq^C>+_CL)k&2#-c!u1 z)qU27{}xj+F;3sGq_-&QIA7XtnH9R*YL@TUY<#_c3rpe1aDG=;Xf4O8VZG12m3NEN zvTqNuD$lJtxR5~HU>Z!r8!0JPRxKD%n%I!-LSjDY*wu3+zkaQNpUkHtIwCY>sn_1B zmmVH|7iunR`E;H4Km4O?X z1LJ%MF{G4c5GQzpiwx=*)3)(01k;tH8P!-&lPA9h!~?L02XgDERm^RtVyH`bD>Hl{ zAA>ZJ2$2-%QnUnm>J?i58h@Zb(Lv$4ob6x@2Lnp7gIOdnFl9n^MMUA61g<{FdtXc( zC7*Z?nVeY?kdr65Z-J*y@SX8=FgE@5Kj|M3`XMVq>w|AlVfdd=2`P+$m`o!W8U;Kl zEnh$nAV$;7GeLue88sttxCLdz5|l8H8ronw0>wV^S%Gv2w{lnt7*fbBp4`I z;xqQ3Z2_H;lZ>bg-uPt<@&q)C=KuM10oYv!yCCm6CXGW4SlI>nN5co%7l2{supndX@^0 z@*lqmzuufqJJV6OZqwCwIv4bcoU&XjZa3*?e0xB}{qT8%tU}C&rLEakKdc=0lzwTw z{n9KyTt3$RqW|lTH%Vx}rlP9biw1usdR`o*3bNYo8Z=A23)n1k z12t3h)-&P}65g%38n%6w#E#uMimEcP`xn;_n!NT|6SQtV!0m{;g~H{1ULVqB)ED{# z+Vi)XT{p95ph=vnjJxUXe#AxNMbj!}*VSy-?ly>RctK~k1@72P4IQ+I9BcU&FOi!vQVu}GPV=45C2X^S1hazX91S4em$svGQW`czUW?ZpCUXkD)b=#fG z9`0bQKD>yGDLE33dJ#kV;U+kUTkzIjfLZ{^0GeU;+on-11q%smcb7Br6Uz?>ERPLB z{OBx5OOWYq3m^dcFfKq4j2$>piH|0<0J?w=0G!c~!U)vrA{3iPAO!)j2X%f0U~B?+ zY`JNOm_3U$mO6P`p?+x7C#9FKnVa32%SMAW-t;DSQSGeiF_dtPiTeL zF8Baz<1>bkE{BOS>=aUYL15X#;zf;PTFCrvP;NY$UIxK?&APsjOK}KNvFWnyQ-mQH z7*0vV5<4bfWniu}l!+Ax=);JhcF1Vm??a=3GGBZ6M%=9cGjLz`~F% zr;G2A_%9Z?oCd-Vn2o@{SsB2504xwHNo~qGi3X5annJkYApbpv82<6m!E<}~L}bfb zs4vjP#>!Yc?_GYgY!YK~{g1{N7~JQCCDnB+p3H^}dJ&}w=&i6I5fK-<)rjT`n-9M2 z{Hxff{1Z*$k%73{Dj-Oo#q7YN-KW#5Aa;TV#8H9*Scxwh-y}|pF+L@_l0%^6PjI{* z$yGoFpqjLryNt;4Oig|C-dHi6xZDuO*gMeIR`&e22@l$tp#a6?4H#+wW<%0nqOrT@H za|GbmaO)v23;@jG7J=&kGDq|p2#H&b9Rer%4R;)tNl1hVu0o%s5?-GKam-7TF zF40L2+hLmPM{8NwL?3<)H=+-n=$FxTSr-B0gLoMAAjYqzl&>c+JW72ze4wL-h79_+ z@F0q3Yqa17facB%xF4VnC8sP}gFxPxY9`#127d=av?tVsGO{7`1gd5MSUIe<7?Tg= z=eT@L3vLAH^h9t7GL%v75d;N+4<`rUnlS4CKq9DdLogZ@h;W+fL9(SLNCh316XbJ4 zL(NJoKLN)@9ybGHVj4?x9Mvw9z05_@Z6T;LzyL9HCZe?I3B$15q03Q65=jGHDG_Le z2t$SY358fHz!j@Wobe)|#V2ZM)$0B0!1oF5KX8jcp#3-0lOh*r;8w8tWb>z`uXp~SUF-01KW#I z@3joBc|nVU;>P{mse#5BlUr;Q_UDg(SzJi*Zg$A^Io3JrwsGJ`wb9}I=U=C3{mk&o z+UPy%P*9!DQv0y!UPpX~M95U6WX;2rL&Kqi9}fk+k~Dm=*^u8pwsUvSmh(GfGW4cC z2_0^#_)W;(=+HfURMJUx?(NX&yeB))WapoDwJ^oNdE5V&s(T| z6F$iBrcOo{Nj5O2?LQf??KZ=^OS{)@+uEhJc5Te59Zy@b`@W3iq{nJ`lrYb>zGb?W zF=Tm(HKg`-`A`3gE|wSa3OwT{F20=|(AIK|Om*Zt_`!c}o!nK)c4zjqM+C>WpWlF5 zgjg)xCvmMng^BPUen(;A)^Gi9A&qDnWWNqPKmO=6n_ zdyL7i1lOI93@^G8<}9hEgt{(6w{~61@!sJxm!CaQW{y6V3*wtgo7TUz+OO%oW>3vY zlb@ozZu<)*Uvm3w8#nXeBBVxY*X`e}xn6EsU1=cTsfo_jgQ~9_1J55Vpew#Lm1kqI zs;Epf`vJB0{q87-pSFEggHM+n-R^Fih|Al@w8QvBgF^ycz>MgiWc``voWqY;x6@NneWb|O?2MNa`JJEaIw76>%?OlJ*VR4vpfHtb#}nb zj}s~`;-|!)2Ym40XxMhz;meVVk$_jP-l)FxJ=x@5^P8|%Rnc|NrtN}iQz~~mc6`;I zxZ>@x#be{Q(*p9`Rue@#GULnQ0`AB9E&A}b7wU}UcFnrA3g$mx>e?_cpB_F^_f9u& zz^3z~ho+Ta5`*Rok>7+2)2W58X``Njt+tj!mka$Js5edzQ2&zZvoX(gdmHMrf0f{# zGM16n4XR^@KQ=Tk=^9MzQZDR9lBef}y+^q(S@h-BND9wib`9>))^~3_a7xI4h#|m) z9w~ijlYtwcDUXy&t+wIJ%{Syy5Z_BkIb@9OgF85 z67Q%!NjJ$7pP{E=J4y55;LgK`5_5nA{8ySNW+N6JWA#{kiyG47z5saY4PiKVtYTrx1|2|4vlAIS#xj=`|5&J_XgR6cU~21 zl?UwFpefKfe_U2o$9t|Yr(0^US9~EOwM-@cTmz3u+q3P*Lp!|hP?hWkL}g;;x%Jp@ z!W!iD>Gc#NwV*NP0;n;B?L8a-wUX<9CFn$u8$k!5yQ}9=4uyQ8M7l0CHPA>^s8TWe zv48Tdu@V~FRZ*M!PvW8LJ4D6wI2KB5gz7^Ndu7rC`b^lyu{JQU3&;xm8>q7^q%Q^T zE0xd;2Rmsz|0F@;dl`8HilCMO>p*faHR@z#AqF()-dQ zL>m9rB2X^{roVT$FYaP-`!g1H%GO;85KIk05v)vq%K6JjWVd zo~kAg%*ugd%i#XKT2owUS?rG(-vD%=cMA3kCa9N?xWoyknoaIQBLr0^7+maL3lwso zb2}Vt1{x=lm6H2Ll#_*j5G<#}1}y;p13(ls+KLtX@Kj16ePcwB(NDrY$dHMQ6*RICA0542gHP|+JA|;Mx1u?|Sa%M( zY2+CabiNwY;QEA0Ap%C;rvOR_RABx9IVt2TIP(J1hAGGp|4UYZlo!V`vYRk!0>B@* z*MlF%AxD05r~`nBEF0kz;VpAG6x`=g&c4P=n5vWn3mrY6P2~`}Ailtr!3{3cZ&`F} zyqiSa3Qm|*0)uc#P=MNm+c?NUW$UjuoDJYG)4a3qH(~Z++M){IJ}>v1)Ufe8*Ui9r7~pXZ(s}H&9-=~ z>#@~m!bv=MyOMZu?ei}F#LO?hvfh*>Df>I-`*ccfaudrfeC5!z#Q3^Hg>m|Q#`zta zyg%--ej>ng?cKXr;V+BnvOm+ygj%O_e+fQ)RA@Xl-#a^LdA#^xNvy4B^LOQXSlqDFH7ppzt9P6NsrMerPq97tv?1wCgi6pU~uQ`%loB9MVDS_Ds^!84i0P(xKc z)n;Z5QV<3-@E=t+BQ}7T;(CmEPEv&26a!=yG75p_PUsO7<1k<3s&!h+5C(S}*(&ME zEl?^gj}Ee$Pz10TFjx;{s<<>&3r;%C^@ytwmNZf1*e3;T9jwA$i4EZt zE;1@a5p!~d2f$O3oV3y=Hj`PonKy*L` zdJK}}ra$n#+?vs7J$zpS-V-{5^{wK|8X;JbfK}i{8|Hz6?|aK|!GCEG$Oa!-*ud^n z`PmC;L4e5vt~4o?+PuQ35N0DlOaHo^yk^)%2*oXMgtjn}6;AUq{tcf3?GvbgeGCI6 zPGKglQgDvLMDXypynQb3C3wM4`6tYLf~pQeJSCMtZ9(MgyG~{LBFzItG0H?-Gq?aN zHj}8+krDOnB8g}h#MD%{o{9Wgv`8_d=1%R2i?3k!!`P1~SD^4)_^k=0QA96V>HDHNMjI|DJ%(A3A~4kojnq^ z6~^~#P1ef0nqqVYE@bKhxQ38vm|&rnAd9o3hIscR?0O7%OhYFf0d?>vd*Oz4)*yvJ zv5nxD1h@t_NMT}shY8Z0BSoarTZE~Hp!KF<1D+j1q_8aj1Z3ezlxRMVbhxTRH$J4F z0~~#Tj>xWsl3RpAAVHwWNxLvSMG4!+m?A1N30@=&&{zOy1p6dwCD7d^Mp-Smo*m|= z0b>*r3r1V5zjzknA<5ILCBnM=bH%XJi?dQ;|3!TUyqN*3f|9vq!HnmF&8BoD9s-TI zT4=G9fDWL}Fxca`fQ+v5b&TgyrDFsXg!nM26yajDQJfPeJ^|Ab8M{IYBw@3=JdEEJ z^yGZS&4RoVuh|WzI|3eXw~kr9mX3&A~8L%>=F5-p^G#FAu$JixuLhRx{2NF#FaZqP~EK4uCq zUZ2`ztyUrdSseNXi$o8im7Nthx?z6h(;|?6*I!Ae|n^srp^LN~$ z%kd~Jo|}6=IS^J|s(x;O&AU>mQ(5OC$1xG!q+$CmjgIG@TRO(8hDF}V6HAK|c%#@C zk{7yi&fcrhn=H4Hd#)opEt=_|#J!(a<68c_gI~^l1#~zS5`e+7e8h zk>62pC!u%D@&SN7$i>uCR&J9e{7N+j4jI<~yQzr(d-$GU6Qx3U#Ki$2?2@OHd2 zA^MHDV@pv?_t=~f=wX0f2*AYG1{hdm$&D?)~d-I_lcAK6&?^`F=tK_I|m`^XP z4wNe!Ke+qu*0Sij^R4wepM@S*xj9sEpt=e|Fm_xtsJ4O?23v`6*hlItqn1^nElLdy$bx9eD^OY)*RcW+xW8vlH%BW;M| z;JfFv=_~%D0c<{!U)6pNuV|&~UCDPS->Y-}<~q&E03I4A<+VeWK5izb$3^wCYZ!Ow zY`M`eC7%2n2SdAAzST5o{qgeGF`Yc`%bqT_$)~NzeUG#_K9R{A{t8T{hGpoN6TVE- zb?^LuTev@@K&eyH`oQ^}K@Uwab8>TP?$d5xn*kG_w85xo90;|=CFvfi4v9{%zBw^F z7gax_r86_zEUHq3Y)Wp=OmB?$I8-u!f7wfu8Q!Vm+~`zRCjUDx{j!w ziUlpPh>4X^LpZJG9$sJWdEuvixpZu}OSd%nwz`U3)@U!KWP7y>Dw<=O<^=92M$|c` zEBUIWc%$R1&!ot?<+B-*L{VcGRx(%augj-x)LqYC&tamWxN`32ODFkdC8@sXjyJ%? zU1rn>-!9y%WOCUegmc_Hw)vugXkWj_Gh;6w7T2v2nPe`r#FWg^)%2NOBd$9_qJ-ZX zDqnkBBrL!jK3UtShBDBpLWV^=s+&cLTd&^X&$QpCNbw0=YJyVq_G`J1PxZ*P;e`1$ za08h~_GDhYBfvx6tL$>XxNe5`InA^C2NYVyg+mKFld3ei`42@MZ*zV~Qb)DEqpiVl z`$C<((brC`<|L++!!$3KQqn#7f8)$wi2laC==Q91jQW-QU3Y#DH>hK$W}t6pKR?48 z4;Cp*^lV``s@t1pfS_Q8jviys2`dG1iNXqL^@r683p&%N+B&~A6UhA$6$$1@|1GHi zO8`5id9ooKXq`FXy(nMvewvn_3m=!=0 zFq999s!&2esX?ebFnR&E&^;%=k1plk6X<&NpIDP@m}mN&I=r4?f1h5gMf*`1Y1cEV zyv2J~O-I-HY+js(cJ$em=lA_K+!pd^ZPPWSFR31M8vtdPWclgBioCwoGV*8k$Cna! z7k$WG=)KEOQFMMS>x@#HX52HmOP@xmukBE4F(a>vkC4EvTqQ}=;{WnJ|NKi+-S1h8 z@9v&dBYLonQBbS4ef{7!*=OwPY4f+go>cj{`l?8!+LtM9Tcnd2&%RtTk`b*vUY!*Z zCnWSe?}i<;OAZ^l_sec5!#v8zr&lhZvoBxA^4kjw;|CA!Dn2i&s-yONs>v~Sq=1U0 zq&=1VdZ8%)@dCr{2kWw*rYJNvW^5nB(4*OYd%3BOzP@F7-c#=M82KEJst9%0U1#*q zg!weo$d|Ch1Aai`^<4RRp{WL%HbK)uih?Vi*HdNyfCD~iaE*{5*{pBm>{2aOT#-Tv z^k@8pm1JOFjL$&8VQ>xp`2?H{3&Hq5{Q*c9%z=RZjWWBjf&!46O(aARk%vkC4<3^Q z^aL=TzaEVEF{W}o(`vO-w3(6_F0uMHXP@}r@ez_4{k_Prs|^YUn1BunZ>R68KKdUY+B$5T;D!W zn=FyhR(NhJ%>^-+nuFVqCbAsU_J~N_OFFy(bU3vonrfe#6oxAU^f{pwNfE5u@9KM$ zly*}ss`T{5adewUb>~m9>}|`@40<7!V}EQ5i+ZJCVKvcCO<^*@E_Pr0p6DN>{2nk7 z#7Ic^DhJ^`Fh=|b%|Qb~{BO7Epo}_Lq^6OH59I@<4}7RME1eL<83W&-*v0dHp@K$% z=v&o9cwv-_X>8D=Cd${Mwc7a7884E6VjhUi|F(x%mBm%!fmHj|Xxa}|6Q4hAU@CrK z$21M})wB@s5!BEQ+pXyWJ*}u8YHC#wa*;uYD(-~cGpr~4v4+_X9RwV(k`*CN7jcQP zW5kT3l)No`iHR^&`zaCwfUakgV{9f6%4rX*-M?&sO|A_wE%XZR=_ci0Z>8$ z`#faH4EH8tRFO)43h$;|;Ku~5OM_CNM#M_bE zHbDywHWgSV7xH@mtt&o?6@YIktb2CGTP~6TMundG4>o0jx8VZ1!%1YHMeyWP{FBOx zt?y)Nb=-J#5&IL75B#U#QlkUSKA_8RX@XkxKl}tJ_Qgik@Da9v27@pI`5$f)AB2&j z-Iv%xiEW-j;TGDzperE+S^kAU;DY#za1&k~akU7zx%z+P8%Q+|FVP9oI94UF+=8aZ z{*f=!ZZmRz_tk2w3uYqa^w`{m{@J#$%@2K_;QEVw5ClvHkZOF?F?#VZJfVdSt$N@Z z8L|z(5x1deI#^WrECFA`ta6V64gf!S5IMC#lg>%VsRL}_+$#(sFh=Vg5LMa)6zL@? z6nFRrqEJb~KKp-tVEZfpM+%sg#-Ahq^8gDU!U5ex5ugdcC*X`Ap+=nq+K>U8!p{yc zcz&}3=Ig<{3$QF@c+$TeD52Hfe5U06P&9eK;Wv!Uw>S!SH-rpf)H@Lbu;A?ROFTe4 zfHcGcld_c%NQCf~O$(SN_%5Pefk3epz6)1`v@^73v804gJv6jd%o;H>cUe)Vabu9k zVLWIg6xe|hq5waq(>MTY3J5uD)P!O-tzd%S1>^wVG50o6wy*U7|AS*&2zE81p#+;7 zCHSD2ra57!tkLDK^5){n9cI4Cw=P^ayv<4SZCYUr*zzeR0R~d-un0LQ`ZK z=H6yV`%u0k_$O#fl)O#U`s_0)`A!h?;V1yPBRG2mqDFl43oF&q%udl_nXrfP^bAodRHXfoGtYVBQ(s{%WvFL?f6&5L81t6qIzDrin0G19#C;DjaQ4EYqiH9$v`! zs|}kncL2W}pd@txl`UkN=nmN?eJaXfreTr@^YP=vE2{_~J2%j0GM| z3^K6c0s|?4IhY8@Dcv9!g$gm^2m@;`hGt;~(N3rTVx7rjvZNekFdG-xibP%_>6KfU0L~cafmQ zX+&lun{J=k1WGV}SETD;Ku`z6eeSiWFIC8iZ&B+;uRF8keJ?LLUzj1nnm5W zPj$#j-DEqT=YE%4!iUL^xY;Rw!HI@clZ0+D**+P&C%>0U{MLi-nHGbiB5L#pPZ+jq zwwiTvMH0QeLpA2HRlxPh-oDVQvPwFALcX~jk9-a4gx4+dZgqC~HM_8IeTc0+D0s%Q ziN9=5poxRio_DF`nf4(IQ%9Lek47@~?DfcvIMFj!*`A-9XaA~i$LGG4YMru+x4%8w zN48bK?-WtlMOS*g5jI-+%&J?TU)}z|ByHzX!emU;)AdZo&gW@VUeBI(|KYA?iwf1> zIFG{o>YnC+AbvIW>_huczZtAZ32uL^-^ma#E90X(v)&bPrO0MQedbxU=#L@?j(q`9 zp)D2Txf5SvIl~?JmOUP>w8-yVyI$2;D9d=bB7)SFm7FavNnOj)`FKm}m!qy7a&~AUE`aXO`%_ESGR>^RZ(P=)INg`aLD}zrv4%ZtPPPA*_u8eNgU!6! z_2voN=S59@f^AOE1z0&cLSH>C%Xg?|SbI*RZ6Qgz9^9U>B=3LS@yqni*351rj=1O7 z?-V~ZDJ9>~d!yMG?v;~KQ>dHHkW0cQ!q~I@*L3Zgbcg5r&v$M$elzSUjPB5(`Q^tt z>Sg;%K0@|FPDhTt`@ry$e(P6Tsa=9E=ZZ(x=l2*r0{O-(1EU%@iWPmaGaCAqULoN1 zF??O>X!0Y|GpTur{zCjNvo3YXY_pci-x^yT-rI&5H7!n_KHQaBLBaK$z2TFV?3V}W zS+7UFgvu->e$U}JpInrA`dOOMvBe%mrl3xWmhW-_%Vwo_)6R!Aw`{De7BjCLFPUX$ zX7sc_%)~qKNy}$Yd+!zLdp2Yzhv}Su;{;;7&R<~f;(eXUYtNM%Np)|!X}pl>VcMvk z-YHh*yd_rk9+HMQCe75^SZZabi_==(;08l zjOrmB89Dv?uEjM=?JpL)dL?*68Ap$wioI6fi$aIgyZuU(lQQU}20Y?U=roI#R3z}} zKRs~3IJkBHTWK|4Ttl=@{|PB+=WTKY=ec4e{fAkrBiGZ~%wjHv^i9`h((gI>q>1{< z!fxd*1=C>3_`DsxcIow!P0BBK-^lRG({f3flvlnYzftdL`5Slb;oA51Q-hB1Ygw=C zs%d`zrSP8GZ`?Q6weE^;KMc zu6&(KC$QMc2rvs2byGKYn2?|xxeabk{O=cGrWuiO7@J#=p)+cHZ=Q0vsRNtoB@U z<=mF59qYB$aTD-EX9mG?65HdQ~OC;I&$wp{~LBBhzN!iRtXT z^BcF%XJDKK?9L;8-7+KJPih(}rCZ_6W59=_WP+4+CDKTq^Jq>LU++#Qt%`~per_yt z!WZPQgjy7H5R}9wLJGdSc#szy0muJ`V_1FQyxT0%iej1Sp`-4=#|e+C4=G=ZTH>}Kk;zV+^;+?Xd9;zK||MFmpI zNc>y{%6R&dXbSlXK&P#@xkZRzKwxnbaC8_jpNBC9I10jq73NCRwODh9&CO78g3jkH z+;RNdQvbufz=~_IM6d`3D-J+@AkvKzE9y{9XCb2Y3M1}wi9vj+FDYay3fY`|bZdVN z(|~&;&8Xz=dFnCUoTFj%YvUgQ47v%T>x>!C`0pAFML z$g1R)XNH|>&vuj6ids%7{KO-6;_UPLu8Xv9!xMK)Oj4|}?k>0z)OjF@TjVJ-@3m=R zgOb$SdyV_geKOW#?k-5;-AL4uUl#pvsG^{BGH$W!Z1D-DjAzW}0zilFc|VvhsLM~W zHlOjxBL;;TZ{Ar;opHzWAJP|j%StPiMs;m3<|R6bsHCkhcdv2JI%vZ0uT(EJjm8PaDYU=U(hb5*2gvOhlFReZt=PCWzuV!QU~Dmm=(NBq zcJX(4(^6L|$d%8h>8?Mt?k;?v@-xiahURhE@ddy6L)DGX!(M3RlTuiD5G6h^{}5f~ z{V_$iq|nB&M4yRAr-4LO%gD9L@2iC>^Kw_6m9jqMUH_><&zm(;pT(XgaW&8AX>9)cnNe&t3 zUq`&Lv%_}1U9tu(@wVN) zVNp-@VBhcGalg8XYeH73&|tj$gJGOuT9+!z7N(S!>|-Sb9ff<17Dgis$mK3LPs)@7 zZDsp(rPPPXiX83lUVOjyrkvcT_|@;%JHM#!wJUqJHZAV^{CNE6oo&ej-$^g$xt?fL z?l`;LdG|8A6A&W(b)wp@JY0!O>P}+3o?dg&w0z34Y3=0DREBzKpNQdzhQ~NmJ6Xi*@d@^>j~9=%QN^IxK>@w~{4{ zHt9Zxg9t$L>hvBW(3OKw3z#aPVIqc}0VSD&f<(4>o{}nYlv(H=rszsj=Gs+4PLX1c z94j%k(|uD~et3lc&OMm=>frfGsKvuitI0wz#yLc>1J)gZ5N9ua zIWV6wc{8!4$4(qF!W3emdc<50%-ieI>$&glPxz_m|-?SD|b^wD(x$Q#D zA~|mt^ZLsPOAam$t}H*T13$^1a<+WfV1G4Ju4+eh|1j^cOZ2Cf`uDL~B;hSRyP3gu zi*mv5)9H?l4jI|*e9w6dgI^GV<`C9E@gZUYC_qX;2{u6jv>iaBOqih~H~`Kk)^Y!h z%K@w$fuSP65kn0Z2x3k?LV!yGBY2=<*uHS&jN~M@#HbK*GQ?cJ0pJJJ3qxFx(*dc9 zq{4NokWfH!|Fz?WRTd-X<6?lF2Y75e4j>=AO5frQW}Iko3v=hbO_1BNnr?yYi&^%k zSXR0dEX??PJH!x!ErA4%>?WT8MmbR<>Zc7XLGx5dYQ=+E7=F1Q(K7jRvGhFb(?{A$ z$UTDg7*Eo{dbv%BJU<%E!j__|Sw{_~vnucbBEth~*eB_BK(@v-5mvt8eFg9d)o6o) zbB+OP+}LE81Zq1cC7EMv+GWsb-+~O8V-&WK>G}qw212Ss0*VQ|^Emih0hHk2sGLTb zL*OgrftZRFa;$LCwZOv%x)RchD~TuLA1Erf#<)emc#mOJ!`CCY4LVB+Ug~sYzru@g z_X&nAwEG*_YB*>2L0%1M$W8*i$@&bKU*ow?eipnW93FD5 z|LGmE#+L|;Gr6CK4AKT3mra#a7VVeBN4B8v|JAQSya=2sh_>~HmKh#OjN+araN@8e zT0-g}(1n1P7Sc!RbCSnq+-DZdofizq3(QI!}E(3;4L(i>w!~dkC`A_v;w9hpl0>= z8)#ud;xkQFpl(3*9J?bT^RihW_($N0J=luC4KMxQwE&$vto}nGl_ zCEFhCbi(D0#IT5?i!TWOtBl3&I=Dx%DvQM1oS^Fc|3W|iV2J-e9teDagV_deW&?K@ zK|iF(>V}j~aQ1|(tL?Y9VzQ?oK)4UUf1G%g(;aj(VuPZ?7}|LhHVHGh`~aJ2z3?+mQ=<{;|)qf`W3Q5w)? z%qI@6L00RmkM;`H$*_sNO^% zYTu^~jdF)c1c4284l4EiaC`!R@L4dxV$Q@b^jbS~NgCkPf2UiUbeWLY5*i^TxFaZR zb%Br56K)SmutjibM?qmFbJ7YiW;ozP{p0J3r|#k1VUnmPfIxOXE>M9JE5ydr`A@<47lj0)wVKl&`OCyIbl-seGn_`G71;?` z!t7ZUVrAzfrzuP3f)@RHU@?-n1>#QqX)Qzq`JX|L|7ogkFiu6f7vw; zR7J8L)x_kv6BClc?4h-!BGT0{=6Z4c$14#y{~EwFoMja!ZLnLN{3!*L)|$Xmd5V_R zt|xH&m@sUXA&GFhWY02DvDI@c7}o-)lK|-|V8sB*Tvz_%xX#OxeID%%CKS{;qfRRZ z8H|REOvII=uH(U!sRr^Tvo0$OvrDD3Io{kC4Bt6(mwfusCB{*5EAu$D$T;_#9&^sd z+rC7c8o>dvF?EO2^d-8T`SOn$>Wca$urRy$HQl(qK0vF^%l;tx;7!2^rHYYjl(+qD zEY&zX(zAF{ma}!2-pQ(DSWfRfBjA5?oWv)=TUECSSDhfB%j;>A*m&MrWkZ4-$(_M_<=Vfb5IPq1ynP=}Xo4X8sUw)*6?ZyKk_wlSWASU{A~RzAR_Wp{atc2a9w= zHn?q=$xa0ZbFOGgCOjU#{NCvNXH8X3nv!AHgmHKZlaxwQB-~B+Qhc(sdEn3qVAFr^)T0Ke$3BRm6%AAP$hT4y7A5U$@MTX zjSgcma_J^&Yi)f}Q9ilsx4l;9GtS@qR+$z|zQH*?D=mAlfaTX=|Ckyl6`#uK=evF4 zUR69RP<-@&gHc4)Rq{Zx&!ZHTHIe5MU3nR4-3&35lRuOBYs+pIbVuDCx4FU3?V0lW zLH_Z4QBfNWMr~<(QSbd#1E;?!9aqa%9Q^vT*|KUze0}#!@`s1yzj0gneP`xG7aqCc zL}^^6j~u@4YCX8pY3EsxVN^CjWjh-B=8SP@J*kGuuj^idLaOneS_b1uHtlf($Evcf z9jm8YEUG!gxi%|SRvGR8v}eqGRWrISTTSK-tyEv7i<sFizZ-c@-*C8^ZrH*V_iz5XW#q!(-EM4R1iYd_2G7PHoUAoiGU`$OlK zKE4+xR09_ENLNCo+G$qebL7)q&+abjh?#hubv*lN&fOe;Rh^XYN7%EEQtslV zPK8Mu}t5KHsHM07mw>Q>Q}qdOerGk^K4LbAsaWe1sP!!JSjtn69$~;}Zs;WQs{E;o>`$x6dDVcudEiG~r`$uYTsJ z7H{I{mcc-XAcI2;DQvPL-&ZE#4GpvRd64q-4kU{PH$4 z7nvr^K1$O%k;{9`O>=nDxNGIMO|0wI z4FR^@&muO>6359Bq3*Yh&Lxpf*&yYdcg{we*A`YSjhQHeXFnpG4XnxJyFIGXHrkDy z#^&Vc#uM8p zkL1M<3-vjUZyak^J~GN&^iGYWOA?cBvy>~3^r01`vvF@MxaCzyvC$E~*B{5N+VQG- zV_v>EZ}490#=hACz3;O(LgY6#Qa9>!*WKP2i02I@m;A>4DteGI)kZoHD!<=ca>w<^ z*jHkD1B)y9VM#uD917Ylm(iiFOTLA+7)^Rq9*r=nM) zdls*Kg#QHX#r0#Hj9Nx%CCPC+2_p*Lyv_n?kabuqcE{7H#4j<1`yic=n$z$Tmj7w-mkkDGty0R93$;+F&pXYdsdGF~fTK%ap zepg@r;{CZmaXBaDpH-x5=iqq0UuEC@vnF4q^!qQf(o!#*`}8rDk+Ng&E2xPyOC_$H zDS5TXL**~mu@Dq>ay*Ie9>2!;ojZZKW^dJ8iS>6oM>j1vf896wYt75{D9folY5(JZ z1D1JfYFgZmu{=%>Ra}(Atim)A1kB-xFuDY%`6Sq!`M%{f6Cfznp@2bOg!C6yM1Cg6 z{|`|KC_tpAS)nNB!idXIN22+w70BxGZ2(4PfQlB+W*~%)`R(~@{A2Nk1b))C$r!l) zP)d&dOl+5FcRj5-5n zI4{c_8@kY_llvp+miQJyWt-LMUdx%|Hy=74$s3P5;$>s-fLcvAgJi{iz-L^NBV^~| zw?&SF-K_!Vg44sc*(^_4^1ph)Q7b0n*0E22+-NCRFyKsnp9m+Dv}Yhq>5DxD>IJ1P zFO&te$bY8n|Nb%vd}~HC4(ViAgsFFAH*~4#dhoJoufTN9n*PT6}yaf?a#8=Bl3V@y9D3W>Aja88}@nKmmRHsAc^zJGSaWnl^k&- zF1)MVA!e0$>#Q~yw+@u8o%D@LEAwGX%#) z8uEevo&BoD;hEjZ3M)?}4Ekfevbj_Bv&!AATR-H+7V`}4r>gaJWZOe}N$V^dajoCe zbCaviT*R-A^3gLn_=-_%%^iUhN zUMX!fIx9UPp8L?r)>g1KS(YQ=fkB80tN(V<+1l9`=Cv=jcL!aZFqmq8reHFqZX%s}f&e2$D++kNqYCZhGI>+h0$R)c^)E{USphSN|0Y2Jcv_!=X zQP9j=K(mF(t_VCH5V$GQg(&WBZ2}6BNuM}(a63>rGF1R5Ac98Xzt5HS8oX+s9u7`} zQ~qkBpfn;gMRYR73BWIaTc9L2bLTcs!z2Uu3BU%U0n0G)jWJ1Ro?(S{nfg8ws5yc`j+3Y)4I}qsCVKuZPG205c)*0JF zvl#gR&pc2Emk=Vr+hCyq<_?}esDzZuz)Qh9xk4L{L+1!v+whqwgg|gg{z^`9Urwoh zO~iBoA~T`^fei`4xBLICmDwQ~QeHx-NRS-;Px|-f2nwxuw5$LUZFQgYuYmjG0HzvBZzD8U8(y27a_&8b$Ab_% z?3f2~u)Qk;&F>D2MyuOoVDR=PR%E~ABtwYw+vGjfY48aFDa#4{`=&bvHR8SzIER}X z3E%{ni7yPpz;>-!TG`1o1Yy>j03~Q(Ls0{bSs(k(0r-F-kMD=V{7~S3OpnZwG}z*; ze8)-y{Hl2N9^j_I8X&zw>1BY*LvdCko&|q(#+Y)w#sD;y4&dRy?nD8`C~QyM#JzQEW3F5blIL@*LLif_b;2!JL;OCksp466Z~M2I8TEy)N18}T3P z5}ctt_L3r_DJ#k{R+McGfMy>P9pWq+V#d^d68t;x+{ik3BLMgRe8IWFjF{nShcBwv z2voy^&KPF~l$StW=Lgsh0|kQ>MrnD3s1UO;1a}*0B4GF**ER(2qbWX0nfpT|1)dG z7-Azq3-I}fQ362Jc;RILqT+{76HAGBWuC%8V))=6UrXLrg=r99olwBh!m&#cDjKpL zMZO_UjAvw#1?W2O-xJS82}nB+JWm0CMW7X!U_2#^eHNHSHCo`HOkv_vk)#lA5k?;d zx_rU63YKNWJv6t1(+#%}fm=tQZT^X+Q$reKgv#>b?PC!}2^`F%L1b0^&%lL%az=Q7 zz?>)cPhd;VjACRw zIy^HRG_ly?4o8HAz7dik{=6|{0^)xjKRSV#6k*Ixj19gKz=~&}{sm_LF8?G}XsHLt z3f`0(JwLbr6Hq8|6OdV0PXGe z7oeAe@d}tPz_rHQPl2`>ey|1#F2(4ekW`Po$WHvQ%?}#`k>Y1Q2olXivQKmA+N(ob zZ=(zhDt_!ubWs)_Ai!I()5nLs^XpDLX)}xoyLrylV6$ zq*@1)0^YkwpNkio+G09Ilg-!ouWvSsqsvO->^_^?GlKdICGf=kd^d9#G9)#fCA+uiDc76nSHNC72204p}J zd9HqJ1wq#|{!ZGwQDvXMp?4-e&7O`?eL;JvhGqd`pX%_sUL2BsGeJ@od!{+8UIO@A z0RQKGQ(j&c*jOcr*e={=u###tfIKlB zRzUFChdlEG$S)5G(jh#(;ghj{~U~V!snHqknFnZG%$moRiZ^uyx1xR<`v!H{G zCk#4nz5r~)i7|m2h%gr67GmR(IfnC-9Hr&lZ6X>WeGEQ%&~BcIss!7%DUT~8aBtEfI zS1v9;JyGBH_UoACAuUl;aKE~#ec0hZVf4{Fl?rQ<%RU;;2Oco%d>FUqk1D=jF&CD6 z@YyBZU&Wa!V=-#{D;kV<9x)jjD)!%YST&h$n)h%YJEV0y>dx%-!Y^A6R!roIWN@zk z6rC7jA&!l~^$i0T^5HLe!v_PycD+pOds9r*csNQ{K6K^|t96|`CGg2FoPIs~*;?Sr z!(1LxD$V11PmXUV9(FXdv=SJxsejASYx#`T>zL>*)n@0&j@xC1MfEKQ*QC3?_jNwa zY2R6zCdEkNdwg7~;LAk!s|Q8u&pAyda*Ui;w6d;LJ>I)8-!}c@6CIP@(@dqkpX_Ri zp~kOB%AHeSl1r6*CE6kLkxj~dajqgx;DEZlYe(Tk;5possI)Bciz9bS?0(pNKhycp z>!2!^R@3uR%F?)Bj% z8}m{Nskg}4{*ElATKznI-fwGP^BOtU8r;Yy<@Q`_&waKas+%hp6DIHDCz;;`@Wai+Oo-verY!49VypK_m&ohtllywoAT?s#cjFPaUG zI8wELd}?p{zEdmyxhx^M)%1~?(#^)KN2oh&=v9SqVcx29LBDqUDkJ@CiLf<={P8^N+|@Gx zc5z=f{m@L5XC>Tx;Ih_YWNFTeJneM)C-!Be_14aY1?o0^bdNxeY|+uz&iTrFJZ|Xt4|w8 zo~c{HLa`7`PGYPyVHzXqhpx1iv$AJXb;{26oef%>%?pzW$O`suH`dBHb&lbKDmAY~ zI#uXsrIDqht&PvY6+b&KN$CJkb;&%wQkcA3Z|QjGL)nx0SJ_fL6cZb#uGaBg&( z`tH8GK9c7xTd!z#Sh!A3dGWJ(t!=yD0hT1b(u?{^qaM}7sN36qB!>lsj0) zSg};#klCkeo|&}Hcg=@=)@S74si{8qsSF)Q{_M_jy(+_nfK|$hfx4gS3+LJjzZGVM zR$S`ik@m`wnE75Kp3FVrwzJf6UvGgRQBBd+2Bv}Ob^caCZ{{mGSs7~%Yo1Q;(}c(; zWzXg0G$nq$7Mr!utsqkovOA&KYrhDWV0o5idtGx~Kv%wcZ%Ah0awAb~d6~=0lF^<( z<-yD3{hVrp0ZVstZ*wzGGbeDObc|Y$2sfb~4wn_?*!&3NZTWigC$6l94?FBF-Walz zrp~@Ln3H`W-~K`Kc(76g;IB&7My?af_eWU8OIbcxjG zp#15tV~u?i?(QQb2_{2^Qg;f6F3oxJ-Ya%TePY6u7)mgapqm1%*-1yv+9#^jlKqNm zYR$YQF$c7T`D8PV#)XSI5?H<)=8`z?*_W**De{VR$fQx4RawH#DwwqiqL z{lGs-UDQvcgI6DSGFPN#*gd>oE;%YS@fO8kOFLuPzTY?zE_ttQ@{(5+-ZA(^zfH+V z(NW$nb*#Qmy~QYE7XI0FB+#}=CnCo!0?o6*-x1$ZqQGgqya+WsnDi+Ub>UbqV;@NL z$6OWP?GS2U|M~yMSiiOg_k8Zkx8koEfbj*D>!!W!-`9q!pP47*tyC=;v_q)OkHdE^ z%`@>(25C$mept&Ilu;U^@#zky6VhpS}iW>QQDae`(?7GBcQ#*jwfebhO!{a-X zxseeoS3K4_i$S#s1yCp-iIsjT9+KdTINmQd3L-N?bcjCz1v2G@P632)>MX!@gC-GA zCBiInppnppI2V{Yj}R=Lp=;p=?+m*A@4}25C^Gh|)wRCQ&^~4<`8qtYndaPg{q~!* z>g_sEgT$|%IB0wBLg$=SKIwsRW+t9~7a5l?D~mF6f~Rb*h4G7Zsl8>AAzD$Cx#s>M z|MaK(H?Lje(GVw7+fQCawes@B^Q=zKV@2AWG_qnx!Ut2jug9c(sgF346en1=F6Ya5 zBeVOtvWZ;BL^Av1g7!6e^NxKY_wFpb>%>hERjnyBUbELZ#Gw6fTtB=uH)o6V;BMuK zK3D1I-}mHP$Q?MhMe<6)<>{;&W$6|U3_ub+5RuK|V68vz-sv>V(M_%mAV9-DVzIpq zGGHMEbXxm5o|ejEx2cA9s<1p@2pT@x$v5FZEyg*<<8f#7j)TFc6(-Lcl{Yk+**Pxf zn9ov6?5eja75=Eu(nR*@csyhGe1xdKzo|;@NotME*xoB@uci9Nm*Qu{+Is9-#ey%I zC)Ijeu4St|6Sk;U$*F4JKB52h37?k|xkqx5Gm*|KpU?tL6^*wJ1v#RM66VBps8QNs zVj>=x7rgJ)n7NQh$CGFIF70~@vKGy#)f-Qqi(Ya%UT$4*f2&&jMn&o>lg0(bBJHOS z1TUOFXPo=lHAo+(se-8k!QtK++J-TMn#&X#3tY|+Zmmy0`WBO35?zs3sV4Smb(+tW&WjHSiJ zMTZw;D3=2~&i9W2Kh$-Hf+Y770qx^eu0EM71qB6NtSp8}N4It!TPaD3Dsv%q3wENc z+h|QJOmSN3+EP$+@zhrvj>#k8KJP9|bGX|g6R!HLT$|V6AIt(%>#5%@v0qfpdm9nu zu2CbM_y)N)8LPovKj2RND{8A0Z5r$z;O3os5p&W}md;QMZx5wvL2HlDTf^y2N^3dBr!ydnHbmvVw8#xz*ILi*+*atTFrwe|wWVjd z{o>jE($lM2ANncmmRU1=-rL<+(Q4TLOlQg^VdZ;uVZoqWVB>FGZy2e2y$yb$wFI*o zj3fJx{h`T-UwP%O_y+QL3I~aB9Je%eI)))Y<4-__2`C1>SH;?VggPLlG66fl3<;o} zgf9S}{w5cYNx$Z)BvYNF@Fm8Gih!EorkfOqNI0zUu6|@~{$_zBIxPq%{0YmyGoJQ} zdmF{?o<@|D>qt_*gZe4Z%Mjn`k9HoxV;~1c9#j~EX*=Gg(CrWSiv6+(V1ScL4)_5= zIcV|8bc(d$c!DOT*FK?ugoz|{vcoq#On5rIh61~YfYDE(frB1Y0VyWJm|xNI0vMqt zEWBt2>>?yC27)Osf-+Ie22e`@WDo+CKf3;a+eV=60t6HeLJEX+;yu_x;dTE*AjO!4 zP89fF9c-#CVuZ}VI|_psxdKAysI+SlAB?MTR1_H~zU6~nf0I560s<2h^Jx)_H#Q<5 zvJ^nZLPRHO*g*cr3@-pB07U!()rL7nki-kkDNahl;=?8oPA3@#a9uRC`7m*SlZHnR zX?@KQa};J9P1=8=`zYAIU_dB{$F+Td)J3o=`U3Vv6f^{ryiKeA!@Nl&S@1+~G}`%B zSx!nw>_Z%?)1Ve_$2&kH;1%H6OuYmVqES+9Nc9WBNd|zJoDH)2+%~h?Ak;4ufLm^& z(PJ-oxJlEv@n(ApPH_`*a}WUtFgIWpm?9l+Zt#&LA_8XIG@EcG=N~2L|2)8)y)if! zOauVs1k3`)1F(;(kRWq6WklU2=8fci?7X8Nee#&D9LvPO;{9Ur*3>Xi5gyrYfhfOZ zwdPi^PCW;QNxWqqr6O$KgMZ%^$ZC33U|Mp^9cYTk`~#pfP=*4qtpKL3${w33e|XFi zFDJ3X(Fw4dMN5MLZK!Au%aX?+WPIWSMe zNSXNc$A1a|$V1YIeT7?fiKT@Z*vd_7=_d;I8e zq^AMx!l7hF(%>~h)-MkB3w&C_=D0u!frX$8?m`}~7FUBmf4QY5d>j%NFd6D@Lr0r3PLrBUA|<0q6{$GVRLVj{jdy~SHpTk<`ztfNRgsQtANUV ze5M>axp){K{#4?0p@q?sgrDF;p%CM7uhj;hK9U;91zsbRw-jkZkO9ca8=LFgeN#x${iMo7 z1%_(XvkW)|XLQQ?%!wesbZ0Lv#?AK&Y<%E!j}8TRwSWjC{x<7811HD(mpewTMsqUZ zNXgXtrpZ1Q(<@W%7e!4;ParW&w@|*rrsV+Ix_k!`Xf<=`@pmYA7l7iOh-vj08}Y%} z+D*@0;YYQI@=2Fi#_CLz$NN^fhr~3LEuQ0!=S5L13gZhTm&g;kFJx+Jsd%b%-;Mi? zqdA@_#C4pcTkRvYMUu+w!p7)B{Dzl#uVnD&_Z#nQ+Z~7VD|ep~d3xmbdgd-^Dyr>N zc49OoR;Q1+aI2II^ovO`39|*aSDr{$cM{@Vs?*3P6}Rx?$IS}FSSGiXku5iAs3&gc z=?b?`OjJ`o%XQ)sn2idXcwq5M{GnF!4WP+^YZ=3DoY74vfh?sT(w}%!$Piwxm045uQIt_^woCW? zGZqJaCI{3F+$(wZsGwsizqRO>J}*ge^Xi(t%x|2rj^0DRa8DzjZqFj-*up-;vAI;s zAL2gp-qevX6HBucgOW7okpY8i5~4jF3CA;zZTlLreiYQcD-DYBKJ#odRba@owTFWiydLE z-pLa#*=RR?ji(X0x#-&4_H+In34l(X^-MHzzW@GDSAMW6EWg|uM&calI z?e&}LMRCU(j^qjTOv`0m>-hGmeXjRjA{9+}$?OLAjD41qI*)cixIfuIWu;8JaAS>a z^Wye9aZIIxw#PyiUI+^l2tG1=v=;V?|ZLnWJu4}pA4~`uJrzU z7AoGv>FXDTIqF@0?#rJOCH1!c?zT7WGZ%*B4QJjrmToKJKO5d|`oQlOPx*N0&nR+l zfrZ^KzjjP8T*x%;HrX-IrC9Ww${}NVT3*a`pCGk^O~)3)EahxL{%vb5HS84Yf@^oKR4r-ll!O_Px^9H&cMP4qi5NILJQWqNALf5KRlk< z&A7ieC;kF?Ky6w3izBbt(*4QE+AH*PxALnBM!o8~<3^a=z3Ur48CeFB$WjcIfj}k6W79^|U&iR@@VPv9JEM4O$JJi?sAj$BtnB#tF zkKiP+)@Sn8CzIa1-us}GiMZn2PHE5=@~6IdG+ypddQd0Af=O?bV`X~l3yJJ7n;kT3 z{poIjFWLIMv(9A6AADlXbA3#DX>3@8(KGJszD!%QLg$ID+KC*k;s-yBHC21U=XpO% zWbc%_^J-Y?hPcnHsmsZ8KHJkw6P=~JB{ErF?Hgxd_9gWS|8bL5-J(>yF8Y@282KB6 z2u*+T_P3{SqJ7lDBfoJ4SHP*TU(UyEJ-k6KL(JGxdbX*dYW`K%&#{JB;f^N%;(8IS z+Ax<;mYY&_7LQ2mxpr$>6x7aTt@WEV*%-N|B!7hwp2TEw9@l*62o1>0!HD znyH;**Z$VaLN%u)S1(=Ys64BeXLR_-{hXb3BfkPjex`_I z8y`quzE9<~lvK3kQ(O52)z8AcI#)QwDHkoSaxllt*ha}aTH6jiueiH-fa$bg2WwYr zE&WRTgnQMXv4`n_lU!xR8sRBP%ZYAPGc{du#oBBWdoH+4`#baAJ#ee85B^qutU8jgyGa3rJcaAut z{e<~K{kq0mZPV^_G=5COF7nxlWf^`l6WMr?G>7 z>i9uej1P+7(k`HXUU`)JA1DO>;xvYo9x~3gg1eY)f(?QROM^)=q zi`Xrn-muIgGoKK9ATv-W0E+^fX`d89+_IxN1bjmu+J}7bkJ-^r(ltp1_Fey^A5m%{ z3oJT(mU;~9JnG<~O@_C&$1~S}q5##j`82Vn*$wwg9jMtl3ar(mNHNJ}kH=-ty7}!} zN#-KuJ!sQWnl)-HnVvaL)jwy`@a^G?x}(2wLO=bXoj^KAf22%;-!>Qu;{U0%@BK** zrQQ(`zMdXhm9n@LSkf8$7PouMZ(gR{aH8bkN_3~dhw+`SLOXwCKk;?z@fV&w!hZEf zSGrwpzL>;9r<0Sj+{NLu!Mg%-&fYC{dRdc`vG45S=#B{)@}c=_AEJ&IU9@&|bb6Y; z@cCvyqTjP&T#HXdSy~+DVEF2_)fPW*rc;Z%(}w$wc%M{0d_hc2mr>zYig$rt(?c6` zmbZPAB@_(VHXae`vGTtngj6@8mvDCErjOR4&GAxLWsaE(0so^PeTTae)jx;oX0B)n ziJmTxyQi`0v;RYkc(dh^0&+nm_79!0#&HG(%5*~Ci)mHDi62!5a+OM?im@fPXF1)a zj0h{eNy8ziDSM_lan+AC-i8=`GqTVUSm+9b`_4qt_z%uyw$ zN#ZrQQxjuqf8$0)o<9oi&CVnZdMEJO|6xS#ZXO$#VwQrpb z=d4-cEvFbl7Y^0j+!uD9{Y>!9wnA1NGvSog)uTM)Cz4w1hGY^VUr#ruZcCKx3C(4z zQG>=LkXY=~8>U_otU2ZrfIA@MHLX=MD*!PEX97zUX#;~X4ya86Z@7Xz1D7z?KXZ$N z_Kgd{gfg#p0hWWVY=BRI?io~r7$Je&3abqxmc%VC_(lBCnumBGQ+Ggl1 zFhJilmMjakCIQO$7EN=AO9*3Clg4ftC9PG8ANq$f@~`pzH8*GqX?RL> zz%dmcHAq6C;FTUJfI&=~eL7Q!3-zipQL_dLWfcaWDJAU_MDsw}?3j4(@@4YzmClX% z$;0ts0n>6~8yzXLYjRpFf-AL+*-lVD+cpt z#|ih7Mz$ZQ1*Z?pKAsp`e+d?Gft@L-;4b2L)NxF=(;`+#DoSha=q%rv^^_RyCn#H;5u4;G1GoYot&JqY7FyTTnZ!=<6wY`7}6W$X*S3qB(KYnZ?F$zdP zB#ww4ahWk)Cmh2oNUawxN6bSYW}zk?PIv>j002^rpju2UPyGn=+h_|T2fk7odj+ z1}6!ibz`b~DvUezC$JPiQsj_1!b2L#d7AQk1|p}De!|0;bZVoA!7YaXf^I|5C7y0Y z3{YkrKpH^8g24eWTTw;`9ZqvjfvA?80uO?^(;>>1DqtJ?13_Cqr;ULi7zT7KG0Nj~)I5rXf5x?VnT*_$=Yp ze2u58Zh}w$b!9z<0e}DFA&Dp4VLLx!c48~Ze}wFQ1h-BEHQ|9k8!bA}t^cd4$A@(M zKYYChI931S2Y$I`HYIyYD0^?R_wExBQ9?+F$jVN3%HDfdW|@(d>{0d>l08HJ_c@n7 zpYQYg|Nqb9@#wl;=bn4cd%PyVuwYUF7A~H3CP7lkCRfzr1;AKfc+Q7XL!bapI2#Fd zgQ$Sk5x6hq@7;?l2PaHGL--kQ-RRI|h6aI?XJ0URjD22M0yMd(fe0S%LBa#LRKZKY zcM=50g`6clod24bZek{C6bg%mu`gNp0Kiy?_6bEb|ND2&{vcY3FxyM|H6Ca6fCj?_ zhdaM<8y=FpoTpKzy?o6*F{WWDj{fwb%)}X%hCVDP5^ne-5Fj}aAAw+`e~<=XMR0}#v-rV569bPtfLy7~ z5nv%}qr#(iR@MooA29Yl@@LG45NNqR===p@;JdMfkV~e?^Y-wmg3JNXLH#e%*aoL3 z!st5u&Iwx7{)&;$K9avg8;FQNogwh40=^#>#)9zzhQEo&f}wUCtlr_QvpEDa2jntp z2g0jaR2V9lH-V%WhI`Ap;ef0cRL~k5Dim!xyUc*97+S}kL%tx9SO*mJB5IXU?@P>24@gTe*}XG=5vJ* zVmXyXLZLV4_@2`gbMX|)Km!jEjxu1-VFCa}VIja%(3NZ=5P;q3K)@dNHofr%OAmawCnIKUEDIX=v zbXyE@qbLs!#a4Z9=WiKo$`=wZ%@n}xg52uSxFo9Gdhq=~Ae1ZANoq^fe2bIhbTSeEr>|Hv@& z=^wVWG`*B);NRme9Mds<=GCnRZ~h z*Ez8)xjka@{jvT`dn3k?8_iwIWz~k{cgzm^u|UjwY<{!QMasAT=W=hlVX6vO+ZU<# zdC{6D@2ter#cv8wKH=2y%HR_w%bw$nx36#R52yO!l+d!Mx^b^E)>%W=Hj}q4ajdd` zbWhT7E9T~MslAc!S5+5Hi6&7~Ve0Rac?wOUG$97=ih0eyuqnek7i_=x7T-|?R1~jz{avV=fPGZeQKjGP>&Ra#>Gn|VjQbPr|?}m;KRo)~dQFO|Bj(Z}L z7*lF=`?h|%d#qgnr}Z74hvVClZN5L*iHI<=d}Yk@_N7btQmSSWHM3|r`jHN5Xx029 zzq9JcxkCp!hL-g?^#m^sp^ZykAJ`>}ye<}@bw6J-lPQIgV%hvOHEVgo&7;s+!=UI_ zh4!6-7<=AzKhBC(fr;U;6YejfQG;B%=^_)GwD$h zJ4=}CmVc~ZR9bn{bPFsvX8)uc5c5H?@_m)t#~M3tTk5F<)J(>-y=tH zwQG;xbFK}xv-KMU9r{OCQf&U#ighNUy!~C@pa#$HEyFwy5FPKIFqhnNktdKH6n>=H z_ucXPfR?7J-~J?CE;WbWp5Ik@w!tx{QHE+6*`@NLL0^XXhi2kL4CIo1_2J;h_||Ol#@$2N@Ccu<&6>)8IWR8q z#3G~VHrXYU@P6DCGu-H0?g*zoYFw3|N~^q;P}x<>K9jo>$}Fz@UCx+!*8LX>lO-ru ze-+zv45=1cJ^nGgaxsIHUvlc@0sWTLxDnbVKc+m9T{E@3%U8RD5cJk;Wp!2Ay4l85 zJ2BLf3Jmu-p9tjX%VGWYlUxT`x`I1fT_63r`UWoFU5!LTIPmo6t()zrbh}b(Mg)B} zI(nd!F+@SDkvq%LQ#{S;4Au8WW4PrM9)69xpesw=reZ6N}>mQzrWFp&7 zQhIduK?E4!(>pMtAI;UsVXrZ>D&J3wJ~r{_`GQpkKTnAFaW@$-9(shO4zGsfCA8dd)qSK{mG!eg5u zfpG{sA){zxdJ@uOce-$82EUgCxjz!`5`?9-&W-|_DhouH%CNdPN-Nxoba#m|-5dOa zK%sth-`)}X|Jn!!GK=#{gfmMWO6YO%N(xGTA_sgkKyd&RB4A|;W^G8AAO~PNu)YaA z2BIQT8PxB2OwF^>;l(y?F4(S-t6ze=-djOI@wsgvjK$~?z{JY*`N z3{H4(NI7G@7c;e-{0zkM4*`R@G4w~&TY#bpdOfZ)U*C1$YXaK>RD@Ls_!;cyT?5O( zg3bpaM*xUxd7v2}^pN8%$4Lr?ez(Y61&Uw=bnRG!e>n;FFXmchF4JDwTBTJg)fY?- zEO1t7ykp@Dda%h|eK8dg0GBH-D9wqs=DLuE5L!a#(aPFqGS3FU!+9ejB+qdogI06q zE~s6n91sOr=&JY+z#AR{Rd{=&;y(e_^{8EHQy^GhLyj4SX7K-_j+}6CTk`wsnl4^j zuCR^yFhDoa5$&q4r}GU{HZP`SGg+x5O*r`$mu;`=Q+Q4 z*>zNCMt@`8?uddWRIB@&!80bSpi`=n(j?#bfr?VqI-Um~!ZvPJ^SS8Qa2F+|Y$uzB z4wRItW84!Lp*gk)rj=(|0;K^$B4mQeE5m~oGOB*5sqs!pYe|i-i#CZ7Aj+xLOeo+} zwM-|q$i3-q+aaOd2EMd1YO%TazG9Q>%Lzlu{U0|)UMK5MOzEpSH|svSK`TMz#^M^e z!cch6v8UcL2anAbD6@&u9Mpe@yuX|OG~)VgRa=WR(Ur7sAoq?F^v6?T^O zHP+{DvFwh|JFD9)SQlfbh?yTNqNhGJC{cSW@g%A`FL&^3n0WlXx4LPip3`@HsCQnr zjY-ZnNf0QN?fb-+r)I|`$I2qFxHufM4*opCJ{TIZRh3oD$<~f+p?8QcZIq;SZ!;3U z^r|8@6J3Sgc;5VeYD-FWof@dK^4IC#tJHcU5m?+ReL$>y;)OxPnP!dVm4r^@6tB~n z^koo}f=0d*XIw^kCQ!VCBwmp~XlN|NPMC7nVs{o}WQ_9Qwb8fXm78kjc6OR86{f^t z$_>|lUYQK&UH>rgsM0#;MWyM-c|Dzzo@Gh9-F@W^ZVhrzq4>JhOM!;*M~MsVM>l7& zqgSOa*KE{XFmm4-3k|=P=kB#cH_>pbX~lWPMp#XY3%khowRP{uVi#Ah{W`hn+Y<(& zTr!OZrj58u$JT@S-*)^K^{!P2Sw!+~@wY9byRsYgEt@3TCJ1oglNtFUQlAsGtm-gE znb4Y0STR?%vNgGn1Um!_7i#7XD%4%GHj3TlIPpI!1vw(drn&v>(YVjdYACLm3$8GN zUT_Z@g+d8A7zz!vgM?DxW)cDF7I-{qd=xk_*S>}UX%X33nvEX$lR4I2lw<6A)CDAJ zmW1YZ#DRwg{tWQVhXZR=$U%$h7|so#Uim9>vzwGCEe~}h{bi;FWG)C;DFed@jM3_s z<1(pl+(&r_Vcm~Ui%haMa79BUrVxUKOA^oyf-!vAC|-a(;6%ui>(GS>ehrc^%wSg{ z>3j$9*qw^$T zsM1kgn<&*niuZI-v(uei_|st9x>R4JC}nr^ekv*O)j#L$RhFDkU-)uFPoLGZz|S*( z*Q@MU)Zq_8c;Yf`p2bdT3_Fc+taN*h4rMI@ z`6UX`0NcH3u=x{7gTJ%VtkhaoL! zSQyAIbYBpM35%k*HvS@Z(;#sHfZ!0)K`5?V3BV0VC(2mKL?Tfkjh_NC3CPC=m_7!v78LJbei8DM&X7Ef^q}3Y;1w#wOjjLm$v- zVFqIiD5Qabq#Vnkog>@iTo>3h2dGsNz$v} zKY=9M|3EsZL;QdJ4zeszB1C-OEgF5ggiamB1BrhyPE33OscGYwSmWXaBcb`aHH&6?RzzT{(n) zoh2v%lI~oX2!<69;0{}Wz#s$eXdw237T$n*0)HB!_k8VYPWhIWersCEw|kYYoia=v zw=1%4K(Qh z=pQyqowIC+u%|CTjOf`32?Wa3|0-XJp|f@aCE&$VwY3IC3sSjdnwVKzuNMQSeLYFE?-QIX~G^Oo0()X%{k@$ zXr!XkU2Ef>pqU!r(C^8-F&yBMF+9W(Wl&9|%)N_EEa_}v&GBk7g+Sf~y9SB9=EtDC z7XJvKwAfBjEiCxT;TE9!3VO$|z8Idvp&=D~{SCr6yLh2%{#+f3f@z^!;ao;53nnaE zd3ZoFf^Q1YVs|#$z(1h2DEJ@?1>TIAfu0~hc?iua0_DC%B*bhrItl@>9xx8j$cGLg z%ccCR?v7 zOsQ3Uz zv}Ifck?T2km$%&iN;$YrMA6F4;!!N2Q!pyW7>?QTXIw*o;ng#|ACkPj1jZ|w|Cl;Z zsix>?I3L>(ps~+K-f2`MggF?2UHh0dZXb};SkRR=7D9mv>wr!q(5K+zn8^`C4m^-p zNYlt?9z*Su8~m=mSNfXsPgV?t+XX){RtK=ZVAzRzvfq+nqcAUD&GYVetBtTC3QU{3 zqL7F!(fA%&Gl~}|PNS)D#h>n5w1nd&{@4BTWp*tWLWzYaqII>dXauIeyf1qx)PjQe zI>xJ}NS668p9n;{w{q0!oDd55!f*Z{*4@_FH62H9kKqt&3n;HA;h;OcT%-85_zwp4 zQFZh~v}Le1^Z4omMx5vN!qJVZ%)I1VQ;4~}SEY%kR|8Bxs_ zx1>)1%U*Kn`6h|hk`*CbdN$jU$J_>$oif-wjYAI9_*hE3^_A}9mclGh=@{eN@+Pb5ARBhy2?%FiJ;v^OHJmmJQCN`^OL9~1CLD!y-+baubxuxTsj4E*ZMj(-sBWX;m+79*WY z*q4=z-=%vm^<{fnSv(r#xIMrkeHZu6+oaN#D|$1WFUs3n$*5`=;(xklk_|jFYNkM?=Vy7O^Tm$sZ{CXyN-EA4k3B){J@g4W)-@;!JT< zNQ<|Vk7|i*-RlXeSB3?3KI8dk4G$?|%6+3IsTLJY@%83)aJiE^HAe06#dSb8#RWM| z+-#l7Mt!BKIced`rQ5~>d2#N_W7gwOQoIY?EOIB2OTF0Q?oLsXrWf-?5x(&Xl7xqp zJ>^Sn9i3vPWG-7DK_;AwX2Ms!Y!iZuV@xqg^BxZIJ%11s7gr@4^s9u1cJZx#oH$7} zyI5)1CP()yRO60hrc*6MFS}kgj3tlIf0x%rA;=z~ z$@V@dCW6~>Vc}DoMf0RY@xx_nPsMD7R$g^dt#!#M#g)or#r|YfK}YTRix1I>>~cH$ z?BerGZjE#2%(!5Q`%WDxc*-q~6pqxt%QsBjj1Qz(=KQ8Pk@;F`*d?e}KM=|C#K)?G zN>Tn0bhF6hKMWAdX3N(z#F9$#JnY)1r7qezEiEoevb5m%`r#PYs?woNE+vHm$gzzLdi-(Ks76u)D=gG!6kuh+1;~+OW)+)_aB3h;}o@ zEMLDayj}!LW5*Kd2g`UfO7UhB!+r8VTme$oS zot5{(-jOm6M6h@CJW`|8;p(nl;;mtQ+pTU!qR+{F8qLiao-FP&l%G~#tXT7%Jd97} z_g*W%RN+i2@$RpP-UmCs3z$|a7?g{;74=iKs2}o6Sr0^A(;pvMVbqL9uX?0}Ty*!o zAgx)G_I03eVmvnY#iXb1s4_DGA5?R#9eczc{z3HAPv#c6rEC}clW1IMqZ~KrJanJs zB;+tj)$|skQf_XNjZr6AN0|*9`P4uxk+!LEt~yoD;I|a@bYZ^TZ+5(<0e+&RYRvS!EN(r|)FZiOiLomg39@QCO8M}*B1M>}k_@jU zI59k7CjC51txS2>Q*@ov)Ut`$zL#zCpAtbcj7vA8pBaL$1`~f#(m;|rZKQi=z{rcu6U4{=FgA=mh{B! zP#I_kWb1`=SWrMCSRqrRLeu=9l`7Q$wDR?X_}c!Lt?st)b5i0{I{QSd0Aia&D$4@NN9zJT=-1-@*5jmUm0BcAue@TJkm$Hv1~ zceq{;*?5!I-BA#;QPgzp*$FK@2+eg?y;6KH-|41wbEeuOO`_|q(nW_>1}m3M?w+i> z2WT0m&SZq;bC>;8Uu_Pmvv?!Ax#mt_<9SP9?5!YeP#m6R(eCBDVa3@378>k*RGzo3 zPT%_-*qZGnGyYoro@ldw{naqfXQ`?3HJ2l`JGp#ffmFVeqFbkotqzsFBvCSVCzH0z z-&C~(FkHk$B7oh%TC}5AjyNE)C3sN;s4e73WnkIQbtpEm1KLu8g)x--F92`g{WCDj zgvW1~*Cdq^yI@viypql07|JWi$y`QC^Tc@?HpC}T4yd2VduT}yOVFJ%WNP~DUR);E zKT+;b9vt-SjHpR2{9;h?G2OvvJNMo27c8~3gI1yTvD%*rb`IIbNCy>NoVFH<&H4++ z;_o(=f~7yV1zWqY>NBN;T4m@bIjjJ`!K&obp1h^Qx(4ejc4kr;WU@EuVoq3Ynx>e2yVo@DfER9eBB*7;>WVxJ+B!}RanPza#8X|qAPRCUvLcSY z61@5L2ceNIEcAk%R)k@zW@!y0{5i6|$fBwX*e%yFcWfuCT#Py=SDrt$&ew3rccnIa zEd0i$J}e5uL>$Uv5DvGVs>o64dJ_L)kT@AY05)h5cSFRQ85J-Nb8 z_I0veKgr2fbhwtbzJ0>r%tu7}VK7YfVbK#Nn-%h#l45Jc+|~&OBhTm;>9$@EwkeAc zi?;gaF6gsFmxg<2hRaS(%1!!wT)Ftr=$+2?H$9_>Pcco&5v0!4sYEv`(w%f;T?*Bs zbY!XX5fQ7%*l)k*tb0~283t5Kn9XQ{yrvWUAH;YTzJ4dUxyP)TnpGyXRn=8hg&KAh zSJDdym4ABwLnod&IaFVM$wt@6>>=;*6u&hhOoSylP+X1sYH@>JT~;1@!NiDx0yToh z_k>lDT8=7pfwHYOK@!_Xf^$GZ{>@Nn^xKTEg*5z|*i+WcE9Aq&b-H^2f!^$@A6aQC zm34e0lA9Ji$v*i2>25;RuHGe8L5Gn;?-I7J4@d`xl4YJy+I@^xIn5DJ7q(!tRjn9W z<5aUaw)vV7*XC5U*Kxx7FjGasuBUvjA+V0|=UQsZgnltb@23P2x`45fn7y`Dj=9_s z+rAAe{|C;$l2_^r6P)*V`OQ}Hyrfsyy4llm5?pM4QEV+8hMe3lDIO|upVG}AbhyaO zBe1Mz*q-CF)=;x($>0}-^9qM8geEC`%Pz_%Q;*iChlf$0J?nF4LE2!K7P`9@&Vf{} zf#cIb@@&EcNmZikm6N(Ri_XtDXQ*sKhsCz9bGqyfr0ew~_6ywTks)6<--L3wl-p`1 z7>#5hbHCEPDFJ@s*gIo9Vj#vLxguHk$K+*I%f21Sc8XlB8K+(0u1&SKt~TMjHc20A zSXVrvJv!g02J|8nC}hKY4oEF5>1pm`yuw7FmCemMJ-gArCYGxyRHdTvM%2V13)!%~ zmy91bl=zHPYV3wkz3U%DYi@>qRiTs1(1&OP3Eg+^iL`dP8hdUGJbd`UBmkpK(72t# zfnV8TUt4{L>P9s|P0ye!^Dcj!?e~GYe8no=_vPxOtsf(a#uiD%$cJiI&}s%Bd$GR2 zvZ7C$8XXsOt}4|mD4fyYk9CM2(UlFTIP--11A(<24r(t6(s95z4n088>KgnmsHv3~ zFA$>FlJ-W4qX2dSteQaE8Cal$+Q9OG*~K3C+oRQyI<5QwoR1U*V?SO^D8nXDF8W}c z!-+mqahax&36)eG)Yf9vf~p#z5QSuPD6Jish_1nf;m}4u(HsLsL=sqkIuop&@95*yAnKEPX%=DjG$iYzRqYkf76w1;&nN&VZi5yV8I2^6)2=A} zbd!EBkG(VllluAm`lM%V5`Ki^$x?H}XtGRk-#3DeXWh3?Bcl4He6+l*R@R$^2o7BO z{_);oK3Q6zLJBzjB-%?Y@V@Zfcw-=)WHQETpQP>EPNYAZ{s5dtc=a!u4Wl#wIr|9f z+bF?C8em@M=NU3NLmD>!J^*{jr9jPv_>pq}L4=Wg`Q$WcvyVSh8F2*(Is?pr6k7&_ z?*PaOM8^OEm^wJH7ee?g8_%&a7?AJFpK>E4o{|PHf=((539TPNVm~-TlN7Kj|K>$N zR&59@Rs?QxU}rxEWUydqJ)A%az(~kx3p8;sIt*0~p%5nsI0=Hnb0A0s1!e(tCM+7~ zUq}5!6Aol|0E!2-%|P)9!EbQrC#aD;7kY#KFF4&o1q$h8d3^6Ihw}vxgRj>{F_*W% zqB+SKoZdGsU5>PYAb#X?hPM9|kpDatCxfi z=P?{c_($?y*I-o5xjYoq0rgvgJPd#*<3OU!vp`PYt8yT$8mxaHD6S)lPbpZJ1*9}5 zfG7FFVFw+d;4lF$3^Er-CE&0C9yTDQuAfD}zJ?!9j0i^|Rvf&0#2JtSD8NhB>oPJ1LUP+SGk8uL&l z>lpy7Q?iH_gP7bb1IX9Cx=fAk(|(bcq#{1wBJXwtCw)3YupfZ-Z&)7=iqILux86cX z_q@dez@`917?PFB3)kX#K-VV}D+5y!Ff#~}nZOkSL2umfk+X)-9)^%kHVh_69y z+)({l7lhf9zEfF8DEmVD0Fa15s>Lf4X|c{WYQUObH?2upr!)!32V9U>ObW!@EO1L3 zl)nkK3bO$Ci$+sC0E7!q%cXZ_eEh@+C7d)!{w)tQ>D{<;#35jz`v9DOa5&&9m~Kpc zAm8F!4vWFh0x{;H3m06P8el~SKCG{4prZ<2*u4S&l?Pryn}Jgrm(BnNssDaJDE0>= zVF1Bs95f;T@EokyQTG!H_JvVRB`E*of(kFGI%JW6RITdD;dcRDa{h71ovWhFfX^Kz zhJXS|PzzFgJ@_9^>VKfw{~5&pD`f^Zj*M+hTm3*{?>`AA4&J%>Vt)`@8P3Zm7BpK@+YvLB z*Nsa+g!%Fnw)HHTl~R(H2K7hPjA7eAoN|6VWpc!Ud1q>7@R%Zt61?q!?gr@R8_<+d z3=Oye8N~j);H}tzWj7^i!*LcMb`CM$&;_pwo&`QCsJbBob#I}h(&uj)gArYZx(P$` z5wpRQMulrF(`b{Ap52_ICp^%Ny)pD5jQVwuQ~MTGSKtJ zD`Towr9`zhIXCe>3pN~eZAj|B@5cP9Pgo?m%d1Va%(0TJw#l5u{s-|{ZY8SlU4Ob^ zOo?bu)*60&>`38(eRf;?FnQ}j(@}x(s+Z(pig;_~Dea0WeR2O0*>FX5jhtc5ZI0Bi zEjHiU%>aeR`HIs+Cfx;{gwoHt{90Tq5LfCdc-!gY@W1`Glvmr_i9mB{IOd#5kR-48 zTyIkf%; z8SLm9^KBoI6OW!@6U;*CAa|#6gKdrqV&j3Al+?EV3?G9rV2HmO9#c>f0(bx>gh;c$ z){?XCJ$RLo0iuopS#vp_9q@B!O@nr2!46%xkbi|1<&i)M2<9R45;Vwz1E_`0BM3<=BUNzo*5Q$&&!X(!+vW(K(daunjQ;Jhhc z9w-d^ZU-AlFur^E2IzdmSa}(32BsDgidmoEU;tNqE3bllfW5867z36hG2q##r4Gb6 zpM}Bzmw=`da4?X2iXH;S0oM-p)j?++=e5-4JP11iIKjD7bw5zanv|cSZ56GmFrEhF zlwX4qIMBuZF%BZ6&@*wb!E$Y;MStW@>GCck!f%-_?Qke$RIV+ik}b4-ccVURGi+X; z>q&T8XZyg|WB$>{b~e!>ui4vU^QKtV)~+aHqa)3fzs+78p^nh`-5%}8c_aJKx9It0 zF~_4$6;Zy=W|~A4v4ad&#H{ksV_yl{mU;Uf?C;m@nAfyisJCpSh@_o==je0qIm<80 zpuTugoJBRdB%-Iz$eR~fd?i~M!#JZ^wB18`?3sE8qg&`7fEYiV7#0NfgTm#l9bZ2F z@4}n!M3ad%-)>n6wV;7G-OQx2f$sDW)x)XT7@O6>TUF9AcYb*rrwkCzV$`nesaEX=v;uyq?xp4EQb7vuK#uCkvTTDRNu`I67n z8cF}f7vP2~5;W|&{xSdTgnszwvF>}al=S1}v+mMJ0lcB+{SKY-ofJauKZt;Teqi8z zXe1kRbPIS`a&*t{`%X@I=^{^c z3B__A-#3c2u?XwTY-bOCBVYFmH^lrZpYjQJuJ(%ABBO_Fto|SZt^1elC-3E%G`xsE zS&~okth=MSA+7MC(CHXWU9UuP|Bl0|_ykeoB(2BM?&M${hkoRM+)u<^&EK>Kb0N9u zG(+|GhAMQQ9FWp_eBPV9SW{)3fSxVBWMj7Ea)Ga*Qfr+g-08cUdn}bC;n3BW+=ULO zINiA#e-KNb>MihJG-BjQwWLOqb}WbZ}lP|OKi&gKQ*S^Lbepf^hP zQz|KU8rkRrl5gJpgK+3&`-2ElSw1?nm<`>~%F3qk`YOB>lPSen8*k@s$Cc@!`hBvP zrzuh3uwB_sjZPC2qA|7#?WcJ0Iaf?I{I(D@%Ck;$#cA0WAytmZmDZMQ9NSNHx63Y`7{aqH zw5-lKz{G8{Xj&5uF}p_IwsrF|k?L%iYDw&!t65S)hb=8L?~T^Q&4;rz_0!OwPEqw< z6q8h|P_RQ{I!aaO~&Phr~HOzF&&$kdRLy<48uQ)CO$ub1moecTOXrYyS&z4`;o>)$>p zma7aalY6YREZLy9p%FWvZ^LnQn6pBjg{DW)d*H*ALJ_*I@t8dxawR2&?&)T@DYwQ1 zcH90%Yt~e~9DDj7>fA*{M;a54i#blDRw~ffUV7f3X`B8+b$Q}(@bkTZnu^ONvRUE6u^AFypDAE)gti}_xRSzUu$S8& z3GN7~&0L<-+www5t2*Y36xi_uN)oO9FjFVA!-|9&R{upeX=}j=C&Hj;S&Hrf0Hue^&Hiw1p#y+k-xtnQHFnlV7gH35FAK>&_G`1H_GyQG%y;jlD zojoBF;rvULb;TK(N7|fb$F!%8lCcpo8$)jb?T+fcE=*JmRlGg^ipPhkmc)w@{RDV8 zK0PH2xc6|#Zq-1c-NjR*9!Iom-7O~|*(*SI^l;^y*v%oi6QvE!qS)M*F)=mc78aY5 zQrxAnhqs>?5~h#1yL^qM^5kePF&by~Gt8ch=3rlo7@r8xQ6 z^y`=@joe0tW8s#c)9;>(T$dX0l#yXw$sOqF_@P;Z)NA~qrFjQ*4VtAxrHMH_HcUgZ z%p%=N4dXpJ?ex~$>rDkIc1s4#XqcF2vWH|p@EVguKOS_06)sYzgF=K-bT9si=)D@I zcgwevIzvRTCpCu>w*?v{%1H0{ZBCgQ(i-kW`PkcfZ{K&c^)CA57NzQvl0jr!kmkLy z_^5!?`|14R(JB42dn`xUtJU$Xt#{O8cuiw{W_fESfhbXC`o3kzUW=~S`xby3ElXw9 zboa{$S?WhVd5!*vv5!amZOdDywW`|ZF(Isr7;Suw7)4IkO&OHQAXR_)BL-t-{6*Ug zWoEML>;)0Llna|vKe`mmoW8|K%kAh=r|m4!B)W7RZ}wFcs?*IQ_gJ)g>FDoD@b|Y% z^!`EUNlFQK94~M70Smch?t{ZwV*g&id7SyhA)X@s$cZ_IgpI-<^p(Ta4b!ghRt5pX zSWGJZxnQN2jvEALabWe{)hL5Cp^O-|P`P;wM5!=AI1L;~iGEk!iTH{6U);UplkPNzKA<+KO zKNo0gz%KAUO2NknQggs+EQF<5MB3Az$q`vOomyT{@mUOU*p2oR`)PNfi;J^{xS7sV zHkuH{vHEmdo3O>Vg4h=lPeHMLvQDXc=zH`*yVeD_+?O=3CFXV$>>gSp3(5xDlDZvU z+Kf;B)1X$Cw=&6!nZ*MI8t z^AFvv9*cC}FL~czbbZ-K_pR>8mlyY^SXS5?+Lk2^MijiFrW-m37{=Kzap8zGNf51y zb?Yi|&Q;b)#$W089D!4`W|q zjsz7L$~Snns|L!`_kfqW?1Y8D0l*c|*?{FJHrYdF-$~L;=o42*kPxK5f{Y!oMiU4A zyoskk(&Pbs$?K%77q^=AG;VrxiMy6@ zfNPuwE9%Za&6Eb*1P88Lfyr%Z^((^HS1j)2r{xyTIM35pb-mA>)L;JU(EsZvdH0y% zi)*&%WRjt-{w1G$<3Wvwi+ia|-SY6N%V8*9=v^6Z%^4L+%DJ7SkxacWgp$gxoiCG~ znQh}TWwVhICA*Q)2HjkKGjj8Zq43}@`=5ylUs-es_}sehf6% zi#Mkhesz1ttlZ3lI_yi~)+ZX9$UC#Sen)QZi(8XXqq>0G z?W3tQ1PbKznx=va`@f3`2ir@F_owz&U01Kk5V!gDWvqsh)_=_{@l%k@N(!}0?eeaq zVuDb^HShL`!QW3tv15;F)@qG@eehf(Ot;X_Ho9Ky*d#5T^)BT#L0ANSZlq=T^Q>og zv3td`IZXLC!U&7+haRqQXaHxSN8*0V(u00STA2Ev2-fokV$MPm_^$40ZPH^;Iw#~xso0pS z`~*nCKYi2xJYey>fq~qk>Crg2u0!3DtQ(2cHO8m6YuOfT{(iW_!B#LO5G>i=y{o zTcEcg?6)#`yX52O*XXou?Vp8vNbmk<;|Z}GlD0vDTpS-I4J~2{rM6aG3{>w?>(Zbj z8V_FUvJSF$NE73JTf&Y2Y*Iwu`q5Bd)$*%x-`yc`hN)-tZo`fy$#tKH+N<7Y*&148 zG5tY|_)4~^|1c5%G;B9~tYnmEsCD4H85u-#_4Gc_g;A3wHc(_qfDQ z!sQouhSv%`WvrHH6eog2enFBGu0vmRVR|H~sunSWGP(U#z!67#SO>`At(m&F>} zc;Ymov#gR|9`uACRebjNl@^;Hlq>tGpH4=Ewx{dp@B_>J3AJZk*crDbZ{vlo2oz$9 z)qZ#tiY09x%)5Q(Q+T@WRK6g2y8f7<=*>R=JKJ!K;Z8RR(rD zu49KJZ)K*=@VpQ4t=QI`g@zSt)7c6y2JYxc{Xy)P*^T>Jq_#a}5AU$A``9kQ&_H zC4LviTh8cmSZojQ1{9ip78nkr{vm6V_=-Ycu1<$Wcx``Je-HqRv0)6Avb+O8M2xub zKdAqGoHPZ>!{H|a0*H7Dg7jjQ>gO@Qc0fD|^!dT;63Wp}0w0aZu^}M<=oYEOCnYwX zj(~iCd;^|`rwd@*^8m|jHhQH2@Z5&~!(s7WQ+kj(y zbEZ_$?549lQCEsU=`DCt#~p%N3&K<;L8;$mN3w^Ez*vCdfHca06%NQ~KLI=w;xVAG z2k;SsDCC4kP{^zfkRZt7$Wbxj&PuEW%RhnBlVjF!vnPrDsQ_aE;@|(;MX(_656L6~ z4dKrSqL)We(q&AFQFM7HbchdR0z8=6)e&If0gIw@g5_Mj4d%!*{k08LX(kUPdbBRN zeT!s)3OcdWQ>|}D$AF*}C<9|}oe?U6AZ=d*`MN+f3s7uuRw3_;D&RU`KpK^#3tBVL zuad-J0n?G^+lwH38a8U+BVa_A0)v@e^RCGV4~0m?&GHa%;DGGHg5M8_g~9@w70Hi{ zwq4Z0@5E)I?*;%mP92zE&N7g0V?oz|S>#k)Bf#|V|ghDVI>T>~0 zv%ksiFg=Em4*R0c!8kc!K7iOQ0J(t}6mTnmD-Ez&_;KewmO``e8HHXGq_#7GB`N?# zKT&61q2%%BhZM3PGz8crp(PG%letA|&ybb;64;FF@PI}=TpheRxO5>9mCw9b6UuiF z0Na*+760bGuv1K=zqK(j%|M0c)k#{hg9BZ4Jv1XcPe zj|=R=h(V{Wr@XExLl?M+;FKD`Y@SCP0j3K|3j!!7SSb^N?TP%`eP0oRjPCEe=+|FHl*=R!dNLbZ3ehN5g0E) z<`Fb_{GVv|ziCat)c|l`nB|6uvwxom$WBmr0vtq0Xz@=x70-b10cT~_o&i9|?WKHL zRcHA$=`eE#TXGE@jCSR8mUZfAtN{@?>`0LQ zDg10y5IpME{Qv!q03bSwHUcSKFjINXPlEB>hal_KdhJUF6)^4q{{tX%TNu&iTe?7- zC#V)pYN{kPagvJx_I0X8?!{%w1_>U5e5=xK;7jYvR zGqCmmqYN|@f$%EW6apt-fn@e8SK%q)U#ARU%mI;&dXOcKn-^&8Q3{8%0t)bg@aTWW z@&n%n7AmrdFp)&ZbzPK>@(&_n7SzobNbl%~?NsHlF@O3v;r5aaTVHxe(LA5lcPAnW za(1=gULk)8{VlUC)Kv)BeW-Q;@`Zt4fqMg`s537B9QQ@Wr1RY(-Pd%?L84VQtK4WI=8oY*+%620pP!Rn;yf{G|7`wd($xl{76LVq6+DbNc;@3+13 zlT>dtY{CKk4Dj9-LkKd5GXa$dfz8>ATt(I7k`8VWL3b-SmCZb76p3KIFx;YW_4?UX z3lNy?;4geWpQ$_ixqWz(_PbdwvrMyFe8b(AZsn%Bqg_|I!4|-Kv(yD&&s9$ARc^E+ zFaf#Fvdz-=yU1_6@x9*A;{I7n!KmPIxz;l4bm}Lsm%Wo!O?y~9SAA*Afe*dtY zu-#y}!8YDFOONeFoRo^;<}H1)h*2LD_>5k8F~UzmEbEasqx#%FS)S`JZ#PoqCUKdt z3qpq9$m_&&w2=Y1*6M&$i;cOaMwa415VS^)T?VdNgz^jGGDt~Dl|c*!Z)imILm4!h zz=(^o^ZiF`3AkkV>y0A~#u(0TQ11!|9q@&^)2hKN4v*7+sao&@8w)|2$k~njx9kBt zm;tif;h6^*KYDY2;kQzsD2u*|_lmH#dvja^VkbBV*SShvXpj!_` zghL|(6BrvSpM%TlT0C6c@pxMN6Zn@h2%`dKUNEO6^j(={1#V!UQ31^>vrtWl0H~^! z1#6cye|QE&)s^515TK?*0gM=gBTo2M2w7YP0%w|Q^Aqu9w;6a60SgOOXn}`wSouk(rWLFuK zuHLvxLlc&3iOjMHncb2!6;K_*i^=lLl$nhe8RC+=U@si@BA}5hrjYNtMZND)yjAS& z^?Wo5HJu)GiKL~6Cu#bFE6bq6kYGVBteN26EBw6#ftNAin)hA>8q?UJze<1P=GgX> zYOpXsJjZie_}x|6n0QReZ@v-b_;LZ}X@wd4J^Zqnk7e@@6D-lH2L!@-eOrp#(qB0S zQ!Wp7F7>;%V$@woxk+{%E%yeSq7S0GxQTA7a{MQb|7Q)uLZMhHty(*|k9yaJb|NMHVe(hRb`vZB@uj1?6@(6KCRJo~*#)xWn| zc->u}F!jr_2wj`QFRLC~9rv5us@cMd_*ph4f!pgNoQfIl%dhWI-X?S$b@OPTJTU*Y z!fKl6WcV)m+7}ri9I1h!=_)#JmR5%*Y}I7jLJoaQjSL~L8x|*4{o!ei__PswsS+Di zcQ%Hk-hKLP|8r%0Hj>*efH{dq%g)^E&9B++V!YTKWrypV5tB~aY9B@jO;ZIo9Wqh3dicQ!|M{?3Pe;p^Df{p#;}H(0hR?1Qb;zpN#6p-D?R9(G0EG$# zGf~Q9FXbNg5;lc_MHk)gx(<4O5bRG%b zdFkEnE{%Ov60NZ<=U0jJ(=SQG2kweh8M`Jj?PD+3E*rVzJ1Nm6H%Zr4&SMnjB}F^( zxr_)D4qz%KQx0v@aB;JjvOVzwjRrgKH7f3{%+nt)K3rbXF!napiu-7>X!hZe7(oDO z5W7)YPvv34S{;^eH~7Wr`%=q@yaVTjQs+s@rVOUR`*%<7S5mlFtxb<<>Q|Po}o4nN45&um5*R>-OWTB2lPae_f#cmh%Q?>M^vKr)Ck;=e|P%_7Cz#oLRlje{O zrYrrINZ0s>+&_;ZG=Bv4&v4O_Pgi3PqUFD3@bsSnL4`s1b~2Xg!f zlH@;#xxA&SSZ@4JW0@KKE9`ylp6&wHL+Os1g?a|v1vb9GGIXntNHd2cpED+sI;^qr zbjyqEngss<4O#vJ6SM}T%p2!Ufr8L`rRsd|@>(@dchuRm$b({vjy#b z4C*Gxp0Jh|MGsHwR$N~gG|2m5EW#4i5nFhBprGERp17d0HvH&)+c&QP3Ae|wDL4C* z4)r_fI`utsLpO217Ju=;_lo&8j+L)7E|k?h(B|fc)&GM?tL5mjd)u1`;0%kPbgXRl z<)<%rQ1Vn)c~2+n_0gz3Sk`ECQ-e?z zBYxTb$XnJlsPUIX?ARd-5TqV`@xE!UGe&d$U@Bz#MWt4|2RFz{-*HY z>HtNyW&&5#yBxNLptkm0Scx@1diHAY1Efci)BQ{0sTN8Ob!kZ^g|+mv;EI;G5{Ve%(6hvu!|wY?<4RTJw^ z5u2eiRcLMdK?hZa7{Uj++U>uF9!ozcIJ!L3rc(VQS#xW$?(_e{)>nW<(e?2zAtjAU zcY`1y-5t^?AWBLLNOz}%lmb%HAtfn-fRqS=(o)jMBGMi2J+q+i``vq=XN7flmYq3s z&dfRgUy+p?_Ul|w+w;Ubrv1{%MD|_ZYAqWp32;A`{tchwAW}m5fx;FrWSR=SzP^DJl4P&z0+rFbGxMKDm-qEarNkRbDeoW21&oGJomfDc<6Ndcw zR#X&mEu;A(WV`zqRT6*X2Muu1q}R~2c)hrtFR*!A%Urg%vl^49V0x1i24f`FUffGB ze>H3IsL-|!7Q4WBv`0yV)2ex%2=WH!o4JS8O%@ z(y>|=$!5+!uz+)`qVD5InPYz6HLLK&=t>#=cd2+wS`Ng9v7p{-jFYQ} zSj-?(ECiV3rYB#mC3T-Cfcd5}GWrOg9l_5>RZY zZuUYbg#sN=8fWptYO6PJB6~a++6GK%P|yL*6}$w68b$Uqh=z31!7%2l5p!cASy~Lp z1NqV^p9l#QJusxHAfpZG6+~Sn3~&N*=+Oj46bMLHZgh75)}=II5U98So**Gc+X^Wt z<7B59dq+vXXxi76_u4#Bv)d=Dn;5RvGrh1P;S$!@EjAju^Dsx|yZkQF`^F|RYpsuq z!ttJ(YhM!dHs1CmGoO5c7js26YKTa7Ihy1|l$E>^wc^cz=Ume$32Iw`T|+1Lf15t4 zmC0ieT)etsuxGK}ux{>HDdHhGApZC|bAF4&?uIVgE&Ga?UYfJ6uVn^N`M4bvpKp8n z%(z+cAL72qSt;PjQxj*FYA7($Xly(?S7v_`uf*PXoPM&w(75JS!vBVXGH%6zrBu2Y zE1E0NgKFn}v<`gu>s-p6MIE)*D&5QvIc7b}C>Q799JG&1m&CP@^Eq+AT|R-l}}h2}y5yt+Fb=>YHT znIP6=V<+~x+1u-med*EhI$_2Nutd*6o0KNG(UJFE$nUqel>fa=$Y>@^f@lNqP z`APWfSkBFWaD$p|=Rk=!TUkuafKjz(%o%pGv@Xte#Ijgn*Wri1iC7qz6 zCuP%yxiHQCmiR}1H*v1!vT;rux7k+)6IPNcHhD1RebrLq zQr{4oarr1tu>O+6ZA?_i(%CqC{}~^@L}>zMWt#SOEZHZVhary?yLEK*v?Nz4)PPN* z!Mkg}y)AL`9=CiH!47z!o~v`lxy7h?Mvj{&^WEVjWaEV5)17(8P;I2a2jwah>3oj& zUsH?VZDQ^CUxUv)oFC42eXsm%bTj+NQT1k4^*^vzLW9$TMGy8Qx@NQGZ0|%g=`Pcu zU9$_4x^SZ~m!RHDTx+4vcb#OFDcGCTqxFwyV9+~fI}ga=9p4KeIeJ-GnfSzd-^kaz zuj!gC(l3&y{>MSPQ-cJaWd+2P9&Nc4EhpI~TWR4%r$DjgZI^(Hhm_r1w8C zEVsT*jA;Vv*7UWw?{+|-^fasIgP?@3I{P;r*msN&Ie*4rb4qw4as z!I$1)U}`DYPCXGn<}F^F?CUr;>8DWimg=?CQ(g7l03PaAiTva8dqFln@&_;S43pRk zL{n(Wa3mKDu)XoRj2yQ%@%2q(iS1Tt4kW&uJBzAD+=m;}ZJ$J_H2WBiCNoNxmKWnr z(8LXYzqsw0-7)i|r>Nmxv*CDgXA8G#5Jrb@(hjj>+8hPCs+Ad2!c5WV(AG$~LE3M& zcO|+L=GsJw?#J9@rJcw~LW4v}ruM2l3$N*gdiqCIQp#Qqz*f*rgiF^&7qfQ1`;+d; zwX~LuRlL+C!-+-;?*tuxZ`PC6DJGvO*ZI4P$So?G^;&Q0BVG2+0-Ky+tmL~@+CYAI zQLQ+$7*{X68A&qq)c#lBP~L}u?_{qolH%3LgPpi|{HkekGlgwoI)yn;{32X_q`}W< z=Y=yRaSKKjl1x4nNKg8H`>k%dnHF9b|IweKY5STwPi2}+(d&*zs-jbM?FDs0U=@IC z_zx^-k4#B#j}w`8GP_rN_u0ZDQnKXnf+NQp_BO$V%jjn+_R=AZ)S_9#pK{l{=xJEzAxSp9J=q0sZlma+{sbmhp>5+x>w|)b4Hd}j?*oz?7L2g z4qi-rEBDeQ91FV_ZXSDgWEBYP*P8@_o*0w0>Nnof2|tk{3p{=TyQmV?w9jBQZs-+E z)~!^_QexJxqKVpUDnAT9v3&iu9$Yqv%i4EJZAsgg52$Ombc%;ns&ZLHg#ZudoKu{Ob5AybhjGlXrH`;CRq;Kb zOZug5quaqzsoRiqIKyA3ocv5+`H7r{06C#xmdCb8vCi9udO4M0_m0H$poxPl^xPlA z4~vmouG^+i*kCx}4J357*ztc@e?jgL*G;FCdU8+Cj=^>b8C`r=vo!6ydt4o1pkT^6 zb5NxBD--kbTf7_n@u?zdlsGf>$;P9~wvy958hWke4jMXjZ>&d*_i?{gwY;x%=PY~o z-a_lf2nx{sFPOZRF8HF76eMzEt(?si)-!1lRrAt8!F*%mmKt|vZd)8#4pcG=mty#M zN%IGMWrWt^GAtNm#6p!$-~)42)P+z!lt>`9xRGda4+YEzpz>(cpTt>01ww;QmzoJk zk@HvM!2gjLaMA%j@)2mHaV~K*s7iYmVNOFBDUF{BsVMT3P$Mv8dyvTlWg!wd4Wg1O zn}j_HszpzsNQqF$N(%+)BjsyYgr_tHEryICsMtaOE~|EL2^gH3>Ln)9wg(T=u*Stu zouo%4&IZp_PRXsv)#C$dKNv3Npo!R&Ol^Q}G}zlmuO62>XCo4m5dU>>m^#D+uY)QP zMs5qcsM!?`jw%xxkUi%(y8YwAUic|eAe$g{^I%+o_dFB;!TebEMus$sHORufg$8N# z$i5-f$}T7_s!g}cgVLOw2f$~6elHsTJ3=F70U%NQP=xrqAH{|d0hZPRo;f61QH7wR zPfNI_36nTLeRW%no*@;6Ig53}ft(N(x5GM$i4;J3mlfmot6&2eLqwGs>pzMV3aF3< zDFh*Hi!%K!Na5m~nycjrvRnURMBsf8dLKiPImg>iJNu{335t0D?R1XK1r=2&zZBto zhbTWIRBo40;H4LnIl>SMseu4=0~G~NJbjRt0(=RfQ$%lV(UvevA2xeCHSVnKxe3tO zKcVjho>Z~|BAFl7g!$bb>A z#H550O3OlvLYM!dJ;_xWKU5Jzp~2I_J()lX0t>GYtt+WiG;jw3HB?T>GU@r1PZfYh zh!IxqI0(1CXaH>iRP##b0O2DRNo2dgDfAC;iRjk=J%ileuQYdoe?)8u`5Sp8G9nWN zoR%wz9;DDiNC6;ISX^WoCO&4av24$UO;7$aC*a4Wt2B<^>6cU9AB(zA{^&`yofTI=Ua0N{0z)Twk{Gn(8qy`{SV8M7P zy}NR%=Ucgy37Q}f$t$%U0&=}dgaO?H926vPgeu~MDnM)j1Iju{+(k4RSlktA3TXm? z7B3nfSt$ZQk|O-G-eRT3yN1Cb@cB?QWp0Ih*yPe;B> z?hKM(M8OLHD7lnhf|h~CGvuxCr;`Favkd_~Lm~<=^pRDoK_U<+Xd|F4Xy7nlCNQkx zM|eWD`4tw)%Z;y;U#I|gA*h6~CFe_k2IW$%2Z_PBoWZ3B$OErN!e1N)z)*n22XPa? zc?OVa6w`H(#(?nfMFA!7%ghge8ljns%28Z{7DHfITwb?;LX<8TKXd?eNfTNOdGJdS zbTdid9tTu(kab@&nAA%FobkW0D*ux`O$4pp^e`!){1l+DgTMn>fK&oZ5+DXpND36y z0s^TQfuv3nk=6nbUuN-dB~wh`zu{`!$WJ;DYPwM1_II5Yto4A+U)$R&S>E3l0G0`1 z5q5AvE+^O|%74BT0ZRUjTY3H;d#*nSCL-ZoBmgHm0gW0Y zzxlJg{HxCS4}6J48VRF^AX>yDC{P+b_3E5mo#soB{@<^rzZ#_y?w2yOw*NnD*%Q20Yo(vRl*E1J1eJ!2KT%h5D zOC!l&8q-56k`#4Y7Dk}}`wKLIq~+jC9}R>k8&YGUaEX522hr(5D}>fIjj^c*@<%EifAQHNv-z`wC;cyysrBzz}?86!Kj_ zoP|)YKyrno8%zx{U}k07YF*{i8}t$XIoJV$s9ON9>qluOH$^)HWUN4N&!y!@2Ey$d z;G0wwB7457du5=~8IN;!1_ISShEFHBIb?eh0_F~2%P?Teh;IQMc?V!C0i53925_we zmvInp10qo9w81sD#*Bp3Q;Zbs#| zzCeauaaMX`BQf8ztvbj$V;12=2%cN9cLGZlgm(W3R`Ke z1xIVNysgwNnHKb0OE?Ir`SzhhlV0&4&AUkJ?V5Yv!-MMl6cRdo9)oxoo?p!I;WLR_ ztW#gnJL>IMVqMghMpV;yC$jK}dOcUS0nxDXx{r?$7JqHY$kYcxv*V;6@r>mD2N(&P5Tw{Pxi*lINx|iO#hpy8Pp&3fEj1@0%nAtBJ_1 z3BZz)^3G*n*-nRG-;7Hs#Vcc;wfS+)C~U#3p5$HcAi1Le_jFSGGl8Kl;+VeWFa~6g z&Lhrxfd*9Ww$e^3zn$StVw`ww97!kUwl$0KH=T35NeBC+YiD*JGJKnj9r0Mi9tZAY z+lq&Tv>#;cZtY~|x;?AQQ+rD!TZPTVosfB&vEV6zhyJj}{?in^O~k~)<0xBcD}79z za5Q(+y2;--@WvF)6J~YMvf8(7$k~r_*VaA@IcBbYV=*)^-Ya|j{%w(yUT}84 zAB}ppXI&Kh#j40pHwlr!+zIOQBx`l#?*X-oeaRW-TI(N;A04r!EW5uRW!Jb#eMi;0 z#>RANL)f2m8$Ckq{oWM&qQSHDtWx_%=A|TZm16^uQ#a8fc@Gu4ER>CN2g6?e17kY~oYwAje8}muw z^#6XB3yhg`^6PH0zM$C+`tW_Tc3FI}XyUkT)Z41y8^-m8_fO;*52%`wZ)D(@+ZcmR zy4GSF3@HXj0V-hmMOw^Y&~eDvR4Kju+5pLj2AJft_p!iNzDw&l$VEG@|khf^IdB%R_vwb<7Z{7}4F&V!-HpRy0 zzR~Bqy~&i>RXUH^$}~;!W>%3Sx1~QBbUR`yI=fR2JlpoP9JccZvV1OLj#f{F1ES~t zfz6S(YGAQzePSlJ%`)0DawOJ6%AhykHOZ_u?cAq+Mt+2LNO7Fpd%TaiEP+-v%T5u0 zNIWI6i~0G{MbldLuai5GCk0R9=chi@Jqd`lF8#@cyR;ZmyLiOgm3$`c@Jsa$=R$Xw zzGJ3Ze)ja2N0BTNTh#idpBey4-G{j-fg0{B<5L!Jh#a8R%Zvvkgj$0Kev%^v%00zi zaV0ATV+HD(ZJeJaiINt$S8!`0aM{KS-ozp8NII^kb)G#K`+zS^8tz!a*%|V|Cn}_! zSU|uZ4erMF&WscH{%=1P@{87Hr=!6;mCkcxe4-q~4c&wr>VsRu7lp3EEJGY`T{5qq zP^f3$KN^dO*f?j2l$!u+)RQjxk4>72Q>N~iu-@59QM%b~k$0#wg2CEkoD z{j%$UYc<_|@-r#sx}0c0KWJD&eYW7w!70?bHyyUC-}If=r>q+e+OO$l%KFG@=d4CJ z?$H@NLJPZPIdJgH2(~6}Bh-GHJxlbmhx0?U1zdVImsnBM#6PLyD3tiDyDel&WFU4^ zr=@z`SaC?dTvqq-J$JF7?jNEKhgsw$o>}F?qxm*k*h(CE!b$T*6+ialD6CFD_qn?K z7~P0^g^H)ogEK-9_(fczvcI%ohx>#X_kn|-1T|}{c^vPpY|GBiFE3t)bt)9U_#Ev; z)4yMlxp-fXnc&zS7xy0+FWn;@Qo3xLn{Ym?)xIfFrBNSq_ZJ&XS=}ZN^E8s8CH+QHpWY+PwcMd83iODcUb@ljbm zn+!V`A&y!=$mDx3slSG$)D!x@=K(baTcRdw#UJ+YREW|?$7Wo#^y?o(AM zmQ14;8t8QB+`3!o$QpVVxPbm5h=IFiwfac!)JzY(&tJt@{>hFqmErT)Th#GR`aiG= z;RDqnmZQj#*Uy)PdD)iv%$d>SW{PZQb6fZk9+;yHZ9(S%%g$bDIgBqJ(*HTDjU(io)MI~8`h<#@^&MK5PRw?+-TBG zn3!*^u8Yl~WG#M$Xe6H4H8?gdLOb!tRuamID#=!|flGd%^KT4r;VGhhUe4nd@EH@R z5_(0ghWYUBpeL(Ry@sKhCzXEO|2IU>pB4(W+P}gT%oapYX_Neg=`u!N?!|P?fK=0Iqt=Mh0DF9 z)$p%+n4`4MmR+5Zj6%|5$^h$s8DDt%UT>VK+*q)!`|)RvXURuG85QZUvV;xc+A4O| z0cKonO2OH|UVp(MQLFJ3eI)N#C-GTx(iOY&$KKgg1pmNdo3_v;PUWi?FWj>XTgR;8 zUu_(5Zt1wc)SR9>Retx9X)5Zabrno7@u3AiFlQ!LGKy-;UMEacap6o_EAFrnIqa{t zG#KJf(sE99z0V)RefV5jod?t&RQ2iU(}caNn|0!re3cG5(}F5_M$L05K1c9;+gmUu z))t!h;=U9T#Qp8Wh2Ll?P_h@K$h+j7RFten9d2Hyd`Ma?7MvgTajK`gsF=&Sm5$zk5k%`Musm&*y+$RIR}UoU{G z{w2s8Y0Gitt%GB$1}52nISiEv>c9$r4lHZHx*stAFo7k{pY0uZp#(XsN&SpUAf^yngSn7zW2VL-;#pawY^{|<+QBw}I|ync1PGe4WI`uk5fWHD z10?|A_+}NQZgo#Pl^UO3i^Vi!+vGJ?+jL#YrL@6!a6UG!B1@GI0jby@4S(vCMi!Jd z<;EQ^ovOL)>lJUvf6i(OH6dtb-Gj%q{m`|~UNY`qGx}Cwo1-cBD8mt>U7n?MI^of`98a0 ziD6jFbw0+^j2*wC$3yYUB{q+W&#hJ`Eq{(FJt=&z&8pc*SuMcL*vqT`Jn^ZyKf|So zY1qe5S`2`;GwxH6l7JH}J2k|^pu~)zS(Yma#r|!*8(_f-*y4$jn6ps51OT|Q?jo{a z8OaB&Ww)gXL3hDX-Mm4|Aew=olY>SlgQ%S;4bz=UqMvGp3;A@NlEIXxB{X-)eV?Ug zmIhZXd4zjYG(xMX((UQGqgGBXIhIs+Wg1lm=h`}sv&J>l^ML)A<)q#-^Z{dRBgM7R z>o8kV5w+N!pl05&^ps7F*JJ6WEXFt1hn1~PtjLw^H`ZJ7MhonWOWp~Vvhrtnj`$3! z4zH!u=9AnRo-n!C9%b9tDN;)z^VVf443%t;e3Xc4no5}#F|k1RWe@Hk{(X|@c4rmk z+l$I(N^R1w?>8VmJi2+DY3)mwji4%WGnHH2eB9K`JSohg3siPiSYcCD8z*OyEmOv~ z3N#~Pm3<`?dfR>3Z2m>Wi|EBSQNL+9M* z%dN4Ia(&@2<(Q`rb`OGn+4$41)fxp5yZU$^j1uGNeRnGq*L@pcGv{juRCI5=TgQNp*4X~j(yhL}9;99>ehm`+Z=az6G@v1 z9~6XE(DNRl?Oz1fRh+~YvepQitE_9FqnbP64b~42dg8r#=oXjY?Cf9Pr}0wgwCS6^59(gZVlF$wTF*j*`{TNdH3b}b z=v2DsR;=^99kODkO=;BaF{82OLt+TW;*KwsANdhE_d&oUOteV zHi)L=Fl+JSEZ?o#fc7(;g_UpN39gHpC?6fq%sIk!u98FvLuc}!K-je;UbT+S7Z4^=PqSN_JFFZ>>>iY3>D5)Zx#SRKH>bY6W2W}= zHL(fCZ&cF2Hs++k*3NxD_O=T*~m#AlBM~BxJ`}FM{t2tb!Ac3p%by2@3)Eda*=|Nz|w7Vz|1?_q}x7vO~xHcF#W7fLNv@#iXIuj;O$pR-zO8 zG$#^O8_s#$#cJw61yXA5&dbksRXP$S-v)-lkrddMKbolt=Jn3>|9cmd~Y8#|vT z*81PkPQrO4yq4GY;_<%oNoSF*)lpECciE0McZ(nCwVfB`Hhn&^xgIdjQUtX``u|^r9Z__sbm2l)oY-mp$F`(&>?cloTU}P$U!dc2~gmpqVXV!gwZAe z5uqtSPq=H%U7C$^K>P~>##^(&W{|(r2yhxm{sR8!pWLFPzvc`7eFmYsrl<&b*G`@J zG{9?n^WfENgVdm@_UT|{Qn2{$V)h1)k$%LKXms|h^G?}Pt>lb4Y;fpN@Md<0-OZkx zwgFzpZzD%DP6xmJ2(}M6nljkzvdx}VC)2NmphzosEl7$8C5?k}Dky5=h9Y>kXeHeVOk>~8Nv~u3Imu70~FZE%J6X##BU=3bs~lo zDnPF|0G@jJ`lZm322}a25#dcZ2oRg~O7;pl)LBC%SI7_*_>HBT`j+$P0nH0xc5cZ7~Nr#7ES}NFV%ZaVM@&5*X+R;7B~KP*{>l5P$_7ME?!s z2HGZ|?O=$b#lT}GKm`0mlRFcdKxm+rA`|!);4W!St_)t=MFzqS)VQs-D>Dw@f{NPa z^c))~2)P)bJTm~+LDrri!MqdLZ^$7)VvFa9c%>In5LCx22!hL@GWP=4r7ll15V)d( zWrB%QC_NG)odq~Cf(-OP==6Moo&m`CIS79P{*%t6CKhU2ZGk(GIuwR+FA(^dF<=AL z38ZiVb!f)69dmLBVdc6yxIBb4IVK|8$csDn7-S5gD#GZWgJHo}@=*pLhqjlp%q~n@ z@OAY-Ed{FJSDH(cDE^PM?`9z_3)u();N;^b_6(ss+#pPfISkQ8M5$f9fiNAF0LG-m?gh8Urs|O_J#6Zv;FFjFhFBPf4s12M-z<_|ll|cItfa3v3B0@5X zqNSAh973-FkRPWu)gE7l&j5mG1UF~_f(*H!{_Bnk0O3ol7<}+jX#=1|2={MG{sY5a z0h|CHxblRDsDfxfISFF3Fq!@%utSJNk^UO={l7S?;!@}R)3yvc3Mho^kKrhQMp42s zf%85-NFj@+-2E5aLc2s@kv{%$8-*}n1YrT;QIBE_g17!vc0xNsZVtqJ2%^B1U=@nH zi~i$;ilB#>k?#UGUxXDQLbD3sR$9;~|GTqs$`HPw5`jQ~NoSG4n1LaI|6E!dbAqfm zF8oji;BxDP`1S8DBOtlI=nX-AHw)z)p;CVg07o$;2%%*mggqw0)V2T&3c}PbaUcki zk_M7b)amE^5CRH<=aCIx&EC%FBDvCxQb?n|9C0#-0*nBQ{oh3Z$Y(QGvoHs*ftf#) zY7hRP2G!N_?SBwi=#~oZB!uc*(9#Y9cfsOgz$*w^qvaz}=8!CctUmycLC6+(7xbv+ zD1-=@*}NfF`T^qpamXpoI_$Ncyid z?}{mnphf@vJj93&>->Wd(*057UJ3ca0Q3oh9xhwp+7&L3*QwOcm2m|_23bHUNQa@qbm53=?@Rj zMDK3(jkka7pMItXyP(<^Jt$P)<6V^aH9ucg_JbszfUMSLaw5kV^>;temdT*}p2gle z&kpltxBB+$Mwp?=s7uWI>@o>+;h#@^oHvN--`>x8q}fIx3$)Y!BZUsK;6dkUfx7xE z>P$E^U>5#VOYkoXAzc`D>WH3vgJ$F_qLrYE1n46ymsIrUz$O`DJLH2y1Af8~Q%i;k z!GS<1AIV(k$udYFIW=HK#J-{f_MBNJkgqW|r11XV(R&SS`5IZSCB`tm`98E8h!PNB zT!7Ax;D%gw9^lapz6YNnkf@mg#vh45caeY*0Ej+>b^r-M(SYbAmom^Ri1zA!3{g|C z5K?(;xmo;87=)1n%{&r9h6$M%N#Y`MJt6)OWFwlR0;9V$RF$#b0TOCp8AZb1O%J@L zfo%k29rc%Z1xO~4t2PpX3I?v_fR)e-?A~+u11Df~V2TFrui!xgcs0N<0Mh~78Mu0% z11cDBLP(WFY!3r|0g%RXEKqJ%@O^i%_{0W=e5gCQlz_;o>@+xc%H%|;Z%xdSWFWf3 zSE7825_@+v6F8-L!2~bk%m!CS3ifrBgG{7Ed6@WIoYkv!D%7n(Z8)D}#m|RYmHHk# zzp+ACnijie$Rf1s@{_+9DTf@@oqhXx-1!Z7&5*q5&ZK&0KfoI}dQ<5~^L)T|^_C}z zE*wUbbg|$6bFUKBQ=sqx$7q8>p5DCpi$-USfURc9O{3}W4{jORt&4`bg{rOkuKnHJO3t<@AJJt{T9vzauD=IzHxQrba> zv7RB@_zdz-wgz;4x4L$X%G&t9H1vwWK^n?N}=c=fttaze; zB{dW4D7}V!&xN!ZaHafJ%ENOHDgMJ2EpR+jT8uyKT-v`wUcH$N+%)Yvy4H)4p zFEzTbCab-feGlKM0O?@BJp)6XH-Ss ze|YWeEZ6(kaIg~f5OTiKG<;pCQ6pTBWaigM5M{SEo+Y3>l9e=NAW)nheFN69cMNjB zjX?awghh3pBrC%jiI)FICnuRijD4Jgl+ic7KlF~5U;lg!%bbq ziF1Q)v)u_ldeWm9YRR91cdcL4-{r&pIW;6!lrw=$Y}5WTJJtIx*=iqO>*2=``#~us zoiYnYQE`Q#`R)6-xKfi!ZdP8lFn!M|UZJ~+F#8}dGX~DO{TP`CJaST+he<=}@>6Xa zofx^B%@pE7QyaJ2I+Kx&fU}7$LGn;B>`NWxp z+Q@Gulr*|35Vpcyn`8rX_~AuR{o~!_V}9=#1t*sca&tk#+fGHygm7JZ^bGzB0~@N? z0t*yfr>V6UH75AzPb{r&YO61ts;V?2PpO=G^{G5@UFA863go@>k^3Rz*TE!Ro!D_2 z7jbU4;U`)bbtsZJx>a1$Rw9E9W26Slj!jQFR%#1jR_F{?0b`G-lgdPkY!_Uqk@o9a z3*7F1KUQpi@oao}1=~68SF_kR+r8g!$5S{qe%2{-#wC}+yA|nARnPf+3oX7!!B#0$ z`>A1TQ=3~Bt4p<60-t@&CWXJ;yv@fUFmc{_VjQUV)7^?8ps9qpdeV2edw!~1^J(5# zsMS8v&x7lgxdtWrFfAAxf&LUn;!5qm(;g zzv>%BytO~-U%$t9ZTCqAuLlb6r0XMO05fIx55slIs>lpTkseS5)UNp^RWK~N<>h?% zkgX)T`w08#(q=z=A1Usot6w?X9H8I49OVs59h%0%GM0)k)lAv=t@nY>E$DzO&YDp$ ztNDXRoOeD^d5j?=RDC}yeIljAzO72!EHjGei>Eb`QulX3bgH&N&Bskyi6J4yX5J({ z-S5Re z;=;w-P6{y0ojU}CvmEdq_UteGaAu?SyOH&!z3SJV2#o}Mo++~H@$6jIhKuq4UhJrM zw6PthPBydS$vhl%ob$-NQdp{nNyTRXEk{$8p*X`=$n0G14k%bye`4@3dmB^z0vSH9wh||y@@AVlIEDBh7~xDn${Sn>>6*#? zaY~PmnbJQB-|BhqVdbICN1t3+a=EW1tSwl76Ew_>J^^F|G@SeMll%@OxhLdi5xe? zB^Do#>*ojKUCe<3>kHmr;*1jK){jO$jd-6B#7FYU5v zc~?~CCp3l!v3EIJFfsOQfbcvhDDxNrPbzEY>^rijmgl}=47rT9X@%#3iaMyz7U2bb(MF_Gp6 zM}v+x_2SDIoS!p3)EMpjIbA$5LH^ikh|ihZvFLpSwaTobC{8Egi>bI>r3nhf62<_7 zxNq-zCaDy=I|7<-MU)Aq>qmAEJyc72CRjh(KzL7L_km zA}HNdRY0V}0LL0xfKIiTjYg1SLG3x2M~IcMiqKSK0mBp)qnpjOff!B?k;gWYut~O7 zC1E#eYx9@g_wL!6WRi?{O+NAtPC@>dRTE<>TM;I!Ty%eE;zYKo#&!mYo8(LSs)k#c z!U)Xt;~{~TOe4z3udSpLogdI-JDT&|ww7o-8SuiB&d0jpdzOvF$mHZTc26%7^bKp-g(x=7k zOVcSj5xOXElXIEt)-dA3oGDTo6J1UuT~JqqUMlU$<5}lDH2r3VlOMqY zONe@mCVQR8VF{QFp^wH*05m<Q7SXX5p>UtCP@&0OM!>9+YMx3hLe zS}C)#l$#QMOEhNtZUKZ~-FD=VvF4n)?U#ThH9e3JXJfn*Cu_ipEwJSp^E_2o2-|6u zSge3iNWugY9=B7yZngeCs+K74zdLrU^q70VXF+E$3>DuazF%;P^kq4ng8MAr^^Al` z8uwmgn(xN%;>uG|#ib@yQ>lv_qwWKiEPL?_baaaTDB!@wUZ7zSPJY@;v~iPi<^JnjxrGGD|3<^n!jZ%lWlMgRx%eMqbfWO`!jSUja&k z@Y&lfYy4k4wA))Oj7mCm-+U_NU$jry%y3U0FCt&1$EQ$FHMn47W0XCsQ_Hm#FL*4a z-b=ka1*hIMQLX(4Mo?D&lHX4}Q}p+n!Lq{vS`I%frU|t>;i5`b<3Du`m91x{0GRej zYqK4v^B18C9VpA1c||Frdy&-<+_x1ZjKa<`F9yoswv26_k#~&Ss;(76hbdtr{WIHl z3}f+}Zdj2%=lk*8Nqi`SK(ShohjV?o;+SWzWb)1~++FCL&ZqGD2ee&w{vI^Ric-^t z0l(!8&Kj@o4qw=b%Pxw$5s6?LuCBaif5_XVn+uL_9`BYf%s(@K$e&WTUeZQZNEWt_ zO)6$oJiufA#>(z~tMBjB#IruGlWJbdyYOO;gjt<_9BCA*(W;}ks>#VGr1CN=^d8#P zgKONZq{89y&UYFLD^hUZ;PZpGYmIf8{X&z*IfBdUAG>Kd^a+e+C|2Jcu{rIHwKE?n zseh4rM|i=&m`pyZJlZ=hDRzf;q%twHLc=VFw0}vf`n9u*oh+Z;yQT|9In%c+$LF#S zc``jOTlpddi$A_|ojhaN z71Z%cV@)-D`!G$bA5eRR4}h9(`_Y+AH7oPlCFCI!Q@<&xtmJKTwl-Mjfw zYU%N`(#0f`RL2ZUt1hXpW{L4Gc4q@O!JNldkbS5Ya~l+(6G!D z9vLq=j^2!xsRkBg3(ACL5BIO-DVAVyOqbF~be$#?9X}kBY-j`$r6P#sS8*)#B%3UnR8x!R z<{}mw@oD`Z;KJ%jl4!+hXqNE1v$NWD#%i+_cQFTTJ&g5{cGadS))slz)zaIpKO19u zJ@12;_I2c@CjeTRzx5c(af${hNi)qw4XnFeD`zZ~Y#(SnXMUV+2A|)3ThW%b(k#F3 z89oyw6&rb&iAL^7^ytB(p|x8xdRwj|`GdzE_Bb*hBn-Zv@oZo7uXGsU_)Rg&KMIo< z3qK98S@q?eZ`#{5Dju!8*Nb5@AHpp}f0mQ>%U59Db?Zmw1-XaG=A%*FRK0yG=Y1IZ z8l&>>*9?TR$^Ay9EbVHqG<>>KXf~{XZ~1Wf>*$Z(|ir^qfsmLm}?WRmpsYFDM+;4Io8}M7MIoBgK~tAG+y<3}r0?TYpZjtBSCK8n(Y9GoFSH^)-9(x? zJ+H zU7s{rE9B@o95{RIH7O?iIa}dL{)}C|SO<=htzAk*#CLfCo6)V+m}Z%w=yJ}y<1&|+ zug%&iN8CTON^a|N+mulCmdHF{#-*$JM(_no2WOuNnt{p;;~15bMNEI9anYB3KO%9tyEU$ z6-bi|dg9;a58lt@616a z9@hdQTk9ucxtEP`RD0VfzRXbPKiVf-iC53r-#a(d7da*Rcs?MzJW@Ik(TB|%V;YC{ zT0{)x&Axb)qw~F@eI)fSCjCts2@OIt7vJ*ZO-<+Ci)SnB`ZK`qva*og9c{b5^`+it z3)St+Vd%t-sbOnSWmnfv+)rKEuiH&K43lSU}BEvF68iuKmL zhom*}@~aey9%a1PshUH7W)G#Z}ZEwf8!Xx?Q3^CXws%3)V<* zhw}o}r=?imRI1ZT6Y&aj`TZi!A3rm^lOv{_dWu9EG+c-FO23q6Vrgl?_gR;ia*F#q zrYR-EH(BO+6mzHQZ>DYe?hcjf`b%c?eRyf(=vil{Rpv@UQCvFGAevDubgJsEyx>ng zt5@QnDrKs!o`35T{gX}yF;#a*3HC;`$MvtRPO37J8eR!D(ZXs{rKM0`Bf`hyruB6x0!yC zSnTq8A-_USWA@x~$r{SOUGm9+JH3wh@q>7;uzo{K3V9{b&to}`QC3B2E~y;X>rE5& zUD)r0^rxqE(g0%PfQTGYCUazXkF^U-Lj9APl{dJt6Mg$e@Of$>4Z{ zhQ0w948{UGP!htncwx^3GpVS!skVft3fzS1UN8mgI*MK75e8BYg;|}@6+_QJP(lZs zOQJ|*Y)rt#1PIP2C0h;t71Y!@Mcz4k3#vkQCcS%9r&7ekgPvXyv)ZlZ*U&{$Z7Xhy zTLuO*Vxd{==to-GGhhm?fIo@xmXHO(Vzjo?x&p+m{jpFbjjC7>x^E@|K%cNW2vKu` z5H)UT2)Lq-x@0{9QJ9lOfn-AGbMt9%W#fWj63%vmzk6%+j}ePBBSKS_L&&K}uB6zC zj|xF>L}?(h4*-df(F(rA&Uxq2;psi>1}W{fUGCGtDrB`)kSc7|^ABuNDyZ^X3IDIx zz2~dc>`(2MlAZXd%_ZdgF@WRQGyk>+g2?{vg~YzVzRy4W42!lEcP;5tqp#AUkcy9| zVhNM7hY3#J0N|o$GMrvRRBbOS~ z&!E^dN!vJ!t%yIC0gw!!-W?7CnlZt93OE=Zp@3+CiVp}H;kENLZxmM`&r(q+LJ~+t zVKm>c9aClBN8as*q`YAWA_h|$a59yGtOhjsKi;H6SQF3RMI5{hgo#M!|8;>?1<*%i z+b-4>e+5LSffs-nI6sM`?K#BQU{09)PkP;d^ECgfIR1lrhyPI~Lk7tZxFat}kcwBU zNht}ClQySFmp`&TRS2}vQVN5JCUxeis>+1IoqUmCtpp#$AB{5^>Hf-)hGRz7NtQZE z%0t#^+m^})5fDfpSzEY=$O8-Asb(M`P|;QgLSzf)S#pm=8Ss?r^QjE`25TY2tDtFf zkD4}POPvJg=Dz9e&p~M!s!%W}hcsEJX%Qyn!>^;8B(@q3p@yMyK`&$wjvm8F%WXW_Rw8ipdPR}%+ z>DQW;NHdCTGA2xN4TWO1J=2J}J5OIW$tS)Yp26T2lZr+X!zUQtL12rIjTr+nA4$?_ zLHr!I3h@5E$&k88j4=P@M*QTulHkh&rw9e0YR7s1Nm7ZslH0-^B5(Z7l5Mm_NZG@S zFaf)%9b$lxwakso6IL++SNae&go8H32ukQh&^v6ExNJ2-X&@&mpqfPd63O_8Zw-vQ zgP?&GB1=nLOXfr_Rc|ki1EloQfDc5dLW>p&7*(3U=~$WwoH0|3yTBY7KMZ1Fbb;{* zNhtxd1}#5{kp`&j5d;o|;nt-Nob8W^_g}sU_@Y2*sx6?s1X^nlb{u+yb+$6u;OUoa#W75ZO2JPm00%Lmv=94JE)Ey8ap zPDF7|0g+1y43q``P-~zD1Y{wnP#T2V9_sX$i07Z5h@-(q(4in86!G}a5dz#35_p&6 zhteiozKg(d!vTK-Lq-pfyFMZ0%*cIy@Sx4?4bj0MHrwWHL5i$W8EQwBy;@wh5{j6A zU^Xifcx{vlU3ugI(UdLcbOw9w!awxZGKmYRfYk3;N3!cKd5g@iydUPG!WXx-N}e|P z^4&MeSY!G?8u96uKQr}q;nws~7Y9W)XZLr#^i>p&cM^U@5x3u9d`!x6ZeADc6XW$# zJja>;P&X{9Fr;6+S6W`AmtM;j(3SIJ+4;P1hyPPH>)DMmO+Z5>!Q;v#^BAmEU#ID{%k2r`AW;HM_|^7bgF z<8{biBp&>ozvwxl?TJzG@FST24_Rj&7e)KV>qQU*X{1|9K$MV9C6}%xmXMNInxz{F z>2B%Vr9nav5ELm1r3D2f-9Qm^UTb1U-$JTO%gtB0G=@D zU8;gm%)jk`CyW;L=MgZ9t=2aP?nM7R85w51p+{A4k+WQPFI&rxnKRN(s;U`^5ND zK5Cr!p8LqNVUq~E{C^4z00#h0gc~I4CY_Z57}x(lEAY>C3TTcmWsnQ?`}Ym(@&P?< z%|K3iCvY17m!1U(c0xI^F%Fp_-cF$58xu?aucznV=xXgyKq?{t;AHW@$^XAU1zgO< z0PYC5^0|wA!F0G|QE_z&TD;5t!-A3d0Ek}Ezlxe7@Y@u|Yk*3S!{YEciNO8%A0dV* zpJRs(_yN=XLNrO>W-~jWUgOsVhdp?030#SQsQVj($^Xm`07l`#*M|k>Q~{!&FZN3eDZBdTKr1yQB?;*vyZE230 zT?a|)tz|Hh={I3)njdOc`NoZrks)T1P-PIw+1^#+WJOiF{h7!i(nM!$3Q5Frnan{$ zbF@h)`=Msrke12oi`^B(H+?B&<*1BARWrf(<6sX>8Cl~=5LPINsYh;K=F&S> z#%#*r^e^bc0P-kKCSS$##1e|0PeUuZ98m@^w{>m>6L`H_?3(odakUcUqdK^@6U5ba zD`4J2DE6U{X7R+ZFR&s(e`;r^^x@zWRcjFkU65SF(+}~qc}$<)k~uFbPz~a2$FOyV zt$D}(OUa=JfMfoB8>@{JC#}=Yo$bR0FdP&xEFOzS--_=N()=)lr0Yb}-*c;0!A!HG zl`D|M?>ifhPrqn^^&WThpCe&<+n@N~;}0aXke^q3mwaFMQ5R8fiOSTDXGIW*9%HZg zt-q@eP%j^aoiI59R}m+V`dvbaTZcwOPQ)Mx(MYsTI)Ktd6l zzW;V%EAV6pMg@w=F756c>CYY}T(za4sRmu_`3Z?6B3=eijBG72?A~=8JO$DoS1Vim zGdgM|>UC&o9pV|eQlz`s)g1kwboKxdUnP=+SbRmr@}R!8U4mjo!I~nZWVlqYroq1F zYQM@Ub2KC=zN3Xl#prdaQU-gpC>tQWUOK%Nzws2>HUK9 z!7y_jR(VE?WPa&(p@qZGxZQu0^;@3Z6*vzX^T0v*TL0NC)QEwc#c$;aGBeZMJ zHI~@pud5E3NcRUKV0tC(bX5s*XwYi>_$!mj%V&5ZE$+jlVYaE$wrJdsfdBBv(SK5c^Z{*bOT|cD;;Le?i5bxySh$4#LmMlK5U(xXU~^ z{86`)nyMc-gRIuLKY+>8a;Rra(_^+o8NNK|%@SoaDn~Dr>Q9#5ZpdMt@nd?u%9Pq# znA-Bo#~^(tN1h)+>#dE|yA<>5T)U)Pnv-hO_>oY?bJqcoYLd`FbtNc4{`2Mn#pu+YUG#f#w^vn$`qY&Aw-vv` zScm~fzi;>_;d8B1MQFar{LV(p`)r=}iTNljahlV_^7Y24J;tjRrg|TZ6VED0RNhX2 zCZ6_t)l3NAn3`xc9RScsb5$2qKHaUJRHa0Vs8*qeu53C=^<1*_NrfB7DQdbK#jbo` z#}l889dMslt)8Y}1B_i*j0ot##bCYA>#~>(mPvZYW=lSgSWdMt^pyrRgk^2>ZEDSLJqh>ULPOazr36J&dKxi3w7BLq z`eCDO-*q1DMmj z%M$^!`?+g>K?3wSbdbO%Qlgjv+7YSF?sw8M9qCZvG@nAF82L&H?pz&#=H_ zeV4Swr9qo0IbOONcpU=GTqUZcky##GFfg%%Bs9F8T2kp*v}=VXx#=lsf$UPfGZ(^Y zzP_;dY^e5Njq<$0Z$Ed5#C-}SEso~9kk70oB{jsIxbf$^V{}GjWG(DCQCJt*^O*s4#cz{kaBg-Qv~JLa zfZTyd!GykjXVgCm9OwSY^m^)CSsU?q`x9lAH2vnh|8VssOQ(PNi;6G_t$vQMXu%G4 zJ)Y-NWjkySiIiB*;VAMI5o7CdGnq4?x^{mwyg?|&6`KE8=e!g-9lNdW|7K+Ub7Wnf zpUUOlDWW4VXjYVdvGK}{E563fuHjOBYEfd#>2v%Kioc-Yn!T2o@$Q4ogNvm0)5)tR zX;Sz>QVAm^$*fIUE*$M#4p|kC42BY)D&Z;=I`F#9Vj{f!gdU}^(X0xx!8=nge~Tu-B9YS4^$EC<6;= zJeuG*-9DUQf(7-R1DsGD?_<@9Zfm+1EtF&5P6`=NuV=tVK$>t;mHv+!`!@hrfa#?a9a_Q}n>Y%XW_s=A#h&lWkd4yZTPn?ca+~1Z%uH-N zfxes~bIA&r@e5k{K|o5QEPT;T*|3ADqM7UWi|QG~l+K39bY=J6M7@2M!JmQ1^Oo@q z*A9+1hS#vn)j_`fd4cMq^vOT2k?9tm-n@xSE5*#0Qz(wCmC(DIg?6el(c&LYWVzDLKhvV>expm*#u(K)riphvH)9AQ+aIbN3+YA9 zxQZu^stw;wX4IM+sr76T7ti~c)^-jqA;sl9ACQ^;0v$@mBZoX9BQ|^~z;A)PVi#su zl~joFGstaw__Uv@x{CctJ*X5n67~fOSwVBPf<`{MhPax2;_3Ek8Cr?-H#cFvzLUq?JY%Tl@R1j* zqwUI)TKJN9AT%K2kK{jV59s1(i+K4uP29}NSO8e`V}n|EVu{7luUclS0r%%Nh{y4v?52?w zV@G6^N?=ZR-j;DwAg$Sph&ZqEbei;MA>*s-f{D^E4zg-4SD`ENqa}`h_y#dm)DNo` z!h{yIORZI|O~#+3hhG|g=3fb%?IUcx=ID0hnMPKVs^F{z9L$@y@C}|rM%Q^BIb<2I z1rpop>0Sd@Exad_ON`|*bfu2Z%O^U@`WyQh7cM88R3@mCnlmjQHR&{!y+!Jg7dO$F> zI7;4xf{lpbxpB#t8rzSq>s%@`Fal5TuDz9&+9r~2VGd_4ay}NK7a9`r#z#z|OVOH^ zYe0Wu#KW5)uPC51f;7rUE_9VYf}BYm8)yn~U*-?vw2Ct}3;&T!u zDhaXhaJr3E1;wPR!)bWvwQ%*1$P0EMvhL#fwk0#=wY*gs;yuA34*pZKcCyS!0dXuf zp^^u*wp?LSK_=+IBLBg^pwU)a@3-~Fs*=m__6_5K`Hm~KT45^(9V`d#{^H9eA;vas zBsiubc7Ptn5IE*uRrMrPNpjTzxBcn3L#Kx4BZ-X9Q`6A)aSM*)E`xQGjp)=cYVgXf@o=(VpVrspb(^`AQqd;Vj*SSx$k}K`0kH#zhg7T!8 zEcy1?iCEYLoPS}S7$blEY6tBcBrQIJZW$M3t|@yogP+xP%lR6&=aOm{PG=29wOYFy0Dh zwX4<^kyM|_7rwm>r8N8S7>_h1)GS43$O`|}#w|pU4e2*L$qjG%BB(w>#s8ISb0y-? zQO%J;2l_LciG~m#`Keavb6=Ooe2$4`OMsk6pI(jOg=S=BLLfwrdQ)yx0t#-Ve4})Y8!5l|hbY4HUo$Eg6 z+I{*|nYuvuhw+V!->LX%@sxvS9NN$fyF|avwd%X{vvLofMhjVuwfcwWZNM#$a4pzm z$f~GKwvs`M@)Z2S3vN9X*S;y$Q~pgyljaP8YA zfpBJo;4M%}0Z__c5NF{0MnC#%hU2u-^beEH1WBIhN4KB6nEK9OCrd9caJahq_+!=E zTKAt@<;ZXL6U!Ij2$BUq=SS~O&3w0YTQUNaoaZ`HM^7e3w6>c69LwCgU)&{Ff((RIo--VFM1s`K(By-LHx!qY``Y0=%q4Aq)~ zuvrWIfIzh!%Jw5B*-^U29`DlPeJ;jl%t_lSU4M=hsum1C;C1fh3LGDpg=k2&)SVHF zECkwhUfn$vTJ6sA`vQ!Ltzu^%`)+89Z4W|{@nU58yZ{%Tu;EgvnXg%Bo)4MUKsHze zHCT)48x-bFqX?|C4sZ+Gg*KOBo<~c|jD4tAM)|10r+AAEk;+r)+P{qogn9->!q=k` zR^QO+%k#9~J7SC;zfSw%IZkUdZ#+@yzC3SR1xmbrAti9~op!|mx};mI@o;yds_x0} zJC;Mez^%v9M!LQ?{wnL{-WAPnwU;<@eF^H zZRKnw^pXl$Rbu^QUZ^29km@5OJPl!sZuC+oPav!H&= z6Y#~VP=QeQ%LRsEf-CD!s?ay5;fS!$x7%MZHwb0H4H4%0m!G{Pb}nC4L*5j2TX(>w z874j5DvwiZYjhMm${u5@MAWpA1V(=-pZ+{qb>4Geq8YT8L-2%0!tUVSQ~+$zq29C$ zr>xIG3rN$8EpbjREp)J(F_h`#dn{3E17r_4(1$@^{_?L4zw8Lh;Cl;?&%4alZ{8mZ zy0%l8hE)_D2?bh=3O~^K;Kv6sO4x^Y7H3R*0|B#=JQ-v&RaI-ugTg7S?+%%Gc5 zubP@$_b<-^w&p)D;=cHn-M zoPM)#6d+g|r=IM{=tYIRuJ$s2_XdEp6XcVeQq_+=9c(A^d$?wBze#Gwznj@1Vj1aq zU}~i$q2y)FW+`rPJe`|WQLOVgAfSz<#XXr{5R`gJ|CCtNsSh774{Ood#Bq8FYQ4n& zqMJ=kqUi#}B|PGCpc6{>N?^-uIK0gHJ#BU^>W4{dvzO^M8uS4iKjYd+4pJTc3re>&(Jc1fM}bD; z56V`L(mA?5NulcW*l=Q~TDah*nJ4@bloREA92udO+e^E=uv~AC&*%8cX=Y#e)T$CH z-GrTF!6pk3zCz*bo<)LR!|P@6_Xoix@V_8d^wcZ_>loL$G6J}HOWeLS0tBGGBy_t8 z3Hm3I5>xsGTI>hx30+45h*r#PObb|4+L{Gl_z6Uvgxv>6#JJiwS%70U6x--~QZ3tj zNuPN!H{VOWxKL0T>I=25&Zgd^|BSt+-jgXd(gwbJ=QV#{Z0k3M!Q_EXO823jaNU{3 zJ)2Gbg~kzMO zRddFEHhy=%3mfb!n-bs9cy6ySOPA;yosx%79#pamv~x$h`T~i|K+*P}S}w?E5vTFa z_XL(i8~s!ZplU}rz|g13a)+OjAJ@WU?o(SZD+<$Z4%FD(=UEf~06Yt@#tTF()9n5e zXuN#$GCR%1U@EwmpB<|?u{g&fdpU7{_G%MDrYOoLech4G$>^1>IY$K&#h-CqsHEC^ zLiED7t`CwjCEQM)vrdPfkADdXBl-*4*cSK;S|E{?5_*y0eo|QU9`v30<2qi;=Mmqo z0_AR;6}qHOV>(%*7W`juwSRie4H0r;xH{H*Y{;$^VJtEj`B6z9`;EEmCI3i@g9pcEZTtX<+@%0?iKqP2$1lhk4FCZojKr{66^AtdS!EGSE0qktLdcNcknkHSG9ZudT zX=`3`WxPVyID*t9bo$0H5+@uD8z;~1y??u-aYV6+uqHL2hnz*ix%(2l=AA)QiW5x* z3>^sKqMzo3pHCMY@60{>+p@N6Ij+Px0wL)mkTvdWqKC;4&F3Ve|!wMdH1cu zZd<6+xy2;nP=*1&U_^YMSj%@yuNh-t3ugiXZ8silX@0eOJ1&rkt1l8y z&Q>d_m~-=m`*)29N&;gnrm-hl=5jDqWl{MSFf^Z6JGX~gNe+jxb*c|A3_!i(;x;>P ztGm4*080%pI?O+s?S@n6FXR}>{1Lm48OkGP38rZy)wcv1=OrdQ;*6si2C3QMWb6qm zeO}dz7$mKrL|iZ#qvG3Tgn7q#*+ntceAsy+mg}Yo3ACyP5`aB zI<8QsS5=C)^a?PF+~*$vd!r(-V_7{nC<>%%0DEI$+YbkA@3Ihklgndg121^A;;Nh5 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∓rVz7ln8a6&c2901PprP|Nq(deCEGr_&FdX*u4Oh zF8?eO-{FBt<-D*V(<-fg;DQES0r#qlKo8#P!#}+6U@d#dd0t?7@L?w ztS?E{Oc@O@0K|VPhY>f7Ic%4iU4)Ol6Ah1OVI`yc_;vw#RNUv}*q_2&Qb2^O)%E1w zF7xP6X;0Fvc*)r7q5K_T&MTx=8>lx}$nqY*>2(6rr+GN3E^tcKB*m6o?=SA$@V-@ z$OT+&6|2tu{UfV&F~XJ;EwB*PtLk`a_C zkI*#j@m)_~90c6TYsA*5=$oJk1ve%(Ur214HYU^*J3{DE*`EzitB@25E8$p0NU5sB zOtnD83VOd4+dFe(Zc>@RGak7WpRCR&&gCizPLGS=s#=mSvs}FeHVIcdODH%zw55xN zwEF>zyDzP<(w|CH89Rzo+y~UDE$(qNjD*dJ%`Jj^lEPZABgHPp0ctZ4fKJFE)X=nX zt&NU%9JS;1Ja?*7E_-_5PkMzfjCsf16)!UHy&uCgIH#Q0!{wPU=x^gj-Xmt;xXlIH zmd4!lx#pX0F0IdJwg&#lMacB~tewT*$xhF%n9dAH2s6QFW_R&I2?{+Q3~FY_(*A&c z5nTP+yElHUyWjl>bWo&J9pm3BJd+Bv1>l(w5dEL-_o?5nUNb_tf9K>7d2cx!Ppsxt z-_1Zm42y=LS6?c0v=ZFUi7&WqOYyREdXG)NA?tRQVDg6f(tr7xz=-mYC-dNJwoQMU zr9#6q_63p~&r(h`0WsZ|yyfxCRAZ-2R7nH5O~UIqrK;{h9G`5atqa`X-&U6@q>Bip zNrrXUp-CIw>!YIQ4t14L$bP>lO)nj4pCy~TI1UF(T$&YCh=0(0Nv-SE{>6ttQ>3msly#w6|w(Pm>_Q5qG|ud zP^wUGZSQ-fLrJW1y8?DAWE@!BN437pNysxza|d$`+Yvi?vX37wLp1A#jYHF;#aLbLU2DMEmScndI0iDDjc_1sj1o#emkzS}wERoVq*5@VWZ=S zMFQ2;lhuo6@!Sj(3-5SZ7P}c0bPlraZwVCE-c%-*y=M|Ca~jW-9TTB?K)Ph-ZbB2C z#H+HlhDA4R@2o!U6}ptoA-lygTJ!q|>}bYDqu#a(raCZBY1g=M#(`U_Wp}3>nv!hZ zW%!=CTrOEkO1dOGQ~k;b1M+P3ieUTfp}g!1;da23+q3Af%^IugnE8IC<~2^|ZE%wI zQLaXj&caut_v$?F+hWRx#!ETwUUe$92ew(UVQ8-99*XO!sB2eN`8a~RR=pgrl(qH{ z)zdd7&s`tq;NAuXt(O~}Nw}6ZR0YbKx9X2LI=)S#Yof8b84K)~zB<~Fj{5ptM`)g~ zdr2Q$fHYT_UC&r($^WHSv3G1jtxKEsqW&$df}`)V7f*w~`xw|MpX`gU+WPsvJy`RM zlDHGK(4o!82@GdVkjXD}+4@g~l2ccW6P=IgAdX)Us8&WJnPJ!;l^T9 zqwiYGOZ3Fop7wHsj2{=pobx=nk{Fnlq;Jx2;=!H6lheDb|B;36vFog!dxcZ!yVdu= zTsR^AuCB4UYC{<;xV*C-XUDwmA|x%*=X>!vhsbcisKi*e(lndBI_a)#^db3HEp{rE z-M*$}k!UjpgDTgq>5k+0R%gOz?J={*PO0T@_h8icq4?ev&D37a-B!Fma@}oXzL}vG zgY*lam+EN>q5duj$gm)9$^@(otbJay$#ZePCD3+Zf5>+0xmTEukBW5_ zFBacYlJiv2(OXzkdcS}%2;Y3b^cDC6qPQ9<^LofP-Ca$E3EMT5`{Xwe5ZyOz8eLDi zw-;5a_g|)!Niv=NCeNT7f>wmx4iP1o@O`{64;g)5w+H!-cSmDRdK$!2LY;n&*U45Y zld|9X2c&|yG{ro6E`xr?K!kK&!OIaSPC()#PXB;T(#CIQ-d$x$HzC-)v|f_KP&bZ@ z3%R3Z1MqpR!-C>g>|+YmsT%14!h29o0PKpszZYt@Fj45@UZ?r;Jh*qAj`wDH+QuSgwW4$} zqUnylO+7KGuHULP1D-R%AHJ%W%(UH6<>fslo1MYKWt!=AUfDlfP>&CO@y^$$5|S&@ zyQr6|0rnCq`vZD(mx3{tn_X(gu<5yR_;_ONVX;+;WxIjMfv8xc<_!8%nC3h()*yC1 zHrDj(^j@8nVXPkI73s9E;<3@ue4(#l&s4kgDo#5X%pMCVjQ3qe!D)j__n(;^m-cYH z{{u=rdK}G89iQg2XZtDGow)3tU~S{Bda#M*-3nl`x0mhNdv++zgKDKPD%JhqrK8T- zxU}W4yc6<)4LU#B*?1?q+ay>qX&All8zFW@GbZxMe@o#w>YeoG?WPX?4sn*%CLNKF zY63OvyuqG_ji(JRSKUZ1e`)odsqaLQ_eKF8N;ARrzYG#KPky)vY@A+SE6?nORP@rZ z=l+*%ITtM$LI`uvb`9Y}h2~1{>dnxx!DA;5+6gC}_dY@kijCsEKB-AnhUF%-pYdGv zx_RhmGDLRL^#fA^{Yi&9Dk6;cyJ7vVBtzACh3QwMxaxVT4osel?4y4e$Zo+6J`k0= z>G5+!GW*q&-wwXi=Z?uU^!WAe*V^h&@orr*T(&;=hZ`7Ag^-=OzhstjIOEf?Mpt+p zx7M`x%4KWKZ8hHUnf*CYg5&zVj=!!D3)Fgn=aSg2^SXygaz%t*-ruE4%$bD z$5=lkAa2C*(d>xNa={2bDfQI@m>*=a6-TqKqa`2Wp?r6Pa%>PW7u?d+!dKI}SogweavxzrhIz=IyHW;_#SP%!tD)OdWh(e}AfrD|T6+#HDR%DwsokyrA$h{-m4@X>k3UNEk6y$&}=X?5ALxH7NK*x=x}>@u`||X zWCU?aiHj%ainvL^m^pCdz;`1$H~f$2oi1;P_N(D@ny<0q6hclWX!@dPgR?=U%#~&h zPdV*7T>4X?Tfi-Yci$)a1J&m)F{&36v5aVFY{n>OzH9aV&hr$9xKMqpt=0%{>8d0O z_6U20^#xp#Ds(N_P@}(oqo#md=*WWx&Q$(>r*Am`vV^SlD{>n*FeCSO^C?u~)o~b6 z-O}}^PRJdvXYc&gwOZO7r!aKM&ozWzVMLB#Gy=+FfAYqi-R26t=z+TdR=?PXuanL% z^(2|jDqDAWj{c(5=(o8AC#?c`{OxqD$r#o|8#~uxnwpB{xl& z{tY&~`-k(ksTX(2C7T{Ml_ped3kQShc1*G(;wxix{fH~BgSdy=g`_IYr?2nc&c8b| z{3txsaLOBU#b{kE-ezzuIQlxg!XABTDHEh5HF7MrL|&*h*3-~ot7BzAjKg9+=o^=$ zh57@!eGRg1X9^xD+(uRRO)(oDoKzVxN~%WHBH`z-*KHw0#fuu1yzaAe9{ctJ#z~1q z^q%ph26I1|{8DcspB)gYB;BYUCyULyc(jg#o8Ch8tEU&`*=RLYDjvvCaW+lMvo> zA&e=9d}p+Buy9BfYgEnmBZk*TA{<&BeUOqqlP`=lI1JOiw?`aC+6B^41)1d-&NYKp z_ocHH#Vjp&$}eHx&|W>MzouK{VJ?@Yt6mc17 zzkEtMilcg)m7u9hlSK#QlAVmKF%bFHPcKzSH066JQX+mELf&%3=DUEQ4Z1}}O7ozQ zV>^i+ebb4a-B_nBAUeE454tTvdyB;8Ey@Q8&nx@OP)LNjr@1QI|su4ZX29 zqJCpbx8$^g(#~e6zksrGlQ@%KpZF1_{IYG@)vaIpMT=#PyWc%@Z&$pNrrXLT5n1#r zv+jc(qgyD>1$tl|%ycoQ4TZjBT=w*10bV7Dp}napFew;K-R(|iHhefOSsOz24$Q;=d_nQ4Ly$A$r~cFsc2W~a*ng&FEt+;yDruypl1W}i&DeRITdT3-p(=3XJMESkd8YYi8m}m8oS{dd$ zo4jUfy-kQC6RrM}y}oQ+PUpSFrmvOMRt$dU6KdJitf{S91?lvkHAFAd#dY!0?p=3V zv!QDwKJjW4#%@?%u?JrrVIfKyhM&`)vT^di*^rJTt@JH!IkZ2sr(u-ku$2)5shgNwe@?n!LcsaIiYgg6o_RUTDsCw1?&_K zv}|U!n5{rggENhcv+F3gX&*q69Yk6sNE8H}@E-H6csH@A=%ZI~^UnMnv;|)A1>>vyu1VzPO3ZkNkC=A`JbL zK}#Iq7s({01}&&doIxL%lHosfQdaxsz0B|@_=rpW;+!_qlxB-<|N78#)~BGUxR7J% zX|J^%jvrU_lL_xmf#qzTJlLGqO?iEbtrJ=J%Z$&>iN;@c##AVa7K`guF@Bg@XaOuV z4sXq6fOOWElZ&?!MDSbS)9t7p2ZMIg&V?y!RfFs750C3mVuA{h6QGvw__HY;ZE5ZF zufjIopf!s;N~gb#IRz#p^=O`S^x4WaDydbc9bK&sRi@+@k9;*-zWy4KYB{;OT(m3l z^(j5uZMX^A?daz#GUj@%zYKC|CLOrWpYRxOPf#+Sa%%b6ziugJ0kuof0nphyn3 z6NhQXGY4(Vpnc}GJ;w-F#I`%R>nbmM!JXIgAfrSz;5U+bwj)*YE55YMS#-(M$vgX? z);wF%;YV>`Q`uSX^~Xq%#C}Bk%Jfa`t5*-5-&gPC{gO#I5Q&?XCjpilUHw)rU)kc6 z!jh;K%n^DGLfyuf$!azZjXm#FLVYp}QfS@chMwUxvak#H(w}(E=2%QVr#^j>ESog; ztZFD9bjXr{3aVvnX2Vn_k(nJbjMWC+Deuqev>dXuBe*KM`d3XWoG#R8Ts|Zh;85Y^P5OtNv=Sn%lJ&s&oea5ea*e^fYPuv8T32o;!QCH19OS2Jdc%|{pX>~hZmYfT z#E}v@?FWC91s8?Q@=<=7_}LC-)jN^au`(({!qt|e{I5Dre za05V;fXRkcu}%H)b3=Wd-33FZNACkm&KZy~OS{3$+a}tjvH!JJIGHAO6`N*YJ|IUI z&*rAjb*36!>_Q9O+Pe+P@u&u^2ARdAE65Dj|`x$^91_bRglH217ar7(LmokXIwi}a0QxdaB+j(qHy;>7uh5{UU)bGBNY z;oMFI>Z$&yIU3Hss3ghPsk)MzSP~+enfh?dvf1hR#K*pCkWMqo{q0PByiMp1Vf)U) z1a^XkzrOc!pX^4J&p3RG@HwTqe@l`%*-N~4Ywn zKf?2S{g7!`5f?O$KdIAZQ8+bIzs&7r8?rPz1;dlIRQFu|`(|Z^TUl9=q*Ldrx+|N@$)|M{ZXxxXp=g-Sio|Szm#KWO8y^v#qs>wYnX5c5TS*SyWXkg( zs47bE(B#^|;nAET<6%k0UT(i-P&`UaEoPUb-YeB8aOHYBxAVcVSS3-3Eh$-eEoS9A z(N3`5$sSx?Rh9mWYDMS*Iql;;$?=5NzQxjrKOmx3m|@|m+82CxMQ)g;()fY&)w}D% zYaX7I_TAg%u#tohYOgl;wu01#i{txTb0HpT@qPH=>^PSEP>nOdLXo7SDrOAUhl%6Beu&H;lz{a)v4CrU0?Wxf0HE0K069&&N76| zND$)_Nfr`@t1Se`vr)(u*A!2=reB-mLD0!19J?OA4GaD7^`8zaqi(ISo%N9z6Uu&# z*b)p!IiD{0A@Tptk=PZeM?0Q7(ymcmMZmlr7Boaqjsj@P zF7CYy7q_UAkk}?{_m|p2HKDEpq=qy(U$u&*N4R8ldB?0Y7u8_q z_*l>6q*0hD=hUX}3wSaKPBv3z6oi(rV_W4qBe;N+Iq!#O5|v{IH0-{~Les4}2Rje%Pu8FHjY_iPN`*@dJLr{s z-e$jPj~Y%{xK)Xak;+l$(=%y0te==}nrSnfa)Z7=UUvy5JSZsIk1o;ws2yseWTQpU zH!dbPdk{Q1#W9>so$`k)rjH-9`$0YLr7N>J&fnHokv`x#$ON?^(2f);<1gmhX~PvN z(M9O<@ALKysSCdP*MBtEEw2{4u}Q6tf7@obA?aQ5G33-6@Z?LTjJOT))wako55qD1 zG1Y6ZXhgeRHTN|nZxh@wQEnLT>`vAlRDCYuKWDNQxUMllkT;W4jzL<1- zVQTH2>aF(|_4#T7j zFHKlG(f6zU_vg5UZ?+P#S%dRY70d5}4Ph*X{$bR9h%M?27G4&HjAu1iD)`&_CskPe z@y-;=U$ojC>0ZqtwL8p&XkIb6?eSrEkB?bLI9djz(=kthA=bMum9+iw(8HB6*D|Uu z`%Hk?k|NYj!y)O24TrY;a}$}Y6Py8u9yTQgS|vUL(6U>GpqB##4SX@zTtH=y{GsT1 znvvXKdzZb)m6`B9U>I5+SiURnWL-eC4{y!?QqmdF3zJd0(N$3DMK#C5@kB z1AP81ERW`_9gOCa(}k8VQ#(d|&KmqHv9GvoL@yY-2x!-VSIw^5>KS^Qp{4Oz2z|kL z?3>rbnxJH!3s_YA-Cxy#dTsU_VX zXDAeau&(BWtK`Q^)g%qZujAq+1y48P>@v`0&7h3kK3wT@s9zLLuD?TkNA+IS-V;54 z*1Mmj81`VnI`z%G^?^Th<13DH?Wcu?=Zv(ZofAlz1F~-kSv_@3o$D5AxZ~#^=%l{R zh&N=*pSV3vYfE*fd~!3ch-`NY?YS)dIFdceFBf!Qnp9IhsZ}DLx@hP}C0~TCj@Vvi zi}X;-+tnWo878AFT<}_^@D1KkbA`^E-wW*=NZa4(`stOvxf_>jH5_Xo+s*qq-?=cJ zy@=YbFQaJaY=N$?5fu7G`iEIF)^crk$I!F2Y^JVaNbmuhdogE{Q)hVOJAqFdc5L`eOQ*W`4L$9?O!we zx-{&}WhznpUNnw#MJ}{>&Lm8&fp#oB00D$SCfrFiJvoY2G56- z%W+tStFv%9WZG$`SCy?Ss6-#WGc;w3eo)$+`57YPM8bz` zvHtg?xuAq&swj;+*2Z?m-8Y3AXtOKj($j&4>*7*ShfIfLpZ%E8hD*lDmQn)};mZud z5cd5b2>}<;nH=u=3P%SRUZ;N}zegB{6kDyo;B;9C?|YdP_Idh(y(`^FM|1x%BO2@5 zk=7Wi^#!Dvf?$(h_+-=8jfFqebA>!Zr){Ehm}%sY@d+mCrmuJtU5Nhfjfpyc=Eo7u z@|tcOw|ZGzfdX#F2paIuZ_@3iMk*Z!y2Un{JJ~D*nYWK{PDTJ`We9?Hp_$hVZ$ERLxxhLUdD-S7z z-`_qOf&9wF*5CfU#k5udF%x`pl#hMq`P(jM=kk(Vmk^MpqoDKDsl1lcmZmATZ4#aF$ z`H-)%74=QcJNiVaG|JDFFxKx>tonn@^sw;d7SNT`c;fvtF|vTwp>->AS#Rf}VdiOUt_xS3idBKvx@CWb%Xb+3 z7leUKt3?((7w_m5#R+$0^>7uB6vpKFT9&h(fh3t}FP~`D)j`|YWeZW2A!7Oi!q};Z zJgLy4eXMzZIp;e}_j;ym>F4}3I2zh*u#3#t33TvtvO&JkE;fPIV1QvNE5S)|W@?d# zDz&h8%C@MAxa+Kkp%BxYu7`_BtJY6eL$U(NZk?@<)YQ0Re3zTqX4&duIpjf!8n2 zbmGiEEscU%?%9h{oTnbS(+t0Ygg&!o1=yC&s^c4#f2b*S*%0SH=oKB`wG%slVN>mP zR#BmudtBn|^BA_?K-98rpE!u~=SlFRHgO7PU!oFp6@*8&{7$#_^rrS-8eXUBOfECC zbc?5KzXStq#SlwAmQcFE-9ZIL$U~>RtOm_)zrUFPf!OX^~o}EILt>H=fK7(#BQOuS>9lxY}F480s62T|jhS@}v*b&<3r& zoD(}ssj}~#Xck?b%*d>CguG{`u4l)3 zO9PL?ezcxu+jsD(3YouuV|myPEUo%oi13MTwd~t(4aCAUA(b{e#c*0mm-uVOeNYE4H{^waue*~ZO?SeZHc*KY z&oW)bFI5_$_L2&2o*VM|@Wp3dt1tzOZ(2+IAD7EaB+IJTv0Myp2&!^*J0Wbt1Amh> z=N5x|64Xn5^g85=_QO8fiCxTT*(S< zD`JP`CU-7I zt(+4y>ozx&Z0UP39F`6L^M{mEu3_fxWBSJ=7uTP-mzdV?)5}1r$uZJuixdOro{rCN z`j1F_XsatWEN&^(rnGVS6udO4>*}a&ecnj9A0OB7{@OEQ{=GmtLPW!y@2q;CB&;8^ zhMB^+3hkBWeUU?j{gB@J&Br7jTmSSq${-?#dkbZ=c9(bwjNEu&*HuVgw0t8K&$H9& z+bczN$K}=jYRz)3LM~O#qK9RNU3Y`DUh7My_jmfpU6?28#Z7q&^^wSUdn!?jW&L)s z;qR&|%;qk{kDVR9C(%2)rAAW0aAF}{BXLtoKPRVBl#?vQiMS4N??bRMtOPucKmCwWS;4lN#*f7+rwpSyWD%n z@#@sD_^4*moj;(^PUyY7!A<*TY1DYSHpv8%02y-(L}eLH3}4a`<|AUz zBf_F|5R(Z4lx#_(%nMTLvIZz@v@!yBOBQ(B~FVP;W^cbh`=`*Ip(q{lBeV`=Ek%G=y~a3 zDkD~uhv=0Iz7`!DrGGJNJfMSm1BL)@6kS6(nX&4xPdYy7P-qfmEnD21m7yq$?ogKO z6+D_JE0+m+5^{Rp{fuwQ_&L)_y6c@sKJlCD2rTrsi~(u24+hv6k)c>DhfK2A2C$TV z#;blM#G{u>gm5d*8hDa1w-Q2V8XD)qqR(stf6DLk-)@-IA#1zhMuL4$^4T{< zDJ-(mBlT~Hg^gtxt%HJpocj>7`i37^Ll{oF_!veAAr*qv9)vGvl^i8c0Mb4M$FL56 zL9xjJ1kax4OX-5sIsSh%odr}IO~bZ>yGwCPfC8mhad&suqQ%{z6e|>WEd+OWE7lU6 zqJdJpXo2Fc{kQM){paLxmLxmL&hAWhcjme;jiK7+Xi`QwwKIn)C&`5p?LDrFb$^h; z#&B)V#-X-FXiEaFc@6A>k_#zIXqq^++oeNTp_

<<&4yTC^Ugk#ko1B0u*!XT(@s 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

n4ArsVOilJWNgGVlCJ)Ctn`x_v>;9*;k;oMXEH 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�S9RvyTFh>os7ts07TqFJ7mKk?Zl!n$ARwyf!{LV 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

6WHU3QoVHk9YR~!%_g>+a8CG;xS>bO%K@I! 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ΠOtHh%!>ob2lt%{ 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

KTcfVGpPP@}B+>SoqGsSf-i*aFc^&6?v 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

?Ow9RT?lO9FhGx{PSIYJ1u$O>A?C&>X3w^Ci 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

fiU@Q&widDw}=7!ya$+fn9Aa|+d+|!oRYQ9 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≻&Z%{5g6W*o|DGWlxA2YQ)gOfsFG70PVpNH+dsn!ypIVR2v^j zlBj@p%%#qg3?|H2_GfhsqdsGic#FtORNBL=@Q zSZR@b#bE8 z7|iG*>FrSDZhK6X0XdGDsI>hx7=6xRV_W1d6-oQb%_qRX#!t3pf6Ua$T}M9hwz;Sn z9c|BTq^)+1%SG4f894UDvYi%X^{@l)Fty!Mz?W~FnGs$017h1dH`xn@vR$j3i2RPJjp3_#*K)>sPBOW;kM}IhKmb8`e8ZO+;*Yh!KY&PGoUJlEAh{xRa|SR+UxP zPYT>`DK?}wu~l>I4APB7)UX@-NE#}AKw#(hkgC)^tW@={+D+-xPg0;KzWfNyO)e?0 z(0#d-HYzh|C60fjGl?}8@_ghP)SOB?dXpbHnrW~L<%c8wSxr%w(~Y@^kzRsM(E)=j z^(ffHx^)uU?Kj#rYLksy%4&iiE40wc3v3|t@_3HXmThN@@9``S$-|tU{K&N;4#HT4 zsV;PEc9&qWU3{%o29f@0A2yXirB35~$psauVTRnut(I3b>r*6uDCQ-LfspAfoWpz! z`%6VPRLcx661O<#w-T(1m@#36#{A1E48D`W-ZZFLa8Dl+R997T>eKTLM?!*9(fmWC z0ko#50gm}tt|}E_PLl@iWmQ;&$rw5JhPy)65wZlAoL?Z0N3@`@_rZu%C^tDLXg69Z zf~%krx#tor6U-=f7|vxWS3aCzb1YI>iG9W)o5#{ErGA#r=@nNEjPf>-tjdEUZSg7$ zr1vn!EDRNJyk{^Ct7Ei^5t%2=O{uP7B0;hI($%QCPNAKpNo!SCEW67n(5z~e(UGT! zYSlyPEDz}h3PH}&!$>1w)2W#1(gK#DQ9(OnyfUZ-HpBu+&eJVKV8L)y@KM2h&NTtC8-Hkno#eKiT3b)Kkj8%C?>BVn=*%syj!>Pmw(^y=s4p6eDaxFj zdwb1|c5P15+}$_^q4cJEeE$GR%BfYV*J`YC#OE^pp-{b2DV8*b%aJl}4q$7yCk^(@ zq>@~d1a<>s&e1l_vZ&-8QXUQwPL}nH`R@K3$jE!IECr+T$LE{sdND}*VH>EcTmTZq{oNj$h>uDoT zGL~o7a@o&#oFC;GG62*bk}xA35^xVb^3-KeG0dQncraXs8IV}Po~hp(O;lCIAPepe zW?_)o68dG1{A~$-3(@8#q3IJM2F`V76J7WGH2`zDm@w+zlZbO)vy72~AfPkg?;(?o zT$qu-su{^pHwWfiOIvQO5h#WgLCE9S%q?zd;Fsi042a;ml0iG}d6ZlYvc!yRBxMwA z9Uw`nu-{I`PQf1L;c3u9#~aS_bZVYbo0^GEolXHhzuVdtIMgV4g9-r$zs%Wh&_6Kl zhPqR1jU@5<&4%Npbfs!Gj&4XEqQmJk9p724QA*oULSLGMf21_gOQH0OX9<1O{K~n( zOKr#MW9ofQ->21DT`GWDYCfu+=AkUv1f1k|kE zmV;0r)t^AbjXhPfPN^-cY?&J?N2`W&rjXp^$z9yri*UBfxI4aPbK6~`PnXl|aQ6V* zFzwo5>K#Vr`Lut*q5QOz;0Y^C-O%z0Uonov?I^24qE#rta-Nbw=4iZww5ecY`M=Ez6D5J<;GXiuIBt7DC-CyklbyctDn9zg2pPw)_mRHK zMI%&T8J+1p7dsrw?e7+m-k7L3$vEC_s*QG@Z5;q?kE z+CUI+%7kykc3e$CU4*`gIMT;?My4(Xocl>-%bbh>w3e9GGy+zmWD(4XL{XY&GdFB% zz?RXf6yuO~J9e2d3(T!{?gk|dmKeq+s+lC?U`}Oh$VQSdec~nK=|V0tJ4l5Zz{b-3 z1e1fASRTK&^Ie&oQl?L+XM-$XqdSxLirdKZGWyE*3$)#2mK6&jx_V@vPO3!yn@rZ3 zD7Jz{O-zSvBe%?sgGq_XmE?QRME(}9TG-UIuCB-aU@|{h%&XIG=+iWAZ0oCygA5TQ zx--#sqo%6>0Xf0`Z-Mh6T7{j{8rDww^OvT>1Q|BDtPoHsPM|}M0LSa^CKkr+fu^m~ z?o?wQWkJEI&!k()KzYn+yYt zb1~9mo#xQMmCtFOtu;STbpc+TI?K+MKi4vL_xANGC~bE1`;6ot-g9o4Yv6v;r7B6t z&eC*)yIm>O3~4sJpG@Vd;<43~BWZt3tWvURBRRkZcWQK-9-~d}s8?!EgVwAzEi)z$ zKS+^T5f7vvX-z^kdVXh0rH$pa8kK6U02xA}a?c2H&ofItq?uwydq%ESpej8;ryf2stC(XQ;m_ z2ID`hl_RBD!NJogO--u}j0nzG(hlq~6N@*JRVr#gTXQLXJv_-(0{{*H-|s2QXJa

$!Aql|##BY-8qC39}TWRND>ZkHulNKEWOnGFRsH*ktZ z+1_+*dTkd)BdAdgoq;-YC6dL7SsIita+NSRIPNC%)@|xm@{)k2Go-P}%+Fh*Ub>M+ zr7e7bt`4uX&Yd5t2E|J{w6HfWK+NUR<9vC0bZc4Mhf`!jso!jjO49Ky30w6P>ML!L z>Obj;zo*-Ei#i2qqg~O{sgyG055F^QN>)8a)mG-+*B$g_m-X*CS(n?ksp<7-^;;&P zQOQz$EuGZ+%yc@9_f4p5I+lv|;jq4H=hN>n)#J-%mO^IbQrQ%g>( zQAOApR;AqWkLxVPqjyic>7;p9^q!SEhm3|p`gWPR-$b>mO|C5xpn7LhB@^ml@t@Oa z$h!RRLw2{JWLAke*HuPH`^~*KtJi9j#YR;GWK}ElAJR**>|>W1T*_f8Dwlg($~v&r zs^*<#*z8Eg^9|QYpv$V=%@@HYm0iz0m~4L2*k5$pPOECSJwYki-Hqwhpt_Q`%K^vU zd5)vg`jw)xmi)~Eavp)yihc3hY|i{VljD`+k;qytMf6oiR>ucu)5}*@M60b%MxYA* zv!g=m6#oF;Xp7n;;dG1@KXWau({b)T@ED zN@Sh?09m)D-&DFEmcDYrrhQ;;Cp9{C%2)F1(Wy<->Q=!5bSad|rjU@vwQ3g~G zxt#gU_|)Rs{RrGrPd4tII@|d~e=_}}snYrdowt|OD_k1jV0lar^p>qok4fp!TJ`I- zGlXDI)&BrVb-Pl%HH99XKwO~auPi<%J+Zc1TaOA+9#dLZaKrv9hv)1LKcu-|qCI7) zX>*~J;3Ae>{qk{%%fGy;^-a45q|37*82zU*?NyFg6OWmFUsT+Cbh@^r29}`U`cJ53 zOoh!WO2}H4inRx*qOi_BKcw(LF15gtsamZIrKv^qI_?|VX8t_4(fcFbbXtpXTggkK zP%i#eRMP43p5k>noxP{!p4+NYWua7KTJBfmPZ?)<{xY6jYnP*ZK8zd+pS0}szORyc zFIYy@2iAAT>oLp6*W0fiQn`0FxBUg0ttJ<}G_caj*<5_%>2J5p?bu#Wx<#o-HE^TU zxZof9P2DjqEyMm@DOaH2{{RS{KTm&|=X%dcTRx%ro{exqH>>jch;i-*yl)`H!=92j`g&5%ixtEov0d zTmh29`G?z&X~UF~^{X$pY+P#6!~v1WI~fY~5RsFDc%FNrbw4bvrSp*B>QTS@!MDpY%F*mNaN3<>5b*A-m{0-GQ!p)~x?UCsU1PF3@g zrE73?7VfjNR{D}KchaN$%`8ir71E$oR}Q$z0EyFv$Xv1J`kzm+>eiyICKPTRb4dIA z8OiAVQTkod+TJSZ4T9OpN$YF$>P>6qTU1nX!#VBtoL;xm?5izSxo^qbu^JfewQ;w8 zC#T2dpE2{zMoU_cdMp_O_hsk zTp7XZR))&@tuV!r&Q#-KC#!{+3%VB;#MYn-DjcxqX^!6U(~reh^ok4y!F|L30GID0 zYj_z2y>v=dLBiCgavXfkHudS;Tb;FQ_v~jPzGz;W4lsvs*!pJTa^vZ$lLoI;JuyYN zH2~y$$}a8Qs?(`NwN-t>jr4)s&8beOl!1^xm@`d>f4t|~R=c#iuS_$AsC_`F=i+I~ zak{3Rb4KW^e-8)sGhIX_O-CTBaWq`pesuvT1A((B-e(rIMH8)oDY)NxHabYzWpF&4 zeMAfe1CNsy>w*A`Oz2-u`j7UU`1Af6=*vS}(gEq{ zWgC5`I;|{MI)K4D&dmq&kTT$8V2P6U%BvDa({k$^xLjwo08(^C$Q$x;HFWBg9?j`D zA@wiXa)oNPq|iACPUjNjt}QPqHlyXV)#7lt=w011TRT%yuA^-4)c2&EJaFXy<>1@TZ%;pVY22+ zeKjVbdY)o>vG2z_PIo|ex2E);Y&qI?(*;9gVa(tuRq-`pTj+g&&L>VE^-f-%ipt>B zS6t^DN;->qdGiOSPI5b$2Bs+1D@W-(ka!a%-Q7#8R;6sT>QqL;f_FO@pIEF{FHl@A zgcSqsPH}-ZQE)H@O7}C*i>jr{lqkw@$61 z^*MZIw=SnqY#(XYTH#exzK}%aQwy(Qw9>^`sUVO&r%$OpOj^t;RMMwC=6kV?zj>)J zJ#_QNFhru@5(#CUczS01a;hLMN}VIT$x{XJr(rZ+Fat`iH<{_KmQuq?lejacxmoE; zyDdyH+A_tLjEQyC5EzzSi1f^3SOgu!)M87k%}1$7Qwlbb#Z;uj7+FOU;fX+VH6~nX zZKmsJ+c%cMiD9>IdD5kFYA){Xal>&r?McAc_>u%(Q)aAZ&g0n~PYSTKhYGYs}RTOL0+uBqzD(X#J>@@q%ij&(g!>u!z)V#!Au3ZXM0R)`nNuT(dPZHZ=3jxHgumYhV@0qP+ z5TUmlN}X3(z}pb2NdqUmXfwH#RKR8-f!a-w>d$DjWI%Mvl6LJOQyKL07#c=T+AJMe zfWn++1&Q?LPYf0$rVA2%pd`sS&uOBNT6iaMDm1b5nDMp@3(%idI6H{ykZ_}%W>-zH zcRK+Bry9d=oxac#D+b4TD%lDHbC~GVLs$5%q=B)D;e)@VXXZ*3AVz$$Lrq_pEsryE z+(k!7s~_rSZ0LDyX_gr(-%c?6oagm}OjVyuni-vbIV0#?c_Am?!GqLb4Fq z66E@SSvrfUerAO>;g0yuCFB-ANCTgJSWn`psKa zYh-2x&Pg5TA>Tn9<2%hXDGJJNUcDsKV%HY5Y$S(d+p=L(MFN6S2<|*&h+p&?(ZUUZENtPYz_n);_X^jcQbARL#2# zFAPNGbxS|VDNOxiBWdXA+n%3VozqfQqgdhg&W!Jm=_TWP1#X{9sAY7O^p)@NA#2Zc z+Nf-`C?1Y;K8xYjy1TQ%0gx!u_MbNJ%Th~+qj7F)P^+*3utDa1SHk^YrYA~DRH_Yh z^0iTy4e`GihF&km^a5Tp`6`Y^do@2)Q zVMp3cTw?%kI5ITPRm)aq2W|)2O=@~@4)N1O8CD-{(pv1K0yvBjjE-i7H8lc0_>)R`IcC6&oy>|cB;>$#X($EN ziDB&~pt29CK^zel3vHZBbt7O9ay#Y)bm^2~lgZ!hFHoeG;3?WgiU!FYz2xYEQG(-r zR6NCgH-o702Dq`vrwBv}=*Mq<^d>@gE*z&P(EpHHV_HV|#`oMKEirW%_# zlrr}*4@(2=VPi&hWt)uP2?78)R{b$74l$A6X5rx%Vdqt;no+n17rfG`w zT^s?H1mkIjqUExsu-t9m+8M) zM-tj(9$}HH6GDQcG1EF5IL~;Ui2x6IItb249FZke>eVV%S5(Lx_Qch7a7P>DVC^#0 zsI+PMYwA7mAwl&njNlW&l0hA`lbrsrrpgrNM1ZA{hpRlw_s_)8l|WqW+j#@r88u?A zxETcC{iCjhYHT(;g913sKh`=}!P|H*(o`Ho0aeamRa5GTb|W70Kx%v#si`#%cm@WS zS2XjC%0n;*)^qJNvxZC#1gNf~q-So@9S7yu=-L8Y`vQVEsq-b^k;f^`n(92r^I412>Zs|4)|yAg;I zJB*kwAa;o|!x_Z6DUNfPBD$v>O2cEGCH1N0cIPsdrg6MArlc{%Zi*XW6(tJUB3RgN zIfYgL5$ko}~Z|ZILk*%}sB}l6A?JKL2 za$rPnoXMdi0Da_X{aBW08p5v7G|^D&gV<(lwzs!sZEv7~vCny$h+V0$aC?=T4UrVX zqxwD1KWG&_G)iU3$p_NWAZDkp+;R+^Fit=j7~C02brlGv#BIb3#-%{yGm<5Bi0vg` z>iuSSW3L&2@FFXmW8O#%i6B*e@B*p;1WPG4_y-aXxXi5&uYMqHRo_##SGb0hXZ{dW z9>mEap{K|7kfanbVmIvz7qDetrHIG2(7C8Rrx#2qNPPS3_yivF1c;Yn96Q!)cU;2r@Dc(y4LtB>7hkvpdHSm zpVnhWV!XzvO+vuw7>persc}?NT8iac8OYjlS?W{(HAi8N>}Kn-UW%zX+F(H1zocNg zhy^i$ktQ^PeLIM#uAHBU5{TW$sCqTe(Fmoog z*>JnaYRSYl2YCjxuT&@@{{T!03bj>;H34Iu!cnUY>Don`13T{nZ98|W;i!~vbtimF z>M>8@Jt~85ZKexQP-|AfnqKCom#vwx#voY4QFUDnrH3YGx=CRW$5?y0P-wnQYg=Ny%=jKbx(@}xrF;vMqM-bK-B&g45*+zn36yOhY3d+bZVHVO| z7A;t0o-~PdrQO}PPd4=HI?{Z(Qln%0Otf68V?697j&>wu?Y{6TtDS1V43WH>Gn@wC zaSMuNG#3P9WJR$95HFy8FQ4-N0Mb!e_5zZyU(ljYlPpdd8J?0mvDO?e|9B#8L7gF8S_rxrV zP@}Iv3#%mi$lkFeA90cKAEeL-4l*;$0;OYIf(NJ&5Pi(=_=d`zg&TUb9SvFvq_Iq? zCwxvFy#rGI)|M(WyM+M;=6xrxSW~0X>RSqmX`%&ob=>#H-)Q(ek5=onx{rsedDbaP z;3wCP^4@?3+q zHv7&>9VwIb7~^zmp;!%q4q3VL$f_R;0(loxZ7fzB0 z&IE-*+Jfot?=7c-gdKq60#Q^AM5!dsjcT#0TM|Ach!-2}@hhYXwx`&8{KBS7ih$~F zAyzojNgE7Iq?T-%tTv^?EYDFea-tH{l#nI#loZvR5#D7lpl436aXK{xqV!5x-sRg? za&}xDzqB&PgbkCZoaZ3QE?S$_`k4kfGHMT$bDZW@l!-dI8Q{WeU6m5bp&P$5thA}O zQ?;Q=wLJiac73-Uq5MqTD3f|`VKSq z_=8n8Fi&`?Y^F-BHm6mQ`OhB_5EZaC1`A6WT;~TdHlc&7yp=(XyGUSnIEGeg$lL0U zo~2@Q+7xMxM277x!tM^=FtJ+`&NC`<9OD==!unfg&*>zAS%Jpz(kP?|$Zo)&w7QsG z4UxWZC6^TGgi?pL_&wlKff!(x&#{W4l_!5rIFK1V&ob7eLhCOBH6_zmB;XyU$}|xrlj1t*0ycc7JJMMRtxFzu|QUZ(&pS;j)`bLl>PBCfsldsXPz6qP z>IWGRLcdq>-Prt(dZf&wRjwkK$*r;#XX-2Tpf8&1#Ae zvmVlv(!)?W8N|3LqV*4!lbW;xu* zGWm=PZ;m9jH8j*t58O!+gO)gjAVY8M9a^fRah>EfQ`4%|HUm$*Rcb9I(2a)g_K>Sz zP}m*5W@d80of*}R*_PT>Ms)K?(x*Gj z1QudjW7tVkB^3J|w-YA1eM0h$bSM=UOJ!MqwC2)2YaASzS^(8B#{i5?YP9I4&%eGP z)Y5qKt3$1|VSs#C92GSC$9zE^2IHkGZ~tyc?G*kG>P4rFyGdS*@LV%(O##F*&_v{i@muRB9hDUP=87#no;Fdb%C4Ne|PG zesj#`y?Tloj&VrtC7(p?YF4J~pfO%m$M%`)8mm;)YM_JLysyu7dIF@w^PBB`o-B)ngC;-8Moz-ZwE8}yG&e9>$h$<;laNfs> zrqa<{Ra%u9na0S&U?i#Zs#R+RJ1IMyo*=9Sy3;re1h8GZE{0^%edV>Rtu1bd3Tsmw z?q-|%mWGn~G(5U^$pmLVyhd@1+@dH&^&fm~HBjp{E&WvkHWx~eHWQv&l|h-r~`f`(N)o>T{S&K7&!oQGt;gUW&xLgVS2&JsHULuNE0bdBfQk(?VHJMQbk>8 zK>Z>Lr;*9Yl@soF?JQRUkq$8a-xH=V3xQOX<4lOEedScxV3ISPpf(<*$Lkm*Y8EFZ zM+!LPZ_JA>H<4mOk`5$T*Fcp-W#vxN%5_?uaZxD@6P6$ADz(b0vpHdm;0dCmEmSNO zl;asPUyb%oiE8z#HdG#PeWlA#sR(o~{f=ign>rDkoE*u!wMv1;*#5JfSnB>+8zpcH zbBUsrG@ukzK9G1j&UFjrQZfqQO-XY~;ni8d_a|+pajjvcT-)^;gl$RBzY}#TTI!pM z3{?T&eoUhN*3?iX1G9(7ZChgpXmtCgW(fEo3~A$Nv0EOsH>fo};Qs(wD$Q1-;A2iE zYk$icjC`Fhs~=G~656b^>tTRQC^@|37^A^SYcuOTt!1EEl~ra^+~YH=PpMkhr1ajCqXFrBXMbtUWp>Ic`hnaYL6)0J zw0@zb$J8_4HKo-N+Os0lM@})E9Ly@7Mb23dt*j*!PxsNdExDAh0r8 zEA#0-MxOri%V!j-VSDeHTP3D+(-ks%Nj)UDwx;J%CnV-UD($KCvwBYWKJnD4ge)I< zML=GaGrKqQVkV}<0u_c2d2mf?R5Xj~Aod>drNv~bis(kIvHr5=(@$7GP!m^2sJB2X zQ`e8sugrrjWFTwObE}-ml?;NQ-0?TvRHsRQFIv=sL15asoWj~c3%2=!sJTXVDo!?q zGSulR)onvK9};(G=qhkV=jY-zG-}h)Pz9>T&@z8`XA-GJsd-3hsAIbmEqa0Q7ei<~ zkMA;E)2&sX&MM2W3?)@Yg0!g(@wv}wtw%%iNT8Z@)#@Mp@c#g5m9FY}qe37(@+DqV z(p7RQE>1E=(LFkCQ%bq_KQX#H-A(yW9WFma4YIemaRGg@Dz%9?eRgAb*> z&$P`|Ggo7W10+ldQF@f!b&ZcQb*fURNJ0SzIF!588?_^xV>2>QWn)yGj@X*f5lqpl zTyRcy_m|amt4M38b~%+-s0XAfa4p>to5Z$X*GQ{2vB)A;#z3Xr%hU&(663GoMKnyXZWb(u>M(B zn80HM0l=2sI@XfPc^StN0+}zWiNk-Ss++LGHgTQisw-{=wy4Ta7@0buOjayKOzGs9 zt0IQYC)B@byZC09WYxLG^Cfy(Us8-_8D}U+;%Tr$$=fO{NfYU)=BcmmS5^3_K<%%l(sBarHM+)Ge^ z7=S&71e(QBMS}nab{IR$Djkk<#@K_Hl^Y4F&?Q=WnVzA^zD0W)sK6E^QmD{EF#ae*kh zQdYROp^~6KL0oM*Hp1GaJr$0OZ_K~TeOy0P0Q0?Qs-li z(k|fV0|bfDm6X|8LGA4()L5}Aw$iE;fC0N^bQOV7r)i7GU<9wB`OKM5ZY7u0g4S2g zMlwvGRDC?>CvCe)K8p|rO(e={7FW=tb1bLod?>*KGTKP)JnaCG*gt8|WqLYTYB(}3 z&ZhumOKTOaRJQpC5m!RghI<^quTqse`iSC6pQeV7b1PB_7~n#sL$3;OF$tj2WL;Sd zGsM$wuSkM$Rfj&`6F3=7ImYtJ6mFGtsQwu_lKeHMt10@AX$oaD;BOf~PLkfP;#L^b zs8nn*?K!fw6+G20*j&eQe2UtG8g}0#%QaDB!TfL0jaj@=so8h z)?&Jp9qD4Cf-~te8KP*gAm@H(a;w|bqzY|;r=Djjx`fC(jPW{gx#_hvfp!ds1VV*Y zrb^(P#2rDw7!pq55V8&Nfi-=lbS;BDJ@cp739^#Y45vxR_niAWwS1M!Zhj|1iWYU$ z*avKxi^Y`{HR^Jw88babWEsgOYpgL=s;i7Eg~z_eVtS!!IAqn>NJK@^1mtHU1p5hn zLbWK0v>Y<0KY4<#e6q!KoXqxh-jz}nh*sE%smIp3OO@WE)*7``r*V^o!l~G1JEuZP z)>S*>vG$lO?Zw^2GjXXYkaFliBYDy46w;8>Opv2x)W1;o%;$LRbiQ6$kwu6JlSx>d z=OD%r(x;X%0XZZcr~+5 zBYD0y)n}nhYhX7bbZzJsALiRQ5iL9dMmLn*t!gf>Nwn>gyx7$Am{S_5Fa+Zgigeu7 z!A8;!1jknXvye?sQ1&t@byT+X8{S+R?kE=xvD@Br)ahU0;TTt=qyXuX2|Iv9=GRXx{Z$x--)Xy~RA0?` zj_emfUDSL@Z=s&xyWG364A~p!+lZ-K7pPvLC2^C9cmV2gjI$l_+E|$gN%aonIND=H zR92Fb3LN$(Q*l_9H0dr6V>A>6b!tA!zR^;rhshqH-dXf>-_Ld#$zdVo)zgBzPP5Vn zCmWeV0Zp`$0r{OYbBH;{F#@DE({Z4$znBlg#P<3|NN?6_Mnw&n-x_{pjfBY~J4jO+ z#z-PGL~W0V9mvmfG*h#;QT$DY zd686IKeop27F zWWwczErK;dPS_hvO;EK=g%r>EWs$9PnFG@xRnkw)rthcQm0vESBjYRx+xL_P0oPV> zo#HiFPz7RgbB6ZJylvHrin@Y;as1OWgOj#)Gtt;mv#oYbS_~*{pHaXb{{XzlanY+U zQ>{vo4M{yp=lPWTeD62jHLl-Jv!P|v?dsD+XRA$HUN;1Zi>XtmT&g=WC_hN|mR!{& zEd@%<{WZ-001UWuP^XrtH^Doffj8UqiXV_A=v5AP z$v7kQ;%`PNRH_9fMt1=3G}XJ&MCE{Y7{TBB$@{q);nC?fOHcDh&8<&XH0S=49oJ6- zRZ2<`8NDHn>L+H3CID8`k7JGHx>W-!fZ&cy*Y2jdw!JFNLmHKtn{BbQ!PhKBmCvMR zl|hsvwC=|yV5d%09Agq=Mx9vOIF_ws zrkeqYRTLuwP%HM1;=7tgkx}KJiCs&*{VKWnk!s<9EQ|UW6z5>L#yE`#2YA@)IRg;% zfwa`cDxm;ODfkYOA1O&wkKb+Gq$$SvZ+%KB12Cp)@qqxpx^j z12Qz*FR|WMs0iX&ZimiXE@Y!qoizUd=9E)ApLwS0n=QIkVS;v;kg+2Nyvo5-afaN> zEp{Uk74jStEw|IRr!do_PXlww7?vV$p7NStoDxUa%^{A&mHi-1kmCU2PKr2RTV%+G z4UEfN{{WYm2c!{^krg_bRKUSG%$5kHsPmZ$c)%XVXd7v6z(ffSaB;ky6~GL~0$5Q2 z)`w#SDsAQ|1@b}mkgEDy082us0OP*!suZ`RZ4Be+y=KI9o{#w)3U2DfTy3}nB=cNm_B0Q^7$zoA{5iwY}9Yp9zXj9}+Eo_oYr^!iVWDBs(8 zjuw$*k@pWOwT#tdbN6IQmxVM0T1Rd3_t;}dHr)PC3@vixzn~e%#9%GNe5{& z=u*r!BV(B~Do|r>vSf_)QZlYjywDGz6DlPR;N(V(2mtTA*0Wa(k-reY?lzAj7!cbB zGO&Rv$4L5prGR=c4kaY2{X0pcYE9u{47fbz8Dq9H8C5KD+GH|wjBGo@OHorC;QK@k zJwz4l&SrP4$Iu2oWa$Q|!E^V4Zz~ZJK|S3PN`$RPQ@Gr1!5HJbQ-6+OyelWzs7&>iB07Nzp)xo1Ci-D*dJ+w zqFvStQqr&p)b=Aiz2I)>b?PNnqjjWIL4&^&v}h&9PNK_>MDv|xR*iZ$luI%JrMCTZ z{U=+b-KBaOgA?tIpsSXMpu_+`?Vow2SwaBgJIvQr9F2~^=XhIrm2mA*N5nIW>Quww zMg|}oQf_yJRAP5IkWH8@B3g0AK5}FfddX6tW3iTa8frMx zv_ep(t}u4}C8IiXzs>|Dp}vpSQpL4`4&dZV7dlS8SSM_V1j}X;Fm;<%yXo&i#u>hc z3JFH{{{X*v%joyFHuaLi>Abq=z*NUL?T@_ll}432WMXl;_fJcTYjJAgooZvhC-sJz z`lSZ7zHXssNs1QJQk#GCSmU?#mei+C{?t=Shfx_u8(yq0%Z_Ix8a$E?bp3-UiD@r&(3?ayD+vJ>z23 zs^FcwZ8!tZ>6fcP>UoqHW|JL<+IH$Qy{M>EvlF&B0t&oTRvZ1~{TTF(=RT2gxi5pB zF*edxa1}Ohc#PukGP+0U23#C`Z}*7lPO8=&SW+vTQK`vw z?0)dNvApT-I-P^FTN8#E!QbPIPSxF|z2yd>PyqPKIpt5hM45ZWNGJz#)en|(T&wA*OpAHT~xJ2&NTrGA2F)zq*DwTlPbkWr0*k= zN7MI~RB@8QPyk6PuvTqggXv+OIEJf*afYnmjtr+8oOT5N07<6v{{VD9-c!NgZ?Pw| zMsf9z!OVZ*3Y!8}?bLm+4E8}mQ|Jl+$rHeS5#3Zz4c*eFX_s5PuKVr|PxKSr)2mvb z*Ij@(!59K<5b5+ntxATWAivOiORBDSQIRAU6ov@FIF6>(A*G7RE_9me)bAVIZlF7cfL>RTv;PbH~KXbw-8N5|!Kd zgK+uWO*JW=NB|j0qywA|(ABPOE0m+E$EgRYOs}W8Ve#x>uXoa_Dll8Vn^%TM+Ly!4 zmozEdQ8v|^MK?RR8?VSb&Pug@ky53d>m|*VUriQe15ozclk#Df#m10M`Mr?H2z2Z_m@)?uWi!* z0H&d*P> zcOdVygDK!~8XYw9R5Km7IFns|SS1vk?}OSgl}+XZAv3>VWgn8GQj>YK%GKmlLxMkP zu@&D?DUGr>nf%p8(tfP)NsJ>M+g{k9sDtw~m3?eJq4P4)>o&FQy!ur$fJp_kl0o8i zo{e`T(`}ewsn`)bpNi>F>76iJT-noGmZ_$VLU0(6Pxj1>Yt4ASt6X(Enzn4LY1aUN z0m6WN`|pX>@co(TcHvY6tydqJb^b;6$L;%0e}t`TTwT_=Wm|z_q@^T(O;`5G_{sex zi*WZa;qIy)wFL2CBd3P7n7J>jI^1uUGwPD-hS-L(s)jTD8PTVyr4NcW@^qEdn z`(|)!^y`Wa7NtF#aq&Mvt;;Dm0rhjJXZy}o_erAlJlZtv$^QT&s36XoJ`+;imCENh z88~1u`^c(q>0sFz`JZOG=)D%iulv%*!G@}t5{OAuJjh7zMn~NW9=-d(I}}(ZC;qF_$r?9tB)s#2i`5$ zCkHdxFN5!@C0m*bwJCwJ1GqCK*M@qHIvHy#kVwvSf(PvyW6UG58_5SC98d`JB>}?v?7= z3^qY(WbyWtQd*(NWy229radEd=WQ#f#NAPe`u3i1)nt5@-|Zsx$r%m2X^&4&sv?HT z$;Q(e>UAEW)Y<(f1#31lt9d24VBnqew-Kg21umegSxd1B4u4tPq1I@s{{RZ6l1Dz@ zGse(Lm#>OhC_bjf%kwX;_O_InJkwdg*wf&dEiu)+#dl*whg=+%9GS`##V0M1@&wIW zs#UB8RcRm?P`t{Gz|*nZ$Vjr~m76LDG8I4J?r|tunQQ~|G}CHC5dP9u;x<9*G19~? zJ*CxI6ySYc@;clq(_9LAy9pIQ)f+P{5pkzI)3kzuM;M3@qHBW56p zZb%qAh-yMHrv__9T1RMUz{hOMRd?HnIKbRzJVg~N0Qe^Z62+*Xj2&MP(uMX+U~l(} z1UH}wk$Th1>P|7lwMIVhwxv)4O8_y%zw++X{J>Oijm!!#AVyak{*Y>QfjKLI?HwIt z7CH9B49=`u0FU*Rx)s47o%>CI15jjR<_wt!1e_Qd808LChulUNDyO*OXliBAw2Xi= z%qR+Gm<3L*ObFB0u+GHf%?Nd8BxD%|0YEA{$YkL9PrNMpvZ}7fVoAg);Ts(7%%jZ# zPaw&MT_YLeFx_6Pqik)QnKWKWJn=KrbA$b4owX1_*hyLITIf+2EbW7iVploRr$3~w z+PG#Zr+qU;zLu$_l#crep0w(srlR}r--w=?ie#YD+~!>AmTWTYe_5WUvfB;4r0UI3 z`qhS4J4(&T)uonnDF-+XFg^sX@`WRUxm=!PXB0UNOb~m@_B_W@jaoR{P$vMv)v4gH zgAR}x0lAmDDBK<83ImRns5EolZ@0O&r$Kzi z#atiP;s}jipHiN1g_jxF$`Xq6l9)UY2lbj?s6LDWSAB%bRhp(*n=@03TDG}EO9OHb zGZDcasVuP=)rgn^00$>CYOhIM*JuQHCw|#7;Dn3;0Gdfw_UAB~u81m03xSSv8xnE| zIQN<N8*|U;4^Q)P3oo?PU}T)hihy!< zl&HzuiG4H!d_$$0i!vXlnO#q(w6>x)HvZC}tXmDlIdb$!27-Ibt&V}HY-O}m|;1kf~OoI+CGZw5yPI^=F9%$$iEICbZM9Sgsk)-TmcN zSIioQ$1xhqod9vXesY77Gum8KO?E+m2tM*jQJr+2IfJ^o?6{Q|U~mugj1jK89CJ6* zxTw@T)jC~93mKD6ynE(!?A2+|6xl`z$pmvWITeP$kmP`PmW5wAayFEwGSoS6TeO2>uq1=pBEuv~8N!{r$m^3D z)ue;BZes`DQX74_l45lJu_0-fF2zp!N{*_1ut|U(tb>CJgckJ;@yydCj#je!XL&2d z(NiA#=2x>Wdx@gptJ6d5AY_09oukH1C90epK&`a{jO_&^nPpY@%&!cfWpZ-_TR^aX zPqf`g5FD)%zev^hqOrHxf{cB`(IU5ZVaG|lO#@f=0(l`Bb?0I>HyL`LnZ`k zzylcGNl9aqyqGxRL3J@rR2R?bEfuW7omA@7z~F5&3XD7d07(a|8)MseOYy4e^3|1e z*;eC%(XR0+jEhO&DW|&Hyzy$gNFUw8B(dyCjO)^mK3jzTBWd`!bg8@d>YqE?MskqO+ z42|DVxxH{});bhnX{pi&=q7M!vaHrwYj*&XjaVB>uP&X)^J=@02o0Xcw9DoIFtWX8 zUXXT-ShkOlLjzDQM}G3_T1ZM8mgV1HS& zsn}dKp(2(*+!SDQ1C&ZK>KlHs+t*(-Dd2G_twyCKaOhD$$Oqn1tTihFKEhlbD&y8l z;Afdp1y>sIGb|s)qwYrYI{jE}(^FyE7&(p2hHL6oTKc-e@W>OBQMkSd)h zDmw+$fV{%DOKM;*n5x8Nrpt0s8)vk#Bii)dlVu^X>%EU9iFO$34RlCtNLU zuhBY%1_<`fTN%QQi1*CnRiYNNEk$);cV0G~OCGCI+MsHcFI@-n`Gk+_HdgTuNw`x^ z@26Hej_-kxKS?7lH|Fi_t-P?)Zwyz#YBzQj&N36t(q))9_ZRn-TQx2pIqY%$rI!6)sN0a#?wIM^2f@$pG+cOp ztSJoLHmZZLWMJxlY0s-^aZaNv(sj|!rN{T1$U4>U?C-)>u7Z_g^(askkG|1ebi-26 zSD|R+DE=WEKpbIF{2ooj~V2`$)zq>V%CW^qkzCz@3Y_XllPZDNT?_mqy5lBO8cP){62s!lL*F47c&4)DU7sz$H8tPCH% z()x|Q{_&_r2R_jTVueZ0`*SR&pp5Cs`^#3IY3UxLn3|rH0Im*w<+MVhoO)Z;?T*sD zTGI``-e@Qaog=i)s8o_<5D!wD2B%TbjtF8V+FeHWkk;1~Y7_qe$sDl$vnr;ckT=Y+ z+L))Mfj?5eq*w| zdKC$wqK#G<)~EeAnB~LQrsqFzWz)K`tN!bJ!H67G86)?Ow??ov8nwM^gQ#sub_C2F zBdXio)D*g<1f^Uq7P1Z8{PvxsSEAqwibgV+-+ATbyj`W(&0&0&)hXLkpjMK$A6ssx z{YS?WqV;IdPt91-T28?32c?g>986Vdv8rm-q>EP@9CIk?)GpGtniZ0@yEpMskJI*! z8@ioT6s2CJT7uA0DhkxnLnATYIP8AX6#8miQl{2-Hr1*r(&`S1h<(J{TcoW^mb$gO z7B?^T61heLbPI3*l2cdayZ8`w`Az1pHI7@#+|~7)U*6obEVOJ z^W1ST^*W}tnYQT;qJYV4E(?CMy=s?tDpHx$akAB5b2HVnsY14zmW@Gwmrv6j@h=-5 zGJs{E)SoKj^qpHe=Khk}ikdFbe}hvv$@c#MziHjR=ysQjid6ztWzMnN^qyk1jqgvp z9%T{{4$gMf^EEk6Uf6bx(Yji8-E!F#sQOyso&$ckZZ2qLE7-t_K zPLR9lmv+O=r%+rX`o?k_<}RCm)970pI+UC%wg6&A2i(NDbgl)rPq?d40ZfdHf+e^8 z7pS6&!quwN;FKDV>?d=sT6G&MWouDQ?T+E8g3LZA39oN$X`d$U>Vc>*%FTj*^qu(K z_Rm%^Wp_=~iZz3B4uS}s+iR4+32%C>Lg_{+y9{glnU2@Q9bSrrdZMyp08|71lIs2> zy9tK1wK}#rT%3G+NzadGPClAe=DnTsIxG2<_o#|CW%!!_t3a z?m6e;dD}Q{p&*8bs zR64ItyR~o3-CL+T4>FJb`SN~eL#AHRt#3w|XBCiO2AA0Ni+lTYpc~Xr{5Bj+eOkt$ zx@z>#msc1FI6pJbc}@1*N3V2uzPekhU@6w7H&OiGGhKzrU*Ip)m<~?ZKGR1_xpPSp zqiS_uQO5_`Rn(|bdd+ic8RZdbKLE(kId}lfUaaapjX7 z)~&-37^vQ8xTiw5OKNu%7NtM=hN8bBa;|jJ!5M08uzzovWh;xiDiBl^JF2i4VH442 zvvtc$%X>upl2gC4W%VcXsrWq3edV^) zf<|SjP}$aNW+TY0={@j${{XyIRMDxSkE0j|;%1wz-7ev}aMV$S8jb2LoC)Zby%!4f zlq$H!$2y1WJk7P*(jdEe^oY~txyTDe6{c?wDi&Y5|}8-xIr4eFbzLH_vI3^4h4kR;2k}=Mx>QtzV8! zojnv1+>$hcH)FTJmer)Uw2D@6k4trN+>ulmOI0kWU}1=+UvON`q9mWPEN# zFfe~vtIDw>Erp;68LBp%e)DJeTGjq4kPvbsx4WZ3J!*2?5;z{xyUWlhv7=oPm}voq z$Kq#eQFW!Am9+}Kkh$MH{{VO**}AH^C3)A6r{;3YRk^hCt2tA~Y4?@Tr};Ws9;*c> zmhbT`ml~Dbx$W@<^jrq3yKkJf6&sFHgFr)v{?VBqIbKQ{rx^~T2PEOqG{PK`>HU2@t$_?+71yxj7$TsZApRGWcIA=m;&0W#{Jm=qK% zE*pJ9WV@%TqPZDd@ibMgJb;wOncpKC+hc^J-eVSQbC@Mn$t-sHn5^8Y6?2@48>)!5 z?t~IsZKT50Xa(idG7KUg+`{}*XIgH%=VB$+3bwXj>0zIEolQ&1ZV1!uiDjCR3&e41 zqN(8eOvPCd6D>IFvG%w^3G@+i^EJEt461wJHeSR^vne0P8g_G>}Ha ziBUmQC5AxWZ@hEEMg@LkmtPEd_>_Z!O6&x*)hkgMw;0YNbr#bMJp}y2>1>%3a=)8e zV;-^f9^VkC`klUDEeN|XyU4~ozB+yi% z11jL>?=rb&!<+FZQzji5rH$j5BNpor?Q0BIOG<|Wj_m=^(+z~)j*p&|E|Qev&V zxvl)dS*nHG+6G#0=_CvpVgSP@nDh`d>D&C#ntqTzWYJZ6XHLgrWDByO8=P%6y)YBn zW2gXaj(wI7Ye|g#vom|Q?#wO5Tx60 z0k#MOeCOU+YB)eOZJ86JQQNeR2_G4N>S-fV%A1Kc1$ONsMqohWxx|T8JRF&IIz`(^ zAbsR+6wz#INBcm|K?i;&id7X5ch; zEZ|G2u$i3a?Jc8>?*hiBui{FbFryEaKN8wOTW%tCK-#mv9KfdGXqDNVFgy_>YRydQ z&gMXU7TUW$2&qXD=AcKlmyOZ+C{sk{tR zND9Lve)G!Ovs0!tGm1c+N~~}|A{H!up6^uYBtAcrb(k(yy-0RpwDx_rDB02LKbWxu&~^1N$r_?HuP(%g!Q;Q)NwKygs29yS+%VK7XCbrNZBlck zr0LdeKxe$G>OQUDMvzL02WzL+^6je9s65J5HamCw%+(PQ@l5TFhqTYr@1Ba3(ismR ziF3Nt%OSxhkBKm-*Cmv1f<7f77@UXu?JuXC@4nEfQ5Y1{r2EMjXY&AUILMO-0M;=p z)1>TjKGIs79PKtHu1Lu;!dFgZ3UW5$N=mStvmMUT#bv-9^B@MI264Os<0m=ZNg7VB zGpKR|9Qs2ZNRTHSjOS>p6Qpmqw9tc)OkqZofg*qsbL}oc=-A=~DjOKi*^ex}zT}^^|i(?a7C0Kg6!1k0e#>8hcVe;-5R=q9T=4E+Sshmc)HX7PVs{*fmyC{clMOAfGbC1$b zNKvSq%(!6N8ETWZqqLMa1a32eedJkxnB#r8mKWaxi3ci1=MrEkvxDhkF~;)yOQS}z zRA3v`xI9eijxs}Sk7xx2cjhpzl|g57Rmp7(#~@7C7Oh8exd+(FGl93Z(?zw-M5m^s zYEW`P5sb*lK^qOFl#t|2ER?RBT@n)$)ay?&pLX)coTSbn7r-=;(Nhh2@4&aY?%aEXFVZ?N_ z;FcMcRXgp(21qYNSFFhP+aR1H}iK(?12lln$WBkX%h zDKS?B98DR?^?O29Z|dC2oSr510Kn7EWeyI#_=aFRsLT|QaTx$0h!76&+C*W$NWce^ z0<7DKSy#^IXaf$wMw)@KcCVrdS=0(71zw47nU>#Dfi3 zfIzLd+Yp8_cQH85B(gDq5!wS)+j(LVr(+_dksdihTN;OWoB(!)v}t;~#lu zpvnh%77N@#L$)vv5YvE%IzenjATmDj(L}4;CB^n)u-0r`O-pvdkFv3|T~8%F7d+~h#5 zNz5FQ2i^w?{{RwWPTN2>#wAq&ZG^a?FR{kar9CGk<^^d?fta={gD-MI98C1lik5(r z>yu-+J>+&%7$BTLxoSBe>L8D4s*OsoQ9-D2o#s_0pBpinQl?M_BUW>qK-54b%AN6v zg|Lir+HWHPQxMeC8_}$xE|6ff}47oN5JMc zW!IJ5!ojNz@hhy_jwINwuUDjd$U3OY2Fx^u1ZoC&iE>xB7DSIHY5Wqwwr);acxm|{h0k+|gTE+tz{NgHw_y-n1) z01+Tq5(bkMau}|2@gq2?bZP*Tfw=q4NE9Pr{aZ+&OzEhg9Bd`kDWA(R3^u|3uwt&M zQlt4u;~Ezk$1^n_tJZd#`o+Z>?N7*GLZ})2H<*So^=XBX8=VCI01WL42uLS5AZ9VX zMvcAY?zGhaU5+!%DzznsNW|4{4wamtC;9 z{uN}%G#_4rk?CM_gELj?Yu5U%tFUOQ<5(r#coR8?FaI5?cjz*D%b zPt-!3DI=NIv8+v+hS)j!KsRh ztTcnLKQp`Ksy#nYW1ix2@(g`RirVQ^Wgq73Oy!VGFLnbnUt74VpD%>hpXg>fnRUoJ zV-tKQp$eM(pa9d{pLty&pIO+6BIHxR)K6@7lJxn3fXd@Dq!tJA(41#8Bh_bbVV`Mr zN6MTGZ?vOwz31DU)|X7&+tTvt z5TF2kr<$xuaFETWh23<6xi}MBQxs{SC)b_kdJ0mik^HAKqthu`bq=;E+}tg#1_iv< zI}Acb8mvMTY!KXnB>-RmI2;Lm{{WP3oX~xAbr6m21f=AQ2#u<8N#09H#}Vk?CJn^c zjsWeMZ6US_?;}KJpqj2UD(|tx3e~c>X2APM7Ai@`$GmRZRA2xPc}o)9a{*-PIXMti zI>RZ(H_fy06vkw5v@iU$@^_2NNNN&B}_d_zDAf>8xFa~Oty-EnvTcXK~&SjfshQ)5o(_| zINKP8kOg$}jq?BjCk2W4jHpfsjAaI*+Z~`(%#`=i->idG1RX%)6+K6p60BDrvEXW-;hs{{S)}u$W!2H~Y%Nw)?=oxeVIDm6CTo@gls&P6yrtZ8#csY;I&h$-y72 zg9Ds_nIIf)Mg$4=#69GcE;kTRFiGMBSLuy*fm{QQB15)J2(db|43^tJ(l#6Cw7S>@ zVnFRB6QZ=j?nsga0|2KoO;KGyP&xLM)=fBI!|f&qT!Psg$Ub!JaB~pLo?@%3W$oTb z0a;2KRUG}te~4247{dJ>r0Gyfbh6kaounKe(pytjdG4x0sll1twsXAJ)dHXcPt%>{ zRTo|{r;O}mhN)mm`gww>Vi!C1`Iag;63QSe=SU~y%W17iZsLOL8ecqoN~;7yR2=-v zp8G{Ij;cWz7(2`;2_&50_K>wYG`!ZqmQ|w2_*1l%u)xST#_~56^4^V)yfTGHRNK7F z#Fi#XrdZ^Rn1vQ9PQ5r08j(v94#EPRN7yX8_;kXvVZHuj9=Uvl^saIQ+N888Q(aF} z^o^R5jH_hK?s7Mf0G=T&UhGIa{iU|F+M?x@{pD(!kRH=TJBL&h^#Hlg0vTzqXta@B zHa7Q|1M03>jsP1+dv@0-0_8#+edTn4)u@c^B^ot?eJztF03ZhAGPEjAG~msalv(Jt zMIg3t1ehyY0I*bW3v4oRHe1^eG}olV2YvDn%#zuyL;|BAtBmO|wQ?KCtE*OUt&OB3 zRSJl=N|f6|f$uy0CfeSu=&4Ekw*z)ljQ!`DuS%NL8+mTM!6!0SwXdxz`PS-{Q~(2;nB4YCNb7+>a`*&<#a1$hIgKB{{X}_t0M-rr9`mO$^gbEGM(;< zZKA57E2jcyt!h1M^?FxVZ*aO2l_8|21moK=_uwRU8N-*7RAhP6m4k$*oh=4t-i?yStS%#V`pS*q&!O@Xeoy zoJ+|i+-fsUqZTbd2INOvaI1EjNj^4D3^rGKV|#dRF>Fj8XZ8`1&i5!S`ls*IZ2gOKID zTZxjrjRF4v4wyrpRb{!P7&!-Fjit2e8l-8aR0&lYwCmEb2}uwXT!J~~Xtuqg%2Uj0 zZZKI`o@L-IMjFV!!w zQ`ux`HE%C1N~0*-QjQPL#15?h-bl_il2*s4Hjy#Vxut?>xGHuSJ4;gF06pnNdY}8>?X<-%iD!HARNqffm47uo9R?3ZU|fwI6dU66~C4N1aC7O zh05mu=ZU(S)2CZi(zzq*R2kUIg&H+2TB{RDLv4|{nCjnVYgD6HYkUF*;!2|1)IM5M z1Lv7T(!=Xag(DK$4Np?0JIJwOTe6^1H4O1F+)@j8j=Hj^ECI&Tq-rkt?0w^=_Qs~8 zO&P!DFxIVVR96)cl8m_|kCqcA3Lm z{l-}6?D z{DwB=spoBk=vJq0*2qc~tXtK#!{RJGH2^3-BWOtHT0KU%CDmI&A4oam zYTDAk#t!_S)dy&M~Wl*~9md7BOr>xpq(zPPZiXC3CN2F|a z24J_Q)YU?fzp#cMmIs)bZz2Ug?y$k9NJuA>6j#Ie{B=?cgG zV=^{hR9g1QSx}eU76XaLJ7ktEow7zJO2(?Hc_Gvl8nov*{pB5PX{A(bX;xjp9pH0n z)m0&%QC<#_+HU-^(5*(Zl=Tdt&Q2z3EpJK1YlU_}z+UItI`2-UVOfx_cR)$lL043D zRw&E-JofDI z1EeVjBkwJ!qX=?r5CGul$~}b>L+0kXi9J9rDIGu2Zkg8^Cx)9)qjJfhkO~V zTU5EK^c9q8*b(36a;ngKOM^YB0t2I|33=@x;LaU=HbCO1LCrGD#`}5vsMD=MUfdW`Yft->cPUPeU13Thp3^i?% zeX%tr9dn(fioTCY0Q=xTsb5gWIOIt!Dm4gV02#m^Fj_7gvM|-(?KG{0dWq&!RV+Ja zc?!)!i={>^a6!lrdW6;kKAi4l&rPV%V^pxI>}GMIr7bu)#&RUadq%SEpe0XIvDo8@ zU1~};Q@=907q!s>6jxEU<9VzTaZmV3>-LEkvzbzcpkElrX&NpHXMztCOI0QC^sq2; zb2HSXnt|yNp^h?r=8CcFQ*Z%KQ12*xBCbZ++FMx{%k-5j4&Y3#OC2X@jLs|S(R~_@ zHs4pj#DyBVjvQo2D>xcXqOxkfy-S_;z?HSk067`^W?5-UoyA;f8u9$q0*O^hc?99J zj^buoVcSlSe@O>c;+)?m4)rH0!?U_+xt{Ws^=3Pp?Mp6Ud6Twj|5O;P=>LeYp5>?ZH>yyOSO;=B-jB~`Q zr8-rs04iw5d`*baCoJHPZY5R8ESHn2i3}Z4Cz!Z)}4+w$&}Y1F8qt{4pRJ?1j{!1D<>@0r-Hv^s@_C#g}D(_p_70HTXiOXSlWs+iME2Fdx%oww0m3Z2Tb25OZE;d99NilGeKt7$#VqP<0_a_p#35=b4Rqq~6Q zoNvrtDI&_Wi338WLC)f8PNQ&YDL|@GakQ$Vu11c~rm8hIfKD^*GSvFnPU5w9{{VP7 zJmk!sLsHf)PkfAGD~g~1QHX4ABpsB~)!YorKDT}`mjL1U_Km@H+GwPduIUoQD+w!m zO8S@rx^c;yzMRmt*+^!<#J5u}*z}oRDpGQ!sUGsvg#odWPA4?fYgAKAraMgN=NRrK zwH}BV#J43e(PWyotD|)YS`;HE?G`S`Aua zkqb;@oS6l7bs(n3M3pB2a&hk+HhO1_2wJJBtu)_~WIUob?KF9QbCTyy26HY3hnJw8 zN3@o+jQ(2a%L#aG1p+Y{8^uiTr~8QOIV=Ij2gJ?g=*7iBIU{)&q2}zl4ci^%lyOsz zF(X)1RV_^JCN#xsXH{whbY*X8dnc7lgY{-*qtsnoYjRi~^7{84Z>%MaGaYaW!=c>8ncR zh&jk6VXha=R>#yg-gM*jp;1+rNf|umAj?bu-OeLEfw0<9a!JDzo%o$0T}w?h6H#&L zJ4@?a4InY}=ZVCiTpvzHdAEAFXB>8t#&LeE)-RL4_leZDNc+g!qg1RZjPLE*Dvfk1 zy(&nXZG*{~>q!~vOle%nwdD^FuF_oQ?OJ1qq=QpaMV zQDDS7QzuS0m|J}`gw|!EhoJAaHy+|uNS0>Cz#e9$IzYzeXB^cVT9l}qxNPpD+GaIc zovYI$1-s^Iu3gFPf$uTYT}Z)(PrQ@p$U#5>Iq#W$6%T^nsgY#BRXmw>f-xi>L7Tr3 zs)ZVP0ewn#B#F?hnFBkH^14bfs{(s>1Dmlaew;!}f}YixFjwmU;bOfg}$X4gWDq%J)W~E-F;Og(*cla4jwG zZK_e)vV{SO3<%sG={fS4%b!-06w+IVU_RZXt@Y7e18n?eOa^+xQe#OZobxx*q^i2= z0DY%1m&#J0VC^7N0D;HeZLgZCs*5c!J;did8@CxXRE+R30?-}sagsR1up_UiuKaH~ z)hOL4`j`yzB@S!s8l#b)d8r3o>rhZb)e7TqJ^m&Nm0GKpzz5r$iO;F1vo?}P88D++ zsWzZVoo5{}(xQz~feDX}Cd6E!T8oemyymA-0|kamv;0P$lj$QrG1jg&)wH*I2Tf3} zefvZxC9)<4r99O4KGOpA7Y*sse&9-;y;{w=03T!il3|YFRCEO@;CllVat#e6=NxZ1 z^y&&n1;`Uh-ReT6eK`80ylx{=r$o{jA3Vs=p-&}%&IBpcN2D5yYXf7MHLB~e00TH( zo~Ug2P)}nj530Chy2o9V;11>sLnTyf3Fq2Gtvw+^T)R~#8LrQYhiR;p zRrNldJ8j-`t}3=PF3LDD^)aDA^Scr6F0P`Y0K{N##KmGlu+DM!n{IMx=AObW%8U*v zyxk`SOT~#}bYzMrlO(tD=0sW^YU@PUB-D?%{SgnCdl_%{+}+&v`p@j2z5q zRGN6nCNWWn(hkyfO6oDD{-C@2%FRad*-qe$aVw!yWk7rHEjm{@INt(9#dMH`0i5GF z#Il_#POOi*gOP#1?=JGesEmPe!Ni44iw-w}MOtkJLep~mW?Yo5i&A4xW!Qr$(D?)t z%z8*{0(Ut(%-Yj^HdG|8*gl_ZOI^b0BRem=#x)a!893kVFW3Ats9=Sd_A_fwHG?;; zj(0M^wGyh32k*zs!_+Nau@z|YMlqS0ZYw1(%L=3sx$if}$D`09G9!l4YB#7H&P~_m zzcJ=iUB?p|eq+p5sa3r@gE|WJE*~WhF@o9RTf%V_E#oH4F`3e~x(0^CHhUh^l~Ts> z?$&}*%eL$P05F|in`$j+xvB%X1aJJNW0x5wi!Q}6MO5kxch6~#tvxu>!z6E+c4|1y zL7W|-U5Un^03Gqf7@m!` z3cco%J(S4RvQp$xuWtAwVn{#MW4mQF30Eiel)IC=db9C8a(^o$Rcm^Papmg&0Ls}D zJ{+-KEHUmPP~_!YgYhi$>mkxfBLL7qFTWnrw9bC45gTl9C83qrmstY3n{A*?2_it_ zJIA`VoOYGAtnb7Jg~-5@sfAIA1p1*=lGr>;g0|Dh<_pYt5CCVKO$jL@iL0juHPo@# zNK&_EJM6gTXtz)wKscGSE2d&iBb^}Se$tv$hOvP!y7biDyGlIlY`Y(M79oF)U@sEe z6$E`+er9T|skh&GuH7=DPi^6*yI{VookUB)QoDi7rkDU>Mgf+kGx|WeG;O!_m(x(+ zNZ%5aKnCJigM2`4&PI(S4~aS`Gq`WoNT?iV_mZYgc`z>wLIuV_GQ=lWlt-r-kfv}6 z_?A*SvOB;k4^KGW3agK(!S#>+B$~Jbd_eS_A#QqKS-P>fF4U?w@X2of0QZ^Q>sAkY z(QY+qO4OHH0)DK2tij?scnNh)Mzk5I)1hH{wQcR$u)%=In2xL-5x;AWn$}gr((;!- zq5fZere7LbB^s7JZk0w~FBIxj8=m+$`rWT= zs#BS$t&H^lK?1-bm6P_NRiTlnh48f5IJ zI|2GnV^dJLD(R(%x3rj-<4TQQk+3opkgj#N23V*{hF&BXwKB|i&eBIZw@}rUVnmtx zW?D719VcmUbDbt_oFX!JlBb2+v<8x77~qH@xjtvaVOx_C^)|%qyqKwl_Yl&jQb-4k z%M^KMBWRSCf2LVdn`};T>>xxRQ6rx6I*EO_lfr4j23GD*w5%yp&O{3se+>MIo|q#c zxdS3x3mvnF1RAnVa{{`EPLh43SUxrxnp?2!BuK!>ft3q_RIUajZV#hB&A>nR%+SuH z6QlK%g6xYkHf89gnsra`w)TS?Q~68yfvonSeT59RC1$F128{ zc6BIZtCjv4&wpvf@U8VqRchK*sQTzOjU;#YfwQ1r)S_3XSEkI!a6U1#)7CnDN)9jS zs_9l5fNUS@GW9AIDOXObNK_R!6@VO`#&s;~)4l1(&Q+=zaZyhvC;EPnG+WlUx}f2y zvnwu~1>^OY`cn>_dTndt%OtX%`1YKedi8ogTdmV8S9hk^E2#QHp3~6YTdn1rRiwkr zrny!l`atR1qTEo{R1i)<_?c^ZD}@Vz@iKH9^M;{Sfn?Yy?ejX92)aWZ+nm8xCQ5=% z-qM=DDGi-F$8xHbdc{S0qnndA* zA`9uR#cYfGWAR*Lgp4A)fMmv-c;JPk`xdI za741Qkc5T7_mxy;P^SdsLrw=>wtGtFsPy_?hT63;{{YQrk^ca!*dCW#>D29OGYVvV zc_7mJez=_#M5(A$*;sElHP)v|zNe2>t;yNH$?^XHe$Xqlt9xsCSEk=4D^Oq=hYr1n z{{Yf!>bCy?l)oKf+eoKSkIW`;ydPFS@0oX1vZ>UltxFajeF3R;AFW3tKlj9sK)*}N zUCKQd$~a-TBcJO6#QVHJcM|Jdr4V*54%3n0+wpgAqNblQ z7uGY3A8FENK)RJk-vmKclj$UkYCG>N45WIuz}ir_Wym{wOI1M}L}4^zjEL7H@JHGz zCrFluQ_08LTSHV{SU2k+ssoY)o?C5SPu?;{a3m3Nk-UKbj33fXxRCx_z(D9+9%WYz z=-Zt8M^TA8nG>9C0|Vr_*o^Zsb)KD1sM~{1prdzBdUbn!kHqOzN69CTw5Zb5G6sFe zzr+#8=vQv+);&Q`T&OBk^H6(_iAC+DUXyZbA#rZ!2B%~`-)XQ?1GN5}nU8;UQ`>zYo~>vYPWLk7V^*h?=h+0}ZLy-(r*38||(hxvYg^o2@|OOA(g z`C9(~#iHA#U*yNP-ggI=aYR=_G@iisoZB0!9Y)=)D<4r{PNf)AgTM8eJj;%Yd?{Rl zXgR{T;KVDtM&Q#vTebn)iMMP37b6=S&RW;EuKsq&syGKarpr41T|gVvO}8HcYgxvO zK7Oseu?@k;XxDwg$p>>RAQ6%>V|5S&os5tE_&)MMNI55OXxIfmc`!}D)s99bPNRLK zk+7vl9LNGsJLWKFxCAL><#(KyyDR3mm$s9uB=L#fD5Fp#CmhNi(u>pq(QxAjGAw*o z$P`;N*;#5-X2?5@_?A&BJtW|2ivcw&GPA3;NdExLf9V<&50X2>PCdpA)lKuh2gF`h z4hYqmZNVRysfEr@5zuOf&=dv$vgh1HE7SfS*}ZO+eS2sKx}jKUP{aoK#}nQ3{-iFc z>8ggEz{0W4cIjapjaz|(AekU~ah>EU)5ocHjN~0b zq#CZx+~Nj$fsIUqw6Q=G_4eXWl@1uW!VYl|xHWK;1NnL6i8MCT&Ivzx6M}Q2d8sY( zxy}wCl<+;}8GNMNzY`tZDlbIQtfHkXU;;j$ka-iRPy@uSwKXgBj$nDZUzq7P05i2~ zXBbd-+x)-N`bBeMY3u5JHJs6Q&1x)gQ*Wq$Z`OA1Es^P*)7CqToc@!IT7_PhbLV-r zD_NDxQ$JYWkC6+QlA1TvDcn)0)b8oNafIc6=GW$LNa4Z?zP-dcqUT zv*?s)+wSzKvX@bfZ`|$oo_dE)ti2+NRb@&^k^>y$C*PUqP2K71m$U$(i>+(`IV5LV0SZKBK>W(9_M?RIO%h z;Ob$7Z-ROM0OCtJe@~}cz113&6xX84968|QouxOuGPPT^E~QXx6pc!MLm>A^)E1g~ zOc*%TvD@_ck*Gm9IUw*eJhhe0&r2em%?!}&>co}(I|;9;c!#C`0Eg6i7pYdFu0kpu zS^ajCv=_DcdxxRrXbO1^o#xA9mGw3!hw#07hx2M&B{bIB*A13GAJ%s|pH=ef(zl{8 zS#o#UI}b_uieLp(u$NG*n~&Cc9+%Y?vQ!LDnvH_JvF|$8w?WtufIH0<-4#7q9?}>U zR;?}ZRdB#}69p@^Y=C$;m#tDN0uJ5boOmA>bl2$JRZ&&^is#VS*?uRY@EzSdzL{FU zme*|9q&^QndD`n%cKu_by`aNZ2lx!f`S5oB^T6~gn*A@Ur8~kYSESxmUbyI0M7GL+$jVG^zGU@HguMiN|gg;a;vs7aABz*F1=691$xR5RcvJJ zGBRh$Spv$3aF_*m7Ub|Vm1zGFi0l&?mObOU85KfKFv;m(6}KZ|GO<8$QfK=+(3 zmDcHtWT#HDqg8AijIj5eOD>|fRSgPvH0jdR7gKEH{<~r$ILCkCFAJ0+o$YEQ@Bswl z-+AX#z^!q3X<1yF)OR77as6k|?JT-_7S%vieBjh<5N4&NMwtSTbWykp(^_NYSKo)7 zVvtWNohqe?*PpV{ooASl|`M=|16J)Kwv=`I^Ua-KRIGCEdLjaipp# zKE43=B+1zy68x1)RrGmma(E+rMONCbyc#tWXSklW>gwyn7pZlo%HGOwEXg-d4&Fus=JeFLO)mg-c)u%l2{AN$jKRDI`Z zyai?%1wBQA{{Zq%ej;;&BuqeByL0DkWNO{-JZHNK?U{+WWxjwHynAS)bH&oZ9vae)Vg(ZPMErZpH|d(BB>s-sdW;rn_{()+NqsV%J~ zWyb7J^BB_^uP=zVZlBY@OJIF&IjDX2?J+K*0C&3g}*Ul{2=XzXn=C^DubCs-XTR1h$E(8cwHyqX*xUE~%DXIKr8qkd(zYOcze0DR2uVPQB?tLJ?3Co z>0zH0i@4RQpsN$G?Kcufv`3fh~n+8gYdQjMn@XBqgCQo0BngCg6u zuJW}wf4nPI2hoS`FQs424C5+6#L5becpHe4qUIUhYq!#FN0>6anWFg8db%l7)3-S@ z9U@w&8iIko^J5x&Wt1@PB&pV+O;ECi&Ii;oca-RAYE4HZHcI?Sx-lMQJae4<$SXT3 zS6qR_$5W~Xpa?Xa`l6^!XZ37A&k|Y)T>S9>3C?|_W|L_0)lDD?Y--7osYOF+^D(w! z^50SC5b{n5_~$UrDkhM}sOkrp7p5>zs~luSRWub)HzOpMd_K|9>PmCx&;zZO^GD!U) zimhFU+hdtFTyMM;lYtvHM6>HMDPii&1~a@HnHJ({rTYCb0tphNB%B^4i-EigQG(PS z(@k4~7a+`Z%DMG#B#o<3&v+VIn5?<}V!7I4yS92INmd!|W#xtj0m$wQl}f_BEj2Pq zjj~{2(s2N@U7aJS<45vbkFHRc3?#Cn*F6BgLpnI%T-GXk>5JMRX3j1Xp;HpQQIMIR<# zqo+}QHLBIBal!$J7%1rja7b;Ygr}Mn29v2rr+y~Ge_>9hZTfvOys4<<%Rk0gj3-UA zO!D032RW#a-i6!&oSe&r5)>97eWyTmMgvn?TCPsy4rSEuEba!Hv^>B0yFlgBr%%iV zqa1yt>k4QMYzzZ{CrsIrL)#Hp4aVI3PHlQmQ_O0V+-W=KU<{hL%CGsFgVV{HtJ`@1 zY9QoxnLq-vd1LR13!1e}LZF=Iyl#@^Xr@;gkf=dBMNBYEnHM-SE}i1V*hWisG6DAY zhO^jW7ql|{iIkGMzWW$4ITaB+9BiwYy@T zs;)nowgAmBO3Ko$MHK;5r<@jO?|hYiEh@ENbJ|l{>b-yXjkjO`1Nus_D+>mbjE)A- z)sv)S_LauG<}h2QAYg!gWo5M0_xnpJ)F^YLH^GVSUp|#pKKev~=q%vwKS^UL&dA3c z#Y*bofc2055P#Bdwy#*{Rb?B0k$>qWYgmyRK`f2G5*RD72R_73m22AQgAGlwu*#46 zN>=9Hr~G_}J@oDUB*vLWkffPV-y?i|=R^EHm0Fplc}4TW=Lh=8r%ky42BP4APFK_n zV)d-06sXt(z}j?a)MT>LNu5aU7|b;j3CD(CQ(r2=sQkcS5e40&%9#;1xZ4?f;O7gT?!PcrAMU0NmHbmRmCk8 z!s*|iyq&GxO3c1!$zB>+b5Nyqs_U&sX^~Z(rE7YAi!j1YkEXS^uUS%3*Axa3 zjz}BtIR1x#9k{{Syqo;JZGPFGs8HkFhp)TDAH<8#un`_n1^+##{hSH$?>xOHVsT2N;*msROhY|%gzd#>|6M?%itm?Wjyra{=L+wC=) z7cEa07B=^azNdAl74h#p^Xkyck_Rv^Q3!2JbI$SBk5AM3wHsTcDED?Wz`&;3olomJ z^sne&+p#t1)TdJ+m6T-u`_CI`)T+^OuT!bpOxWS=Ug{{{SL682ipG-$}Tp-~|K$ zzDdp}S>&9fIMH|0TG)#A6{=oYftSV!1LS*0Y1JOZPKu27kGoORsei8qL#B%Mbr#}- zZo3*vexdF2H`1$Q=AbB){N3u%VTK3YfA74Vj8}cqZ13%j-$uFDk*(ZK6Mx`+d?j*!ZiCjwG{wMNMK22Iuz4Q?(1fZ6$qy-c|S7zb^o zDy6PhQST<8HCJ6Z!RAW{zTL=uMDZ@WrYh1kmwwwysjVR1T}BEUmYVFW>WxW4wJP+F zI$Q<=^_gy8ZeZA`ErLYqTU;6{>@HmtryPcE-|I5hw(@U~U}+~AJMT193ijfX1SIlD zIg?wwwOOe`zoxA*N~z)X9VhSXCOY(9jZG}ObDqcT@h4iCUrF47zF}`&LW(yewG8e* znSb*C0Mm)45TXtVZ@BwOlfy5*Cd$?ZYFLrHpOa7~bZz&N zw-k**<`z}sB1T~Hb)0R+PE0L&ebsR0-i2D4cO<5e2fj?`R=u*fsK1oA)Ii>&9b5gl zoa)_9{_V{-xTt9p^aG@R!Xr-2y{)yqu&Z-@Y^(-KAte6ueIBPqkU>d{Q6v5%4*t{1 zwG3M=Kn6F+&Smx;MJZDhnv$}X!PIsiGnYRXY3bXKIXyk2iWip6s^A52jE3BN&pT3w zROvTr*44Eptf@PxA2U_G6{z9u>Y%1aW8Q7)jhmk$x@%nUcMb74P2u(0O=;;}MwRuW zHDJ_ggQbw2o8?cmuc}(oxTY52nJ{vdgB&lx_>^@niCTr*T~WIpK=ojZ`F{d$>6bRt zsAzkNbxlFIE1Zw9ld?Fq`en_fQC+Uu-kBLnr0hq>#JKeiuVRVkRH1onN2CVGVeg)E zI|Aa=QSzwJTZGP#wFw{(jKS+rqeug5KraOcxB5*^Lj^0kSCqdq)5S()`l%Cwhu`E) zf1R?sqA6d{s%fy&`QHcM;&UtYUY~Dp#Ps)|!|5u-gZ}_oa`lS}k4=p#iRK*)&Y&(i z{{TqKyAtt?_kJ9$M7`%nuTH8e`l*wKBid!_JvOyYj=e=dVuuw`{-oIOKh}B|sb;M2 zN~v9e1wNe36s{;KbFP^TG`^+JKNEAFU95DkA>p2{e`M=Ui?wTa9=aswZ-0-{b~>Ha zrRAgDUUcQUv_=3{qBPW`-p3rSGtb29(dbIi9)K)Y1y>(FWr57OfXdz)Vh(WOw_ z(z$zb21U)PzgKan)+UKWif#s)Q$mBHiYYUx+qL#Ebq zZ&OMW>qgyJ{k`X+7TyXM7@>V}Nr$AI5(j+m_LEMZ(i8aoH>=yTTmz+RoMQ*)yz9%K zY4DRPALg3*1$roy>w}Y}F`4Olb;;^97T%>V_kg%o<0g6E%5^I%m8)>6Q8Tfm;Dh=J ztlviSsVNqG9#PR+L{wOBY9#`49f>0I-iXW~~_kyTUzX`b@c zT>z`DLwzUOWopJy8)LEW2c=c15Eh#OxYhxVg;@)JWSDDo_Fxo!2t!C|z{na%t37^6L+%7USpd z^C_iP{*h`IWoj;PugRKk>mt?kkgRq)b23ypVWyzh-47U+rplN!Z>chnX;h?kX;Zao zbyY8@<5KBLs-UBP>n^6K%vph?O6eyX8HVQm=cd;bTA!J2{@{=Y#%B0(zYbDkpVc~j z((6`TVYgi>HWQt6wX`CwH+>80BzB&_I#jp(#R{6wWj%z)du>YSYo$=ps#hBxOzp>) zziwBKN0FwN6;b@U49Shh7~h@eM$7ZIp{m=hs%Zg1*M|FT_LTJ-I<#(@m1?yRmDCgy zr2XRQoh|PwFr>xboS@izPWJJ}CHD3mKJjj7V&G|DK-la|*;blUrdit~PB1vc<)6#oEeHR_qQsDOgF$QaLWdF8w=w|T`qIW*O(=-DLTbFh})R=x7d z2VEn5lMv~2s{TY>YXmVmw*vxN{#|N7ht*7+A6|EiC%LX;H}J5;k_Jv>8iBY^NX{2f zA2Rx=HM(ajz!;g5vr??Ih#+Pl=g=2aYB8m*pwFu;eJ3-&Lb<4XinNv0n0aFv!Nxl_WpGFsoe#^<>9)&Gk!qI|*CwNICAYN2hH2Z=ZBW*cYN zPLE2nru2`US3x5goeIvDwuX^#Y^zh5M#`1|hOepR%EvKgn#PD+|s(^ha6wf2# zOGdEDSd`j5KpeEoO^P-F+FD!`CA)4WTAWtYa2ygcB^_8TODD!o+z3=~X^eBsq}0}> zPUP**Cb<1xUl=?uQL3$5a;kKk?suI^w8(M>#&Eh=sY|PQ2TCh8{lBd3+!|m6dYC!w z-gmAO+n>}dtF_jqJdIkuVQj3KSIY_46q3Ci89xSd-i=x{3KHJ>h!P0t*!plWB|{9j zVV=X{TC5#(H}4atl}}Rf?Irj!^#ar=J7)lLK;m-k?wYMe)-+T8UAdh{tLLwjb_DQ8 zGnsorrI==@H)h#qP7~2fURi)_jPZ!VqwT>P$a;bX$0KnwwQ!CJ*bZ|#FxV-wuwrr~ zJik8a5Pdn`MQ%x?&4tHe47a5|rY=SdlxVo8f@y$A1DwpX^<{8(Q#aRes79=2V^#`C z)4A_68j(7wt+f%6-bSESQJt4KjJXubmi=T`dIYOvgPtbVvnWFBxyT>VC0{LBA98p< z62<=jg7q&!vt;bE-DLZ$OqEn|WD%Y>od(LvNXoA}aWk#IB<$GZGWr*FKx#^= z;I9y)p(&8-jGi+h<0Gb(1hzNYYPG7g=@4_I{GMc9mZ9ie%#I4Sh6g<2X5D7|Y`Cbb zm|o^)AQ6KVBa?zLw2=C-GUl@1W2A94)+OzkO)*n!W83CtrZ7QKlQt2Q(!qdjy)w_F zzSwEi@`@onv5#rfptUdxA#Gb>cQcV*n$oYONaK$3R4Z1eQ#9O$J7kkLemZt{Dcj-5 zB|*kWZKfN_Xq6ACPrxwNYSkWPV9W;i1{W0azLSzZCMVT%>LWXmord#0L!{})>o#G# zu0CdKh4o>F+H{G2Gm^u;(r9~`F-S6CoDsaQ7&>{Ib59|NA2HNioCAyr6~Nv}ST{Ss zt(CNTj(3im6+0f%PN1$AX#fsz2i(B6nbgNUgt-_n$9Y3#Mx`4aqoLgD!IFz=5~l#| zC9DtuI60Mq3;LTel`7d%zpR)oYMbEH+w3NK=T_lHpLrutorq7kkO5A^`^16(XJgxV ziOKag0FoprIrf!jQOV#<3v#S5rzQn(Bxy0h{+o7|HccXXz)A%}q#QI(UYDet%FpoK zO9mv4($_kGW2-+R16qoAsJVt0mHnl42`i786xE(!XiiS}+Er4E6fC2Ed1e$LYK#U3 z+4q|0Yg7qUQK>rQFg!r!8cZFBwj_8nt#@bvCXGPgu62C-PEki0E;r%=$uW>L<_fqP zoA!;!(}4my$i`07MK&0jwCa{A185pm@OCon0-%K~bG|*MP*)k3&~Q|Ob~_#9rFy=H zZD{nCg;sQ_TxnP1Pk;28JZWIIolc!}r(Do<#;1IYi7yYmJIY>5)W?)H0N?ffV(Yb9 zwNRSKC-vhl*=Qw`ji!czr(gxs8n?tj)B4Q$lXcz&%BZ|bj#NDR3J7o4#ZC9 zOX;*P>9xITrj@;4RW<|Y9~ho*uh`!7Tk4dqnx%VDy*rE%pJ54D`lWw6srj_hpc&Pi zaDC*jt6kQxYi%g#NBlx?M|qy&sR^wPtPpYU@jVsqNl)-fH?&ypp`14W`$IA4{37<9 zYr&UPh@#bnKP|&3EW~hk`*xmV!QDQU)ve76t%}sElzff>k?_}Aq0{=M64uF1lLD+& z$lsj*07-2=r$)=f_oZnc%3U(PvGNY^)~)Lnb-D%G+f}LO^y5#>XEdPHs>)OVlt{{7&sWuGV6MZ5D#fW{X~33Hf^M( zZwzoq8I=Ykoc{o6Iu%(4ea1MFG>Z*ujF~eSP~@Gz(pGf?&fVpt>1=LKc_l#Pp4j4D z6`%lmc3B`Z#7eA;Lu|c-c`LZ@v}pjwaokA+1u`}y?;(Jzll2&DIMNT=R<$aK$+$9y z)LU~jXCM>yF|w&#fxMckRdFLxm=K`tEDSM%GrUZIg2$fHhz-W_YGrGwROguKw%ITY zWusBJW!n*wFmc{1a7z>i0~vvD^5h&gbD3(^E|@%y@|uW1=e&|KqVT!-FeVw9wDTQG zdNRg4OqVP{10432T&QIFhI0cG25@)cSKEGOkN8Qs=V?RZkpW8vH2S4ba!TVcRe%;# zh*Bgjj?%hL>TtiTwa8q0Kqux(&Ml%yYz^e1WDsSbspX57Y59rjRgSe1Z0DulobC_i}K}_kC9VNDxI|dnZDX0Sal#>E##dwk~ z&UuuE3^9%6l=d0#0BmFC3UWYhAW_atg6F?5F02p$LhtvGafA##<5%C*GbHrMO+fyT zB$cw7Sd4w8Zhd=kB$SgzNZfqN_bsr@2{<}I9OepjWlsA>`hepCL3TM3Q7Txb$4=XO z&2*epq*a>@&SqUX8Sf^DF{yzk?=lS~S59(sB9tmssHitAa0I@P8y4JqO*XESmF_AJ zLU1A#Rc5DYY}TlCHhpK<`%Z9t@Gv8CS&NgqoX3HtZJa#hZzWEUKBxLrW4Of zK7}}3Za!fm6|22!nu*v9D930n!)XD&0qrI1A+^eKH{LdHP6UH(fd<*J0(4KPXNjT0 zw{7t<4UEx1<;JbxRZ&VVK4oN0bKG?^PNVMux!wx7wg7_$^7Mj6@(KilZef`gl~TNI zE6QW&)N}7FE};O%civS|6#A24?F}?hy0=}bTQ&zJT5EcCmFW4F%IY}v9L`^-7$Y+4 zYlfp!RWP~6Hyc2Uqai82e$ul{_uh4>x?TEe=u!r94m0sH*QBfTf;a9&5s0V*akMpU zfhSc77zZ+-FmVl9nvZtVDvG8EAYi z(gv!z!Hwya0fr9qJxYX;zjzw1aHY0^r&7AN%AXbBw|Q11?W8uynR%zsV{99$;OsQ3UQ_^#;Vs#?dgy zfu$SMxxg|xOHx%@RD#$_45>zmWmID()53#`FLAO($+szM7o07>_ z{{VrMFwYxy#F{nJRPsRs4UCxuUo(C;;zE|N1_p67AV%Qfu`(hsjg0n^2uRpwRipU1 z$LlR;(l8Ds#-z%XMbNs=GIp7nvU$XfS3QZ99r=kJFD1l`9Gt@3Ww$#@kw$+>J!+#) znQIMikhxqFD>}%O1C45=|^Z_Z!O`jaVR`)>WfU7;`O0!OINDGSvjt z*kAz+HYN4*oab+8Mx&f&0GhG93Do=jIK*n$*zqJOjBF*rDm23|%-oc8ka-gYJ!P@0 z0B<%c)zgJwPt48uE~||>T!1*S{ZY_mA>{RNxvj81856;yi8 zErz1UupF7I!gVUz_1dhyQDmk=7dX?nm-MR(o4%rJTPwRNGZj_jf;-M7T8?jOGp>rE z$YImgt$M*+kTr4)uJ32ZBn^zWrUn&Kp=}^AW4Fw?gWUBy zdUl=?yz})^453DYxnse{>CEuAmKQdLo7c@6uAz!IVcYkf%d6a4_=m+EK7}XIO{oQ{ z#fV&tZ;mG~#`lTTI;}fq{28MHEyTgcCV>UnL#BmLN>#`&@0JpsKM_aB?v_mbC?1APRL0jq{Et9^C1m zH12a1#m!WugnEij-kHag+KT$BkIioSvUeGks}V$icFd(!wGCM$p8U(M5veXX26U4q z498nk(2b;>f%cs{i_LbFtSMV16+!B%21_4p{{Zi4M?vyWS+^HB^0j*N?KJhvn@ZhU zx8#PJ6x#|%d8jZ~T?!XoPuf#OShk}qx^P$)+vX&27Yg6fbQZN$(g7Ji+EG(ht=l3n zLXt?%c7tdOl5jHuE1d1mY2N7FN{>kJ?b7*pxww5aokyug4u7=Zqb8t1%$-YsT|wPc zVMnwjLfs4Ms!I}2anH;&7q5_TF)doSMNlxKVJoeSU~S$RX)8%-XI>k;%-AY0z^d#N zfwZca&gVJ%$?cq&AO{}+oRA|dxytb(`;06CVPZCuoRAhL#xdR_ka8qjEZJGHJ7NQB zGF9E3vJT&9kN~@gF8NhB5GknK0%N6+*&XB^eS4hCMi(B?B*WGEL{2x7C2^c&$$3iD zix$Q=lSO5-$jnZs8i9_Eh9rZGd&E!i4hGniHGFNEayZk2#L9lCwN%a*co$U~h6fpw zT0=-Xf+cjrGLK)YJB&>>=AnFPEV%3>)}&iNE}Um3R_Yd^)3@t2+|e}Yt17bOZ;>&x z0tr0Esk$ixBfq?^vnU!wm1oih4{4BUcF8%EJ!~7?Nh6ZqXq*ssktK)E=>mA?9r=Jv zW=&Lt)J%gh<1hul89ws2CteQ{V||YhDoM%xASG5KekJKlu)tPtw3Q&JpTu0A(nwfm z3_&Bb0MHtL;x2u=$Uc<-6OowIl_y_5_>{V{Hp4J1tjZJx5~ctybzn&psY-gDI}t8M)lB(|oDAkcPQO_g3)(S;dfuE8x`z^U*p<|n0~q2?q1Fo~!yH9! zJs2^7S0Oo&^F3V1ll6V$3cTV#5*dLY9p&2|_{Q?JMJzHR15**64$vfOF*;D`9pYMN zRtVVllEQ}6{-~C)sQ4?4%oSS)5~qE+GGaQ<)Cc?nOdJe`%qZSe{{V)4A-0@~Ws7cd2J+@{k8&dj z(^8I062*WynVzi-;Q?HB(;W+{l)%8qCw->h;nifwP^9iLBU;3j9k4VEb~AmAdMis+B0xw{|5d3?TNG0dVbI^@SP+z;QFap|BW(IRj&f6f9fbFj}KRgYUG} zY^_n1DXyYU;Co867eET^4rZHF@|aZ)KpxXK;_>?1Z%@m)0-_Q@;EB|v!l^nyP!C~= z$*Xp>pH)n=u-h|Dz3Ni6HA@WVIGk@AYqqtcC}v}~Y-V%%wQ>)b5rG>nCPwPMeO*cd zjQ97H^**6ip-`;29>cuXN?MI-pP9H6P!%A6OL00?DXq03NU|};*qmE;s%sV?yB*2I z*L8BOQ9UOkV~=>TnA>YvZM{Z-tXt9n?ejJoxFDPYdt-@|Q>v_$aH~g7`|p{pC{w9! z^%AIO#&CNHoNHKbH8or#9D9j(Pq+Rc)JR_Y^E2AJnvAR$NcJ;DO0^J;Kni{16jvCi z;+Pv8iK^c5t?2~P6FafzGoMnZSJb~r;w$Rf^aUGYMA6lrjZ{^np)lKN82-~CWmQa7 zBT4l}S&_k2$G>?SnmUH1I1G21liFM9HmF!-s^@*S18G%O7$+c;w4$qEg(Ha!F+AW+ z&Ma=ATL%hGIo#$&$vd88>L62*xsXh--E%aZX$Ctlx!Nk>km)BU-d-p%8rJ|wighYf z3c&s3?GCk`nlnDreJXFD>h_kJsMzGKN?`Y#zo#s8{-FRP`KZBX8|0Ca^l2>5*!wTB4Rv0NVt>u`bIq2B^ue0H1lN zRP^a*E)Mx7VF-@S6G#}_e8P#r#&#V2Qp#YRj${+Qpvo5JfI6w2Mc?-1qLo$hR)Qe_FC=FZ zn^o&krpe~{gOc6P-b`J!1*8F{`u_l!9FMevPgAm1rlBgA7|v!8X|1?GfK*fUd`_L^ zN^NQjqa{yq#wRAT9a{~t%(xZ9HdODNN{g0K0Bnu+l1FAc@3fFmayL?Y$Q6w`j^eE~ zCZe3=?X>9Bt*qvt$?vqwYfb6xt*~aYRVm>>^9JKR;9++aoGl`Wr)Dg9Z)s)azm^m` zYGN{R+F8>m56>IBiUFzD-_jy9(YUKgLXA3o zd`t{#;z3w>CWC`^~o2_2>M*cJ+LjBOQLTH*Z^i;i-ez&ymMZb7CO+F;Al zbIv9ra>sFcd25UGwuQsGwFQat1pYXjKDFpr0UvnM<=F z-E}X#$Yt4mL66SxMXPehKu`e52WXIjcNv9LDKM@=i-0kfaKp>0^cf>iYxu}g- zb>9)wq>Md@@0m?NDmY+sE*V@YT!Zt(08j`>VjSah>?5p!sD@FTY#WIe(N3rQQ<-A6 zM&M(yh%?*P^4k@ait)6%lCPG}=*Zi1xRx4pswSF?p8FhsXg| zgewq18QAxhho)+AwB@y2HZmvYNB^lc}z&r87)DHdO-@jwN=qmZd_d zRJj`~oC#~uG@nD$)K0{P$Oqa5qW03E9$)al7{()OVR5*s5f3CzZCY(lP%D9*h9k9l zz~Y{AHxkG%>LDzyLt9pD1#qqNIqJ;VEaiaCGID2Do!z}qY2Q*%qh)?HkA1nAYTAUT z%|f85NS{l4&Y1;jNjsd&X)xAHcNmcr+pykE=&+-#>_L)*PAYnK6F|XD^ZHDwnv0RM zO=`xAAYq(|ixw;L+0f}$Y!1R^b}9%uf#Y#H?{+8*qTn5l-KQSqjY_Ql0Lo6nIQ?q! zR5g%F&31JeaN?m-4$61T&rD>6JWU5-g&fV+E1`c;FI6k0u%PNRwhz_wF|&}M7QxT7 z*F)D#DjmS}2?nD;`kC~e!`#ecILf)Kj5TUG+i6urC;~E&!@tDbl-h+ssQ@jy;#pSC z=K6!yq!pT&$pnG4PpIZFB{r2)T((COp>t<>Yi&-YOI)MvuUCI*lA9{zXvf6pu{EMx zvE_!I-S8igg3OB=d>rI%OI`-l_g3zf$DzCoWeLT))db zG{OU!JG*L>s4KFB2a*pnt$gZ11w#7~IVQ3#LYFRGaqlt4?N=7(No*n8?ITT{cFxk; z$~@|YPp3YSD%FPEWKQ|%n_U|O6$#A5fr*NUnsn(GWA*GYDQenjR4St-am05n&NUo!yu!{M%4167-bu#juAYTCCoD&K z3b=O3?ZmX88@A)Ls-aPgb~ADWSn1s3;!}aE>XWQ|&r#$`JhD!pa3@GFr&KF_AmiR$ zQtZ^gRZw`^S8Yrd0I>a~H!KZ8tH?ZojiUzoWYcA4d}p}+(@NBTU}8~Fiq2W8l_2gu zVmNmLUQT2Mwbg4{%TUuK1IXs#Z+29K{{J*^G#I!YzUh3+VD|&3s=X`b(qt-foPMvXzRTipg$@f$3C@B@MNvTkM3a2^m znE<5@l5)e7GgHQ~RYA@&z;~S_pc>oH$io~0PX7RDn$9zkl38=aK}kXh_dn7%K30VT zEY1cy7&=wd>g%Hnz%Rtfh+a|&Qr(H!g5>*T9pStBPN|icBMrCR-RY1naxst!Ds;8)_ zC!9`_Lm5|+ARMb?89HjN_yuIeV#Z@pa86}4lqzQ%o+Y%0vBbX3DA&KG zZ(ml1ILP;u#wATk`bi--J4lCMIp%tbb{6z3Z>aB0*^gn@<|&qsf8NtFR~XK)y|dBsX( z(kcf#O;<{UQcaga%yRz#WX9@L^{7z56Sl8m56rDfOG#K%(U4n=naQtnQAR1g2NONL zMyB~vM9)fNx)_0m0x$(bjTpxH6PnkV8n8j)ZM3}=uPRXt5ej8C;P;a7u@i8>s-L8s zN}7oCPS_IWxuaFV93N7TY;1qLjb~yDQ+1|(Mr4!NhmvZa%hS{9=Od4qz^ta5wK7J> zA9=q1=H{LUn7KT%_ngv6=6X2#iy(m{j6yZs%``$?O^S^F0Hmpa0yR6}@g@~-shcNx zrqPg93gbS*-cW>NX=2mVKvC*EOk0fOr)x@zQ>&Vqa&j@)`%2evLpE{2l&Gstpr=}y z)SR05I-Z7O!e>Um5k?4{GW5;k^L?nBjP(tZ@3hd*2G|A%9%O;NMdEJ}&JTBBC% zNNlaGL26U0H6AT$ucBgyh*4^9Y7&I`=vE{dvEytBU`h zZ+IVzD%dwr0_i3lh(CUV<5>At-WHqasSy`?BmShElft}`b-1nD2K~3*N`=cYG|%yY zv=IvfY657SGr|u4ugl@>0dS#RLKicd-P224j@XXg*Yms8E_qB%iM|Xvb zh<3V+eInmnwAiL{+=qO4;Yp^-B1H8lvwE=sB1KCobl~sDGO)I=oQ=-wSQ3x({!=UI zYSYA->XR&c6^gcFEiwRr;!ym7EwhOa4W(()3lPp7(9Fk|GU@ZK#vBCb#k9gMg0pdP z%2+SC@D5tDdwrWs|Dg(tlzJ1fPdwPsnn0Zm%FQ^{?3x!CxCy{Q7Le5-<(d6)8 z9vDBih(PY@Rm{|FFlb>1^e#ARAQ`_L1C0)(If|12GV1Yii;w;|h#IMmpBHZUhe~|2 zhJxd9-O4=(H6PO>^XO{e+@D?+a2fu6pIAS}s-`ltK7I;p48SbT%e+VXF(}@6+)Wn!`8t!GbsZiRneW{7)zkjo&60q{**TknRbDGHD5@CQJH=1ma z<;nYCi60g=r z&uwSU>sNsgPVat_Y*8UK->w}K=b1PEd;*mm?L@sbYJ5GJ;A6aJ)~&~C$7>3vc@-FN zR$N?_2{H1>}TG%=zTY++gXN{ ze^PD#wQx7Xsr zeBILZms4m&y?KT?c_ETJ@Xvf~#vio8IU)Q7heh4|{$)bV$g`)zbaI#bGq=riU>~80NKOWB@0fqoOcAz`as*GtAU(Srrim zxxQg!G+N|P^c8=WBKAsWm4T%g@&sMXVIRt$JK3JnwS~FpDf&}0 zFLZ3vR6J97U%6i(I8yQ`Fn|%l&5>2+JW$d;TvMVwE|T8DQC3sSaGtZMy_NHbVD2nJ zYM@WR_%eXXvR~QH#u;ceyC;T?gk$M?`IyYO)s<~&;s7VnBRP zab^)2L5Z%1K|fzub@2RMtM1%_&SCaUOGV8IF)TC}g%6pErYv%~5?GdpKcg}~d|DY> zl~PK?52bwVnbGa{2~&c8?X`biG1Re#n>X z5~C?q*Z%2(e)Gk&<@nMo|9}FgT>D<0^=i|O+HH$ELjAZSTgjUxmBP#1R^Gh?BIneH zNnx4%v3yE~8_>tCKO?8Tz?P+5lnVFG)48xq=xOght5I^mauF7enCGpfb`GiK11hWh z`B^q_0?iTo*$PrAE) zmYYK={b1Bjg0>H8#gCVby)8qYgtoA_%z>wPCFQBlfI4XK=HXOSi)I0Wz{-?2 zjSAjk1**5chMd9_n(LLoYQB7D;wqV?ElZ>>g$fNN!-PCSy`&|uT}M%5E9`}i>m9ny4MoEqI zo7{+19)0#GAR?N$2x?Qt?-u^^5|tK{5}EGTGxN$^ulvYOVxfifPnS`WKRqezIxzMw z`&>6}oNUyHkB&T)Xsp#mEw|F+(P8&JpJr^dw8n`d8L^C zTB_51#2$V3r}{L6D96hXb%mj<;D0^f=eGJhAtUxWlY6ui(19$Z(11@ z8Q6yiC$~6F?LGq*OjK*t*Pj(f9U9 za^SJ=^^pBUL`R1&FvDMqzfu$*gX%?osFK5x~_psjM;fCj!o9qfHvR8xi_IvNo9+@64E!Vbk@h5e= zsqD&6?POY3tFn`8-2(~V{Z3apKn|-Kp;pP_YK*&r;f@PLbVyu1?L}@^H_D<*|Bj{U zat7-1f4urUe5pOg<;_nM6P}dI9ny2JFsfk5mN15_du-!an(Ci^1znrF_Y?oMqE4Fl zdbe*$jOVlJTX?`+1KS>Q8%YU=N>ne(n)-I;h{OK4nhsBdIQv*xHF2+?e!rpq_O3h)G!IslpC3 z{mfkzZ^-mW?bDjLI1*^f2v?ccT62*zZvFO1b@b^QFSXS9H>4O{UiV=6GT3d9t-H|N zH9Z7|Mv{l9ef}Td!|@?~x=vmSzVTzO#M)a~f^|zo0+4R8!jd|uZWrKIU~WPb>c-u% zg5Euitom{5DKIS4)~h~bZdRC%`9T7q|1g}d)hJ2*C-=UH!hLan*`!Vv`@FC{mr$>U`Yl&Ubd?P)Ks!49SYG}iT7j!PosTv~ zHj<6)s%n}Y_10UL-#qywcX|B<@|j?^Sik#)>4(l2j%bCsuK50Tfd!rjA7o2w_aijN zUhMW&)73cgZa_rtuJuVdk8kxK=1cP@Y9sdN!P5}Xm9NBaZPM4;-bwA0K1T~42mK_& z9W$J(xY7xNo121+EEU$`)XgOp)I>i?gAi&L(tDv5mVxz$hniH+YjJrQmeJZT;<$&0 z!ozTqvq7MK?bkyva-}H5t3+&KF|<^%uCy zd3*LF7%_CYSRA2jZe1F&Bz`>v3$n&*S@rzuv#@+hfHVpa-PAa)b#)N-!SSB8eiciR zq@#}Gof;eKA(tNW*9U>EbP;$M;~{k);#Lv&jjATxEW7QmxIjDR@b*FP?u`Mu+qOOk zk}4Av6SgD1ud($Dl*>5n`RHFD&24rwJY2t(9<-h+s#B>#6BxZ|e{v&Mov7BzArS)i z)5-rf&&4*J-tzCaT@aOgz=EF)SBZ5Dhgb2xP#=fYIZNn5s&A1LT$6)$5oA_xe0$eT zya!Q`hNwrXd9nA)RmWhy=e@A>tS(*jkECex;D2(PHOB#B%}&{zdi7cQ=i_Z}U-+Q{ zZZhO~?(q^HJif2IOrz>lW+!@L z_}Iz5zSp?cJ1(wsVuG(>l;#sLuK=V}Yaxd+Gh?piJ-#$LNkc|G8kz5?n(9!?@GvC6 zx;}?&6RPt|K9&y0lI9FJ4hPA;NYS*ix;=0|% z1?vkv{rS|JYDASia^B{1%*7nxZJt?nt9qksy%rylmv3Sz+N+uX;hX}ex?AY$DIMH? znZ@tdK#%_H;>$NWbxUuXr@sG9V2jfZ8bl1+rr)_ zhWDa>dw8vokjR`T)kgbCEgjtZIq2dOTH;xo4!U7LD>$uc@WlidIJrtpB!q)&fxV0m-|Aa8u%O?5^E?tcI&yd+_D zrB#y&pphJt_D0O-lWePfezZ4l=!|^yr@iNe#9XwXIrduvv;PikrwhTV^QD(3Cgb}_ zQ^6#-qE!|!T!Ej?V#*v_eYxi#`P>GjD961K1nhM(&7%wb?e5Qytsv+WROV9G-`su+ zvBuEdaL~eTWYnlJ%>C1vy$E<)3a&A;t`p%^}%=KHVFlkISz9)Jk$+R*|o;MgR za;@V!BN^jZ;fJV%>iKr4H;jr(kT_ka)MFXf9BfhiwqGWrIhxyoWi0w;!&e!tCAk@= z#8~Wp)Z6i1hv)BBbme!mtbioeEG=QRF=cuQ>k0h7}3E171jMmRqEH}|?>`2`T69N5Y#K3iAeUN_*Jxmd)e0an zI6C*-ev`#W#QkeI*N*t>Q*vdlY{;lNuNKVZoj~2A%R~{ea5j^m1GU* z(U1(OgUK~hG9`wiwpaNuB>ROpW$X+vbmv>xM8Wm9li-T;RnCT%JsBIx@GRs@70PWo zNFdM!g7f`ySnI+U01?XMPkHiS2!F&{k%$*g0)rZgrm=^Fz>sUJ;098aOXd`yarv#zqP6c;V#< zoHly|?KK}}M-ULHy(|D+%?_XA{Oq+3lY{!h;rfTpzvlI+sof_5h1v|7|NQW9sos%+ z#5^HUR`EfV?$b)+96*xHxsy(jZ0xRP;a$ZBj(jcjT1KtnfU0t&Fcax<@!H+=&Xp|hYqpLEH53v-gPsRsx8 zKpx_JfY~DSWedl3+Y`pu^swoIN5Q24ZQyY*w82z^dUvSi;L2NoCg?PKmX(kb@Eix5^3b5Zi_oY4T z-5Fk4Lu%2Vhv^^2Rc4PWWvFrsuR7T#e2o=0`lurOl8SDajnCbcWHlIYG@Pg4O1xX@ zRy5EKddOJ)wkH8pII$cRB%_Tk=8ksU_VU*^p_@-XY#Kmw@hg}8US#A1Z-w@${IL_3!suZGI{mytVJ>t zVzMh3i%NQX0#VYqbS?h;@eqOp;FCld(sn^g)=41gB1QVJasQf&FJ>_ko>-4 zp!0d_2G%Bac~8MF%$Z`NSag&NoeP;$EePaAZ2bTsKv1AEcfq@>*jTYgcD3enA``Ct zhB+x=S#$wSg2t(&Lt5L2(UPJmo?J!YNx{aS;aY+9RYJe-_z_;(1)np}bT0#yskidR1&{rqsypJT%n7BgxQ+eDG7JJ_S(8u=_L3!wUBwn%1b`JgpMnRmY~ z#`*qsvR_f#aR|Rc;L8vWoo@FX%1ATu{0r>c$|eC?UH7zrV^N=$u>C&~Ar{uVJ`29l zh8=97!4ZDB(3jBKn*PkD65O`GDb5mCVRwHl>D%t2Qack2U-`0$Tk&3jY){5#81ChY zwXy&LL}CU38FKsoGAg}QKaLS7U3(=`j6KkHh;`+_>Mti)t7<(wmUP-JYTaq2W@mN%nvM)m|DE-}la?T02cn5?# zcRTyK7w5HNi%NR_#qUDxtdUL3*(q$It!i)|520gIrRVx?&1O#aA(pJc5$4Xyg>bzQ z06&aH-TnL{w8oi^_}Q-UN$$W5(Or);c6o=yll`HOqrtSnc;O98h2b&!V43h>a9HI0bgBK zy7;B%bB_4(@O{w+gyi0}vH^YP7^}2Tw@a*DfqaL!x^az@?IMcvZ{rM=d$Z~27oUXV zr^CL9QjIReD`%s$3Oze^Lg-*b2rd520H&R^z9fg#`G{Jjun*9f%z%3%t=SV=)go`) zy~00y<=>bO##Zkg)jzhOjL2Hs6<&*+o?lv7-utXem8LZr2OzxuAK-9u9`HXvyehWmjpxq$? zQh&UJ>x13gsYWUa7ebV|zt>!|sLw$4w}(*WA0mIsboeStmc~6H)7;L~+qJCG=>-g) zefv300^05kO?WN%o?P4@4i%<(``5p%sa$67Y)iHwjgD&RTCl_)hi8c5nqL*f&X$T7 zQ#8S&Yb1tk;PcKh$b*W~gdr=JZe|zFyE$8j(;qFhQ@nv<6{J1TQi>Hj&DS-gS$MsLE7Sr9M834wcd z`0B1!Nqon#M4R?g60GAV;v&wem1*GYMySHFCJxn&m;l`A<)oXRPtO@G4!2N(l_!e^ zMr(UN#9OuB9MDJHQylG|+T$;=nE5R>g!9g=K`(p(W+o&0=0f?p2Z)1InzWQtrY&(a z^37qjM;ISVY4d+Vw#>)RiiTcJncMSwzb(0V^E2Fo{j01j(9Z1dKvwYCx}ScSIPmff z@@Ke}*b%`w7AtBhu4d*|HS(#5&rqovF6f@P3yyY3F*3I2>}F$~kW#j6IBV${0V(Q- zf<9yd>pQ%?)Hk9cr|z-ij2{G5yP(qNOgv?-ZxGf@HzL&YM0Pa4$lHad@?|_7B!6`+ z;t^9p+CGjJW-raA3drv7JHD4cc|k*?dgI2k_$v3aagCv9KiK}6#H15>Wl`!Er5vmO zZhrXx%&zqb*588JfZw_$#XyejKFB@N--+HdL^g_~chdY1V4F;Y?%udnfvxMkpwvOR zPFin9?cfVO4l5NU;LLYmS@RpQS0&+iX>Cr$A3;B&?fwq#D_QQfLk;hRF4)+|QWYjz zQ=E{ym2gLQ|JTkhQ?l+-!-=wH_&&H#LT&h2HdkA>@9c+=he=H9#!%c;KbgVK+5RF5B#EC|JKz+P1+`;y2PR_dZI*GMhKL$!xV0VZ24n=Y-P zMcpyy;T^4#4HY38H(U6c56J56PKSj50VIUQ_lLJSYW>u#lcm8(3hP7xaA3duC;M+J zvjQKx4BDM0J5DLiisP#ttx-Iwt|#bp5Nhpu$|v}f`ed<>lw}8nnU(X;Qi2_p`HA!a ztL5ol8+0_+#IU}(ue!|cgS>l;|FZ+>R*PTW($Cnj0PNWI%W5Az$vr)uW#YaxdgJ6W z_fZi%)qqBG$26i|p|-qL*R&~jw(pG?VIdE0&LNpFBYanyL=hOnR0osslEuoskx~4B zRu0{<^^-kQhpV=BDN5o?{u)k?kFWc-H+yT{i;iwqDC8K?wqX917M8zq_VL3&$SZ{Y z>fY2`%R<>@I>oAM#}}7S4YUzBh6^kg|AfTFZ3QKtqLAPcEf2~&NfCN9sO`e~M{%Kd z`x{S)9-@W#~N2nU~>uC^1&xQckJmso47 z{k;irlIREbs!&+8gA%gpY>BPXwcP#o7-k=4jrI?@&rIdTv-_lV&p1XBMyK;DBNV8E zZj*p*#LL-b`>vYW7t9FAzohe~qG8595##4r(3-SNlk3Q{$CJO$P4yz_@lcd(-G})# zyV^vaKIa<82S@Q76pdrB8IW0P^GxU2-AKrCd^G{8oqG!C;9j>K+1MT3>)OR})VxD? zH5&3ZjJ>u~>N3>NT{VZYlDe`cHl$#ct=8PN09O^Uuy|9IN!F0*Zq!^jrezz^J#y*i@ zg!Yu?xzT$_Tj@OXhn~`!D||QaLW@2QFyR`|vgpY%yL-7G)%`8^DNTdRA3v#?>aW-TePI(in(spNEqeQ}SVz#g;$yDE zXdBc*XBTR4EYE?CM&)W+Q)p|bUcSpM{vPz-(|@hKN^8L@ulSY8b*s=#qdglZ#oZno zyOWm@&$IE;`?>^2oR!fTPtw50*_P{0uX4pX&yz+9^6+y5?;&w86Xn5@4epth^`;x; zp~gys+Fx9~A;%+GbJbk?lZ|ly*ny?ZEYj6%X)4Zz(L_zY^5!VTj|R6*$H!5QdH&9q zi6CuTr{V6m@UGvI=WajGiVh@^-k5Wa;&OVb4$)j_wwt}LVPma-soc;39IkRJ6H%gp?fCmCD-(KcdBT2NC=Ps|WwpTS*49^aIKQ2Ekj6%W5T&u$89Bwv1cS6$FM zizgmbF}_KXb-^jc*Ct!BXfhRQFWPo%bCtXeivf65v^wHQKIy?fDx_*)-|Q=dAfw~H zJl;t$25g&pmeV_^7}ZBD#B{PJtw*`G?d{)%$iFObh@9jYf{4Daol`1~C6Yj4rpX}y zURf^T4cH*@lr$IoOtdPBG}Q#QN#mlI+_4K0{v~@pmFbz)qMC`B$Jg5m2>*L==3)w{ zLVtbj97mwkJBl>QF%LUS1xBoUNE~@~y9;2?4yeEG6@mU|+me2Ei&&FjK;ayTIk(aI zvsyTB4JtiOZBksA1sA4Nl%pakJSAj}~3Ql`D zQO^y5$GdO=MJ}G-N6E{y^l3X(9l0A8B?(F6qhj9p`8{v!fU|LK@a#Ac9PQ)9cwX>= zyzJEuOj3q<)du2Ihh|dF(w{c69*q`nY3#V4Ihfl<9imJP-Kn^nRI|@o56!DF@clfH zHHyS*{RN`mQven6i#9|umFJp$N7Cd?_JQR^nFMc4IQ!^R&4X9v6Q`+js zLrvRJ^(hYRANn_I@12~4(_zTiIN?1l&9=18Dm+K#hbQ%8qes-4HqKmRMP$-daRp@m z1<8jif(kqzXya0E|LbD3*o1*K$AF^%=$Lrs1N#b|SRX68p|^7$AI5M`@)S;8^ly+J zB$RZ6;+!)r*9x2v_`Ja}PLAMHAJh}ANcY~lG+M~7Jpf#Y*9lcWP&JI^y0yYA&*j(C z<;(=-B#mGNAOJiEfP1aT1oD$37RzpW4l-@NJD$%KEdADd$XS9FU&ujPzzMnt4^%-XaO+@sM|c}di~(bx|@=eqHX z@@x4XZ5p-hZ72C!%tJ7~UB0Tbe6R^~SHR5Q{R6xMlVrxlP~tmT=)S9FIFUDpdM{}c z1((7PZ{c`@q+AD^tA9H$e6ca4Q#v4NRf0Q(U4$A|0{Yxjwe&Z{H~`Vl3Z(5n1{Hzw zv&^U|VQoRf^b%Q+ZL@-R)TOQtgkK`$&Q0(;+VU|1Wr+!JiZ?)^KXQsbq=xFI` z7@?KjAurVmdSRdL(n3oYzRXv^vs;?LcQu6~VP4}2X50BkM|Zgo^11M5G}N{dq|fxf znf3;uq}YJJprYFe>1KGycTBnQruP_9XOm@gJ`d_AfNb6lokz&*k|gPs8!4W_Jz)Iv z8=dkwsyDd@8q+oIQkL>0%;bd5_OFFr%dDsQn8vSsQa83k0ZDitq7!K1U+6MuEqeQY ztM9|@8nr(I61ohS)>C8MUJ`xydTYx-G3&i=#Vy@%D0 z^f&pqk0&W-J8_U)Mr{2*%eTU|WUpE!+Yo7pcTde+q%!T!J*vj|_!=(m&Y!3+EB))+ z-s|xaovOxD9Mn#+9bTAZ>C;4&n~rk7Q#*v8=(?W7*{>H&Sw;`#dldHChp@Jkx9XSy zM(-`3-wgv3jlzBWjE|=DP&nG)6fXg}kO$sIHTnr^kF)C|Yc#9XD!Ly?l5d>GNL$9q zT}{Zuo2TzRcqVP^IX=aBEc_Chv!|gm-iL7J9wOIG;kyH!qfylv5|0|SkY`J=c_qTl z#i*B*xZ+mROd`z)%b+WpeBE8a^7~0`DQrwGh$Gh&KzLjoD7A<}QJAfJ6T@R?rayNT znaY@4T$W;FH(GSpT>Z^l95<5%$?$-O3uc8-41dgXQjEfsf0oCpp#y0M(yv{9GaZ>E zGrfLAgFz0-=>8sSAEsTHKsz+8JDBQ^nVG~zG%~F*B2gejTi*N!y$97#c9PiW`e^vK zlE=jNTVlm8IY%2+pi5)^ag&D_q;7VWTtVZCr!^583S1oEF$V&e{u4G~ z`={7_7ih)plDE#iOyBZBLLGsjr?MEnboJIR_l+C}N4XpA;YPnnmm-1p%jnbh?smAv z7>yn^qcVcp!m>lj0@_I}O9x7i_M9eXRf3%r9&rCZ=PtnLMXWvIJT-YEF&`jehyl3s z?Yv|QWOC1rPG@E9;dqHHN^=j%3drYtpaf*cUPz(xy*SB@woUG-d-51MX}OX$i9Ta0 z4{lnTkQ<~=Nr6)fw#^wK!m}wG$f`|sitb_>vSaAl1Nf)pAq>pEAX>rgm!|IsZ`^6e zgn`)a2Z>fw&UaU-7CI#FQBq({8d`<*+cE+xH?^Oa;(MF-#fBjkavibv09giH8C-Nv zj@&t3BpGQY4a5e)2Dnl5oly*9w2#5d4vCzax={ZWJO znd3%K%a>0vK`Gnh0G7bv3=yS20X>}qSZxZRgkkfBDht=Bf3@nzgm0zZj0MoQzak)U zKQJ|XHCRu7!{)sQVXJ0qouvW9Cm3&wypOs*zqG=-S>@0Xx*xvKKv?rlL$G9 zv9e+cBG0QSwB3xy7}ex#6o_fTh}hd%D?EBQQY(?N;m)u|d=sXQ%|_%r&s!}_mPYTn zkcGUEE+-}{*AOK{;>aY!m4El6@Ibd|CZpmLUrn<2OTPTw&cmr*TCW5N|PnEkle zJUgil^%%{yT@>0P)b)*K^Xv*tOi;+m3aP+pQ{EzEffDx zo4B*~(0Z)Extv4czv!*p+{E=-y{wN!SUcABLRDF$169}<8`Ik&$H|SI56QK5^08Ab z^-0XJfZ-#L!NB(Fx8Wg5l+Fh&7$%azjP+g7D2b)-en@TqdSK~h-R6YU6sToB66lEq zvYDAZEBna!SU2_f(omIhK-Yr+n%9K@&ecIn8DB!RS}g=&#EDJ(GprGJeyo@`(Y~+) z9~3K(5*#p4S#^L{->*pGyq}mY>=7H8?ByTmuEoZ*36Sq|AHx;74}l-i(k}T4{X1Tv zv2B*kuR1C^AFN4YQ+nmwPyQ}19tsC%4DGHu#E=PD*S9gVV0kv;hil$3tr$a%-1d`r zVm4S}wS=hjRWhaoPr2rgF|?{0MuIam)QVM3O)?fO@+FpIvLcL<3PvKWx@|v@2!%J! zg(3WA29;r$VO>bzz~+>6>uf`Mit|1>2dpsU2eVt^5!v86thdtig?cmp?XfyaTxytd zgO2t*Muj`EO+S12^`{iAwp@LN;Qh?_vqB=?>Xp2WrNC5-oZK7*ki&KlN1z;HGs@Pd zWL>o`(od!!e`tSaW5ToG z?`ACq;o<}kYRH*e3Jky)u1by>t@C_rmmPoQKJv1>tmd8A^Oo6n3_E)+ZJ~Mfy47xM z^inwc=XKr_!)cXLeY2tlQr*l8x=+fDo~xU(uROS)x2mT-XGA$JzvX!)dMrIo#}%9J zf&mA_$leRD@NUth@I92ON2!8KY5&D5V6_KEuZ(o6D!8OljB+VAgQV%C;_yEOxN=!e zj%$N}Jn<|0k072Zy73%Be17d1zX}y_5Ni#mI|D^yAv68 z^jN4dhFqu48@z|oo{|7c=AKw?)r0%mPUpZ`h4aZB{>qGwAJi2;f%JoG&XI;bYV=+d z1XpA|exuC`b1)G)wayoPyM?}QDau3-9r`we@0Qu zFvjA5SX}>U8&l3WY)_zCP^Gha2mBK%IE1Rm4h_?%*{4raj z7!f8SW?e$cF_YQG7zj>lvLU_aO$%8#yJ0_@&hxJM>Fq<=2XT|f~sICWW zg|RV_V~itpXSuNY;A%Su{V<`h{ixdHT|Zn+VFDIm(r=DA9x2Kge7$*XuD3RosYCel z7kAA0Q>YY6OViT^U*J>UjIhDB@~KNXJG)&Og-D(dlf6I0(V)SfcUD{VEI5{O9kcvB zLUNKZL0=HV->NT0H%)~>5~@4v&n!_5#ximT^jT4L0&ihnvpVU(8j)!pi3F}uPj8h2 z1&69iPjP=QZBwxBTEK(sf)G$Rw{%avM6(h#;9OR?bDTmo3u$hEuHKh}A?{TR`I9tTKq(Y#i7k1kDeqY+Nh zoE-O_+-afG5>he?74FGpt{i7Y?WlaPVg@BO2@R*Y9ux?skU&1Jq+}M0d@f+8C!YjZ z_?mO-Tp( z1&>zi_7yJBEk^$QX+JAd1uW`@nb-5czzROIptY*VZCIy=`!fo<3KwAG=vTq|3Aeb{ z338PO!|rYY7!&iJrB5zRX|5iE`#dblz(>Cw5T$xWu_@y_jPJJfs~7VZ6(v(01{%x8 zainVHy8)LXKek4?@7$_m1jm1qOua=No3;YTyWYdE0wgOj-rgd&aSrCpR;GGtZ~hjh z_9iztU|%fy4tydAm-nq@{_Lr#uOZ8}c=x-ur|PIvVMO6^<$aSG{o1O*G{KjOE!JT6 zxPDCZMps8*)TnC^R*BTf$Ci(giu2}{D7wrxK{I0a(>w#*Sw_QZQQ1xl)8|JF`)9cc z^qt(X@LrvkL~%x;R$e3USkQr#Z#+U4BHGFsD@50(t#UOXB(G$41ULWdyrVt=b}hhe zus||0Hi`}(oqj=RkrjIclfp#G@i4Fh<<7RLi)>e*_RhmupOx zf(t)=x~k^95$>cAF`ea4hUxrixO8pukE6szTJk%8!;>8`3$mJtE7Rb6Q@V9K!Yqvt zJtl(w(s+Rn8#1_|ZklNrkw}rcWnTMSF13?Fjz{YvL3>Vw)>&IBWxpVxEO1DY>wkd% z#Hb0I4?L@e$@Y~B?ew_ROTt<3hgnbSVv%+>_!P1gPmAG{8m@SI4Ll7U`pq^eFINM`8cHW@uuK&Id`Hn^iL_!E(#SI|1z* zl&v(|O>Y=y7QH3yV0+5I_NHdqUJsNGugFX>u3JU&hJs`Ac>ez|qQ}Jh5+WFtvXd0l zeGzUw5GQU_U$dU?vVE5byr*qPC@C}&h9x63sg{}?4~oM+`CcdI3@#SNkS5!v(zS{# zfcaD;bOaFsFv-T^5O@J>#{w5XbtXV0rPRCW*5wLh-}I#Dkhels}lJb z6HKBb^|3L|jkvTf_&mEzRjS0|M&uP|y#|kgimLFso)jMa3lY`jmYK-b@704e`q8pW zsk8#}S*oW4;GON>S5lA)RoM4P3yM79rzyM={vCecrx8JN${}1f6bn+fAQKh|a`A$ywBBLs8>%TnXOp ze*jfW$QHCStF7*3*1ln%zTCl~Jl+l-m;)=34=VEhBmV5gGT00Mr?13FyE8|6(YOO5 z6fa}OuO%L3!q`yYdGuXZ2{Y8*67PLVEz(v#K}rJHy;U}>_^!Nz;Y;%nnM0facl1%b8;n+1^X zRdN7!Lo5$1sA>2BCSQ|Vrf+=S-lWvXQ1ka(WOKGN(s zD>;d1Wux{*R+~B)wGdHTt+0!yP|?U#wgR^zYvQE&R1dNr*Xps{=zw)X;aBsMYg171e|My&;qW0SElw zs_<#KzGq@2^Rqe{_B&|R=^|o;z8Qy0Ki0NmluR+O|?!3M~p?Gfynj?T$g`GL#kE89inUK%rL$#1oq#4E**pyz1mjDZh$mDZg;ua z5j#6PXdtY&^B6_xniPp+JmmXu5@F& zDttN6swf;~vj1!ip^D%p_LHSS8>@YTI3hjGEe9^ht#ptegMfB;RiQFF5h_+Th{NQH z&)+d&J!QC_qO$jv9k1VyBdzwz{`Z=4KZWtG!Ojba|8itiDTc>*U8u78KF`C~LUFh7 z*H7WdCxyOUIgQvgEj6BMQ%=%5IYYU2yDHCXCeXIP9{2zkv+*5?pG2u@nZ2!SKwCxh zr8cVMCE;t#%{a3pNNIRG59AVEPZXv@axF_vrcT?j0mt>I{#mV@^*DBD-DVr;Yjd7J z1Tt=1|Ki|GKm@28|u&e#_>A#EGpxXRDhPR_AtDp#X+;AhFd=NMQiN&?;O>qFWh zs6gt0ZL1xCrfJKfwVs~+n^Jj1C0o5iPRG=58dM#IrDDV+8{f%>J?wj7{dvWxt?Q zRS#qJ*g#@ejSbIb9tzkYyaKT1(k3jje zyxuJv9&c&ZzTomT%&%i}hOoZ`BYL6Z{?1ij$?3iT7L-Q)vic#ltJzg{%Zw%6-Brrj z^kQaMTdU5=!%p9}fZ>r>T9SqbNt)UYZ;@tSK?)1ex>|pfb0F2Z6nqAzUySA5G>n1Y zdEv#LLDa4ZvIF|3lb1Pecl9h*(kqjUEyaormsRruW7-;~Op7*EpUxTDD8kw*h@)d{ zbR$b2S738O9ypUEzb{=%xw+R}HpcHQb83ojajuZ6g;qLd{4!tsi4T#ixfKU;Ht3@{K?-eY-){Ee7L+JX6=Mlp_DM$aC>C6RYTv%d*=&p zvn1>h?b&bzCEw?8GtZm|;uYb@&!t>zTMgZeK>)n@!ms7BLT)f=tJ-L;h z2CmIl%$NRPTSYs>sY#i{PYot$1^!$i7Wpy2fBcjSmxyUejiGC$1%; z85RC}QZ&(}RQ3-1MAR1pYgAP;cVRIbalrqbz_kyT*T!49^@R~$wu-peMwqQl_Qd(f zic_c-F0od(8Ga*ylhYX#-j7v6ASWfVg z%Hxly4R_d_=XJkDtpRoY{u9fZ+JQv83i0(f*`7m#8t0pX9#!5)n#2zj^ivboe|RH< zE6FHC$irkiA{xjB9!1*;$I6S+?FHtBN)_MP2K}jEj|fo|{vQA+J9ve4gVT4NX+EB+ z?2?fYu*dV2@+B1>9TF`e(w}*KM&%DAnD*a$itG+#z;|8FgQ96}FI~ zW)|#ZUDzPORm*^eLf(vCGHzgVZG=}X^2;(E6yPjLZLKj4{asU<=0vG&uPjr`MPHHL6?%M+$I$+}7YIurr7HWM6SKlI(l)s#SFBklVUrr}U_Y zjdo#^sF$t8sFqyb%zV%5fmPk?cqQ=$2e@s0h_inXW+qnDgwgrR$iU7A!m#y@{rsY6 zN2?*2;Z7M)Kk$t^AEVuKF}J8cBepYQVimC{uBWwb!)+Pk1Jpi_^8n0%I{JBz zB=iwSk(-Ubu-WN}LA7w4!vd4Nxtfo9gL;nu|LI1uP*n3Sa8jE^~ z-a$zXvBuHU-H7do05wB6ohpp4t5))LuPQo~JN}ZF*lq78PjSDrnGD4Y81^zG5j8O$ zUgJB;{GxX}drfNUhy#w~gJ;$2i}+qGIO$+=Oh9^z6!JFYk2 z4%4sUiuU%`hNai3847`pOsci5I;EbPnr*1%aoRgUmeoupWy^%^cHgRYvPAiH+Y$1|5Hsaj|?BpQt`NEtO7`DY^csI^yW zcI)NQ)z5Z5`Ry~`URSM>+NslHke}LH(=F|)zPsy_LV^uUR~nDN2fUMmB87S@ReZ_; zz~|;|>B~Z`cdE@!f+^L%IQaRPx}AFybN>Ld=++c5fNK%0kG|ceO3KWk&%WEs(Q)XS zy)$u8S~X^%SOUy2NtZQRk4MUPZzvq$rtmUV<1yc%UX8T| zLR1sF=e+0F>X&$WT9re#NCsef?o&gZPmPWyaY@~S@3%8EhxU%mrOmq8xTwHY4V>az zn@=OnT8CL1jLtR*K9QMn7tUJ*k)(V}&}6GuMay|^!}Xde*Dbw9E%!1P_P$dqoDkm9 zkTxHA*RDmx?ucf{l=sZJkywCEl6d>biY=t%;~nHN0Z^&T+f1v_EuF^m7+*>5V4A`( z2a$+H)$110l!oSB*7!i~{;Yi?-c?|)Nm-6EMgbyQoH{`J>{DVdUa_4RA*Vvt-#Z5fzoXu2d62ob4#1z9+UCsxzvYOof<7LrZb6T_R3t)Ro zZBxn3YM`p)0FmAeQ(KBuhpCP-BI*qE!rSY}UC8;JJ=MikD^zwZk{2 z^?ORKsIge1zU`fdvEL4t@>Khn~jEFG>fbHG}o2CmzQBOOWmYN)#jil;^ zAZhwU7-pUfK})NHp3+pluU8m}WRJwQiLn^kAjf~Shzw#Ue0Pv;v8Xbt>R9Kr)p2c6 zSb!KSZ<9H6+fG}2;~P$mrQJ%XDb-?hkJv!La&c2eHxi;wCHJPEoJt)--cX?LwnibT z5KQ@l6Qf7eLi|p06R&NI=~@gvPx)b5Ju0AqywgDgCP^Quna48vClD?Qy~>ZVk}shqgjeC;gRn4D}NPM!cc;0a|sFbo^MG|JI}9OE+jNvX9H0^K7}IFn~Z+ZoQ$ z6~gB^h#+CB8;#&J1qQ6{VjvTeBUUal2L94vY2(zy7#*ILTcq`BmKPeACsjSRWuA)a zie6b&wOl!6B~C{&#QrzTH$JRaPE5uaKPwKXp^pxVW1*kzgx4-l=($jUV zPsywq#>5bFfPeV2V;6_7R_?=AygC4_?o7erbpHShzNgfwp?z2mQv)A)O{E9u-G1)e zRt-Z?WF&K$>2Iyp@26LwQk_jpxMAK+O4ZYDDBjyrtxfQBje8&dB(|A4m}H+;+jgF3 z!rejb-ltEiQ9;kqk7??`ElheijznZHW-;M)cK;K z>eV9Y_|5Y7!np9GU7jVEawVe%xO>CbpTOJi;1 z0As$L;KbvY(3DK6-UQS-jHBr%WA>Gdt9qE2EkIeb&Ll#TGI`83BF1g-Bq|a}C!E7c z&T|nM<`jz+e2-}o+iWquWWikL5-wEdEr1~{BT#{Yc7;rY)vqA!iJqgY3~D^{9>spM z44}kkXp3M-Z?6Ja5rcwTBia@?o+s(=R@Gjfb*Rb?a(Tg*cu%Ue#jP6n_0u|71DynR zotuhcs^C72wm8lwlf9zd7sQ{LwQO14FlJCT4fckeUadrQ&ak~w&;I~()oi#Ov&`Lo z%hjwJmJrjZyA~WtC*?0~-izg_I_w9`=5(8%%U;#!waroxVw>q3z`^16ZkK;^VQ}BV zX9keYa%X3(*;Ktm>NINvyQI2;ft^_GiARX69=)Nvq5!zHIZy`VNpw4%Xe**U!(Bq3P_-KkYS?Adj2`o`Qi#yUPJO4DsMUI3P)mv)t9smz`Huep=x3<4tkr0T zZ8&ZAg0a#1^c{?mBLzs{%d1ljP&$cKVf>@tFwQC|pSRvM%{~Ypc_r1{?Fxe<^@KGi zoUiE~{iJmOplu|lj6h1dc!}wngGe~AREM(XU38?=1ibC+>h25RHY!!>!_Av z#%Go4y*>JGP#5+jt(|7xm?U{;xczZGODS5L40p`Udv8wilhC>urBGq8agUv#)=ISK zb&D)G(Olr81MDX^rCpj=6&9+Mtw`x*Kh8bmdTnd2jnrGDTsk@-{sZ@Ao4VzoxVKKJ zYC>F5-Oz8Wf8HTfbrd$YU*dMue}hwJroE56xYwgn+|sXyqg;9pKjF7y{r35bqu(Rj ztx}=Vy)utUzs-^RYz)Oxn{?{N+URPtxZaIl*N7UrZQWZ=p!OA$eTr{@h5|OhP;;F8M5TPP2;+W!BH02cQWfcA`G*94 z;-yhO_8uGwhAvT~T&_EOZ zY<4nLj%Bq=+Zx}JzYA8IkKsO$H4kmO$=oYjH5a#E;IYk3TQZ;eORa8}^377Zigi`A zIzRsQ!`SmM*Zj>pg}1pQ%LmhgolEzaX&Sco9Y(EZL*$xH8j#P|vF1j~wZ&eqX-c8> zsPnU>4Ff3^3WgW}!tsHUOD6Vh5;T9i?hJ@O`5U zK|A)FVA~2*D~uDtk!?)JbvQkvQ>%8ye$u;=DNw0d>IGC8_*~butZQBB)fXP(`Iy>9(jhXL?I_Q61tSZVdda9d17{#hsIfJX}we63l zy*A4r*i!;Tim-Ok?q-tR*V=6`ucxu+V_M|8Hmrh?WmC2$G1CHeU;(YVQU1d72S`|e~iDztu zZPS81$GUKV5TQ|#<2O$r)+IU`xYj@YYNla4mf8zPil>jP(?Z+fc z>o24JA9Vi!@Q)ALQhR!0=I9Fbi9wXqeIxeF;C>mgsp7u5S-~np1>cja8U4VXqo;L5 zxT{cA(wYk|mz)!U{kESi=^bkGqjfvCu=0&c^%|1u+^$DWIoK7fJ=~{{VP~t$9AB;TlP3KPLAz?vRaHV7h(>yyB%w9V+smzv=ZH zYy#;!dz|;5PtX~2kXt#)8~*WBq_wH}b=I4wvmh|b!CO%9e^U(9Zc@^@8PivAem9(+ ztKph7ZxW4-x92LquU!%bk?;Mdr|~z1`c?3!O45j>cT%VT((SR_=d{FpIoEm>VOOVh zIyW@bV1l`2IR4v7N1CnDdWEl$;^D`YlC-J=yA#K>#az{UmVTi}Tan07>G+0{dcA?1FBD(WdLDI{0kMK{$LTXTjwMP8^}$jFEbcv~d!d{)7dWT0 ze96=5S$3xMgQ3O<7$@RvyZoKQt1{HK47g&0JNwO!eG9~GoDevd1$3rr)59;csqBj6 zp)8~6INiQwEY+yxinTu5?jVkUN(j$U*IO0(a(0tvrB|hjYfsB`*y3TMSu0RJXVh36 zuQOE|MRMVTmgIMm{A$-$-k?1;+%09*OydCVCFiMKDXQw|<3>m=IE_>;bd4?Cfi$+K zvm%oM<#!+n&NChR9}!cd(h=OQrpRR*{<8(|huGKE5eOdEM)JP?8JIrG0@K$F!R0hs9cbICWd{b&QT?IDC!OXF1 z0s^pX=jt;?x7MunKaJ+2Hg`e&=BskXhn-E?TZ{?7uFkcpI3YkF4DFFS6mL-5H5zDj z3={2%FT+(<>EJGDu~j~!zU2M+g{7yZ*yqa&mOjJYT}JMkxK1{~SvuWHr50;7w;COH zKH_sU`d>|J%f+{(spXJZXSnS>q+R`PyJTL2M|lfukn? zgOVi_RqDIdu6)r`a7n=*v@73qOKy{GYPME%E#8_FuC+xPs<(5$1MNCAuR1lAMl9B< z3H6i!oa6gXpVFyX+O;uS&2KHv_@h{d8+&F`PpCawRcTVSr%4@-HU)>nA9x;zsN7KM zw`o?5i#4(_!vz2t&#zUj-BQ`VF2Vgl-&p(nev^lB)GjDf{JU0t8g!H!36ibZs4%$= z-1~{Hv~{j}z31l}UDYa@M#i5X)?qzMO?qy1R758VJ7#lKfX$PDeWX}v7)4{K<7FrN zM_RF>t=($%S*r&pI~MI77AVf;j;H2LZK?`>YwAwNzqsjJgQEu=Qv49s;)RC3Ii z9i-}%&PP9a0_3io?F`;Xu{tCPC!OS*IKYc5jroQNLDi5>e(-lBV=yidWC;yQ%rLkx zBnc`|@MN-mJN-OL)Zn+?Fv46|u}LK4@*@}tB3K3Vjn2}3mZm*8$1#m|iKA+!arJhW z(|_Uby8*nHcUgRirRI01_Z8L^uQcSw4BXrB_6DN!IXgn z&UcDb!)>s^nkYLZJcEfq%WW@3QiV@#=2#bJQlJFn{K!^TC^W7}=07oVGPx_nkf=^V zjAwHLJt{R==SB~{W$8|yPPgA2N$wP6?U@Z&d@pee4M7}W4m0m2^#YC8J77qPPEH9j z#zLSeA&B2F(Nh|eEd@eYsXmz&si%_}sg&Du3qF{pHFGsv`E=BQjsF0=z`kMMiES;L z)$IHd+p4r-#dYbE4D^X z&>~w4l^EZNG^?LU7?Eclc1Hwa6-EZ34EBpWz@wR9tXiH8K)-p7NoC)8AVQ7-A2L(4 zZBOCT47!F+Go7QYS;)v^nTyRJ0fI-iWW`Nm6ElmSFKskyRur2~Upo(0vt{9J52Ok1Dmngb%NNzWjEi&MiDnRy=6S4(?M7K1?ryX`HI#BM1%zDE+GHph9BC65`e6y*rgB*i5xkQRnoVeHiorN4_Rk3K@ww z+DOIY>6O-)%IU8B<^=W~&hdRM zw%b6B!;MEA%;mi~9LdyEsIl)WVSy|H^Cy$WWn*b2Co@8A^vK2uBL+lsB@$j`iMs)e z%Cn8;i!7GZcE@>}0DIVCN&5Z=`{d zlOj;75(vg54NNZUkC`NDopL^r#DycGsByL>Ozc}Zl2S@(NKk{zIl@|W0XM;q={pF9A^e~E7?=4s-g|M49SoU(!3pLmn%!h%TsbNfivtiX>M z7@F-mUsAdCQnRa!e=xuwIV4Rh(w>nkR_eo7b@TGe@<4@h7&du339F^K^N7Yyou<|4 z9(tFhe`pjPBr|g^v*?~x+BHt0W*0l@edNCfHLq_dRw%WI(so=7PPMIicl5&D8bYD$ z-M(c#Zr7zPV$`qO%m;j?RQwEgl~ba=N`xk+qqAfHKh|dZgLTz~YFk@`t4kkMJMH%7bCxyk|* zb2~KKS{k%nopHDa{Uv=zqSZ%sv8tB?87YrY6O~Eo+SLl>>Hh$kPR3l{jdpEnm4;T{ zpho`yDCe1d-%+o*x=%A$87=WL)T$}f6&(Rny0DsVEuQAp3lXFYq?75|F`Bj)03-R7 zPJXQ*fhoDQt7^gWj)&=VIR<37T9la6Ip@4|4PT@=3+>u=!?Dz=PH;ExH1zwBnw8WL z%Z1|vik|?qMvd*<&Gx>{ilslPCqCHwz zWnCk2_nlirB7jZRyo_pbM_ApHIZcS+yLV zXIXX2l^S&&r$eUc6+*DcB4D6MBNKfQii$)tKAp%~cMYU%Gqq9}upX>)HC`?pR2&{= zcV#&sZ4QkLsdqyNgt%Os9`ggE5CK*NdB~b9sy#OZIZ-rzdWtnlcb1J*IP|)<2tNMM zm*XY9QZ4YI)T3-AuSNs;F>A2_S4GiDg2yxJwJIK#fL~O`kKJQj1&F(^+1V z_EsC2FSj=OmQ?FgKbEeT8{xK@?U}9IrCMXykt=6^OB^W&I09^1l&dIr9<#K?Zlym*&%RdoTwS3WYNU+_2=k%QWrAnC5umc8Rtc*wtu?Lxn!a7cV-rcI& z^{N4?)6-lGinNymAD+^-uh)7w1O&gaV~h_|51jHpdF1Wu-CK;)uHgGl_eb$XNr{< zswI`pJH8bu<19WiwDcW9%AZhDfG(_Ta6z6|s&w1Fol#p;0uI#_Zl5#14qE4owa-qs zcBIx9My)af16LUP{KB2xy8x+VlySIX`O|AZP)3~U(qg(#~J~%%! z1?9Wh*LoGHGCG`K;{<#Cy{BtqH{#c!PT-fRbwZW~L2rL;rSvIunqVv6)He*c(y8em zGmu%?g3~}*jsPNGYg*X2w!0-;Ry^VShua)WJ-J%f`FamcQkDI%Vh*OP`hV=qXQc+L z6?&bEDdojnT9y#VeW)>&~iGnOpnfUMqA>8tL5iN_Ba|1!W)WCHES} zI?fWXAwWWQ_m`zqTEVF2aq1cEH&L=`v=_>$XL1hU>MB%x$sU9X_)o4;`wz{xX@IOKQ<{G}Dsz}?NrPh^d z**SV`=wXIl#7j7ZbJH_x`THhH*4g#py-0nr%+6JU0#7^wJ5HZZ{H@()sbf%D-VOYx z14EB*zY=xnQo2ftQLV33?uY0fONF;ARDQxwJ@d41g{N}`jX4a(rmmxtCd$QUzH z>o|$5GwB$IoWs6lJeejKn#69luFMCx-dr5BWsY+)*%c!g-f8rLGBdn^kX4Bt$9?8T z096gACo_5|bYsp8%KnEWoNY6!8)$V~i%`B@J3)_h1j{M)N+s$V-7dxa!IHogB+fY@ zw+AQfE}=rTZ6=cWtWE+b$&6{%vAgN?D^sqvRZ)@kA10yW_3b*B73>bxI(B=1or&pln!>iVy zDjbBZMCm^n67HYSlFotiZ|{Eh_}#@K_E z45_4hL=Eq- z6DpeY$V-}a6p}zW*#6TJRmXDn=A(x}P-;}ll6gMU&ztMiyAH`v0Jtlij^n)3O{t(@ z)ee!qdBj&glnDO-o~%;bk*6HA=@GJp!dzAI+OjQG8PSks_U8Cqsd_Zpj&za?;9uO@ zbo-EPsh~I?#m05*v75RVP_JIxnuy`GZpUC^@wnEzpPLADvCeb9`b2L)QWc2Rw=3Eu&&yx(sth~q~J{j)v1A{bDi@Y#TI&M>rosp3!WvMsgai6 z%8Jy=sLwmLOuD@=KwUpi8J3q-DmK)~jh`}xO0nD8``oRQmD6Fh=q4a0@y{26oYUQYm_Y)lk zWnzwUJ54lS_)4t$@wQ0DW_z-T!Oq*_1&&yd6l4wKq!d&HA5h%NY1Rk%Huuc2Dgxe> z!7{|Z1@!}2wNoChNtr3ox=N+CJ9jf$)T#?)4I_z5J!fpMr+y{ZHPop2iJO3dPQU}c zV7)%xh+>bq-vzTduW;*JC1us>z>vDHQCm`+5O%*jca`6iiN74`)w(>dy1OBf##@P*Erf~YtpJ! zFvRb`khHnCtmM`vn+=b!`I_ruJv9W{!O8Z4DHpU z(=RSV+ZAHFGZD#{x}v2T%AJ(wBZDub$j-5bn zgE~sRKB=Rsh_yjiQ^}Ac zC`%t!c$HewYD})>mbNg!aAupLN|yr|98Ot{)=HJ?(hg9J>A=<6M$)&LfYldXGC-2K zr%t86nYxT|?<=;p6`q(Vl-0J>3Cy>XIPY4rd0v&qdxI^YO*(;_j{g8@j>TysngRZk z$vn-sdPOs*ZMm2s-YZl?r;OxIN1IZWL#=lAooba3+b)xktH0iIF5EWD!5hNrM!LAk zY>#Om>c9m!GnQLHz(a|ulVAgmVRfu(N62nQC6%+}`hKEiNRo9nJzxlMK2>``#1)tK3} zonr%T^O|*fo17V<*7BLHqOLS(JA0WgjO`mJRb!Q0{Oz>QT)3)mK^WZ3f0%W^)K$)P z0qvPx8;l1TC*DcI+PfP?ZDR?HffZY&S{U;(*_?*B{yr(?SGp1If?%ToOpm z1|p;#9QwUJ)2CSHdB&qyqh))UD~kGVPLYfOiILcc8_TLNsJgN>o=NtOv7Y7T7AITm zVkH%DhrER)0--IW?byiFZ&t&Dn35NrT-6n@gRtHd+skZ*)B0v-pzG$GjmVZ&a5RC= zX0azKwaL|$7|$kEk}8r>V)gY0cMkJ6fKszx!=4Rox)%rlx zB#&4JzT3%GHGW@BY^xG^&SdKrVg_(WC*nrbHAhvZYc_l6n`>F!fm>CrU5He|{{UH@ zwXJ8S!H58H-bUoU`5J~LwCyh`)YVd%6!hc(yU4J1Rtz`nFhRslC9KEI)TNFS7?`?^ z6Hc(-I=2&Ul1?gQFB3iR1=IpgHWPB=9KI?|S^y+t=4-NJ=B`cW+M^lej{> z9pr6P=LGEusW2*lk9j&uT=R@?3gt@ZQMlhQw`Bpd&LK{y40D{|Nn5i6ocBZ% znR*P2A;b=lQ*;!n?l!*j-pY_>3B^>pe$ml|5=ZVq0Jh#pNZYt)`<5 zY7YMZaXMCXI$d6yrRmp7q~)9(fH651l`7G_*Gp!m{{X{dwnw~SUX#SVELw|t^hIAU z%fkwT2Q$pr+%>ItsGftIf)9DzyT0q)Qo^cKq36+6+M@kS^E}`~<^%-swt0+a7SyQq zuAaLMMcY&S%`H~mup*j-+lfs|Wl&+h2#}@}FB`~6u9-CI8e?F?5~@0>)*+hF)l=Jy z%h}Yh7(cvq0_oUIwXB+V8H|7%XxRF&c!41O;Yrx(#$*rz4tvS%-Zcx@NK~mloGOHH75yY?qP0AM>i3!(%itgl?<%X6Y%bCxH6f(s z#zERoVBYxNN!MCw8yP?*pQZibV^XjnFc|oeb_MtLm9g}O4U_F4NhdPM(o6&71B`DY zl8LZ87-|Z0jOS?Hwml$iG%616#haNRbIg{^yDlX@tz>6t5)K25O9PE9lkg0vCRi9T z(n^l}z>^}O7&*w!Vw2PjFuu~g%K`5K>Lij>jEr#`jbs8biBTs}(s7N96fr!Q7kOX| zj$;&oOpz5MzB7qvW(q)3M|?oZRef7=Bd6YIWbUPk=aMCLm9ex6H4t_(U9%BFH!y)V z`XmP2MoGpZgtcK{6lvxhjQ5aHypcE(<0;b_W0TrE={p?z$bT$BK{5+aXK-~dyp2#Z zi6t$OzTasYhtE0!%OG?<1PDGm^8gz_p zm=;&bPe93((p={!)$NI3^$d5CrlE1HaB~59EGg@8fxr^2Iq!|;n)e2v#(g8=V1cCcmO9d-E5TDgW5upylhOV_vT-3 zrM(Zj_8%|{b~O%yHpXSFh&3)SF~7u(Bjqy_z%sE>yzS1!`*wjklqoGR$ohfz_mr|> za!y8On)J;^0S4H|+vYp!6lf(irB_-0Z@dg;w21`-ytUOzZX{D-`oNo}*p(1Lmy$}z zI2eHz`UI`GlWrtW5FntDC!Mf4m8l@@BnbyH;E>OFm}Fv2Mxhqq#ss9(!R#iI7UGt5 zDz~vSGn0uBaN)g4ra#*be>{>tOxHhE<+GT2$xnFQJi8hx!6M)GGG;N z(o0$!;|GWhxPudjCg*tyWSmOW0`k@a5(ELbhH%dqkg!8SMgB+Pv(OGvv)3Mbz9C0~ncGVF9sX00+Fj zjXd)+QzY{=BW=7a6=|xpoiY?k+d0gb1g_B1)GTrj(<1CZz&l8#Mgs(6=1hRY<^?QH zC2Tg^-dMnnWn`SeR?|2b9Lban2HVP$19L3%bPR(GGhBUmGANmB0hsC*cgPtgUr!WQ zRVcaRHUQ_z#|+=hzFR}M;O`}Nrtv9$&QljN%o66M6!@1<2xCfM5tp> z&%C*Zm{t3lbmKeu>@vlS4Bx2(DJ2p7R?c=1Bdsaa9-M=;v4CdO21X@mq*Y;^ zSy;(xbo7IOOa%DV>EcDU5eC@jh}D#gk(dH82i{D9r_#7GC_y@cV>c=hH=XqaWwtEYVBNeA`ppi|v$GonU%h006m()fE(p_SW zG`F|WS*sRYvl4wL+Bp4Z8G3Q4sp~4_ru%`!u7dtz>9w#x?Y?ESR8zJfx%F&DWE3Ld zf%u&<9Uh@_wQB{Y6|{gG9mwxFw;_qaz!G(9Ii1iKqBThD%SeK|*86MK&RjZcVwnTdd)DH5j zX&bHw-cEvK6Q0sDi@`Y9W>HjB&PV`D1Ax1X%HF1;0NN1{Gt7v_NcR%mXbuR@(k!Fu z5JYfAJvqmD0qWZu`^i76woJCvQ^^&5I2rrP8qk*Y9epF_T~3NqO;syyJ7Pwy$pbWo zl;iIzrI!V&jCUEDRh6zXxkU@}C{t3W^W*f32BmO{g|qD~uC&mFQoxQufl*VDsONb) zjxYoX8a9;ys-Voyhq2>7yqe_~&`96jKqo(WBajYv5)0O_)9U9Es$kTqsha?NO!+Oa z7~W~3tgC~;+G^2yu%@l+)$B3aMw2~Em0S;Kh#H3632-=BmCQ_2B@UIr8}lbcN0w?Z z0PuH|CZm(6#I3t2&M^zARAnuw9QKqkZCvdQAx1{SF`-s$9mKLK1o4xBBY#%iNU9ddaRif*a5)P3Z`g!Oyvi8NVT2)pScJ8d%(S&0pZs#I!+9l3^s zrZht(*r_LNGi*FbtBjXPFW( zN$n#|_cBtnEkUHNK<_0%>AqH{JmzGngN$>TCCRCei8B~zBTHplBij%GnTcbzJ)nba z%#BCL)9n_BHBs}w@t0xJxY9+?!4_e^iiFQD8k}uL!mT)GXXuZ zLFwRkl@>e+FEXHGo(RNfppE$F5FiONMKCmE@^+Mv0oY5CYH0y!yYH}31Z=W!o`H;* zi7!-vK-Ax~iCT1BYgKka1_}+%W`T00HQV7g-`*P5b+q&cs7)Yq%zkaXA%q&(e9Tvj z%=j$C51CSPh%Icde_6db(lgo!H4RN!xBmc`$^|uIHvY0y(>Wv4gNzv~Ed?p)z+&6U z(kLpas7^Q%h1ZZ2gPp$8Y~1R?>Heln5^-9Vwl2jBY%?=8Qr@g%5H;GN)xO=Mcc%2l zQ`Mc!fum%G$eWOf9zop1Sj?y;u^&wKgoa2Gars?qh zSnP9_k+-9v!=PYwWao)dZQH#j0WqF1dzh#XF$miubA!S5lDk%@`;awv$9W^Bnku0M zht;+qHA0}VIWnfybu;cU?IBvLinvpyaUd%@{{Rme9pG712GOHojpcNz5?Jov%c>Oy z2h?`pN!pb1&Y|ivT}3rUk*Is|nH>()$bZqI1KzhRfM)G%cR;eSE18L5ws+wccyYLS1x2Q5hWQ=x@TS)+N+H73O8 znXo$nAdG}$>i}=Wxk{7|NHEF9;uavtD^z0DkwWpSZRXyYOj8F@^A)z|Y{rxkX&*2t z&j(26WvW`;*OgPoJ?3{>Xs<-A7hnphY;&1H)TZ|4oy8$hafQ!gENj}TJh4o&Hr#RZ zD!EFFRhp1yrU)Djj7XNVQK41tk!h$z9mLgjLr$uJ#{7o!NjmC)kX}VwR0lQ6?3Oh?%4iPFS z)&pY_XriKmq$_)36II&^hOk8&lYnP_`r@4)pZO%vDzMz~Fxp$Cvo-ByEI*Tdr!T0r zN|y$uM%Ad~cG4m-TKbin{#VbqWCv|J493)fI8*fChLil}n-fBkYXoCcZ;78Z0w~U< zUL?3K~t65TTY+@6*n;7Wa|KGWi}EiTgpF9uaEVCatEYjdq%59pa(iwoMSMk zK8mEVEDt0JWg2vfU~13Ik+ry_*#HzHks(r}QBk%DIQNo^MWMlBfQ)~b$eMIKf)=4K zo!8=2UZGs85`D8DsM5xe4tbf9rTD2xLN$idp3?e-9|ak{#7f=08h&MJ3Y?sg+G?>D ztK-t$&gNXz%K(aa_=?r(`HIz3BfK9$tn7pV+GneMiPYm)c|(`T$?q==%ygb4s@snw z)h)2?6Nyw7EH@;E zvD!@BqH;FI*oIcFJ&t}vs<8n`Il5MOb$mYUj6<@Olf6A-CsQ*eWUo#tYVrzdUrk5x@XHAW}fGR3N&&NXAS zEQN1Pm|$}(HsyZ3zgaU&3a?J40XfIF#D#jHz{W#&-W4PZqX6WI0CSRLDIFxAi7Ht+ z&k!Kslj%5;ro-tYd~+31?e7&eW+Z2{2eDuWzGj9h!yU%*g$k}Syt0W_tFq^Oa|xuU zR!AMVkvf)+7+~gETS%zHt}({)0IP%V_k%(uMx&|J01iREcc^*{hoX3~`*tQw>j1eYlktVwfXo6golloKA~Z zQwxn*B#9c;11{quGRlukQBZ@_d6d&d)4O0pIGrs4Llcem#J-{^qz=7ITX8aBb^ibj zvOT5xhBCt@3~RNhlv!LcLZ={uD!6)eDqtLq&L(xLrL>T7@h)mEKctmC#ET7HvN78b1dIVL0lASOK*<@Cs0hKvWt3@U zfn&FEBH`Q9ElX4GJ*J9OkS)fi-{+CrssQm2}BEOgAyBQ~5d1DQ0Y83`jY!%x<5dt{j~g$k)T)xYUBF_hrP}s)bn`X(WOF0DY!*rbzTQ1az6# z_+*^~?jTH3{wgXy;AapyF3V75v$5h^YoOK1X;2MqP=ZJU zI!OLu?=^0Xmo~JJ2DT-WJ^7KQ7;HwI_mf(v^aVk&&k~wvU00mfr?g<+PF%u^ogc&KMr})A~r%P)Jj{^ZL$( zKA*0GlFqM;g~uNgn?;`to>?JVe85$5?SsAqp}|46(@6laVYUYoJx0}%b{^8fRX1-n zLEL9~D&!iZs3W&AQv@(!w)>fNbX?&ZE6#D=bQz9Fkt#;=)EU?=PrPiWZTs;xqP0!8 zk}RL4OA8iJ^7j~EyZ-G&rqNP)AD_##xc;cpex$7Toub{r;>M-TagDeB@#D zh7!t0O8Y)lLy{9<7xbKUY_2`HogSrJI{JA$%(j#hnv1aCnRTrRNsT>fyPdHj=vQ!e z_Lo$zOxM$^LIK)M$~yW;B2!r3a0h(JARtLHsBMIBQtgNnfg0{&tEE#W8Gu(%pE8=& zjYZSGC0RS-JuF7UCRWp;8vw8JoX($5s`V9>shw@UtjrWByRf9FOFqgy%G#LsNX{ckro^r4;NxNtjkzmpWOFH8B_@%2Al*j{g7zW>|Yh?+}^96MYS%5hin~;$v zsZo#yVsXTk7A)ad^T))jV;jp*Q#&2AwqmsC{#`#VwZUA|ZNWcQ#$>anR;_Y&Ae^wz z6HaN0Y601HBj4su)zwYXU;^9iGF4Y7X}F{m5Ki9`R4qWMikK^mjr+_1-9RG0b?Pu+ zH5|*R-BVQ3%5{6>%Z%e~RYjy%R*-fb=QWLLOh|Vlw(`+-q?KKX;GN{$8j22}PjeWI z=~k^wmvgrJ%WB^{lzmua*>;huOaYwjGPnh|k`Z%UyAP}SN?o6l#w{!D8QfxONY<$? z`m?CZXw+c9o&Du{My@1*)5O)pwW!<#sp%L5WA&OXZ+y1`rvB!0U6_zFEen+y_n5?Q zZlcugSd`YKb{^9;PNP%S7huB#U~wqA$;SL`BTY$BQe~Je91L12IWuKz+sM@DTwMK zMM({`Y|o912mnJ#jP@JJQc_(*41#x()26W$_rcre;ss#1QVzxxDK$nrWX)G)Tq#u0 z!|GX5f~Z|ip4fpRiA-+W`%7qPQRWTKF*5?rH{XA0xiBc;U_!OAf3FjF7L%;-}99lOBLpdQWo%Tx>rRX?2m^6`Q; zfT-#vikuK;iaTT-hdGqfP!7{Ztt-ZJvZCVn^Nt zfjI-VWT`Rr4D2FYXL!P$^qfFg%j9!3BPd)?L?mB%&^&@2lF^THUR;gHNbB}%}l<|E8v+8!;LX(h~{y%)4#%4!Xcdgo| zQs~YpFYy!CNN2eJ0OHF0Cvj4}uu8xs$_*~L=0d{l9-RkTgsXide<++=y2;XfN=BlF zcFSpaXpt$y-T_Vpd=F8E_(^d z>%B6a)rDG3S4pOGO@ikw^PbZug8G#jhcI|lw&F^n)6iEN z0k-iPYM45KC)n*1GLG5K(^}70K9LmIgUQ-x38giwO75wKY@pNLMvILlJNwGbTGd93 z#I*}9N!mxsTxiG4Yk&%b4e^*^VihL_N%7^7vJ^t{Mh~>J)B1OYq*M`9>MN6`SX>Q0 zoMr&;90c z@9CbE*8Jqkbo++X?aqew-`}6oS93-BKVJ;Q3wq-yRO}4z-dWS?y)vRyZ5oH6hWbxt z{{TP;oHi#RqJ%?oT;Mt!8z2wdCu_7^?Q2H({9&8()74J z#zrwZJ$~KlGW8k+n$!qtxF5v)*Cp9Ytm$(!6u`f-hpGp5IWBU`btp+kBZ3kO{_eBwdbxbGU|$PEk&wo$>^E)H6(PDq5ez z(l9?rQY0KK3l6jO3`V1QT_<)d8-R9}FEEy^RwQGzGBo9ecaSZod=vJOdfaJN13knt znQ-KcaWm8aoH4+fPz;iNxRlh=20-6C!5rSN(}z@|DO<9w+9~p18;_6vEW^+*S?P){ zr7P0PR6;Yjax1qkYr=04m5TqXD3XK9DQkycfvHFzUj5^+yQOz;ReZ2GN|f00 zd(5!N;2lEDDCe$JucyHD5I*99Cw1c zi&#B18OOx6Q~|3woXV^`&q+BOVr#dqzEM^ltZZSNXmhvpkx)Z{k5_4JIz^iWbzqD} zwEqB(3!uiJAdirEl^8dlt9H1mha`3*AL}_9SQukPr@e-cG3@Qv)X%1Kh(n z^uL9)#a^M*Dzd#XLfu>gzFSs5wE9*Vsri6u)B(sl=6v_?iI%Tf>Qu-K7Ss$eJ7au) z^XT?!Ud&t&%!;6}?VaSSBbU|aeqx}jMTIK3&jZ%p-`-;lM&icm*60)?W*ian4>NoJ z02Z&UnF9KbM>4D0D|md>rK-0GSNXmOn5w}|?mA;oqf|BuA1bLi!uuTa`pmQ`)Td?n z>I2Ny<=&Xv3OPU8YP-2Lte)DsgsPsB4=6pv&C_dEwWzw+_)c`vtBt==#LVODbY6uH zqd_k1?le~mlsMcs`AGi&tg_Dj;p+-lITs`97yvdq%++ZyuGOrxtDmiV9{Pv3>F+P7 zw%t9aPwDzWa`Oog^!^jLzlSnaErm%4tHK^GG(_pk!mZT83@&<-`W*!e#a4o_CFrFr~B zWutJZifmUo_{70R?v+|EWz~|PY-z%tN4k%EJ;g8&rQanwQdlQAK4Uf_c+ed{{X{!R@8h~O)sgVEjmn4)Ef$# zmmhPC^B0Bs1@&H?{x@ut1EXr8MylX}+~bY*nR-mpi`;gMhJ9oT2|o2rw|h zI-HN&v=2yYs;&b5v!8o>UYiBj1CP0s{(hZXR&iFEP+h9l)G!Cz-g&Ff7W8ptS-vQf#o6x5T98S3tOAbO}S zdY#>KpGu4XO!1yNyrXGepG&g1HC~Ya0C;MFNGIUqnFUq4HMP($O@%G6A3IJx{k`8y zuD0&3Rll2%!g_BA^lSR`o$j+ri8-b@4g1X%=~cIXD&l}_=Sgkk_&lWwt`x9k3Bk`{ zAn$OL%TlT;(kHrukKTGl(v<2`TQq+#V352IdBM7(w5~BrSC-rk!cNdkHv=V!=O$w+g~%u~&T%E>2SEN}o@vyiE)eWW zj{d_E%L`-r8F0J2(!OmOyeRY2Px^qL)N)*fr= z7e}3Z71(EdNYc5xvZzyVgLW9t>ov8|xhknpDLboU8~aS&Ll~;H0f4yN-9-Rh9Lb?2n8C2n2k8@W=O?SlhO@Hk1_elJ)@@eDKfAm z5IE*+zofM+P0c(8rafR2lQG%qsYA^!O6lZ|J|h~`D%NMK<_zlWM%Xe!<+URwK~2xh z8w9AOp^vc6WGmA&>9HWCL%CMx?=?88Rqh3L^BDj=RaWOLmKAogliym-bY_D3aMlVvUK1Mf`u8a)qGrX$~4gtva zfi8nM#JI7!nE+Eyd_jv>I6DwCGf}PR!9UViD`Pl4qZ+)GR;KHds#|SNlhvk<+5>W8 z^AVA?ZgI4&2Bh_FV;E?uZc^dXVuOS4GgqgF+i7rmg_lXrHvJ*Hlc{&kBpGxVeH)d` zxki%O#&_CDRJkEWA_@YA2XC2KLPp01Xew#8S++ZICQ_b|-0wA_q^8KAvB}K0B%vPr z$TMmv@iDtJ5lL}#lY zEXNp$n@Q8j_nK<$vW?_u+xm5xb(*f55Ob$#aMHtnOp>W%x1B;0MO}mI^<{9nZYX6f5Tkk9nrru`iNgV%ILU zeMi%eX-krTkaj0&E4sOCW>Hq5WdV*r;#_E$t8=_dq^aK$48REuLl}%$x}9Q#u4SHR z#(T_doadOs!{0yIUi|#N>nKTrPTe5&d*Ff6y$qD2DlyYCA2+N zHcfc!cFdq$Q&ax{3s>tSTK1(y(2Jpd1h|^&sG<~#v}w|A*<-}ZU8o_=Fu;?H@+UQ& z+Zvdhag!{eRI43Ym}3A4!(9qmjte#y-Z%WRldIRa6FRXVV@NsfVyLGi;N*|eMp}rX z6cK<3?J0VJ7%+3sX$o4q@7ipmN|SwHW7-C0V^#GoPT1mFElE&u-e~i!X#=L1z!~S6 zOI#KzJy>J52M{M!G}8ru_L%CpMI-^4dDg*|w*zo{%#L%Bl3}S4dYXV?vBqWAVc7Yl zv8GZNQBl}U6*R3d17ciJU9#S4oNtUsrUw4H=J7SsrKU%3<(%sV#1LrIvEowk_9 zwZmdVU^Y+MTSTDAVYwLQYwEUU+OWbg1ZOh<^)}m08n{zFU;IpOD{+ChKJiw<;2h`g zA}V~rYfuI3#*gF^7-lC1Z?Zq`RRZ@r&TC{bmNJ;aoX4(3cjhM9uqK3wQ_Ony$7x(3 zSXda*ORz-*vDrZGWoke>$p_MMrw80c9eYZ46dgY_jai4+PdEVLS4*p0TcKM@HrC#( z`e}x5-Lo-K3sHz-2_yN8(Dtq6gXdBMJQFZQH<$O9l?l4IdcOyO`f)RkG1_Q0>YKG{ z8|}&3TC^+_e-`nW{{YCp^@g>bi#0Gd+l&DVe44AP8=P@AQ>oJwC|WmFx8G3!WAu$% zrw}+2EyNm~dJRV**C6hvGP^rUEPU(A=7kLIK?IZR1l#!|bxbk1q`j4DR09%| z(cYNUFKih0QCKnku``O+l=^zx{%(umRZfMfJx+7X=TNwnXM9x2tf~Yapj;yVa^#ZNG1snk7c|@K;((NeJ%2h`^mkrESzKoY$fh zk58C+nEJihwx%fB+7NanokmyZ=5XHos0yi5^972Wu9X-E?Tk#$HjhPh;p(emy4Iyd zBNW(94R^S)xMi%BQEB=@k+jie)_RRcVRLZR6r8ZmG5QWCXUtBaZ>gz@^mPEhwh!+Y z{eG;P;-xEorEUkArr}OX`^*(>>e8*{HdpOEDCzd)$hT2zldII(&&0aw($y6fpe<1F zLE2{dF|L*6sZb|Ya^Ay8oeM6XQlcGXqT?ht6Q^%p!r0Y%{XDwk(!OaLzhg6hh^VJe z^46d!$*8XR$HaEFEa7EmHfV&31ElgW@1AW<}Uk0G`_bWL#%)5{4v_akRKzNztiV-Nj06f;h>YYCa*j zAN#7t-sl03S0m>mdCCvy!CdbHZdha!zhM}|uXTOXuY%KCLu}txph*D!zj%*FzFU9I zQPXiue>E|y1MDX$ZEhTdr%t1Md(F0K)GdP=6)r6*uJ~6vK=~fiH{f&%y)rbMgO&}k z{i1M=JtG*Mi+lCG^mQ9*9&o~W)OIXA%nw9rg_?skN_oi6)0p9%BO`UsaAkf)Mqm^% z8P79cRJWe1?W}BmCHS7)+7#-B&KOivvue&KqUpXN zWMs4IZHj%XFChH9HsK%j|8eYoXCe^Q#!FplV-#?K$$!PTYC_ z01fo-jkRH|)~yyl!>ETKkNVADoUprM7OGTi<3oK}_Qx2Q=-bhuLFs7CyBv9b{{Umi zKWWRY(kt24^Qmd6OX{Zi#Y$)VyK+ABGGuPFb)O7}ChFTXket+{Nh|lkoXW+k0dLd> zmQjjVAZ5PC-}UyMg2%18QCe52qPBe{xM3UB>3u}iqfu6kY-FkA@AU|l>l~-2iRx6U z^!taQP@IwJd~J_;%50ORm^M%SneRG>OsQ_wZJ7=K08gogEOx6*W0CJX{{UC$)hMb| zv|m2hAzjP&v6BZgJI9j)*BYunfJ1w|TZmN^-mMWoa#x-h{;#(n1Afl=t* zD?aGMPUq=AX}81{inkQ&YxFmzm=0L+{ijW1x4dw!Y8R=_(v!r#wHBwd3@|^ut4W5T zpc-+3`%5T#Sd}Dgz78csFdIuLGkMm{rs|ucj#bxuPPpj3HN6Yf zY0#`NRkZ>7Z6SSS)-4(6>s#t07-BX50P8esnkmt)zGb^%v-Gby_no_1_Lb<TU0a_l(X2Z%oRZ(JGXEiqOBNqM&S1 zxdUUK0mk3_N#^eho;?9YfGv% zXuF)#2WC_53Fqu)xcVMw0uJ$$o@Ya>blZ-dSIerX%6D4GNv7Xp-gC2#W~a7sIxcCx zRO35M=t~vA&hwhbZ9r{0T{P-K+J>Mdv(h!$(9~QE=i(=`6)O2!yS36E6$5vY7OVLrE<<37`&R3P?>8RUt*6LJZo`-ex;g2()Rj5^{ zwHC2818%2<`%XpmS7*WmLGW^BLsG9|aweyb*S5Pytsj}n=+TBdXW#UizdX-X1!5SV z@`K2pXQfByB26b$28Ey4jRz)FjRDXGSahd6v z&E4|FzN5P-`m#GpF265ynFk=9vNONh9X95jz|hs#%+s7P*v(ZaQZAJd%@+sM0NJM< z%IQ7E4xeUL-mNR4My<1LNq5u_-U5mG*d`=%x z>BfyJ6|GO^t?K%zI{SAI>_ocCgVR#iSJsH6U@pBtf9pD59L8rWuU*sn$^}tfm5JDp zCaTqFyjAOR6}QarkcBcHTlwba7uImyQo1wcTw;PWq4^zRKI?~WvIvlTndZWYFKoDH$G(Rc$=4w%MxnXb;9=mQz{?;~$=r3E^J ze8R1@3eE!=YE(*9n^DpZz~WNjRlz}lEkYa>d>rt7kGwN^Dyc=5zP)AC@62@>a9KeF z4UT1$SOCg-8-3+$q=JXMv5L!Zgn?9jV{tJW_YB0=pm*CMbgo$yR0J$nu^R&0@j33g?hQ(1^tY>V$HePiRHD07!jJQ2U=K}^ z8kKEegOWt_apC;4c{1N#wHjEa7;lV;RjtKaWT+gL3_;&{uC*FfQ$ZtsW;^v{s3|5$ z)0}~s(#XZ-Te^Mn7Q(KB+=-^{;Y+3mn}eJQ!lji{okR4N+SDj=ta3LWGZ&1Jov%l0 zqPZ>Plmu|lxw5NQK2N2TWHx6WmHk($tymQ!Yy&!?_au3F01WdnUHD&2t90Y)1zwrK z4gAJ*tSXDT4_2Tm<82*?kz$qU>uPFW-x7ATsM=C%twr2&nb^*E`fUq~V@FH7WgB2U zqH3gIX#sJw0sSFL`|~usra?}l9FfiY7SFp_G-`A*=O$1!K?W@>HSY0}&@bt2-#Ifc&)|-iDsxg!V z;7wFkr4mEFubBj_DyVvChxW$OtD2fyC`o_j5!SAi#o42BG7g`#g>{fFj|^w{UyU5Ci00|i&Im$8JwjCrl2yV zcIIvtr=*ss8(I;%t~*LDg*II;sd70Zn8Lcb*H;4_%tosaai>Td5N6{gXKrZH!Kyrx zc+=nRW;dYpu9%=2TX1HTuFp)PF(bFccht~?G^!S0zNxwO&y>+pooXmJA;+lBZQ&~T zq`-m8AMH0a(OXi5H5_1XF*cVfY2#KsK+covG}Pvny-FL~IWn3BfoI?yh?W%!buby@ zXxyilu-Y*NdEv3u=bE+hbI}yh$CD8;Hd8=X&RVu zyp2La>Ia>nMVRG#0iU$h5@aOqxW|0U=^!dK5CJ$O_Jy4`t57L$Y4>BcCYHOhr9`a- zcYP!h!(wyH%EeSH9;HK2y9xmA+X;2YP_(21+1ev$IP+ZRC+#!cU7GaJRday2z!)E} zmeO15!iC1${LIcQTDcq1 zx4eZws@k~sk)&~}J-Cp#4D?R??KaFohBE4V?I{dSte$z3rWjJujFJ7L6xT+7o7x)H zXrN>PETK@VvYo?nK4dU;Mtu$%Ts389Wg9mB*p(7lbrZaGSs9s!`F-R|C`I{+3sFY( z5OIt~#A9#o6DY=|Y@cZtU;y{b(A;BAlkh(B8W=uD5uR zvT8+2zMw`-#F|0d`_0Q-u)%IdCOVYDz5&i)LEIC(ih^6>DvO4breQ5wxBz3G@|%a$ z*dI)8#5OawC3<;1p^;9bDEOUwI)SMS3=Z>+OPo%%nF5A8K-BDnpKNXSoJ!+O!vb;M zb!re7)3oN_sA|CDd_cO=^{F@o%Bk6~ITLqLwh3`YwHm?bRUm`y@i^&~BRmg@qNTw! zR-SSff$amUad}eAXtcOw3^2eQjO0@+m9>N4?<)+$IT#;#Em=>T$wsX~oRDw`-Xv0A zN{`lO4lo4MY}H<((x$;nkfpFT5@1zRS`vLMry2K|(xX#ikLhf2Jtv8JbqgBQs8PA6 zT=`*$L%1`6UW4h>)R}ksi)KM(qYpK5GChff!>^pgfT{kniboCL51CgV*GT$bcW43mXE4BpItX30H)MN^fc9!mfH(y4f%&jQF$jp`iZKJ~# z-b2-^a{|z*%WW@Oh_vvHys2@dWJW>;*mjbYWjdtpOtD=asP;23Q`>_qrAnY+QAyvl z%L|1e<`Ne;;Csq$fvi8_`DAv?+9_2u-$BsYbLyGOx`4#4;|B*j#3P=dsh13B$&;;3 zO5|*F%%m{Wg4vqZw0|y4LB=vhOtb}LE038%u9n~Fl~NTP{13DN!O4TSVJanw#$h#S zZZRQPVX`@hAKo%aJHe)ajm(nZFmB_B4g`fv>cE9e5#|s(?qr;mJ4%xw@?`2ZPS6^i z@88IJ zCIu9ff(sAUPOvQ52O|)wqfT4jjLN|vVwlg|!4SrrgT#wu4~ZsV-jX+qZGqw%wON)a zIFYEk?Zio_4a_p0*~yX(frZ*sN!l61Z35~{L+a0IZC4JVh|W$XV8nj1>IHHawqQXJ zrA&jd+Y-kEAEX?vv+#D1a^CwuYJCSXu-k1JZ()`8f~t+re$Xl`a%HyLgDYj+YH&|@h#<)pAZ&3K zpxbwVfX{qLmEUubB~xLvtaF$X8%73U+5nNn1W*m}ETw|jZT7&C8GVU>ATYx4d4VFh zaHrl|MRMD0L4)aF9C9S6H9hql9&-XWB|Ml)W&cA_j!0 zf|xnuw5`-vZAvhGrgAvPywOhzRoD}Q0;i`{Sfj26Bq^qH37c+e20-I}(N)%G=ndirAa$&G7;$7Uu{qY3fqIU z!o^g>1CnIPB=08bP>|b$xG)MCMm9NyhLt$T?-C|hh4-2$(nr~!PB+X(n5NlR&hV<< zldk89Q5ZXn`%T86bPC2HK~JfBZw2G&lA9IeV8~P=qvf|U+QppxIK-d=8W_W1G~z&w zww4|xV4TE7V>!W-1dbt7VUZxDlQt&2$%$CnNlDKz5!-0H=2_?X22epm2|^M0C9}%Eyz^cnG>GTI3WBO z3niB)-c|h4WH4YqmJR@IgcPJIeLQAN0(KFFE9!0pFs_i%yZ(|j-I(N=8n3POjfWVJ zB+G$~_A*ifnLg7&HxVx~Km*J}>XM7Cjw_)&XL#;1wOakR^Ma%xp7G8Y}TgtfKS){3h6+MMz+ zFsH4Tx}Ds#1HQbqL^Xx9)sDXX@D>}k0fwpqFBzvNvS&kWYLnM=+lBX z%yj7xbDW8hqXg3hx0DrN*_s^T0)Z&0SSn$cc#TK_U~`?|Ng(D_wOQkK!JAZDIoeG_ zVn&`z@5HjBX&Y?<3LLgOb1W*LWVTPVq&n%#Z~Y*ySYsPNY(Y2@(O9K3q~M*5%;yB- z+D$+z3GN_DiyY;$M0HC$;6X6IX>cHn`#_2S6aqMjm@(gZCc})6OsuDT<^mWbkBJ33 zK|b5bh0=5Hv_K7Idl4lX^((4WMbj&6qZj^D%(j_dEGZlR0HjwMe7yi|nUbzSP&1oyUnorUwBB08q?KoHkv+p`xL6K2y)mb#C&SnZor0z}! zIGdj|YqLZv>K&$Q>Xg=|kaipi)vIG(!i@`x+B~YutrQ+saC(caYUR{uTSMH`l{}wIZ{A#8QwkS;^S&gCs`{AviS`n7DX0WE%&=&v!wY~Vl{~S+ z?~ZdAthF?Qg&2{^#yd+Ep0<*4L>(g~qcEy-j$|p1;uG5vbr;u;1eGPr5UZKqF(ln20oe*q=`HqO( z5HesvZe@so2?eAeA4na}{K$n@0#I=;2i69O39KfoYo(bAb-ykY%IE*7O$)-_w$?qpbCzQ#f zE)K^sRMj-;x&lI$9r4;lixH_+wEqB@%`7UdzDwZe8%hz$8b~er%&4W3xoFFgwsw*L z>Dyr{V08?PjKm4GawO;m=bXvgqgHJyyJz}KUro6x8!ee_3a6oWYzYb|wMo@ef$b}2 zXQ{c*=_jlv*pdLMDBCP^DyW*dJ4=?TGT<%@rl1~X{7r~@sjyXTy`-7kHyXYq7^re_ zlZYm^IpPCnVx$$sg)xz|u&a0CF`*921vNq5TB?ic@5HIxFasEmfwYyJO`Nvbh~&r) za~N!MGKK&LEh67yHaXmPn=w;?%!mt}#AUX}d0D6xNISG4*3*->X$myMw&wyw669oZWuS^~5FC8K zzs*W(<rkR%h6{pDX#BsNGs(#$TNH-LZTmeQuo+YQW}rL9L@Y@t`VCKc*ZrsXKU zt+!|qs=iB&Kp&YVyl_CH=^qk=)cGWn5g0flA_Hb+Cv8OTNja9&tO9SP54@#msbUM2 zTxXaXRB?cEM*F~3DhGe4AG8z|^%0PElA@~Y6d)%vRa$JI0D~WR3X(6SiN*}7x0oss zjfvU>K5#|^o7d8#UijF2Nug~?a@&)%sp>Hyg6ALFLbJOzve_QkkQG}PCvUV1{OXK; zkgN8R3Zxu^`brcz04dsBi&2Qua1PR75{Wq>T;t+el?tw(Er-dPDbhf6eqn*eOe@n= zAMs8G{_;koQjQV-0L!$!16Iof1c8!Aw9Ru;gN0O9&N4}qpkyaQFb8f-)mGrhfsU5W zJMk$bI}NcROg54=9DK&lj4pAG@?e`Vr@+|l7`Ij$@G^KA=0d6C4WH5ms2-EVkX>4h zy)?*bg|WCJU}j2QVI+<{=8E+T(#SXfV@$4yP{Ye23 zox99+X{w{OG3nUj8%mO!GL|Pf*k^ePPgbj!ebctm!Bs;Ha3mHg=+Mc9DtX6vRja9+ zZ&BQlw1F*Aw1&XuGJqX9%MJBOMV7DS5bgCHpe{{4L&+pFayL1V1O?7=M4@UmHq

8eK^bwe?Qz}S=zXO7GHZn||scaQF3yEzlAY&2L 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®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