use crate::{
Copyset, CopysetState, DrainCopysetStorageResponse, Error, StoragesService,
UpdateVolumeCopysetConfigRequest, VolumeBlockPlacementConfig, VolumeBlockPlacementResizeResult,
VolumesService,
};
pub type PairState = CopysetState;
pub type Pair = Copyset;
pub type DrainPairStorageResponse = DrainCopysetStorageResponse;
#[derive(Debug, Clone)]
pub struct UpdateVolumePairConfigRequest {
pub target_pair_count: i32,
}
impl From<&UpdateVolumePairConfigRequest> for UpdateVolumeCopysetConfigRequest {
fn from(req: &UpdateVolumePairConfigRequest) -> Self {
UpdateVolumeCopysetConfigRequest { target_copyset_count: req.target_pair_count }
}
}
impl StoragesService {
pub async fn list_pairs(
&self,
storage_id: i64,
state: Option<&str>,
include_retired: Option<bool>,
) -> Result<Vec<Pair>, Error> {
self.list_copysets(storage_id, state, include_retired).await
}
pub async fn get_pair_status(&self, storage_id: i64, pair_id: &str) -> Result<Pair, Error> {
self.get_copyset_status(storage_id, pair_id).await
}
pub async fn drain_pair(&self, storage_id: i64, pair_id: &str) -> Result<DrainPairStorageResponse, Error> {
self.drain_copyset(storage_id, pair_id).await
}
}
impl VolumesService {
pub async fn get_pair_config(&self, volume_id: i64) -> Result<VolumeBlockPlacementConfig, Error> {
self.get_copyset_config(volume_id).await
}
pub async fn update_pair_config(
&self,
volume_id: i64,
req: &UpdateVolumePairConfigRequest,
) -> Result<VolumeBlockPlacementResizeResult, Error> {
self.update_copyset_config(volume_id, &UpdateVolumeCopysetConfigRequest::from(req)).await
}
}