[fuel-library] l23network module calculates "base" interface name from "<interface>.<vlan_id>" ignoring case

Bug #1664584 reported by Andrey Bubyr
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Fuel for OpenStack
Invalid
High
Sergii Rizvan
Nominated for Ocata by Oleksiy Molchanov
Mitaka
Invalid
High
Sergii Rizvan
Newton
Invalid
High
Fuel Sustaining

Bug Description

Engineers of our client tried to deploy Fuel 9.1 with 1 controller and 1 compute node. But netconfig.pp task has failed with this message:
2017-02-14 10:53:19 +0000 Puppet (err): Could not find dependency L23network::L2::Port[enp1p3s0f0] for L23network::L2::Port[enP1p3s0f0.1112]
/usr/lib/ruby/vendor_ruby/puppet/util/errors.rb:106:in `fail'
/usr/lib/ruby/vendor_ruby/puppet/type.rb:1478:in `block in validate_relationship'

So Puppet module expects an interface with name enp1p3s0f0, but it does not exist.
root@hnode1-5:~# ip link show enp1p3s0f0
Device "enp1p3s0f0" does not exist.

Actually there is NIC with name enP1p3s0f0, e.g. upper-case 'P':
root@hnode1-5:~# ip link show enP1p3s0f0
2: enP1p3s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether a0:42:3f:31:1c:3a brd ff:ff:ff:ff:ff:ff

Hiera hash "network_scheme" on compute node contains valid interface name with upper-case letter 'P', e.g. "enP1p3s0f0":

"interfaces"=>
  {"enP1p3s0f0"=>
    {"vendor_specific"=>{"bus_info"=>"0001:03:00.0", "driver"=>"bnx2x"}},
   "enP1p3s0f1"=>
    {"vendor_specific"=>{"bus_info"=>"0001:03:00.1", "driver"=>"bnx2x"}},
   "enP1p3s0f2"=>
    {"vendor_specific"=>{"bus_info"=>"0001:03:00.2", "driver"=>"bnx2x"}},
   "enP1p3s0f3"=>
    {"vendor_specific"=>{"bus_info"=>"0001:03:00.3", "driver"=>"bnx2x"}},
   "enP1p8s0"=>
    {"vendor_specific"=>{"bus_info"=>"0001:08:00.0", "driver"=>"mlx4_en"}},
   "enP1p8s0d1"=>
    {"vendor_specific"=>{"bus_info"=>"0001:08:00.0", "driver"=>"mlx4_en"}},
   "enP1p9s0"=>
    {"vendor_specific"=>{"bus_info"=>"0001:09:00.0", "driver"=>"mlx4_en"}},
   "enP1p9s0d1"=>
    {"vendor_specific"=>{"bus_info"=>"0001:09:00.0", "driver"=>"mlx4_en"}}},
 "provider"=>"lnx",
 "roles"=>
  {"admin/pxe"=>"br-fw-admin",
   "aodh/api"=>"br-mgmt",
   "ceilometer/api"=>"br-mgmt",
   "ceph/public"=>"br-storage",
   "ceph/replication"=>"br-storage",
   "cinder/api"=>"br-mgmt",
   "cinder/iscsi"=>"br-storage",
   "fw-admin"=>"br-fw-admin",
   "glance/api"=>"br-mgmt",
   "glance/glare"=>"br-mgmt",
   "heat/api"=>"br-mgmt",
   "horizon"=>"br-mgmt",
   "ironic/api"=>"br-mgmt",
   "keystone/api"=>"br-mgmt",
   "management"=>"br-mgmt",
   "mgmt/corosync"=>"br-mgmt",
   "mgmt/database"=>"br-mgmt",
   "mgmt/memcache"=>"br-mgmt",
   "mgmt/messaging"=>"br-mgmt",
   "mgmt/vip"=>"br-mgmt",
   "mongo/db"=>"br-mgmt",
   "murano/api"=>"br-mgmt",
   "murano/cfapi"=>"br-mgmt",
   "neutron/api"=>"br-mgmt",
   "neutron/mesh"=>"br-mesh",
   "nova/api"=>"br-mgmt",
   "nova/migration"=>"br-mgmt",
   "sahara/api"=>"br-mgmt",
   "storage"=>"br-storage",
   "swift/api"=>"br-mgmt",
   "swift/replication"=>"br-storage"},
 "transformations"=>
  [{"action"=>"add-br", "name"=>"br-fw-admin"},
   {"action"=>"add-br", "name"=>"br-mgmt"},
   {"action"=>"add-br", "name"=>"br-storage"},
   {"action"=>"add-br", "name"=>"br-mesh"},
   {"action"=>"add-port", "bridge"=>"br-mgmt", "name"=>"enP1p3s0f0.1112"},
   {"action"=>"add-port", "bridge"=>"br-storage", "name"=>"enP1p3s0f0.1111"},
   {"action"=>"add-port", "bridge"=>"br-mesh", "name"=>"enP1p3s0f0.1113"},
   {"action"=>"add-port", "bridge"=>"br-fw-admin", "name"=>"enP1p9s0"}],
 "version"=>"1.1"}

So l23network puppet module ignores actual interface name from "interfaces" section of "network_scheme" and tries to use lower case version of it

Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty

Kernel: Linux hnode1-5 3.13.0-107-generic

Revision history for this message
Sergii Golovatiuk (sgolovatiuk) wrote :

Could you provide with output of /etc/udev/rules.d/70-persistent-net.rules ? Thank you in advance.

Revision history for this message
Andrey Bubyr (abubyr) wrote :

Sure

root@hnode1-5:~# cat /etc/udev/rules.d/70-persistent-net.rules
# Autogenerated by curtin
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="7c:fe:90:95:60:80", NAME="enP1p8s0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="a0:42:3f:31:1c:3e", NAME="enP1p3s0f2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="a0:42:3f:31:1c:40", NAME="enP1p3s0f3"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="a0:42:3f:31:1c:3a", NAME="enP1p3s0f0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="7c:fe:90:96:7d:c1", NAME="enP1p9s0d1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="7c:fe:90:96:7d:c0", NAME="enP1p9s0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="a0:42:3f:31:1c:3c", NAME="enP1p3s0f1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="7c:fe:90:95:60:81", NAME="enP1p8s0d1"

root@hnode1-5:~# lspci | grep -i Net
0001:03:00.0 Ethernet controller: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet (rev 11)
0001:03:00.1 Ethernet controller: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet (rev 11)
0001:03:00.2 Ethernet controller: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet (rev 11)
0001:03:00.3 Ethernet controller: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet (rev 11)
0001:08:00.0 Ethernet controller: Mellanox Technologies MT27500 Family [ConnectX-3]
0001:09:00.0 Ethernet controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro]

Changed in fuel:
milestone: none → 11.0
assignee: nobody → Fuel Sustaining (fuel-sustaining-team)
importance: Undecided → High
tags: added: area-library l23network
Changed in fuel:
status: New → Confirmed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to fuel-library (master)

Fix proposed to branch: master
Review: https://review.openstack.org/443244

Changed in fuel:
assignee: Fuel Sustaining (fuel-sustaining-team) → Sergii Rizvan (srizvan)
status: Confirmed → In Progress
Revision history for this message
Sergey Vasilenko (xenolog) wrote :

> Actually there is NIC with name enP1p3s0f0, e.g. upper-case 'P':
> root@hnode1-5:~# ip link show enP1p3s0f0
> 2: enP1p3s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
> link/ether a0:42:3f:31:1c:3a brd ff:ff:ff:ff:ff:ff

Device naming with UPPER case in the middle of interface name is wrong. Such names is incompotible with Consistent Network Device Naming convention: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Understanding_the_Predictable_Network_Interface_Device_Names.html

Changed in fuel:
status: In Progress → Invalid
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on fuel-library (master)

Change abandoned by Sergii Rizvan (<email address hidden>) on branch: master
Review: https://review.openstack.org/443244

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.