Crates.io | oxide |
lib.rs | oxide |
version | 0.5.0+20240502.0 |
source | src |
created_at | 2023-08-28 21:18:15.589367 |
updated_at | 2024-07-15 18:35:17.373245 |
description | SDK for the Oxide rack |
homepage | |
repository | https://github.com/oxidecomputer/oxide.rs |
max_upload_size | |
id | 957371 |
size | 2,192,860 |
Generated bindings for the Oxide API.
The oxide
crate is available on crates.io. You'll probably want to use tokio
as well. Add them to your Cargo.toml
file
or use cargo add
:
$ cargo add oxide
$ cargo add tokio
To connect to the Oxide API, the SDK needs a host URL and a token. There are two ways to specify these:
The SDK will first look for the environment variables, and if they are not defined, it will look for the config file.
Create a new oxide::Client
like this:
use futures::StreamExt;
use oxide::{config::Config, context::Context, prelude::*};
#[tokio::main]
async fn main() {
// Get a client from the on-disk configuration.
let context = Context::new(Config::default()).expect("unabled to create context");
let client: &Client = context.client().expect("unable to get client");
// Start using the client!
// For example we can look at the projects in our silo:
let mut projects = client.project_list().stream();
loop {
match projects.next().await {
// No more items.
None => break,
// Print the name of a project.
Some(Ok(project)) => println!("project {}", *project.name),
// Something went wrong
Some(Err(err)) => println!("error {}", err),
}
}
}