cloud-init openstack.py code does not recognize network type 'tap'

Bug #1610784 reported by Xiang Hui
24
This bug affects 4 people
Affects Status Importance Assigned to Milestone
cloud-init
Fix Released
Medium
Scott Moser
cloud-init (Ubuntu)
Fix Released
Medium
Unassigned
Xenial
Fix Released
Medium
Unassigned

Bug Description

==== Begin SRU Template ====
[Impact]
Certain versions and configurations of Openstack produce a config
drive that has network devices described as 'type: tap'. Previously
cloud-init would require those to be 'type: ethernet' or other.

The fix was to allow 'tap' to be considered a "physical" type from the
guest VM's perspective.

[Test Case]
 * Boot a VM in the reporters environment,
 * add proposed,
 * rm -Rf /var/lib/cloud /var/log/cloud-init*
 * reboot
 * verify working network and no WARN in /var/log/cloud-init.

[Regression Potential]
This is verified fixed for the user in yakkety, and the fix understood, so
likely the fix will work in xenial.

The regression potential would be if a network_config.json file actually
tried to create 'tap' network interfaces and referred to them as
type: tap. This would consider those to be physical interfaces.
However, 'tap' type would not have been understood previously. And the
bug in that case is in openstack for giving non-deterministic configuration.
==== End SRU Template ====

== System info ==
Xenial 16.04.1, Mitaka, MAAS 2.0 (RC2 currently), JuJu 2.0 (beta7 currently - awaiting beta14), 16.07 Charms, neutron-calico-11 (awaiting fix for another bug).

== Config drive link ==

https://gist.github.com/anonymous/ce20298b9e12e7fe77851552c2a91243

== Error log ==
From line 574 in https://git.launchpad.net/cloud-init/tree/cloudinit/sources/helpers/openstack.py:

if link['type'] in ['ethernet', 'vif', 'ovs', 'phy', 'bridge']:

Jul 28 10:31:38 ubuntu cloud-init[1209]: failed run of stage init-local
Jul 28 10:31:38 ubuntu cloud-init[1209]: ------------------------------------------------------------
Jul 28 10:31:38 ubuntu cloud-init[1209]: Traceback (most recent call last):
Jul 28 10:31:38 ubuntu cloud-init[1209]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 530, in status_wrapper
Jul 28 10:31:38 ubuntu cloud-init[1209]: ret = functor(name, args)
Jul 28 10:31:38 ubuntu cloud-init[1209]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 277, in main_init
Jul 28 10:31:38 ubuntu cloud-init[1209]: init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL))
Jul 28 10:31:38 ubuntu cloud-init[1209]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 631, in apply_network_config
Jul 28 10:31:38 ubuntu cloud-init[1209]: netcfg, src = self._find_networking_config()
Jul 28 10:31:38 ubuntu cloud-init[1209]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 618, in _find_networking_config
Jul 28 10:31:38 ubuntu cloud-init[1209]: if self.datasource and hasattr(self.datasource, 'network_config'):
Jul 28 10:31:38 ubuntu cloud-init[1209]: File "/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceConfigDrive.py", line 159, in network_config
Jul 28 10:31:38 ubuntu cloud-init[1209]: self.network_json, known_macs=self.known_macs)
Jul 28 10:31:38 ubuntu cloud-init[1209]: File "/usr/lib/python3/dist-packages/cloudinit/sources/helpers/openstack.py", line 599, in convert_net_json
Jul 28 10:31:38 ubuntu cloud-init[1209]: 'Unknown network_data link type: %s' % link['type'])
Jul 28 10:31:38 ubuntu cloud-init[1209]: ValueError: Unknown network_data link type: tap
Jul 28 10:31:38 ubuntu cloud-init[1209]: ------------------------------------------------------------

Xiang Hui (xianghui)
description: updated
description: updated
Scott Moser (smoser)
Changed in cloud-init:
status: New → Confirmed
importance: Undecided → Medium
status: Confirmed → In Progress
assignee: nobody → Scott Moser (smoser)
Revision history for this message
Scott Moser (smoser) wrote :

fixed in 8028c9234ec4260eda9431bffc6728ac3703e243

Changed in cloud-init (Ubuntu):
status: New → Confirmed
importance: Undecided → Medium
Changed in cloud-init:
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package cloud-init - 0.7.7-10-gbc2c326-0ubuntu1

---------------
cloud-init (0.7.7-10-gbc2c326-0ubuntu1) yakkety; urgency=medium

  * New upstream snapshot:
    - DigitalOcean: use the v1.json endpoint
    - MAAS: add vendor-data support (LP: #1612313)
    - Upgrade the minimum configobj package to one new enough to work
    - ConfigDrive: recognize 'tap' as a link type. (LP: #1610784)
    - NoCloud: fix bug providing network-interfaces via meta-data.
      (LP: #1577982)
    - Add distro tags on config modules that should have it
    - add ntp config module
    - SmartOS: more improvements for network configuration

 -- Scott Moser <email address hidden> Fri, 12 Aug 2016 17:18:01 -0400

Changed in cloud-init (Ubuntu):
status: Confirmed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in cloud-init (Ubuntu Xenial):
status: New → Confirmed
Revision history for this message
Bert JW Regeer (bregeer-ctl) wrote :

Could we get a release for Xenial?

Revision history for this message
Scott Moser (smoser) wrote :

fixed in 0.7.8.

Changed in cloud-init:
status: Fix Committed → Fix Released
Scott Moser (smoser)
Changed in cloud-init (Ubuntu Xenial):
status: Confirmed → In Progress
importance: Undecided → Medium
Revision history for this message
Chris J Arges (arges) wrote : Please test proposed package

Hello Xiang, or anyone else affected,

Accepted cloud-init into xenial-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/cloud-init/0.7.7-31-g65ace7b-0ubuntu1~16.04.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in cloud-init (Ubuntu Xenial):
status: In Progress → Fix Committed
tags: added: verification-needed
Revision history for this message
Scott Moser (smoser) wrote :

Bert, Xiang, could you please test this ?

description: updated
Revision history for this message
Martin Pitt (pitti) wrote :

Hello Xiang, or anyone else affected,

Accepted cloud-init into xenial-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/cloud-init/0.7.8-1-g3705bb5-0ubuntu1~16.04.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Revision history for this message
Xiang Hui (xianghui) wrote :

@Scott

Thanks for the commit, just let you know that I am setting up the environment and do the testing.

Scott Moser (smoser)
description: updated
Revision history for this message
Scott Moser (smoser) wrote :

I've marked this as verification done.
The bug opener has previously verified yakkety, and this code is the same as in yakkety.
Additionally, the most likely failure would be still failure of this use case (which was broken before), so this wont make it any worse.

Xiang Hui, please do continue to verify and post results here.

tags: added: verification-done
removed: verification-needed
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (3.9 KiB)

This bug was fixed in the package cloud-init - 0.7.8-1-g3705bb5-0ubuntu1~16.04.1

---------------
cloud-init (0.7.8-1-g3705bb5-0ubuntu1~16.04.1) xenial-proposed; urgency=medium

  * New upstream release 0.7.8.
  * New upstream snapshot.
    - systemd: put cloud-init.target After multi-user.target (LP: #1623868)

cloud-init (0.7.7-31-g65ace7b-0ubuntu1~16.04.2) xenial-proposed; urgency=medium

  * debian/control: add Breaks of older versions of walinuxagent (LP: #1623570)

cloud-init (0.7.7-31-g65ace7b-0ubuntu1~16.04.1) xenial-proposed; urgency=medium

  * debian/control: fix missing dependency on python3-serial,
    and make SmartOS datasource work.
  * debian/cloud-init.templates fix capitalisation in template so
    dpkg-reconfigure works to select OpenStack. (LP: #1575727)
  * d/README.source, d/control, d/new-upstream-snapshot, d/rules: sync
    with yakkety for changes due to move to git.
  * d/rules: change PYVER=python3 to PYVER=3 to adjust to upstream change.
  * debian/rules, debian/cloud-init.install: remove install file
    to ensure expected files are collected into cloud-init deb.
    (LP: #1615745)
  * debian/dirs: remove obsolete / unused file.
  * upstream move from bzr to git.
  * 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)
    - remove obsolete .bzrignore
    - systemd: Better support package and upgrade. (LP: #1576692, #1621336)
    - tests: cleanup tempdirs in apt_source tests
    - 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.
    - 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)
    - 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]
    - 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]
    - DigitalOcean: use the v1.json endpoint [Ben Howard]
    - MAAS: add vendor-data support (LP: #1612313)
    - Upgrade to a configobj package new enough to work [Joshua Harlow]
    - 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 [Joshua Harlow]
    - ChangeLog: update changelog for previous commit.
    - add ntp config module [Ryan Harper]
    - SmartOS: more improvement...

Read more...

Changed in cloud-init (Ubuntu Xenial):
status: Fix Committed → Fix Released
Revision history for this message
Chris J Arges (arges) wrote : Update Released

The verification of the Stable Release Update for cloud-init has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Xiang Hui (xianghui) wrote :

Verified with below network_data.json, no errors found out in cloud-init log.

{"services": [{"type": "dns", "address": "10.0.8.1"}], "networks": [{"network_id": "bd024b7d-a246-453c-8e72-7216d9539bae", "link": "taped13e7a8-06", "type": "ipv4_dhcp", "id": "network0"}], "links": [{"ethernet_mac_address": "fa:16:3e:6a:52:32", "mtu": 1458, "type": "tap", "id": "taped13e7a8-06", "vif_id": "ed13e7a8-065f-47a6-b068-2811abe91dd2"}]}

Revision history for this message
James Falcon (falcojr) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.