origincloud_pvs/lib.rs
1//! The Origin Cloud persistent volume service (PVS): block storage volumes,
2//! their snapshots, and the storage classes they come in.
3//!
4//! The clients are generated from the API definitions; what they share,
5//! such as credentials, retries and errors, is in
6//! [`origincloud_core`].
7//!
8//! ```no_run
9//! use origincloud_core::protobuf::FieldMask;
10//! use origincloud_pvs::v1beta1::{
11//! CreateVolumeRequest, DeleteVolumeRequest, UpdateVolumeRequest, Volume, VolumeClient,
12//! };
13//!
14//! # async fn example() -> Result<(), origincloud_core::Error> {
15//! let client = origincloud_core::Client::new()?;
16//! let volumes = VolumeClient::new(&client);
17//!
18//! let volume = volumes
19//! .create_volume(CreateVolumeRequest {
20//! parent: "projects/my-project-123/zones/eu-central1-az1".to_owned(),
21//! volume: Some(Volume { size_gib: 10, ..Default::default() }),
22//! ..Default::default()
23//! })
24//! .await?
25//! .wait()
26//! .await?;
27//!
28//! let volume = volumes
29//! .update_volume(UpdateVolumeRequest {
30//! volume: Some(Volume { name: volume.name, size_gib: 20, ..Default::default() }),
31//! update_mask: Some(FieldMask { paths: vec!["size_gib".to_owned()] }),
32//! ..Default::default()
33//! })
34//! .await?
35//! .wait()
36//! .await?;
37//! println!("{} has {} GiB", volume.name, volume.size_gib);
38//!
39//! volumes
40//! .delete_volume(DeleteVolumeRequest { name: volume.name, ..Default::default() })
41//! .await?
42//! .wait()
43//! .await?;
44//! # Ok(())
45//! # }
46//! ```
47
48mod generated;
49
50pub use generated::*;
51
52/// The README's examples, compiled as tests.
53#[doc = include_str!("../../../README.md")]
54#[cfg(doctest)]
55pub struct ReadmeDoctests;