pub struct Cloud { /* private fields */ }
Expand description
OpenStack cloud API.
Provides high-level API for working with OpenStack clouds.
Implementations
sourceimpl Cloud
impl Cloud
sourcepub fn new<Auth: AuthMethod + 'static>(auth_method: Auth) -> Cloud
pub fn new<Auth: AuthMethod + 'static>(auth_method: Auth) -> Cloud
Create a new cloud object with a given authentication plugin.
See auth
module for details on how to authenticate
against OpenStack clouds.
Example
fn cloud() -> openstack::Result<openstack::Cloud> {
let auth = openstack::auth::Password::new(
"https://cloud.example.com",
"user1", "pa$$word", "Default")
.expect("Invalid authentication URL")
.with_project_scope("project1", "Default");
Ok(openstack::Cloud::new(auth))
}
See Also
- from_config to create a Cloud from clouds.yaml
- from_env to create a Cloud from environment variables
sourcepub fn from_config<S: AsRef<str>>(cloud_name: S) -> Result<Cloud>
pub fn from_config<S: AsRef<str>>(cloud_name: S) -> Result<Cloud>
Create a new cloud object from a configuration file
Example
let os = openstack::Cloud::from_config("cloud-1")?;
sourcepub fn from_env() -> Result<Cloud>
pub fn from_env() -> Result<Cloud>
Create a new cloud object from environment variables.
Example
let os = openstack::Cloud::from_env()?;
sourcepub fn with_endpoint_interface<S>(self, endpoint_interface: S) -> Cloudwhere
S: Into<String>,
pub fn with_endpoint_interface<S>(self, endpoint_interface: S) -> Cloudwhere
S: Into<String>,
Convert this cloud into one using the given endpoint interface.
Example
fn cloud_from_env() -> openstack::Result<openstack::Cloud> {
openstack::Cloud::from_env()
.map(|os| os.with_endpoint_interface("internal"))
}
sourcepub fn refresh(&mut self) -> Result<()>
pub fn refresh(&mut self) -> Result<()>
Refresh this Cloud
object (renew token, refetch service catalog, etc).
sourcepub fn find_flavors(&self) -> FlavorQuery
pub fn find_flavors(&self) -> FlavorQuery
Build a query against flavor list.
The returned object is a builder that should be used to construct the query.
sourcepub fn find_floating_ips(&self) -> FloatingIpQuery
pub fn find_floating_ips(&self) -> FloatingIpQuery
Build a query against floating IP list.
The returned object is a builder that should be used to construct the query.
sourcepub fn find_images(&self) -> ImageQuery
pub fn find_images(&self) -> ImageQuery
Build a query against image list.
The returned object is a builder that should be used to construct the query.
sourcepub fn find_keypairs(&self) -> KeyPairQuery
pub fn find_keypairs(&self) -> KeyPairQuery
Build a query against key pairs list.
The returned object is a builder that should be used to construct the query.
sourcepub fn find_networks(&self) -> NetworkQuery
pub fn find_networks(&self) -> NetworkQuery
Build a query against network list.
The returned object is a builder that should be used to construct the query.
sourcepub fn find_ports(&self) -> PortQuery
pub fn find_ports(&self) -> PortQuery
Build a query against port list.
The returned object is a builder that should be used to construct the query.
sourcepub fn find_servers(&self) -> ServerQuery
pub fn find_servers(&self) -> ServerQuery
Build a query against server list.
The returned object is a builder that should be used to construct the query.
Example
Sorting servers by access_ip_v4
and getting first 5 results:
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let sorting = openstack::compute::ServerSortKey::AccessIpv4;
let server_list = os.find_servers()
.sort_by(openstack::Sort::Asc(sorting)).with_limit(5)
.all().expect("Unable to fetch servers");
sourcepub fn find_subnets(&self) -> SubnetQuery
pub fn find_subnets(&self) -> SubnetQuery
Build a query against subnet list.
The returned object is a builder that should be used to construct the query.
sourcepub fn get_flavor<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Flavor>
pub fn get_flavor<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Flavor>
Find a flavor by its name or ID.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server = os.get_flavor("m1.medium").expect("Unable to get a flavor");
sourcepub fn get_floating_ip<Id: AsRef<str>>(&self, id: Id) -> Result<FloatingIp>
pub fn get_floating_ip<Id: AsRef<str>>(&self, id: Id) -> Result<FloatingIp>
Find a floating IP by its ID.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server = os.get_floating_ip("031e08c7-2ca7-4c0b-9923-030c8d946ba4")
.expect("Unable to get a floating IP");
sourcepub fn get_image<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Image>
pub fn get_image<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Image>
Find an image by its name or ID.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server = os.get_image("centos7").expect("Unable to get a image");
sourcepub fn get_keypair<Id: AsRef<str>>(&self, name: Id) -> Result<KeyPair>
pub fn get_keypair<Id: AsRef<str>>(&self, name: Id) -> Result<KeyPair>
Find a key pair by its name or ID.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server = os.get_keypair("default").expect("Unable to get a key pair");
sourcepub fn get_network<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Network>
pub fn get_network<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Network>
Find an network by its name or ID.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server = os.get_network("centos7").expect("Unable to get a network");
sourcepub fn get_port<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Port>
pub fn get_port<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Port>
Find an port by its name or ID.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server = os.get_port("4d9c1710-fa02-49f9-8218-291024ef4140")
.expect("Unable to get a port");
sourcepub fn get_server<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Server>
pub fn get_server<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Server>
Find a server by its name or ID.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server = os.get_server("8a1c355b-2e1e-440a-8aa8-f272df72bc32")
.expect("Unable to get a server");
sourcepub fn get_subnet<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Subnet>
pub fn get_subnet<Id: AsRef<str>>(&self, id_or_name: Id) -> Result<Subnet>
Find an subnet by its name or ID.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server = os.get_subnet("private-subnet")
.expect("Unable to get a subnet");
sourcepub fn list_flavors(&self) -> Result<Vec<FlavorSummary>>
pub fn list_flavors(&self) -> Result<Vec<FlavorSummary>>
List all flavors.
This call can yield a lot of results, use the find_flavors call to limit the number of flavors to receive.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server_list = os.list_flavors().expect("Unable to fetch flavors");
sourcepub fn list_floating_ips(&self) -> Result<Vec<FloatingIp>>
pub fn list_floating_ips(&self) -> Result<Vec<FloatingIp>>
List all floating IPs
This call can yield a lot of results, use the find_floating_ips call to limit the number of networks to receive.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server_list = os.list_floating_ips().expect("Unable to fetch floating IPs");
sourcepub fn list_images(&self) -> Result<Vec<Image>>
pub fn list_images(&self) -> Result<Vec<Image>>
List all images.
This call can yield a lot of results, use the find_images call to limit the number of images to receive.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server_list = os.list_images().expect("Unable to fetch images");
sourcepub fn list_keypairs(&self) -> Result<Vec<KeyPair>>
pub fn list_keypairs(&self) -> Result<Vec<KeyPair>>
List all key pairs.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let result = os.list_keypairs().expect("Unable to fetch key pairs");
sourcepub fn list_networks(&self) -> Result<Vec<Network>>
pub fn list_networks(&self) -> Result<Vec<Network>>
List all networks.
This call can yield a lot of results, use the find_networks call to limit the number of networks to receive.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server_list = os.list_networks().expect("Unable to fetch networks");
sourcepub fn list_ports(&self) -> Result<Vec<Port>>
pub fn list_ports(&self) -> Result<Vec<Port>>
List all ports.
This call can yield a lot of results, use the find_ports call to limit the number of ports to receive.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server_list = os.list_ports().expect("Unable to fetch ports");
sourcepub fn list_servers(&self) -> Result<Vec<ServerSummary>>
pub fn list_servers(&self) -> Result<Vec<ServerSummary>>
List all servers.
This call can yield a lot of results, use the find_servers call to limit the number of servers to receive.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server_list = os.list_servers().expect("Unable to fetch servers");
sourcepub fn list_subnets(&self) -> Result<Vec<Subnet>>
pub fn list_subnets(&self) -> Result<Vec<Subnet>>
List all subnets.
This call can yield a lot of results, use the find_subnets call to limit the number of subnets to receive.
Example
use openstack;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let server_list = os.list_subnets().expect("Unable to fetch subnets");
sourcepub fn new_floating_ip<N>(&self, floating_network: N) -> NewFloatingIpwhere
N: Into<NetworkRef>,
pub fn new_floating_ip<N>(&self, floating_network: N) -> NewFloatingIpwhere
N: Into<NetworkRef>,
Prepare a new floating IP for creation.
This call returns a NewFloatingIp
object, which is a builder
to populate floating IP fields.
sourcepub fn new_keypair<S>(&self, name: S) -> NewKeyPairwhere
S: Into<String>,
pub fn new_keypair<S>(&self, name: S) -> NewKeyPairwhere
S: Into<String>,
Prepare a new key pair for creation.
This call returns a NewKeyPair
object, which is a builder to populate
key pair fields.
sourcepub fn new_network(&self) -> NewNetwork
pub fn new_network(&self) -> NewNetwork
Prepare a new network for creation.
This call returns a NewNetwork
object, which is a builder to populate
network fields.
sourcepub fn new_port<N>(&self, network: N) -> NewPortwhere
N: Into<NetworkRef>,
pub fn new_port<N>(&self, network: N) -> NewPortwhere
N: Into<NetworkRef>,
Prepare a new port for creation.
This call returns a NewPort
object, which is a builder to populate
port fields.
sourcepub fn new_server<S, F>(&self, name: S, flavor: F) -> NewServerwhere
S: Into<String>,
F: Into<FlavorRef>,
pub fn new_server<S, F>(&self, name: S, flavor: F) -> NewServerwhere
S: Into<String>,
F: Into<FlavorRef>,
Prepare a new server for creation.
This call returns a NewServer
object, which is a builder to populate
server fields.
sourcepub fn new_subnet<N>(&self, network: N, cidr: IpNet) -> NewSubnetwhere
N: Into<NetworkRef>,
pub fn new_subnet<N>(&self, network: N, cidr: IpNet) -> NewSubnetwhere
N: Into<NetworkRef>,
Prepare a new subnet for creation.
This call returns a NewSubnet
object, which is a builder to populate
subnet fields.
Example
extern crate ipnet;
extern crate openstack;
use std::net;
let os = openstack::Cloud::from_env().expect("Unable to authenticate");
let cidr = ipnet::Ipv4Net::new(net::Ipv4Addr::new(192, 168, 1, 0), 24)
.unwrap().into();
let new_subnet = os.new_subnet("private-net", cidr)
.with_name("private-subnet")
.create().expect("Unable to create subnet");