cloud-init doesn't support dpdkvhostuser port

Bug #1609279 reported by Ethan Lynn
38
This bug affects 8 people
Affects Status Importance Assigned to Milestone
OpenContrail
New
Undecided
Unassigned
cloud-init
Confirmed
Undecided
Unassigned

Bug Description

Hi I met a problem when booting VM using dpdkvhostuser port, I'm using the ubuntu 16.04 cloud image and boot from openstack.

Error messages are like following:
[ 6.635759] cloud-init[1904]: Cloud-init v. 0.7.7 running 'init-local' at Tue, 02 Aug 2016 06:44:54 +0000. Up 6.55 seconds.
[ 6.637238] cloud-init[1904]: 2016-08-02 06:44:54,224 - util.py[WARNING]: failed stage init-local
[ 6.640376] cloud-init[1904]: failed run of stage init-local
[ 6.641156] cloud-init[1904]: ------------------------------------------------------------
[ 6.642089] cloud-init[1904]: Traceback (most recent call last):
[ 6.642869] cloud-init[1904]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 530, in status_wrapper
[ 6.643959] cloud-init[1904]: ret = functor(name, args)
[ 6.644712] cloud-init[1904]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 277, in main_init
[ 6.645859] cloud-init[1904]: init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL))
[ 6.646924] cloud-init[1904]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 631, in apply_network_config
[ 6.648113] cloud-init[1904]: netcfg, src = self._find_networking_config()
[ 6.649076] cloud-init[1904]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 618, in _find_networking_config
[ 6.650287] cloud-init[1904]: if self.datasource and hasattr(self.datasource, 'network_config'):
[ 6.651327] cloud-init[1904]: File "/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceConfigDrive.py", line 159, in network_config
[ 6.652618] cloud-init[1904]: self.network_json, known_macs=self.known_macs)
[ 6.653547] cloud-init[1904]: File "/usr/lib/python3/dist-packages/cloudinit/sources/helpers/openstack.py", line 599, in convert_net_json
[ 6.654801] cloud-init[1904]: 'Unknown network_data link type: %s' % link['type'])
[ 6.655764] cloud-init[1904]: ValueError: Unknown network_data link type: vhostuser
[ 6.656732] cloud-init[1904]: ------------------------------------------------------------
[[0;1;31mFAILED[0m] Failed to start Initial cloud-init job (pre-networking).

I found that difference between normal ovs VM and dpdk ovs VM is in the network_json, the key 'type' is not the same:
normal ovs port:
{
   'services':[

   ],
   'links':[
      {
         'mtu':None,
         'id':'tap7668d181-fb',
         'vif_id':'7668d181-fbce-4e4a-a366-b3dc22dbb831',
         'type':'ovs',
         'ethernet_mac_address':'fa:16:3e:a3:27:27'
      }
   ],
   'networks':[
      {
         'id':'network0',
         'type':'ipv4_dhcp',
         'link':'tap7668d181-fb',
         'network_id':'b42e1ea8-7486-47e0-94df-006bd95edfe5'
      }
   ]
}

dpdk vhost port:
{
   'networks':[
      {
         'id':'network0',
         'network_id':'2173c81e-2799-4645-acff-623fab93e9ec',
         'type':'ipv4_dhcp',
         'link':'tap69061801-e6'
      }
   ],
   'links':[
      {
         'id':'tap69061801-e6',
         'vif_id':'69061801-e6fd-4371-bb4a-8e0b5da21eef',
         'ethernet_mac_address':'fa:16:3e:69:58:84',
         'mtu':None,
         'type':'vhostuser'
      }
   ],
   'services':[

   ]
}

Tags: sts
Revision history for this message
Mark Thebridge (mark-thebridge) wrote :

The same problem occurs if using an SR-IOV network port on an Ubuntu 16.04 guest using OpenStack Liberty + ConfigDrive. Looks like the link type "hw_veb" needs to be handled as well. There may be other missing types too.

[ 49.997898] cloud-init[2096]: 2016-08-03 09:08:06,504 - util.py[WARNING]: failed stage init
[ 49.999468] cloud-init[2096]: failed run of stage init
[ 50.000397] cloud-init[2096]: ------------------------------------------------------------
[ 50.001502] cloud-init[2096]: Traceback (most recent call last):
[ 50.002466] cloud-init[2096]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 530, in status_wrapper
[ 50.003800] cloud-init[2096]: ret = functor(name, args)
[ 50.004752] cloud-init[2096]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 277, in main_init
[ 50.008967] cloud-init[2096]: init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL))
[ 50.011275] cloud-init[2096]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 631, in apply_network_config
[ 50.012903] cloud-init[2096]: netcfg, src = self._find_networking_config()
[ 50.013970] cloud-init[2096]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 618, in _find_networking_config
[ 50.016439] cloud-init[2096]: if self.datasource and hasattr(self.datasource, 'network_config'):
[ 50.017755] cloud-init[2096]: File "/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceConfigDrive.py", line 152, in network_config
[ 50.020349] cloud-init[2096]: self.network_json, known_macs=self.known_macs)
[ 50.021691] cloud-init[2096]: File "/usr/lib/python3/dist-packages/cloudinit/sources/helpers/openstack.py", line 599, in convert_net_json
[ 50.025182] cloud-init[2096]: 'Unknown network_data link type: %s' % link['type'])
[ 50.027331] cloud-init[2096]: ValueError: Unknown network_data link type: hw_veb
[ 50.028782] cloud-init[2096]: ------------------------------------------------------------

Revision history for this message
Ethan Lynn (ethanlynn) wrote :

Here is the bad code: https://git.launchpad.net/cloud-init/tree/cloudinit/sources/helpers/openstack.py#n574

I would suggest do not do strict match in codes, how about change to:
if link['type'] in ['bond']:
  ...
elif link['type'] in ['vlan']:
  ...
elif 'ethernet_mac_address' in link.keys():
            cfg.update({
                'type': 'physical',
                'mac_address': link['ethernet_mac_address']})
else:
  raise ValueError

Revision history for this message
Ethan Lynn (ethanlynn) wrote :

Is there anyone would like to fix this problem?

Changed in cloud-init:
status: New → Confirmed
Felipe Reyes (freyes)
tags: added: sts
Revision history for this message
ivano (l-ivan) wrote :

i think i am hitting the same using contrail-networking to provide network config the the instance

ValueError: Unknown network_data link type: vrouter

[ 10.230364] cloud-init[857]: 2016-10-25 17:48:14,238 - util.py[WARNING]: failed stage init
[ 10.231449] cloud-init[857]: failed run of stage init
[ 10.232370] cloud-init[857]: ------------------------------------------------------------
[ 10.233613] cloud-init[857]: Traceback (most recent call last):
[ 10.234568] cloud-init[857]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 521, in status_wrapper
[ 10.235806] cloud-init[857]: ret = functor(name, args)
[ 10.236739] cloud-init[857]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 280, in main_init
[ 10.245833] cloud-init[857]: init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL))
[ 10.246991] cloud-init[857]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 631, in apply_network_config
[ 10.248251] cloud-init[857]: netcfg, src = self._find_networking_config()
[ 10.249315] cloud-init[857]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 618, in _find_networking_config
[ 10.250624] cloud-init[857]: if self.datasource and hasattr(self.datasource, 'network_config'):
[ 10.251783] cloud-init[857]: File "/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceConfigDrive.py", line 159, in network_config
[ 10.256817] cloud-init[857]: self.network_json, known_macs=self.known_macs)
[ 10.257884] cloud-init[857]: File "/usr/lib/python3/dist-packages/cloudinit/sources/helpers/openstack.py", line 627, in convert_net_json
[ 10.259203] cloud-init[857]: 'Unknown network_data link type: %s' % link['type'])
[ 10.260283] cloud-init[857]: ValueError: Unknown network_data link type: vrouter
[ 10.264800] cloud-init[857]: ------------------------------------------------------------

Veena (mveenasl)
Changed in cloud-init:
assignee: nobody → Veena (mveenasl)
Veena (mveenasl)
Changed in cloud-init:
assignee: Veena (mveenasl) → nobody
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.