Skip to content

Commit 89e8393

Browse files
mayastor-borstiagolobocastro
andcommitted
chore(bors): merge pull request #647
647: Snapshot/timeout: add missing volume timeouts and refactor naming r=tiagolobocastro a=tiagolobocastro fix(snapshot/timeout): add missing volume snapshot timeout Signed-off-by: Tiago Castro <[email protected]> --- refactor(snapshot/destroy): rename delete to destroy as per convention Signed-off-by: Tiago Castro <[email protected]> Co-authored-by: Tiago Castro <[email protected]>
2 parents 6b23df9 + caf1364 commit 89e8393

File tree

11 files changed

+56
-49
lines changed

11 files changed

+56
-49
lines changed

control-plane/agents/src/bin/core/tests/volume/snapshot.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use deployer_cluster::{Cluster, ClusterBuilder};
33
use grpc::operations::{
44
pool::traits::PoolOperations,
55
replica::traits::ReplicaOperations,
6-
volume::traits::{CreateVolumeSnapshot, DeleteVolumeSnapshot, VolumeOperations},
6+
volume::traits::{CreateVolumeSnapshot, DestroyVolumeSnapshot, VolumeOperations},
77
};
88
use std::time::Duration;
99
use stor_port::{
@@ -96,7 +96,7 @@ async fn snapshot() {
9696
assert!(!snaps.entries().is_empty());
9797

9898
vol_cli
99-
.delete_snapshot(&DeleteVolumeSnapshot::from(&replica_snapshot), None)
99+
.destroy_snapshot(&DestroyVolumeSnapshot::from(&replica_snapshot), None)
100100
.await
101101
.unwrap();
102102

@@ -143,7 +143,7 @@ async fn snapshot() {
143143

144144
tracing::info!("Nexus Snapshot: {nexus_snapshot:?}");
145145
vol_cli
146-
.delete_snapshot(&DeleteVolumeSnapshot::from(&nexus_snapshot), None)
146+
.destroy_snapshot(&DestroyVolumeSnapshot::from(&nexus_snapshot), None)
147147
.await
148148
.unwrap();
149149

@@ -207,7 +207,7 @@ async fn thin_provisioning(cluster: &Cluster, volume: Volume) {
207207
.await
208208
.unwrap();
209209
vol_cli
210-
.delete_snapshot(&DeleteVolumeSnapshot::from(&snapshot), None)
210+
.destroy_snapshot(&DestroyVolumeSnapshot::from(&snapshot), None)
211211
.await
212212
.unwrap();
213213

@@ -276,7 +276,7 @@ async fn pool_destroy_validation(cluster: &Cluster) {
276276
assert_eq!(del_error.kind, ReplyErrorKind::InUse);
277277

278278
vol_cli
279-
.delete_snapshot(&DeleteVolumeSnapshot::from(&replica_snapshot), None)
279+
.destroy_snapshot(&DestroyVolumeSnapshot::from(&replica_snapshot), None)
280280
.await
281281
.unwrap();
282282
}

control-plane/agents/src/bin/core/volume/service.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ use grpc::{
1818
context::Context,
1919
operations::{
2020
volume::traits::{
21-
CreateVolumeInfo, CreateVolumeSnapshot, CreateVolumeSnapshotInfo, DeleteVolumeSnapshot,
22-
DeleteVolumeSnapshotInfo, DestroyShutdownTargetsInfo, DestroyVolumeInfo,
23-
PublishVolumeInfo, RepublishVolumeInfo, SetVolumeReplicaInfo, ShareVolumeInfo,
24-
UnpublishVolumeInfo, UnshareVolumeInfo, VolumeOperations, VolumeSnapshot,
25-
VolumeSnapshots,
21+
CreateVolumeInfo, CreateVolumeSnapshot, CreateVolumeSnapshotInfo,
22+
DestroyShutdownTargetsInfo, DestroyVolumeInfo, DestroyVolumeSnapshot,
23+
DestroyVolumeSnapshotInfo, PublishVolumeInfo, RepublishVolumeInfo,
24+
SetVolumeReplicaInfo, ShareVolumeInfo, UnpublishVolumeInfo, UnshareVolumeInfo,
25+
VolumeOperations, VolumeSnapshot, VolumeSnapshots,
2626
},
2727
Pagination,
2828
},
@@ -184,14 +184,14 @@ impl VolumeOperations for Service {
184184
Ok(snapshot)
185185
}
186186

187-
async fn delete_snapshot(
187+
async fn destroy_snapshot(
188188
&self,
189-
request: &dyn DeleteVolumeSnapshotInfo,
189+
request: &dyn DestroyVolumeSnapshotInfo,
190190
_ctx: Option<Context>,
191191
) -> Result<(), ReplyError> {
192192
let service = self.clone();
193193
let request = request.info();
194-
Context::spawn(async move { service.delete_snapshot(request).await }).await??;
194+
Context::spawn(async move { service.destroy_snapshot(request).await }).await??;
195195
Ok(())
196196
}
197197

@@ -388,7 +388,7 @@ impl Service {
388388

389389
/// Delete a volume snapshot.
390390
#[tracing::instrument(level = "info", skip(self), err, fields(volume.uuid = ?request.source_id, snapshot.source_uuid = ?request.source_id, snapshot.uuid = %request.snap_id))]
391-
async fn delete_snapshot(&self, request: DeleteVolumeSnapshot) -> Result<(), SvcError> {
391+
async fn destroy_snapshot(&self, request: DestroyVolumeSnapshot) -> Result<(), SvcError> {
392392
// Fetch the snapshot spec.
393393
let snapshot = self.specs().volume_snapshot_rsc(request.snap_id()).ok_or(
394394
SvcError::VolSnapshotNotFound {

control-plane/grpc/proto/v1/volume/volume.proto

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -409,14 +409,14 @@ message CreateSnapshotReply {
409409
}
410410

411411
// Delete a snapshot of the volume
412-
message DeleteSnapshotRequest {
412+
message DestroySnapshotRequest {
413413
// uuid of the volume
414414
optional string volume_id = 1;
415415
// uuid of the snapshot
416416
string snapshot_id = 2;
417417
}
418-
// Reply type for a DeleteSnapshotRequest request
419-
message DeleteSnapshotReply {
418+
// Reply type for a DestroySnapshotRequest request
419+
message DestroySnapshotReply {
420420
optional common.ReplyError error = 1;
421421
}
422422

@@ -516,6 +516,6 @@ service VolumeGrpc {
516516

517517
// Snapshots
518518
rpc CreateSnapshot (CreateSnapshotRequest) returns (CreateSnapshotReply) {}
519-
rpc DeleteSnapshot (DeleteSnapshotRequest) returns (DeleteSnapshotReply) {}
519+
rpc DestroySnapshot (DestroySnapshotRequest) returns (DestroySnapshotReply) {}
520520
rpc GetSnapshots (GetSnapshotsRequest) returns (GetSnapshotsReply) {}
521521
}

control-plane/grpc/src/context.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ pub fn timeout_grpc(op_id: MessageId, timeout_opts: TimeoutOptions) -> Duration
5353
MessageIdVs::PublishVolume => min_timeouts.nexus(),
5454
MessageIdVs::UnpublishVolume => min_timeouts.nexus(),
5555
MessageIdVs::RepublishVolume => min_timeouts.nexus() * 2,
56+
MessageIdVs::CreateVolumeSnapshot => min_timeouts.volume_snapshot(),
57+
MessageIdVs::DestroyVolumeSnapshot => min_timeouts.volume_snapshot(),
5658

5759
MessageIdVs::CreateNexus => min_timeouts.nexus(),
5860
MessageIdVs::CreateNexusSnapshot => min_timeouts.nexus_snapshot(),

control-plane/grpc/src/operations/volume/client.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::{
99
ShareVolumeInfo, UnpublishVolumeInfo, UnshareVolumeInfo, VolumeOperations,
1010
VolumeSnapshot, VolumeSnapshots,
1111
},
12-
traits_snapshots::DeleteVolumeSnapshotInfo,
12+
traits_snapshots::DestroyVolumeSnapshotInfo,
1313
},
1414
Pagination,
1515
},
@@ -260,13 +260,13 @@ impl VolumeOperations for VolumeClient {
260260
}
261261

262262
#[tracing::instrument(name = "VolumeClient::delete_snapshot", level = "debug", skip(self))]
263-
async fn delete_snapshot(
263+
async fn destroy_snapshot(
264264
&self,
265-
request: &dyn DeleteVolumeSnapshotInfo,
265+
request: &dyn DestroyVolumeSnapshotInfo,
266266
ctx: Option<Context>,
267267
) -> Result<(), ReplyError> {
268-
let req = self.request(request, ctx, MessageIdVs::DeleteVolumeSnapshot);
269-
let response = self.client().delete_snapshot(req).await?.into_inner();
268+
let req = self.request(request, ctx, MessageIdVs::DestroyVolumeSnapshot);
269+
let response = self.client().destroy_snapshot(req).await?.into_inner();
270270
match response.error {
271271
None => Ok(()),
272272
Some(err) => Err(err.into()),

control-plane/grpc/src/operations/volume/server.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ use crate::{
77
unpublish_volume_reply,
88
volume_grpc_server::{VolumeGrpc, VolumeGrpcServer},
99
CreateSnapshotReply, CreateSnapshotRequest, CreateVolumeReply, CreateVolumeRequest,
10-
DeleteSnapshotReply, DeleteSnapshotRequest, DestroyShutdownTargetReply,
11-
DestroyShutdownTargetRequest, DestroyVolumeReply, DestroyVolumeRequest, GetSnapshotsReply,
10+
DestroyShutdownTargetReply, DestroyShutdownTargetRequest, DestroySnapshotReply,
11+
DestroySnapshotRequest, DestroyVolumeReply, DestroyVolumeRequest, GetSnapshotsReply,
1212
GetSnapshotsRequest, GetVolumesReply, GetVolumesRequest, ProbeRequest, ProbeResponse,
1313
PublishVolumeReply, PublishVolumeRequest, RepublishVolumeReply, RepublishVolumeRequest,
1414
SetVolumeReplicaReply, SetVolumeReplicaRequest, ShareVolumeReply, ShareVolumeRequest,
@@ -218,14 +218,14 @@ impl VolumeGrpc for VolumeServer {
218218
}
219219
}
220220

221-
async fn delete_snapshot(
221+
async fn destroy_snapshot(
222222
&self,
223-
request: tonic::Request<DeleteSnapshotRequest>,
224-
) -> Result<tonic::Response<DeleteSnapshotReply>, tonic::Status> {
223+
request: tonic::Request<DestroySnapshotRequest>,
224+
) -> Result<tonic::Response<DestroySnapshotReply>, tonic::Status> {
225225
let req = request.into_inner().validated()?;
226-
match self.service.delete_snapshot(&req, None).await {
227-
Ok(()) => Ok(Response::new(DeleteSnapshotReply { error: None })),
228-
Err(e) => Ok(Response::new(DeleteSnapshotReply {
226+
match self.service.destroy_snapshot(&req, None).await {
227+
Ok(()) => Ok(Response::new(DestroySnapshotReply { error: None })),
228+
Err(e) => Ok(Response::new(DestroySnapshotReply {
229229
error: Some(e.into()),
230230
})),
231231
}

control-plane/grpc/src/operations/volume/traits.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@ pub trait VolumeOperations: Send + Sync {
107107
ctx: Option<Context>,
108108
) -> Result<VolumeSnapshot, ReplyError>;
109109
/// Delete a volume snapshot.
110-
async fn delete_snapshot(
110+
async fn destroy_snapshot(
111111
&self,
112-
request: &dyn DeleteVolumeSnapshotInfo,
112+
request: &dyn DestroyVolumeSnapshotInfo,
113113
ctx: Option<Context>,
114114
) -> Result<(), ReplyError>;
115115
/// List volume snapshots.

control-plane/grpc/src/operations/volume/traits_snapshots.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pub trait CreateVolumeSnapshotInfo: Send + Sync + std::fmt::Debug {
3030
}
3131

3232
/// Volume snapshot deletion information.
33-
pub trait DeleteVolumeSnapshotInfo: Send + Sync + std::fmt::Debug {
33+
pub trait DestroyVolumeSnapshotInfo: Send + Sync + std::fmt::Debug {
3434
/// Snapshot creation information.
3535
fn info(&self) -> SnapshotInfo<Option<VolumeId>>;
3636
}
@@ -66,7 +66,7 @@ impl VolumeSnapshot {
6666
}
6767
}
6868

69-
impl From<&VolumeSnapshot> for DeleteVolumeSnapshot {
69+
impl From<&VolumeSnapshot> for DestroyVolumeSnapshot {
7070
fn from(snapshot: &VolumeSnapshot) -> Self {
7171
Self::new(
7272
&Some(snapshot.spec().source_id.clone()),
@@ -343,7 +343,7 @@ impl VolumeSnapshots {
343343
pub type CreateVolumeSnapshot = SnapshotInfo<VolumeId>;
344344

345345
/// Validated delete volume snapshot parameters.
346-
pub type DeleteVolumeSnapshot = SnapshotInfo<Option<VolumeId>>;
346+
pub type DestroyVolumeSnapshot = SnapshotInfo<Option<VolumeId>>;
347347

348348
impl ValidateRequestTypes for volume::CreateSnapshotRequest {
349349
type Validated = CreateVolumeSnapshot;
@@ -358,10 +358,10 @@ impl ValidateRequestTypes for volume::CreateSnapshotRequest {
358358
})
359359
}
360360
}
361-
impl ValidateRequestTypes for volume::DeleteSnapshotRequest {
362-
type Validated = DeleteVolumeSnapshot;
361+
impl ValidateRequestTypes for volume::DestroySnapshotRequest {
362+
type Validated = DestroyVolumeSnapshot;
363363
fn validated(self) -> Result<Self::Validated, ReplyError> {
364-
Ok(DeleteVolumeSnapshot {
364+
Ok(DestroyVolumeSnapshot {
365365
source_id: match self.volume_id {
366366
None => None,
367367
Some(id) => Some(id.try_into_id(ResourceKind::VolumeSnapshot, "volume_id")?),
@@ -378,8 +378,8 @@ impl CreateVolumeSnapshotInfo for CreateVolumeSnapshot {
378378
self.clone()
379379
}
380380
}
381-
impl DeleteVolumeSnapshotInfo for DeleteVolumeSnapshot {
382-
fn info(&self) -> DeleteVolumeSnapshot {
381+
impl DestroyVolumeSnapshotInfo for DestroyVolumeSnapshot {
382+
fn info(&self) -> DestroyVolumeSnapshot {
383383
self.clone()
384384
}
385385
}
@@ -393,8 +393,8 @@ impl From<&dyn CreateVolumeSnapshotInfo> for volume::CreateSnapshotRequest {
393393
}
394394
}
395395
}
396-
impl From<&dyn DeleteVolumeSnapshotInfo> for volume::DeleteSnapshotRequest {
397-
fn from(value: &dyn DeleteVolumeSnapshotInfo) -> Self {
396+
impl From<&dyn DestroyVolumeSnapshotInfo> for volume::DestroySnapshotRequest {
397+
fn from(value: &dyn DestroyVolumeSnapshotInfo) -> Self {
398398
let info = value.info();
399399
Self {
400400
volume_id: info.source_id.map(|id| id.to_string()),

control-plane/rest/service/src/v0/snapshots.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use super::*;
22
use grpc::operations::{
33
volume::traits::{
4-
CreateVolumeSnapshot, DeleteVolumeSnapshot, ReplicaSnapshot, VolumeOperations,
4+
CreateVolumeSnapshot, DestroyVolumeSnapshot, ReplicaSnapshot, VolumeOperations,
55
VolumeReplicaSnapshotState, VolumeSnapshot,
66
},
77
MaxEntries, Pagination, StartingToken,
@@ -18,8 +18,8 @@ fn client() -> impl VolumeOperations {
1818
impl apis::actix_server::Snapshots for RestApi {
1919
async fn del_snapshot(Path(snapshot_id): Path<Uuid>) -> Result<(), RestError<RestJsonError>> {
2020
client()
21-
.delete_snapshot(
22-
&DeleteVolumeSnapshot {
21+
.destroy_snapshot(
22+
&DestroyVolumeSnapshot {
2323
source_id: None,
2424
snap_id: snapshot_id.into(),
2525
},
@@ -33,8 +33,8 @@ impl apis::actix_server::Snapshots for RestApi {
3333
Path((volume_id, snapshot_id)): Path<(Uuid, Uuid)>,
3434
) -> Result<(), RestError<RestJsonError>> {
3535
client()
36-
.delete_snapshot(
37-
&DeleteVolumeSnapshot {
36+
.destroy_snapshot(
37+
&DestroyVolumeSnapshot {
3838
source_id: Some(volume_id.into()),
3939
snap_id: snapshot_id.into(),
4040
},

control-plane/stor-port/src/transport_api/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,11 @@ impl RequestMinTimeout {
528528
pub fn nexus_snapshot(&self) -> Duration {
529529
self.nexus_snapshot
530530
}
531+
/// Minimum timeout for a volume snapshot operation.
532+
pub fn volume_snapshot(&self) -> Duration {
533+
// not quite sure how much slack to give here, maybe this is enough?
534+
self.nexus_snapshot + self.replica_snapshot
535+
}
531536
/// Minimum timeout for a pool operation.
532537
pub fn pool(&self) -> Duration {
533538
self.pool

0 commit comments

Comments
 (0)