use futures::stream::{StreamExt, TryStreamExt};
#[cfg(feature = "baremetal")]
#[tokio::main(flavor = "current_thread")]
async fn main() {
env_logger::init();
let os = openstack::Cloud::from_env()
.await
.expect("Failed to create an identity provider from the environment");
let sorting = openstack::baremetal::NodeSortKey::Name;
let nodes: Vec<openstack::baremetal::Node> = os
.find_baremetal_nodes()
.sort_by(openstack::Sort::Asc(sorting))
.detailed()
.into_stream()
.take(10)
.try_collect()
.await
.expect("Cannot list servers");
println!("First 10 nodes:");
for s in &nodes {
println!(
"ID = {}, Name = {}",
s.id(),
s.name().clone().unwrap_or_default()
);
}
let state = openstack::baremetal::NodeFilter::ProvisionState(
openstack::baremetal::ProvisionState::Available,
);
let available = os
.find_baremetal_nodes()
.sort_by(openstack::Sort::Asc(sorting))
.with(state)
.all()
.await
.expect("Cannot list nodes");
println!("All available nodes:");
for s in &available {
println!(
"ID = {}, Name = {}",
s.id(),
s.name().clone().unwrap_or_default()
);
}
}
#[cfg(not(feature = "baremetal"))]
fn main() {
panic!("This example cannot run with 'baremetal' feature disabled");
}