Last commit made on 2019-04-09
Get this branch:
git clone -b ubuntu/xenial
Members of cloud-init commiters can upload to this branch. Log in for directions.

Branch merges

Branch information


Recent commits

e9b3faf... by Ryan Harper on 2019-04-09

update changelog.

244eddd... by Ryan Harper on 2019-04-09

refresh patches against upstream/master commit bdd9c0ac

refresh patches against upstream/master commit bdd9c0ac:

617e65a... by Ryan Harper on 2019-04-09

merge from upstream/master at 18.5-60-gbdd9c0ac

bdd9c0a... by Antonio Romito on 2019-04-09 Fix missing 'modules-init' key in modes dict

Cloud-init's will fail when presented with a new
stage name 'modules-init' if upgrading an older cloud-init.
Fix this by initializing unknown stage names before accessing.

LP: #1815109

f247dd2... by Chad Smith on 2019-04-04

ubuntu_advantage: rewrite cloud-config module

ubuntu-advantage-tools version 19 has a different command line
interface. Update cloud-init's config module to accept new
ubuntu_advantage configuration settings.

* Underscores better than hyphens: deprecate 'ubuntu-advantage'
  cloud-config key in favor of 'ubuntu_advantage'
* Attach machines with either sso credentials of UA user_token
* Services are enabled by name though an 'enable' list
* Raise warnings if deprecated ubuntu-advantage config keys are
  present, or errors if its config we cannott adapt to

Ubuntu Advantage support can now be configured via #cloud-config
with the following yaml:

  token: 'thisismyubuntuadvantagetoken'
  enable: [esm, fips, livepatch]

Co-Authored-By: Daniel Watkins <email address hidden>

5283668... by "Jason Zions \(MSFT\)" <email address hidden> on 2019-04-03

Azure: Treat _unset network configuration as if it were absent

When the Azure datasource persists all of its metadata to the
instance directory, it deliberately sets the self.network_config
value to be the sources.UNSET value. The goal is to ensure that
each time the system boots, fresh network configuration data is
fetched from the cloud platform so that any control plane changes
will take effect. When a VM is first created, there's no pickled
instance to restore, so self._network_config is None, resulting
in self.network_config() properly building a new config. Azure
suffered from LP: #1801364 which prevented ds from being stored
in obj.pkl in the instance directory, so subsequent reboots always
regenerated their network configuration.

Commit 0dc3a77f41f4544e4cb5a41637af7693410d4cdf introduced a
new bug in which self.network_config() assumed the
self._network_config value was either None or trustable; when
the config was unpickled, that value was _unset, thus breaking
the assumption.

LP: #1823084

0d8c883... by Anh Vo (MSFT) on 2019-04-03

DatasourceAzure: add additional logging for azure datasource

Create an Azure logging decorator and use additional ReportEventStack
context managers to provide additional logging details.

47c5300... by Ryan Harper on 2019-04-01

cloud_tests: fix apt_pipelining test-cases

The apt_pipelining test-cases were broken but until cloud-init
changed it's default behavior to not disable, these silently passed
as both only ever checked if pipelinging was disabled.

First, the tests used the 'apt' namespace, which is not for
configuring pipelining, rather that requires 'apt_pipelining'
 as the namespace.

Second, the 'os' variant needs to check that cloud-init does not
write a configuration file; it was a copy-and-paste error from the
disable test-case.

This branch fixes the config and collection to validate both

0dc3a77... by "Jason Zions \(MSFT\)" <email address hidden> on 2019-03-26

Azure: Ensure platform random_seed is always serializable as JSON.

The Azure platform surfaces random bytes into /sys via Hyper-V.
Python 2.7 json.dump() raises an exception if asked to convert
a str with non-character content, and python 3.0 json.dump()
won't serialize a "bytes" value. As a result, c-i instance
data is often not written by Azure, making reboots slower (c-i
has to repeat work).

The random data is base64-encoded and then decoded into a string
(str or unicode depending on the version of Python in use). The
base64 string has just as many bits of entropy, so we're not
throwing away useful "information", but we can be certain
json.dump() will correctly serialize the bits.

bb0b6f1... by Robert Schweikert on 2019-03-25

net/sysconfig: write out SUSE-compatible IPv6 config

For writing IPv6 addresses to ifcfg-* the name "IPV6ADDR" is used. For
secondary IPs the value for "IPV6ADDR_SECONDARIES" is set. On SUSE based
distributions the names "IPADDR6" and "IPADDR6_$SOMELABEL" need to be