[−][src]Crate openstack
OpenStack SDK in Rust.
The goal of this project is to provide a simple API for working with OpenStack clouds.
Usage
Start with authentication, then create a Cloud object and use it for OpenStack API calls.
Examples
List servers
Get authentication parameters from the environment and get UUIDs of all servers.
extern crate openstack; fn get_server_uuids() -> openstack::Result<Vec<String>> { let os = openstack::Cloud::from_env()?; let server_names = os .list_servers()? .into_iter() .map(|server| server.id().clone()) .collect(); Ok(server_names) }
Find images
Find public images using Identity password authentication with the default region:
extern crate fallible_iterator; extern crate openstack; use fallible_iterator::FallibleIterator; fn get_public_image_names() -> openstack::Result<Vec<String>> { let scope = openstack::auth::Scope::Project { project: openstack::IdOrName::from_name("project1"), domain: Some(openstack::IdOrName::from_id("default")), }; let auth = openstack::auth::Password::new( "https://cloud.local/identity", "admin", "pa$$w0rd", "Default" ) .expect("Invalid auth_url") .with_scope(scope); let os = openstack::Cloud::new(auth); let image_names = os .find_images() .with_visibility(openstack::image::ImageVisibility::Public) .into_iter() // This `map` comes from fallible-iterator, thus the closure returns a `Result`. .map(|image| Ok(image.name().clone())) .collect()?; Ok(image_names) }
Notice the difference between list_*
methods (return a result with a vector) and find_*
methods (return a query builder that can be used to create a fallible iterator).
Create server
Create a server with authentication from a clouds.yaml
file:
extern crate openstack; extern crate waiter; // Required for the `wait` call. use waiter::Waiter; fn create_server() -> openstack::Result<openstack::compute::Server> { openstack::Cloud::from_config("my-cloud-1")? .new_server("test-server-1", "x-large") .with_image("centos-7") .with_network("private") .with_keypair("default") .create()? .wait() }
Requirements
This crate requires Rust 2018 edition and rustc version 1.43.0 or newer.
Modules
auth | Reimports of authentication bits from |
common | Types and traits shared by all API parts. |
compute | Compute API implementation bits. |
image | Image API implementation bits. |
network | Network API implementation bits. |
object_storage | Object storage API implementation bits. |
session | Reimport of the synchronous session from |
Structs
Cloud | OpenStack cloud API. |
EndpointFilters | Endpoint filters for looking up endpoints. |
Error | Error from an OpenStack call. |
ValidInterfaces | A list of acceptable interface types. |
Enums
ErrorKind | Kind of an error. |
IdOrName | A reference to a resource by its ID or name. |
InterfaceType | Interface type: public, internal or admin. |
Sort | Sorting request. |
Traits
Refresh | Trait representing something that can be refreshed. |
Type Definitions
Result | A result of an OpenStack operation. |