@@ -309,6 +309,59 @@ var _ = Describe("CephCmd.RBDRm", func() {
309309 })
310310})
311311
312+ var _ = Describe ("CephCmd.RBDTrashLs" , func () {
313+ var t reporter
314+
315+ It ("should return the correct list of trashed images" , func () {
316+ ctrl := gomock .NewController (t )
317+ defer ctrl .Finish ()
318+
319+ m := NewMockcommand (ctrl )
320+ m .EXPECT ().
321+ execute ("rbd" , "trash" , "ls" , "-p" , "pool" , "--format" , "json" ).
322+ Return ([]byte (`[
323+ {"id": "abc123", "name": "csi-vol-d2556cc0-5ba6-4e70-b966-56522225bdc5"},
324+ {"id": "def456", "name": "csi-vol-f2a83492-3cf2-48e7-8500-804754c42ce6"}
325+ ]` ), []byte {}, nil )
326+
327+ cmd := mockedCephCmd (m )
328+ infos , err := cmd .RBDTrashLs ("pool" )
329+ Expect (err ).ToNot (HaveOccurred ())
330+ Expect (infos ).To (HaveLen (2 ))
331+ Expect (infos [0 ].ID ).To (Equal ("abc123" ))
332+ Expect (infos [0 ].Name ).To (Equal ("csi-vol-d2556cc0-5ba6-4e70-b966-56522225bdc5" ))
333+ Expect (infos [1 ].ID ).To (Equal ("def456" ))
334+ Expect (infos [1 ].Name ).To (Equal ("csi-vol-f2a83492-3cf2-48e7-8500-804754c42ce6" ))
335+ })
336+
337+ It ("should return empty list, if trash is empty" , func () {
338+ ctrl := gomock .NewController (t )
339+ defer ctrl .Finish ()
340+
341+ m := NewMockcommand (ctrl )
342+ m .EXPECT ().
343+ execute ("rbd" , "trash" , "ls" , "-p" , "pool" , "--format" , "json" ).
344+ Return ([]byte (`[]` ), []byte {}, nil )
345+
346+ cmd := mockedCephCmd (m )
347+ infos , err := cmd .RBDTrashLs ("pool" )
348+ Expect (err ).ToNot (HaveOccurred ())
349+ Expect (infos ).To (BeEmpty ())
350+ })
351+
352+ It ("should return an error, if the command failed" , func () {
353+ ctrl := gomock .NewController (t )
354+ defer ctrl .Finish ()
355+
356+ m := NewMockcommand (ctrl )
357+ m .EXPECT ().execute (gomock .Any ()).Return ([]byte {}, []byte ("error!" ), errors .New ("error" ))
358+
359+ cmd := mockedCephCmd (m )
360+ _ , err := cmd .RBDTrashLs ("pool" )
361+ Expect (err ).To (HaveOccurred ())
362+ })
363+ })
364+
312365var _ = Describe ("CephCmd.RBDSnapCreate" , func () {
313366 var t reporter
314367
@@ -378,6 +431,45 @@ var _ = Describe("CephCmd.RBDSnapLs", func() {
378431 })
379432})
380433
434+ var _ = Describe ("CephCmd.RBDSnapLsByID" , func () {
435+ var t reporter
436+
437+ It ("should return the correct RBDSnapshot" , func () {
438+ ctrl := gomock .NewController (t )
439+ defer ctrl .Finish ()
440+
441+ m := NewMockcommand (ctrl )
442+ m .EXPECT ().
443+ execute ("rbd" , "snap" , "ls" , "-p" , "pool" , "--image-id" , "image-id" , "--format" , "json" ).
444+ Return ([]byte (`
445+ [{"id":4,"name":"test","size":10737418240,"protected":"false","timestamp":"Tue Oct 1 10:11:31 2024"}]
446+ ` ), []byte {}, nil )
447+
448+ cmd := mockedCephCmd (m )
449+ snaps , err := cmd .RBDSnapLsByID ("pool" , "image-id" )
450+ Expect (err ).ToNot (HaveOccurred ())
451+ Expect (snaps ).To (HaveLen (1 ))
452+ snap := snaps [0 ]
453+ Expect (snap .Id ).To (Equal (int (4 )))
454+ Expect (snap .Name ).To (Equal ("test" ))
455+ Expect (snap .Size ).To (Equal (int64 (10737418240 )))
456+ Expect (snap .Protected ).To (BeFalse ())
457+ Expect (snap .Timestamp ).To (Equal (NewRBDTimeStamp (time .Date (2024 , 10 , 1 , 10 , 11 , 31 , 0 , time .UTC ))))
458+ })
459+
460+ It ("should return an error, if the command failed" , func () {
461+ ctrl := gomock .NewController (t )
462+ defer ctrl .Finish ()
463+
464+ m := NewMockcommand (ctrl )
465+ m .EXPECT ().execute (gomock .Any ()).Return ([]byte {}, []byte ("error!" ), errors .New ("error" ))
466+
467+ cmd := mockedCephCmd (m )
468+ _ , err := cmd .RBDSnapLsByID ("pool" , "image-id" )
469+ Expect (err ).To (HaveOccurred ())
470+ })
471+ })
472+
381473var _ = Describe ("CephCmd.RBDSnapRm" , func () {
382474 var t reporter
383475
@@ -387,11 +479,11 @@ var _ = Describe("CephCmd.RBDSnapRm", func() {
387479
388480 m := NewMockcommand (ctrl )
389481 m .EXPECT ().
390- execute ("rbd" , "snap" , "rm" , "pool/ image@ snap" ).
482+ execute ("rbd" , "snap" , "rm" , "-p" , " pool" , "-- image-id" , "image-id" , "--snap" , " snap" ).
391483 Return ([]byte {}, []byte {}, nil )
392484
393485 cmd := mockedCephCmd (m )
394- err := cmd .RBDSnapRm ("pool" , "image" , "snap" )
486+ err := cmd .RBDSnapRm ("pool" , "image-id " , "snap" )
395487 Expect (err ).ToNot (HaveOccurred ())
396488 })
397489
@@ -403,7 +495,7 @@ var _ = Describe("CephCmd.RBDSnapRm", func() {
403495 m .EXPECT ().execute (gomock .Any ()).Return ([]byte {}, []byte ("error!" ), errors .New ("error" ))
404496
405497 cmd := mockedCephCmd (m )
406- err := cmd .RBDSnapRm ("pool" , "image" , "snap" )
498+ err := cmd .RBDSnapRm ("pool" , "image-id " , "snap" )
407499 Expect (err ).To (HaveOccurred ())
408500 })
409501})
0 commit comments