From a761e6091ad91eb76ea35bee8b7c0ba46c7f01ba Mon Sep 17 00:00:00 2001 From: Nikhil-Ladha Date: Thu, 17 Oct 2024 16:56:17 +0530 Subject: [PATCH] cephfs: add clone progress report in clone status add clone progress report in clone status output Signed-off-by: Nikhil-Ladha --- cephfs/admin/clone.go | 12 ++++++++++-- cephfs/admin/clone_test.go | 8 ++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/cephfs/admin/clone.go b/cephfs/admin/clone.go index d8281359c7..9a00402fed 100644 --- a/cephfs/admin/clone.go +++ b/cephfs/admin/clone.go @@ -81,10 +81,18 @@ type CloneSource struct { Snapshot string `json:"snapshot"` } +// CloneProgressReport contains the progress report of a subvolume clone. +type CloneProgressReport struct { + PercentageCloned string `json:"percentage cloned"` + AmountCloned string `json:"amount cloned"` + FilesCloned string `json:"files cloned"` +} + // CloneStatus reports on the status of a subvolume clone. type CloneStatus struct { - State CloneState `json:"state"` - Source CloneSource `json:"source"` + State CloneState `json:"state"` + Source CloneSource `json:"source"` + ProgressReport CloneProgressReport `json:"progress_report"` // failure can be obtained through .GetFailure() failure *CloneFailure diff --git a/cephfs/admin/clone_test.go b/cephfs/admin/clone_test.go index 0d947449b6..57b61cafe6 100644 --- a/cephfs/admin/clone_test.go +++ b/cephfs/admin/clone_test.go @@ -27,6 +27,11 @@ var sampleCloneStatusInProg = []byte(`{ "volume": "cephfs", "subvolume": "subvol1", "snapshot": "snap1" + }, + "progress_report": { + "percentage cloned": "25%", + "amount cloned": "55/202", + "files cloned": "1/3" } } }`) @@ -66,6 +71,9 @@ func TestParseCloneStatus(t *testing.T) { assert.EqualValues(t, "subvol1", status.Source.SubVolume) assert.EqualValues(t, "snap1", status.Source.Snapshot) assert.EqualValues(t, "", status.Source.Group) + assert.EqualValues(t, "25%", status.ProgressReport.PercentageCloned) + assert.EqualValues(t, "55/202", status.ProgressReport.AmountCloned) + assert.EqualValues(t, "1/3", status.ProgressReport.FilesCloned) } }) }