← Back to team overview

cloud-init-dev team mailing list archive

Re: [Merge] ~smoser/cloud-init:bug/1718029-fix-dhcp-parsing-from-networkd into cloud-init:master

 


Diff comments:

> diff --git a/cloudinit/sources/DataSourceCloudStack.py b/cloudinit/sources/DataSourceCloudStack.py
> index 7e0f9bb..028b1ed 100644
> --- a/cloudinit/sources/DataSourceCloudStack.py
> +++ b/cloudinit/sources/DataSourceCloudStack.py
> @@ -220,16 +221,31 @@ def get_latest_lease(lease_d=None):
>      return latest_file
>  
>  
> +def _get_server_address_from_networkd(leases_d='/run/systemd/netif/leases'):
> +    keyname = 'SERVER_ADDRESS'
> +    leases = dhcp.load_systemd_leases(leases_d=leases_d)
> +    for ifindex, data in sorted(leases.items()):
> +        if data.get(keyname):

return data.get(keyname) will default to None when not found, so just return "data.get(keyname)"

> +            return data[keyname]
> +    return None
> +
> +
>  def get_vr_address():
>      # Get the address of the virtual router via dhcp leases
>      # If no virtual router is detected, fallback on default gateway.
>      # See http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/4.8/virtual_machines/user-data.html # noqa
> +
> +    # Try networkd first...
> +    latest_address = _get_server_address_from_networkd()
> +    if latest_address:
> +        return latest_address

Worth a LOG.debug("Found DHCP identifier from systemd %s") as with below?

> +
> +    # Try dhcp lease files next...
>      lease_file = get_latest_lease()
>      if not lease_file:
>          LOG.debug("No lease file found, using default gateway")
>          return get_default_gateway()
>  
> -    latest_address = None
>      with open(lease_file, "r") as fd:
>          for line in fd:
>              if "dhcp-server-identifier" in line:
> diff --git a/cloudinit/sources/helpers/azure.py b/cloudinit/sources/helpers/azure.py
> index 28ed0ae..9332b8d 100644
> --- a/cloudinit/sources/helpers/azure.py
> +++ b/cloudinit/sources/helpers/azure.py
> @@ -239,6 +239,14 @@ class WALinuxAgentShim(object):
>          return socket.inet_ntoa(packed_bytes)
>  
>      @staticmethod
> +    def _get_value_from_networkd_leases(leases_d='/run/systemd/netif/leases'):
> +        leases = dhcp.load_systemd_leases(leases_d=leases_d)
> +        for ifindex, data in sorted(leases.items()):
> +            if data.get('OPTION_245'):

This can just be "return data.get('OPTION_245')" since it defaults to None if not found, and we'd fall through to line 254 and return None anyway.

> +                return data['OPTION_245']
> +        return None
> +
> +    @staticmethod
>      def _get_value_from_leases_file(fallback_lease_file):
>          leases = []
>          content = util.load_file(fallback_lease_file)


-- 
https://code.launchpad.net/~smoser/cloud-init/+git/cloud-init/+merge/331664
Your team cloud-init commiters is requested to review the proposed merge of ~smoser/cloud-init:bug/1718029-fix-dhcp-parsing-from-networkd into cloud-init:master.


References