Last commit made on 2018-07-09
Get this branch:
git clone -b bug/1780481-fix-get-linux-distro https://git.launchpad.net/~chad.smith/cloud-init
Only Chad Smith can upload to this branch. If you are Chad Smith please log in for upload directions.

Branch merges

Branch information


Recent commits

4634539... by Chad Smith on 2018-07-09

proper indentation of debian /etc/os-release content. mock is_FreeBSD to avoid having to whitebox mock load_file calls

a871140... by Chad Smith on 2018-07-09

use load_shell_content per smoser's review

9ae57dd... by Chad Smith on 2018-07-09

shlex instead

b1ea4ac... by Chad Smith on 2018-07-07

not bytes mr smith

a2f229b... by Chad Smith on 2018-07-07

need to mock /etc/os-release for azure util.is_FreeBSD checks

2099b4c... by Chad Smith on 2018-07-06

ubuntu,centos,debian: get_linux_distro to align with platform.dist

A recent commit added get_linux_distro to replace the deprecated
python platform.dist module behavior before it is dropped from python.
It added behavior that was compliant on OpenSuSE and SLES, by returning
(<distro_name>, <distro_version>, <cpu-arch>).

Fix get_linux_distro to behave more like the specific distribution's
platform.dist on ubuntu, centos and debian, which will return the
distribution release codename as the third element instead of <cpu-arch>.

SLES and OpenSUSE will retain their current behavior.

Examples follow:
('sles', '15', 'x86_64')
('opensuse', '42.3', 'x86_64')
('debian', '9', 'stretch')
('ubuntu', '16.04', 'xenial')
('centos', '7', 'Core')

LP: #1780481

802c1d5... by Marc Tamsky <email address hidden> on 2018-07-03

Fix boothook docs on environment variable name (INSTANCE_I -> INSTANCE_ID)

be9ecc1... by Chad Smith on 2018-07-01

update_metadata: a datasource can support network re-config every boot

Very basic type definitions are now defined to distinguish 'boot'
events from 'new instance (first boot)'. Event types will now be handed
to a datasource.update_metadata method which can determine whether
to refresh its metadata and re-render configuration based on that
source event.

A datasource can 'subscribe' to an event by setting up the update_events
attribute on the datasource class which describe what config scope is
updated by a list of matching events. By default datasources will have
the following update_events: {'network': [EventType.BOOT_NEW_INSTANCE]}
This setting says the datasource will re-write network configuration only
on first boot of a new instance or when the instance id changes.

New methods are now present on the datasource:
  - clear_cached_attrs: Resets cached datasource attributes to values
    listed in datasource.cached_attr_defaults. This is performed prior to
    processing a fresh metadata process to avoid keeping old/invalid
    cached data around.
  - update_metadata: accepts source_event_types to determine if the
    metadata should be crawled again and processed

5858136... by Scott Moser on 2018-06-28

tests: drop salt-minion integration test

The salt minion integration test as we had it did not do a whole lot
more than the unit tests on that module did. Additionally, it caused
some transient failures at least in Ubuntu 18.04.

At a future date we may choose to add an integration test that installs
salt-minion and salt server and configures it to be a better test.

LP: #1778737

bb2cc5d... by Scott Moser on 2018-06-28

Retry on failed import of gpg receive keys.

When cloud-init tries to read a key from a keyserver, it will now
retry twice with 1 second in between each.

Retries of import are done by default because keyservers can be
unreliable. Additionally, there is no way to determine the difference
between a non-existant key and a failure. In both cases gpg (at least
2.2.4) exits with status 2 and stderr: "keyserver receive failed: No data"
It is assumed that a key provided to cloud-init exists on the keyserver so
re-trying makes better sense than failing.

Examples of things that made receive keys particularly unreliable:

There is also a change here from 'gpg --recv' to the longer
'gpg --recv-keys'. That option is functional and working back to
centos 6 (gpg 2.0.14) and ubuntu 14.04 (gpg 1.4.16).