Skip to main content

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;