diff --git a/glean/cmd.py b/glean/cmd.py index 4a8c9de..684deec 100644 --- a/glean/cmd.py +++ b/glean/cmd.py @@ -97,9 +97,14 @@ def write_redhat_interfaces(interfaces, sys_interfaces): continue if iname not in sys_interfaces: continue - interface_name = sys_interfaces[iname] - files_to_write.update( - _write_rh_interface(interface_name, interface)) + if interface['type'] == 'ipv4': + interface_name = sys_interfaces[iname] + files_to_write.update( + _write_rh_interface(interface_name, interface)) + if interface['type'] == 'ipv4_dhcp': + interface_name = sys_interfaces[iname] + files_to_write.update( + _write_rh_dhcp(interface_name, interface['mac_address'])) for mac, iname in sorted( sys_interfaces.items(), key=lambda x: x[1]): if _exists_rh_interface(iname): @@ -129,10 +134,22 @@ def write_debian_interfaces(interfaces, sys_interfaces): if iname not in sys_interfaces: continue interface = interfaces[iname] - link_type = "inet" + interface_name = sys_interfaces[iname] + iface_path = os.path.join(eni_d_path, '%s.cfg' % interface_name) + + if interface['type'] == 'ipv4_dhcp': + result = "auto {0}\n".format(interface_name) + result += "iface {0} inet dhcp\n".format(interface_name) + files_to_write[iface_path] = result + continue if interface['type'] == 'ipv6': link_type = "inet6" - interface_name = sys_interfaces[iname] + elif interface['type'] == 'ipv4': + link_type = "inet" + # We do not know this type of entry + if not link_type: + continue + result = "auto {0}\n".format(interface_name) result += "iface {name} {link_type} static\n".format( name=interface_name, link_type=link_type) @@ -148,7 +165,6 @@ def write_debian_interfaces(interfaces, sys_interfaces): result += pre_down.format( net=route['network'], mask=route['netmask'], gw=route['gateway']) - iface_path = os.path.join(eni_d_path, '%s.cfg' % interface_name) files_to_write[iface_path] = result for mac, iname in sorted( sys_interfaces.items(), key=lambda x: x[1]): diff --git a/glean/tests/fixtures/hp/sys/class/net/eth3/addr_assign_type b/glean/tests/fixtures/hp/sys/class/net/eth3/addr_assign_type new file mode 100644 index 0000000..573541a --- /dev/null +++ b/glean/tests/fixtures/hp/sys/class/net/eth3/addr_assign_type @@ -0,0 +1 @@ +0 diff --git a/glean/tests/fixtures/hp/sys/class/net/eth3/address b/glean/tests/fixtures/hp/sys/class/net/eth3/address new file mode 100644 index 0000000..297d5fb --- /dev/null +++ b/glean/tests/fixtures/hp/sys/class/net/eth3/address @@ -0,0 +1 @@ +bc:76:4e:12:a4:bb diff --git a/glean/tests/fixtures/hp/sys/class/net/eth3/carrier b/glean/tests/fixtures/hp/sys/class/net/eth3/carrier new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/glean/tests/fixtures/hp/sys/class/net/eth3/carrier @@ -0,0 +1 @@ +1 diff --git a/glean/tests/fixtures/liberty/mnt/config/openstack/latest/network_info.json b/glean/tests/fixtures/liberty/mnt/config/openstack/latest/network_info.json index 8987e90..665d16e 100644 --- a/glean/tests/fixtures/liberty/mnt/config/openstack/latest/network_info.json +++ b/glean/tests/fixtures/liberty/mnt/config/openstack/latest/network_info.json @@ -59,7 +59,14 @@ ], "ip_address": "192.0.2.2", "id": "network2" + }, + { + "network_id": "33333333-3333-3333-3333-333333333333", + "type": "ipv4_dhcp", + "link": "tap8aac87b9-37", + "id": "network3" } + ], "links": [ { @@ -82,6 +89,14 @@ "type": null, "id": "tap234ab34c-f1", "vif_id": "acdb875a-87da-76cb-984c-acd9a75dbca7" + }, + { + "ethernet_mac_address": "BC:76:4E:12:a4:bb", + "mtu": 1500, + "type": null, + "id": "tap8aac87b9-37", + "vif_id": "f12bedfa-87bv-a39f-1234-aaeb55bea7e6" } + ] } diff --git a/glean/tests/fixtures/liberty/sys/class/net/eth3/addr_assign_type b/glean/tests/fixtures/liberty/sys/class/net/eth3/addr_assign_type new file mode 100644 index 0000000..573541a --- /dev/null +++ b/glean/tests/fixtures/liberty/sys/class/net/eth3/addr_assign_type @@ -0,0 +1 @@ +0 diff --git a/glean/tests/fixtures/liberty/sys/class/net/eth3/address b/glean/tests/fixtures/liberty/sys/class/net/eth3/address new file mode 100644 index 0000000..297d5fb --- /dev/null +++ b/glean/tests/fixtures/liberty/sys/class/net/eth3/address @@ -0,0 +1 @@ +bc:76:4e:12:a4:bb diff --git a/glean/tests/fixtures/liberty/sys/class/net/eth3/carrier b/glean/tests/fixtures/liberty/sys/class/net/eth3/carrier new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/glean/tests/fixtures/liberty/sys/class/net/eth3/carrier @@ -0,0 +1 @@ +1 diff --git a/glean/tests/fixtures/nokey/sys/class/net/eth3/addr_assign_type b/glean/tests/fixtures/nokey/sys/class/net/eth3/addr_assign_type new file mode 100644 index 0000000..573541a --- /dev/null +++ b/glean/tests/fixtures/nokey/sys/class/net/eth3/addr_assign_type @@ -0,0 +1 @@ +0 diff --git a/glean/tests/fixtures/nokey/sys/class/net/eth3/address b/glean/tests/fixtures/nokey/sys/class/net/eth3/address new file mode 100644 index 0000000..297d5fb --- /dev/null +++ b/glean/tests/fixtures/nokey/sys/class/net/eth3/address @@ -0,0 +1 @@ +bc:76:4e:12:a4:bb diff --git a/glean/tests/fixtures/nokey/sys/class/net/eth3/carrier b/glean/tests/fixtures/nokey/sys/class/net/eth3/carrier new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/glean/tests/fixtures/nokey/sys/class/net/eth3/carrier @@ -0,0 +1 @@ +1 diff --git a/glean/tests/fixtures/rax/sys/class/net/eth3/addr_assign_type b/glean/tests/fixtures/rax/sys/class/net/eth3/addr_assign_type new file mode 100644 index 0000000..573541a --- /dev/null +++ b/glean/tests/fixtures/rax/sys/class/net/eth3/addr_assign_type @@ -0,0 +1 @@ +0 diff --git a/glean/tests/fixtures/rax/sys/class/net/eth3/address b/glean/tests/fixtures/rax/sys/class/net/eth3/address new file mode 100644 index 0000000..297d5fb --- /dev/null +++ b/glean/tests/fixtures/rax/sys/class/net/eth3/address @@ -0,0 +1 @@ +bc:76:4e:12:a4:bb diff --git a/glean/tests/fixtures/rax/sys/class/net/eth3/carrier b/glean/tests/fixtures/rax/sys/class/net/eth3/carrier new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/glean/tests/fixtures/rax/sys/class/net/eth3/carrier @@ -0,0 +1 @@ +1 diff --git a/glean/tests/fixtures/test/hp.centos.network.out b/glean/tests/fixtures/test/hp.centos.network.out index ec14a6c..95ba049 100644 --- a/glean/tests/fixtures/test/hp.centos.network.out +++ b/glean/tests/fixtures/test/hp.centos.network.out @@ -14,3 +14,11 @@ HWADDR=bc:76:4e:05:7b:06 ONBOOT=yes NM_CONTROLLED=no TYPE=Ethernet +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=bc:76:4e:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet diff --git a/glean/tests/fixtures/test/hp.debian.network.out b/glean/tests/fixtures/test/hp.debian.network.out index 54707c5..a221379 100644 --- a/glean/tests/fixtures/test/hp.debian.network.out +++ b/glean/tests/fixtures/test/hp.debian.network.out @@ -8,3 +8,6 @@ iface eth0 inet dhcp ### Write /etc/network/interfaces.d/eth1.cfg auto eth1 iface eth1 inet dhcp +### Write /etc/network/interfaces.d/eth3.cfg +auto eth3 +iface eth3 inet dhcp diff --git a/glean/tests/fixtures/test/hp.fedora.network.out b/glean/tests/fixtures/test/hp.fedora.network.out index ec14a6c..95ba049 100644 --- a/glean/tests/fixtures/test/hp.fedora.network.out +++ b/glean/tests/fixtures/test/hp.fedora.network.out @@ -14,3 +14,11 @@ HWADDR=bc:76:4e:05:7b:06 ONBOOT=yes NM_CONTROLLED=no TYPE=Ethernet +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=bc:76:4e:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet diff --git a/glean/tests/fixtures/test/hp.redhat.network.out b/glean/tests/fixtures/test/hp.redhat.network.out index ec14a6c..95ba049 100644 --- a/glean/tests/fixtures/test/hp.redhat.network.out +++ b/glean/tests/fixtures/test/hp.redhat.network.out @@ -14,3 +14,11 @@ HWADDR=bc:76:4e:05:7b:06 ONBOOT=yes NM_CONTROLLED=no TYPE=Ethernet +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=bc:76:4e:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet diff --git a/glean/tests/fixtures/test/hp.ubuntu.network.out b/glean/tests/fixtures/test/hp.ubuntu.network.out index 54707c5..a221379 100644 --- a/glean/tests/fixtures/test/hp.ubuntu.network.out +++ b/glean/tests/fixtures/test/hp.ubuntu.network.out @@ -8,3 +8,6 @@ iface eth0 inet dhcp ### Write /etc/network/interfaces.d/eth1.cfg auto eth1 iface eth1 inet dhcp +### Write /etc/network/interfaces.d/eth3.cfg +auto eth3 +iface eth3 inet dhcp diff --git a/glean/tests/fixtures/test/liberty.centos.network.out b/glean/tests/fixtures/test/liberty.centos.network.out index 40af8c3..9cfcf63 100644 --- a/glean/tests/fixtures/test/liberty.centos.network.out +++ b/glean/tests/fixtures/test/liberty.centos.network.out @@ -21,6 +21,14 @@ IPADDR=10.208.169.118 NETMASK=255.255.224.0 ONBOOT=yes NM_CONTROLLED=no +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=BC:76:4E:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet ### Write /etc/sysconfig/network-scripts/route-eth1 ADDRESS0=10.176.0.0 NETMASK0=255.240.0.0 diff --git a/glean/tests/fixtures/test/liberty.debian.network.out b/glean/tests/fixtures/test/liberty.debian.network.out index 136ff33..be8cdac 100644 --- a/glean/tests/fixtures/test/liberty.debian.network.out +++ b/glean/tests/fixtures/test/liberty.debian.network.out @@ -17,6 +17,9 @@ iface eth1 inet static pre-down route del -net 10.176.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true post-up route add -net 10.208.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true pre-down route del -net 10.208.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true +### Write /etc/network/interfaces.d/eth3.cfg +auto eth3 +iface eth3 inet dhcp ### Write /etc/resolv.conf nameserver 72.3.128.241 nameserver 72.3.128.240 diff --git a/glean/tests/fixtures/test/liberty.fedora.network.out b/glean/tests/fixtures/test/liberty.fedora.network.out index 40af8c3..9cfcf63 100644 --- a/glean/tests/fixtures/test/liberty.fedora.network.out +++ b/glean/tests/fixtures/test/liberty.fedora.network.out @@ -21,6 +21,14 @@ IPADDR=10.208.169.118 NETMASK=255.255.224.0 ONBOOT=yes NM_CONTROLLED=no +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=BC:76:4E:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet ### Write /etc/sysconfig/network-scripts/route-eth1 ADDRESS0=10.176.0.0 NETMASK0=255.240.0.0 diff --git a/glean/tests/fixtures/test/liberty.redhat.network.out b/glean/tests/fixtures/test/liberty.redhat.network.out index 40af8c3..9cfcf63 100644 --- a/glean/tests/fixtures/test/liberty.redhat.network.out +++ b/glean/tests/fixtures/test/liberty.redhat.network.out @@ -21,6 +21,14 @@ IPADDR=10.208.169.118 NETMASK=255.255.224.0 ONBOOT=yes NM_CONTROLLED=no +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=BC:76:4E:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet ### Write /etc/sysconfig/network-scripts/route-eth1 ADDRESS0=10.176.0.0 NETMASK0=255.240.0.0 diff --git a/glean/tests/fixtures/test/liberty.ubuntu.network.out b/glean/tests/fixtures/test/liberty.ubuntu.network.out index 136ff33..be8cdac 100644 --- a/glean/tests/fixtures/test/liberty.ubuntu.network.out +++ b/glean/tests/fixtures/test/liberty.ubuntu.network.out @@ -17,6 +17,9 @@ iface eth1 inet static pre-down route del -net 10.176.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true post-up route add -net 10.208.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true pre-down route del -net 10.208.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true +### Write /etc/network/interfaces.d/eth3.cfg +auto eth3 +iface eth3 inet dhcp ### Write /etc/resolv.conf nameserver 72.3.128.241 nameserver 72.3.128.240 diff --git a/glean/tests/fixtures/test/nokey.centos.network.out b/glean/tests/fixtures/test/nokey.centos.network.out index ec14a6c..95ba049 100644 --- a/glean/tests/fixtures/test/nokey.centos.network.out +++ b/glean/tests/fixtures/test/nokey.centos.network.out @@ -14,3 +14,11 @@ HWADDR=bc:76:4e:05:7b:06 ONBOOT=yes NM_CONTROLLED=no TYPE=Ethernet +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=bc:76:4e:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet diff --git a/glean/tests/fixtures/test/nokey.debian.network.out b/glean/tests/fixtures/test/nokey.debian.network.out index 54707c5..a221379 100644 --- a/glean/tests/fixtures/test/nokey.debian.network.out +++ b/glean/tests/fixtures/test/nokey.debian.network.out @@ -8,3 +8,6 @@ iface eth0 inet dhcp ### Write /etc/network/interfaces.d/eth1.cfg auto eth1 iface eth1 inet dhcp +### Write /etc/network/interfaces.d/eth3.cfg +auto eth3 +iface eth3 inet dhcp diff --git a/glean/tests/fixtures/test/nokey.fedora.network.out b/glean/tests/fixtures/test/nokey.fedora.network.out index ec14a6c..95ba049 100644 --- a/glean/tests/fixtures/test/nokey.fedora.network.out +++ b/glean/tests/fixtures/test/nokey.fedora.network.out @@ -14,3 +14,11 @@ HWADDR=bc:76:4e:05:7b:06 ONBOOT=yes NM_CONTROLLED=no TYPE=Ethernet +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=bc:76:4e:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet diff --git a/glean/tests/fixtures/test/nokey.redhat.network.out b/glean/tests/fixtures/test/nokey.redhat.network.out index ec14a6c..95ba049 100644 --- a/glean/tests/fixtures/test/nokey.redhat.network.out +++ b/glean/tests/fixtures/test/nokey.redhat.network.out @@ -14,3 +14,11 @@ HWADDR=bc:76:4e:05:7b:06 ONBOOT=yes NM_CONTROLLED=no TYPE=Ethernet +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=bc:76:4e:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet diff --git a/glean/tests/fixtures/test/nokey.ubuntu.network.out b/glean/tests/fixtures/test/nokey.ubuntu.network.out index 54707c5..a221379 100644 --- a/glean/tests/fixtures/test/nokey.ubuntu.network.out +++ b/glean/tests/fixtures/test/nokey.ubuntu.network.out @@ -8,3 +8,6 @@ iface eth0 inet dhcp ### Write /etc/network/interfaces.d/eth1.cfg auto eth1 iface eth1 inet dhcp +### Write /etc/network/interfaces.d/eth3.cfg +auto eth3 +iface eth3 inet dhcp diff --git a/glean/tests/fixtures/test/rax.centos.network.out b/glean/tests/fixtures/test/rax.centos.network.out index 40af8c3..52b6230 100644 --- a/glean/tests/fixtures/test/rax.centos.network.out +++ b/glean/tests/fixtures/test/rax.centos.network.out @@ -21,6 +21,14 @@ IPADDR=10.208.169.118 NETMASK=255.255.224.0 ONBOOT=yes NM_CONTROLLED=no +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=bc:76:4e:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet ### Write /etc/sysconfig/network-scripts/route-eth1 ADDRESS0=10.176.0.0 NETMASK0=255.240.0.0 diff --git a/glean/tests/fixtures/test/rax.debian.network.out b/glean/tests/fixtures/test/rax.debian.network.out index 136ff33..be8cdac 100644 --- a/glean/tests/fixtures/test/rax.debian.network.out +++ b/glean/tests/fixtures/test/rax.debian.network.out @@ -17,6 +17,9 @@ iface eth1 inet static pre-down route del -net 10.176.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true post-up route add -net 10.208.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true pre-down route del -net 10.208.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true +### Write /etc/network/interfaces.d/eth3.cfg +auto eth3 +iface eth3 inet dhcp ### Write /etc/resolv.conf nameserver 72.3.128.241 nameserver 72.3.128.240 diff --git a/glean/tests/fixtures/test/rax.fedora.network.out b/glean/tests/fixtures/test/rax.fedora.network.out index 40af8c3..52b6230 100644 --- a/glean/tests/fixtures/test/rax.fedora.network.out +++ b/glean/tests/fixtures/test/rax.fedora.network.out @@ -21,6 +21,14 @@ IPADDR=10.208.169.118 NETMASK=255.255.224.0 ONBOOT=yes NM_CONTROLLED=no +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=bc:76:4e:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet ### Write /etc/sysconfig/network-scripts/route-eth1 ADDRESS0=10.176.0.0 NETMASK0=255.240.0.0 diff --git a/glean/tests/fixtures/test/rax.redhat.network.out b/glean/tests/fixtures/test/rax.redhat.network.out index 40af8c3..52b6230 100644 --- a/glean/tests/fixtures/test/rax.redhat.network.out +++ b/glean/tests/fixtures/test/rax.redhat.network.out @@ -21,6 +21,14 @@ IPADDR=10.208.169.118 NETMASK=255.255.224.0 ONBOOT=yes NM_CONTROLLED=no +### Write /etc/sysconfig/network-scripts/ifcfg-eth3 +# Automatically generated, do not edit +DEVICE=eth3 +BOOTPROTO=dhcp +HWADDR=bc:76:4e:12:a4:bb +ONBOOT=yes +NM_CONTROLLED=no +TYPE=Ethernet ### Write /etc/sysconfig/network-scripts/route-eth1 ADDRESS0=10.176.0.0 NETMASK0=255.240.0.0 diff --git a/glean/tests/fixtures/test/rax.ubuntu.network.out b/glean/tests/fixtures/test/rax.ubuntu.network.out index 136ff33..be8cdac 100644 --- a/glean/tests/fixtures/test/rax.ubuntu.network.out +++ b/glean/tests/fixtures/test/rax.ubuntu.network.out @@ -17,6 +17,9 @@ iface eth1 inet static pre-down route del -net 10.176.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true post-up route add -net 10.208.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true pre-down route del -net 10.208.0.0 netmask 255.240.0.0 gw 10.208.160.1 || true +### Write /etc/network/interfaces.d/eth3.cfg +auto eth3 +iface eth3 inet dhcp ### Write /etc/resolv.conf nameserver 72.3.128.241 nameserver 72.3.128.240 diff --git a/rebuild-test-output.sh b/rebuild-test-output.sh index dbfa9c0..c92def4 100755 --- a/rebuild-test-output.sh +++ b/rebuild-test-output.sh @@ -26,6 +26,17 @@ for vendor_dir in $(find $SAMPLE_DIR \ > $SAMPLE_DIR/test/$vendor.keys.out for distro in debian ubuntu redhat fedora centos ; do python glean/cmd.py \ - -n --root $vendor_dir --distro $distro > $SAMPLE_DIR/test/$vendor.$distro.network.out + -n --root $vendor_dir --distro $distro | python -c 'import sys +skipping = False +for line in sys.stdin.readlines(): + if "eth2" in line: + skipping = True + continue + if line.startswith("### Write"): + skipping = False + if skipping: + continue + sys.stdout.write(line) +' > $SAMPLE_DIR/test/$vendor.$distro.network.out done done