mirror of
https://github.com/gluster/glusterd2.git
synced 2026-02-05 12:45:38 +01:00
return complete snapshot info in snapshot list
during the snapshot list return the complete snapshots info along with the parent volume name, if we call snapshotlist we should be able to get complete snapshot information like listing volumes. Signed-off-by: Madhu Rajanna <mrajanna@redhat.com>
This commit is contained in:
committed by
Prashanth Pai
parent
07ffca782b
commit
7ba7bd303f
@@ -168,11 +168,11 @@ func testSnapshotList(t *testing.T) {
|
||||
snaps, err := client.SnapshotList("")
|
||||
r.Nil(err)
|
||||
r.Len(snaps, 1)
|
||||
r.Len(snaps[0].SnapName, 2)
|
||||
r.Len(snaps[0].SnapList, 2)
|
||||
|
||||
snaps, err = client.SnapshotList(snapTestName)
|
||||
r.Nil(err)
|
||||
r.Len(snaps[0].SnapName, 2)
|
||||
r.Len(snaps[0].SnapList, 2)
|
||||
|
||||
}
|
||||
|
||||
@@ -192,8 +192,8 @@ func testSnapshotActivate(t *testing.T) {
|
||||
r.Nil(err)
|
||||
|
||||
for _, snaps := range vols {
|
||||
for _, snapName := range snaps.SnapName {
|
||||
err = client.SnapshotActivate(snapshotActivateReq, snapName)
|
||||
for _, snap := range snaps.SnapList {
|
||||
err = client.SnapshotActivate(snapshotActivateReq, snap.VolInfo.Name)
|
||||
r.Nil(err)
|
||||
|
||||
snapshotActivateReq.Force = true
|
||||
@@ -207,18 +207,18 @@ func testSnapshotDelete(t *testing.T) {
|
||||
|
||||
vols, err := client.SnapshotList("")
|
||||
r.Nil(err)
|
||||
r.Len(vols[0].SnapName, 1)
|
||||
r.Len(vols[0].SnapList, 1)
|
||||
|
||||
for _, snaps := range vols {
|
||||
for _, snapName := range snaps.SnapName {
|
||||
err = client.SnapshotDelete(snapName)
|
||||
for _, snap := range snaps.SnapList {
|
||||
err = client.SnapshotDelete(snap.VolInfo.Name)
|
||||
r.Nil(err)
|
||||
}
|
||||
}
|
||||
|
||||
vols, err = client.SnapshotList(snapTestName)
|
||||
r.Nil(err)
|
||||
r.Len(vols[0].SnapName, 0)
|
||||
r.Len(vols, 0)
|
||||
}
|
||||
|
||||
func testSnapshotDeactivate(t *testing.T) {
|
||||
@@ -227,8 +227,8 @@ func testSnapshotDeactivate(t *testing.T) {
|
||||
r.Nil(err)
|
||||
|
||||
for _, snaps := range vols {
|
||||
for _, snapName := range snaps.SnapName {
|
||||
err = client.SnapshotDeactivate(snapName)
|
||||
for _, snap := range snaps.SnapList {
|
||||
err = client.SnapshotDeactivate(snap.VolInfo.Name)
|
||||
r.Nil(err)
|
||||
}
|
||||
}
|
||||
@@ -243,7 +243,7 @@ func testSnapshotStatusForceActivate(t *testing.T) {
|
||||
vols, err := client.SnapshotList(snapTestName)
|
||||
r.Nil(err)
|
||||
|
||||
snapName := vols[0].SnapName[0]
|
||||
snapName := vols[0].SnapList[0].VolInfo.Name
|
||||
result, err = client.SnapshotStatus(snapName)
|
||||
r.Nil(err)
|
||||
|
||||
@@ -284,7 +284,7 @@ func testSnapshotRestore(t *testing.T) {
|
||||
vols, err := client.SnapshotList(snapTestName)
|
||||
r.Nil(err)
|
||||
|
||||
snapName := vols[0].SnapName[0]
|
||||
snapName := vols[0].SnapList[0].VolInfo.Name
|
||||
result, err = client.SnapshotStatus(snapName)
|
||||
r.Nil(err)
|
||||
|
||||
@@ -297,7 +297,7 @@ func testSnapshotRestore(t *testing.T) {
|
||||
|
||||
snaps, err := client.SnapshotList(snapTestName)
|
||||
r.Nil(err)
|
||||
r.Len(snaps[0].SnapName, 1)
|
||||
r.Len(snaps[0].SnapList, 1)
|
||||
|
||||
err = client.VolumeStart(snapTestName, true)
|
||||
r.Nil(err)
|
||||
|
||||
@@ -43,21 +43,22 @@ func snapshotListHandler(cmd *cobra.Command) error {
|
||||
}
|
||||
table.SetHeader([]string{"Name", "Origin Volume"})
|
||||
for _, snap := range snaps {
|
||||
for _, entry := range snap.SnapName {
|
||||
table.Append([]string{entry, snap.ParentName})
|
||||
for _, s := range snap.SnapList {
|
||||
table.Append([]string{s.VolInfo.Name, snap.ParentName})
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if len(snaps[0].SnapName) == 0 {
|
||||
if len(snaps) == 0 {
|
||||
fmt.Printf("There are no snapshots for volume %s\n", snaps[0].ParentName)
|
||||
return nil
|
||||
}
|
||||
|
||||
table.SetHeader([]string{"Name"})
|
||||
for _, entry := range snaps[0].SnapName {
|
||||
table.Append([]string{entry})
|
||||
if len(snaps) > 0 {
|
||||
for _, entry := range snaps[0].SnapList {
|
||||
table.Append([]string{entry.VolInfo.Name})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
table.Render()
|
||||
return err
|
||||
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
|
||||
func snapshotListHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
snapName := make(map[string][]string)
|
||||
snapName := make(map[string][]api.SnapInfo)
|
||||
ctx := r.Context()
|
||||
|
||||
volumeName := r.URL.Query().Get("volume")
|
||||
@@ -23,9 +23,17 @@ func snapshotListHandler(w http.ResponseWriter, r *http.Request) {
|
||||
restutils.SendHTTPError(ctx, w, status, err)
|
||||
return
|
||||
}
|
||||
snapName[volumeName] = vol.SnapList
|
||||
} else {
|
||||
for _, s := range vol.SnapList {
|
||||
snapInfo, err := snapshot.GetSnapshot(s)
|
||||
if err != nil {
|
||||
status, err := restutils.ErrToStatusCode(err)
|
||||
restutils.SendHTTPError(ctx, w, status, err)
|
||||
return
|
||||
}
|
||||
snapName[volumeName] = append(snapName[volumeName], *createSnapInfoResp(snapInfo))
|
||||
}
|
||||
|
||||
} else {
|
||||
snaps, err := snapshot.GetSnapshots()
|
||||
if err != nil {
|
||||
status, err := restutils.ErrToStatusCode(err)
|
||||
@@ -33,22 +41,22 @@ func snapshotListHandler(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
for _, s := range snaps {
|
||||
snapName[s.ParentVolume] = append(snapName[s.ParentVolume], s.SnapVolinfo.Name)
|
||||
snapName[s.ParentVolume] = append(snapName[s.ParentVolume], *createSnapInfoResp(s))
|
||||
}
|
||||
}
|
||||
resp := createSnapshotListResp(snapName)
|
||||
restutils.SendHTTPResponse(ctx, w, http.StatusOK, resp)
|
||||
restutils.SendHTTPResponse(ctx, w, http.StatusOK, createSnapshotListResp(snapName))
|
||||
}
|
||||
|
||||
func createSnapshotListResp(snaps map[string][]string) *api.SnapListResp {
|
||||
func createSnapshotListResp(volSnaps map[string][]api.SnapInfo) *api.SnapListResp {
|
||||
var resp api.SnapListResp
|
||||
var entry api.SnapList
|
||||
|
||||
for key, s := range snaps {
|
||||
entry.ParentName = key
|
||||
entry.SnapName = s
|
||||
resp = append(resp, entry)
|
||||
resp = make(api.SnapListResp, 0)
|
||||
for vol, snapList := range volSnaps {
|
||||
var snap api.SnapList
|
||||
snap.ParentName = vol
|
||||
for _, s := range snapList {
|
||||
snap.SnapList = append(snap.SnapList, s)
|
||||
}
|
||||
resp = append(resp, snap)
|
||||
}
|
||||
|
||||
return &resp
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@ type SnapInfo struct {
|
||||
SnapTime string `json:"snaptime"`
|
||||
}
|
||||
|
||||
//SnapList contains snapshot name of a volume
|
||||
//SnapList contains snapshots information of a volume.
|
||||
type SnapList struct {
|
||||
ParentName string `json:"parentname"`
|
||||
SnapName []string `json:"snaps"`
|
||||
ParentName string `json:"parentname"`
|
||||
SnapList []SnapInfo `json:"snaps"`
|
||||
}
|
||||
|
||||
//LvsData gives the information provided in lvs command
|
||||
|
||||
Reference in New Issue
Block a user