diff options
Diffstat (limited to 'cloudinit/sources/helpers')
| -rw-r--r-- | cloudinit/sources/helpers/digitalocean.py | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/cloudinit/sources/helpers/digitalocean.py b/cloudinit/sources/helpers/digitalocean.py index 8a19c3bd..257989e8 100644 --- a/cloudinit/sources/helpers/digitalocean.py +++ b/cloudinit/sources/helpers/digitalocean.py @@ -23,11 +23,8 @@ def assign_ipv4_link_local(nic=None):      """      if not nic: -        for cdev in sorted(cloudnet.get_devicelist()): -            if cloudnet.is_physical(cdev): -                nic = cdev -                LOG.debug("assigned nic '%s' for link-local discovery", nic) -                break +        nic = get_link_local_nic() +        LOG.debug("selected interface '%s' for reading metadata", nic)      if not nic:          raise RuntimeError("unable to find interfaces to access the" @@ -57,6 +54,13 @@ def assign_ipv4_link_local(nic=None):      return nic +def get_link_local_nic(): +    nics = [f for f in cloudnet.get_devicelist() if cloudnet.is_physical(f)] +    if not nics: +        return None +    return min(nics, key=lambda d: cloudnet.read_sys_net_int(d, 'ifindex')) + +  def del_ipv4_link_local(nic=None):      """Remove the ip4LL address. While this is not necessary, the ip4LL         address is extraneous and confusing to users. | 
