← Back to team overview

cloud-init-dev team mailing list archive

[Merge] ~raharper/cloud-init:fix/netinfo-scope6-from-address into cloud-init:master

 

Ryan Harper has proposed merging ~raharper/cloud-init:fix/netinfo-scope6-from-address into cloud-init:master.

Commit message:
netinfo: Adjust ifconfig output parsing for FreeBSD ipv6 entries

FreeBSD ifconfig output for ipv6 addrs doesn't find scopeid values
when present in the output and the pformat rendering assumes that
an ipv6 address will have a 'scope6' entry in the netdev info
dictionary.  This patch finds the scopeid value, which is not
always inside <>, and in some cases v6 addrs don't have a scopeid
value in the output, so when rendering the table, allow scope6 value
to be replaced with the empty value.

LP: #1779672

Requested reviews:
  cloud-init commiters (cloud-init-dev)
Related bugs:
  Bug #1779672 in cloud-init: "netdev_pformat key error on FreeBSD with 18.3"
  https://bugs.launchpad.net/cloud-init/+bug/1779672

For more details, see:
https://code.launchpad.net/~raharper/cloud-init/+git/cloud-init/+merge/362813
-- 
Your team cloud-init commiters is requested to review the proposed merge of ~raharper/cloud-init:fix/netinfo-scope6-from-address into cloud-init:master.
diff --git a/cloudinit/netinfo.py b/cloudinit/netinfo.py
index 9ff929c..e91cd26 100644
--- a/cloudinit/netinfo.py
+++ b/cloudinit/netinfo.py
@@ -141,6 +141,9 @@ def _netdev_info_ifconfig(ifconfig_data):
                 res = re.match(r'.*<(\S+)>', toks[i + 1])
                 if res:
                     devs[curdev]['ipv6'][-1]['scope6'] = res.group(1)
+                else:
+                    devs[curdev]['ipv6'][-1]['scope6'] = toks[i + 1]
+
     return devs
 
 
@@ -389,8 +392,8 @@ def netdev_pformat():
                      addr.get('scope', empty), data["hwaddr"]))
             for addr in data.get('ipv6'):
                 tbl.add_row(
-                    (dev, data["up"], addr["ip"], empty, addr["scope6"],
-                     data["hwaddr"]))
+                    (dev, data["up"], addr["ip"], empty,
+                     addr.get("scope6", empty), data["hwaddr"]))
             if len(data.get('ipv6')) + len(data.get('ipv4')) == 0:
                 tbl.add_row((dev, data["up"], empty, empty, empty,
                              data["hwaddr"]))

Follow ups