Crates.io | xo-api-client |
lib.rs | xo-api-client |
version | 0.1.1 |
source | src |
created_at | 2021-06-05 16:03:46.526209 |
updated_at | 2021-11-06 19:48:15.51182 |
description | Unofficial crate for accessing Xen Orchestra through its API |
homepage | |
repository | https://github.com/usbalbin/xo-api-client |
max_upload_size | |
id | 406543 |
size | 121,104 |
Unofficial Rust crate for accessing Xen Orchestra through its API
The library is still in early development, please do not use in production. The API is nowhere near complete and only covers a very small fraction of XO's api. Lots of things might get changed and/or added in breaking ways at any time.
This library uses the tokio v1 runtime
Example of listing all VMs with the tag Test
use std::collections::BTreeMap;
use xo_api_client::{credentials::EmailAndPassword, Client, Vm, VmId};
// We dont care about any of the data under the "other" attribute
// in this example
#[derive(serde::Deserialize)]
struct OtherInfo {}
impl xo_api_client::api::vm::OtherInfo for OtherInfo {}
#[tokio::main]
async fn main() {
let url = "ws://localhost:8080/api/";
let email = String::from("admin@admin.net");
let password = String::from("admin");
let con = Client::connect(url)
.await
.expect("Failed to connect to server");
con.session
.sign_in(EmailAndPassword { email, password })
.await
.expect("Failed to sign in");
let all_vms: BTreeMap<VmId, Vm<OtherInfo>> =
con.get_vms(None, None).await.expect("Failed to list VMs");
let test_vms = all_vms
.iter()
.filter(|(_id, vm)| vm.tags.iter().any(|tag| tag == "Test"));
println!("All VMs with the tag 'Test':");
for (id, vm) in test_vms {
println!("ID: {:?}, Name: {}", id, vm.name_label);
}
}
xo-api-client
is distributed under the terms of both the MIT license and
the Apache License (Version 2.0).
See LICENSE-APACHE, and LICENSE-MIT for details.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in xo-api-client by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.