fn retrieve_network_information()

in nfm-controller/src/metadata/eni.rs [137:171]


fn retrieve_network_information(client: &aws_config::imds::Client) -> Vec<NetworkInterfaceInfo> {
    let rt = match tokio::runtime::Runtime::new() {
        Ok(rt) => rt,
        Err(err) => {
            error!(error = err.to_string(); "Error creating tokio runtime");
            return vec![];
        }
    };

    rt.block_on(async {
        match client
            .get("/latest/meta-data/network/interfaces/macs/")
            .await
        {
            Ok(macs) => {
                let mut network_information = vec![];
                let macs = String::from(macs);
                for mac in macs.split('\n') {
                    // There is trailing backslash in each line.
                    let mut mac = mac.to_string();
                    if !mac.is_empty() && mac.ends_with('/') {
                        mac.pop();
                    }

                    network_information.extend(retrieve_mac_information(client, mac).await)
                }
                network_information
            }
            Err(err) => {
                error!(error = err.to_string(); "Error retrieving network information");
                vec![]
            }
        }
    })
}