From f3d641d946a2e04f6767a13d132cddca39ae134d Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Wed, 19 Jan 2022 13:27:08 -0500 Subject: [PATCH 1/2] sources/azure: always initialize _ephemeral_dhcp_ctx on unpickle Avoid requirement of getattr() and ensure _ephemeral_dhcp_ctx isn't persisted in the cache. Signed-off-by: Chris Patterson --- cloudinit/sources/DataSourceAzure.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py index 7134c95a2f4..6a1d0d4a0fc 100755 --- a/cloudinit/sources/DataSourceAzure.py +++ b/cloudinit/sources/DataSourceAzure.py @@ -299,6 +299,8 @@ def __init__(self, sys_cfg, distro, paths): def _unpickle(self, ci_pkl_version: int) -> None: super()._unpickle(ci_pkl_version) + + self._ephemeral_dhcp_ctx = None if not hasattr(self, "iso_dev"): self.iso_dev = None @@ -513,9 +515,10 @@ def crawl_metadata(self): if perform_reprovision or perform_reprovision_after_nic_attach: LOG.info("Reporting ready to Azure after getting ReprovisionData") - use_cached_ephemeral = self.distro.networking.is_up( - self.fallback_interface - ) and getattr(self, "_ephemeral_dhcp_ctx", None) + use_cached_ephemeral = ( + self.distro.networking.is_up(self.fallback_interface) + and self._ephemeral_dhcp_ctx + ) if use_cached_ephemeral: self._report_ready(lease=self._ephemeral_dhcp_ctx.lease) self._ephemeral_dhcp_ctx.clean_network() # Teardown ephemeral @@ -1321,8 +1324,8 @@ def _report_failure(self, description=None) -> bool: try: if ( self.distro.networking.is_up(self.fallback_interface) - and getattr(self, "_ephemeral_dhcp_ctx", None) - and getattr(self._ephemeral_dhcp_ctx, "lease", None) + and self._ephemeral_dhcp_ctx + and self._ephemeral_dhcp_ctx.lease and unknown_245_key in self._ephemeral_dhcp_ctx.lease ): report_diagnostic_event( From 9c41f4e9adaa31ca0923f9e823dbfdcd00b7ff31 Mon Sep 17 00:00:00 2001 From: Chris Patterson Date: Wed, 19 Jan 2022 14:01:13 -0500 Subject: [PATCH 2/2] sources/azure: add check for expected lease value Signed-off-by: Chris Patterson --- cloudinit/sources/DataSourceAzure.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py index 6a1d0d4a0fc..860275783c2 100755 --- a/cloudinit/sources/DataSourceAzure.py +++ b/cloudinit/sources/DataSourceAzure.py @@ -518,6 +518,7 @@ def crawl_metadata(self): use_cached_ephemeral = ( self.distro.networking.is_up(self.fallback_interface) and self._ephemeral_dhcp_ctx + and self._ephemeral_dhcp_ctx.lease ) if use_cached_ephemeral: self._report_ready(lease=self._ephemeral_dhcp_ctx.lease)