yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #65340
[Bug 1691135] Re: address field not set when reading cmdline/initramfs configured network
This bug was fixed in the package cloud-init - 0.7.9-153-g16a7302f-
0ubuntu1~17.04.1
---------------
cloud-init (0.7.9-153-g16a7302f-0ubuntu1~17.04.1) zesty-proposed; 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.
(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)
- tests: python2.6: fix unit tests usage of assertNone and format.
- tests: 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.
- tests: ntp: Restructure cc_ntp unit tests. [Chad Smith]
- 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]
- disk_setup: fix several issues with gpt disk partitions. (LP: #1692087)
- function spelling & docstring update [Joshua Powers]
- tests: Fix unittest bug in ntp tests. [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)
- tests: fix cloudstack unit 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)
- make deb: Add devscripts dependency for make deb.
Cleanup packages/bddeb. [Chad Smith] (LP: #1685935)
- 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]
- doc: Fix name of "uri" key in docs for "cc_apt_configure" module
[Felix Dreissig]
- tests: Enable artful in integration tests [Joshua Powers]
-- Scott Moser <smoser@xxxxxxxxxx> Fri, 26 May 2017 16:14:09 -0400
** Changed in: cloud-init (Ubuntu Zesty)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to cloud-init.
https://bugs.launchpad.net/bugs/1691135
Title:
address field not set when reading cmdline/initramfs configured
network
Status in cloud-init:
Fix Committed
Status in cloud-init package in Ubuntu:
Fix Released
Status in cloud-init source package in Xenial:
Fix Released
Status in cloud-init source package in Yakkety:
Fix Released
Status in cloud-init source package in Zesty:
Fix Released
Bug description:
=== Begin SRU Template ===
[Impact]
When cloud-init sees 'ip=' on the kernel command line, it will take
the networking configuration that is written by the ipconfig tool,
and convert it into the proper network config for the system
(/etc/network/interfaces).
This works well for the 'ip=dhcp' and 'ip=dhcp6' cases, but did not
work correctly for the "statick" path with a command line like:
ip=<client-ip>::<gw-ip>:<netmask>:<hostname>:device:...
Cloud-init would stack trace when trying to bring up this networking
resulting in a system that did not boot properly.
[Test Case]
The basic idea below is:
a.) launch an instance with proposed version of cloud-init.
b.) inside instance, use cloud-init's net library to convert
'net-eth1.cfg' into a different format, and the render that format
using cloud-init's trunk tool 'net-convert.py'
## launch an instance.
$ release=xenial
$ ref=$release-proposed
$ lxc-proposed-snapshot --proposed --publish $release $ref
$ lxc launch $ref $name
$ lxc exec $ref $name /bin/bash
## get render tool
% wget https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1691135/+attachment/4888001/+files/bug-1691135.sh -O bug-1691135.sh
% sh ./bug-1691135.sh
## if that runs to completion, then it will show the /etc/network/interfaces
## file and the netplan etc/netplan/50-cloud-init.yaml file.
## if it fails it will stack trace.
As seen in the upstream commit, the change is in a very focused path,
only changing something when the protocol was 'static'.
[Regression Potential]
Potential for regression would be limited to the 'ip=' command line path.
[Other Info]
Upstream commit at
https://git.launchpad.net/cloud-init/commit/?id=9d437489b
=== End SRU Template ===
As reported by user niluje, if the initramfs tools write a config that
has static networking, then cloud-init would not populate the address
field in its rendered network config (_klibc_to_config_entry).
The result would be incomplete or invalid configuration, and attempt
to render that configuration would result in stacktrace due to
KeyError.
This can be seen in trunk with the net-convert tool as below. Editing
the yaml and uncommenting the 'address' line will work.
$ cat /tmp/foo.yaml
network:
version: 1
config:
- name: eth1
type: physical
subnets:
- 'type': 'static'
'broadcast': '10.0.0.255'
'control': 'manual'
'gateway': '10.0.0.1'
'dns_search': ['foo.com']
'netmask': '255.255.255.0'
'dns_nameservers': ['10.0.1.1']
# 'address': '10.0.0.2'
EOF
$ PYTHONPATH=$PWD ./tools/net-convert.py --network-data=/tmp/foo.yaml --kind=yaml --output-kind=eni -d /tmp/out.d
Input YAML
config:
- name: eth1
subnets:
- broadcast: 10.0.0.255
control: manual
dns_nameservers:
- 10.0.1.1
dns_search:
- foo.com
gateway: 10.0.0.1
netmask: 255.255.255.0
type: static
type: physical
version: 1
Traceback (most recent call last):
File "./tools/net-convert.py", line 82, in <module>
main()
File "./tools/net-convert.py", line 58, in main
ns = network_state.parse_net_config_data(pre_ns)
File "/home/smoser/src/cloud-init/cloud-init/cloudinit/net/network_state.py", line 42, in parse_net_config_data
nsi.parse_config(skip_broken=skip_broken)
File "/home/smoser/src/cloud-init/cloud-init/cloudinit/net/network_state.py", line 225, in parse_config
self.parse_config_v1(skip_broken=skip_broken)
File "/home/smoser/src/cloud-init/cloud-init/cloudinit/net/network_state.py", line 240, in parse_config_v1
handler(self, command)
File "/home/smoser/src/cloud-init/cloud-init/cloudinit/net/network_state.py", line 89, in decorator
return func(self, command, *args, **kwargs)
File "/home/smoser/src/cloud-init/cloud-init/cloudinit/net/network_state.py", line 296, in handle_physical
if ':' in subnet['address']:
KeyError: 'address'
To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-init/+bug/1691135/+subscriptions
References