#![allow(dead_code)]
use serde::Deserialize;
use serde_json::Value;
use std::env;
use openstack_sdk::api::find;
use openstack_sdk::api::QueryAsync;
use openstack_sdk::OpenStackError;
use openstack_sdk::{config::ConfigFile, AsyncOpenStack};
use openstack_sdk::api::compute::v2::flavor::find;
#[derive(Deserialize, Debug, Clone)]
struct Flavor {
disk: Option<i32>,
extra_specs: Option<Value>,
id: Option<String>,
name: Option<String>,
#[serde(rename = "os-flavor-access:is_public")]
os_flavor_access_is_public: Option<bool>,
ram: Option<i32>,
vcpus: Option<i32>,
}
#[tokio::main]
async fn main() -> Result<(), OpenStackError> {
let cfg = ConfigFile::new().unwrap();
let profile = cfg
.get_cloud_config(env::var("OS_CLOUD").expect("OS_CLOUD variable must be set"))
.unwrap()
.unwrap();
let client = AsyncOpenStack::new(&profile).await?;
let mut find_builder = find::Request::builder();
find_builder.id(env::var("FLAVOR_NAME").expect("FLAVOR_NAME variable must be set"));
let find_ep = find_builder.build().unwrap();
let find_data: Flavor = find(find_ep.clone()).query_async(&client).await?;
println!("Flavor Data = {find_data:?}");
let find_data_raw: Value = find(find_ep).query_async(&client).await?;
println!(
"Flavor raw json {:?}",
serde_json::to_string(&find_data_raw)?
);
Ok(())
}