use std::env;
use openstack::waiter::Waiter;
#[cfg(feature = "compute")]
#[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 name = env::args().nth(1).expect("Provide a server name");
let flavor = env::args().nth(2).expect("Provide a flavor");
let image = env::args().nth(3).expect("Provide an image");
let network = env::args().nth(4).expect("Provide a network");
let keypair = env::args().nth(5).expect("Provide a key pair");
let waiter = os
.new_server(name, flavor)
.with_image(image)
.with_network(network)
.with_keypair(keypair)
.with_metadata("key", "value")
.create()
.await
.expect("Cannot create a server");
{
let current = waiter.current_state();
println!(
"ID = {}, Name = {}, Status = {:?}, Power = {:?}",
current.id(),
current.name(),
current.status(),
current.power_state()
);
}
let server = waiter.wait().await.expect("Server did not reach ACTIVE");
println!(
"ID = {}, Name = {}, Status = {:?}, Power = {:?}",
server.id(),
server.name(),
server.status(),
server.power_state()
);
}
#[cfg(not(feature = "compute"))]
fn main() {
panic!("This example cannot run with 'compute' feature disabled");
}