use async_trait::async_trait;
use tracing::{debug, error, Level};
use crate::Provider;
const METADATA_URL: &str = "http://169.254.169.254/openstack/";
pub const IDENTIFIER: &str = "openstack";
pub struct OpenStack;
#[async_trait]
impl Provider for OpenStack {
async fn identify(&self) -> bool {
crate::identify(self, IDENTIFIER).await
}
async fn check_metadata_server(&self) -> bool {
let span = tracing::span!(Level::TRACE, "check_metadata_server");
let _enter = span.enter();
debug!(
"Checking {} metadata using url: {}",
IDENTIFIER, METADATA_URL
);
return match reqwest::get(METADATA_URL).await {
Ok(resp) => resp.status().is_success(),
Err(err) => {
error!("Error making request: {:?}", err);
false
}
};
}
async fn check_vendor_file(&self) -> bool {
let span = tracing::span!(Level::TRACE, "check_vendor_file");
let _enter = span.enter();
debug!("Vendor file checking currently unimplemented");
false
}
}