fn get_backup_provisioning_info()

in identity/aziot-identityd/src/identity.rs [723:759]


    fn get_backup_provisioning_info(
        &self,
        credentials: aziot_identity_common::Credentials,
    ) -> Option<IoTHubDevice> {
        let mut prev_device_info_path = self.homedir_path.clone();
        prev_device_info_path.push(DEVICE_BACKUP_LOCATION);

        if !prev_device_info_path.exists() {
            return None;
        }

        match HubDeviceInfo::new(&prev_device_info_path) {
            Ok(device_info) => match device_info {
                Some(device_info) => {
                    let device = IoTHubDevice {
                        local_gateway_hostname: device_info.local_gateway_hostname,
                        iothub_hostname: device_info.hub_name,
                        device_id: device_info.device_id,
                        credentials,
                    };

                    Some(device)
                }
                None => None,
            },
            Err(err) => {
                log::warn!("Ignoring invalid device info backup: {}", err);

                // Remove the invalid device info so it's not checked when reconciling identities.
                if let Err(err) = std::fs::remove_file(&prev_device_info_path) {
                    log::warn!("Failed to delete invalid device info backup: {}", err);
                }

                None
            }
        }
    }