cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #03530
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