Skip to content
This repository has been archived by the owner on Mar 26, 2020. It is now read-only.

Commit

Permalink
Adding support for metadata keys deletion
Browse files Browse the repository at this point in the history
  • Loading branch information
root committed May 8, 2018
1 parent 6c3a1ef commit 11fece9
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 6 deletions.
35 changes: 31 additions & 4 deletions e2e/volume_ops_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -413,10 +413,21 @@ func testDisperse(t *testing.T) {
}

func validateVolumeEdit(volinfo api.VolumeGetResp, editMetadataReq api.VolEditReq, resp api.VolumeEditResp) error {
for key, value := range editMetadataReq.Metadata {
if volinfo.Metadata[key] != value || resp.Metadata[key] != value {
err := errors.New("invalid response")
return err
if editMetadataReq.MetadataDel {
for key := range editMetadataReq.Metadata {
_, existinVolinfo := volinfo.Metadata[key]
_, existinResp := resp.Metadata[key]
if existinVolinfo || existinResp {
err := errors.New("invalid response")
return err
}
}
} else {
for key, value := range editMetadataReq.Metadata {
if volinfo.Metadata[key] != value || resp.Metadata[key] != value {
err := errors.New("invalid response")
return err
}
}
}
return nil
Expand All @@ -428,6 +439,7 @@ func testEditVolume(t *testing.T) {
Metadata: map[string]string{
"owner": "gd2tests",
},
MetadataDel: false,
}
resp, err := client.EditVolume(volname, editMetadataReq)
r.Nil(err)
Expand All @@ -440,11 +452,26 @@ func testEditVolume(t *testing.T) {
"owner": "gd2functests",
"year": "2018",
},
MetadataDel: false,
}
resp, err = client.EditVolume(volname, editMetadataReq)
r.Nil(err)
volinfo, err = client.Volumes(volname)
r.Nil(err)
err = validateVolumeEdit(volinfo[0], editMetadataReq, resp)
r.Nil(err)
editMetadataReq = api.VolEditReq{
Metadata: map[string]string{
"owner": "gd2functests",
"year": "",
},
MetadataDel: true,
}
resp, err = client.EditVolume(volname, editMetadataReq)
r.Nil(err)
volinfo, err = client.Volumes(volname)
r.Nil(err)
err = validateVolumeEdit(volinfo[0], editMetadataReq, resp)
r.Nil(err)

}
6 changes: 5 additions & 1 deletion glusterd2/commands/volumes/volume-edit.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,11 @@ func volumeEditHandler(w http.ResponseWriter, r *http.Request) {
restutils.SendHTTPError(ctx, w, http.StatusBadRequest, "Key names starting with '_' are restricted in metadata field")
return
}
volinfo.Metadata[key] = value
if req.MetadataDel {
delete(volinfo.Metadata, key)
} else {
volinfo.Metadata[key] = value
}
}
if err := volume.AddOrUpdateVolumeFunc(volinfo); err != nil {
logger.WithError(err).WithField(
Expand Down
3 changes: 2 additions & 1 deletion pkg/api/volume_req.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,5 +85,6 @@ type VolStatedumpReq struct {

// VolEditReq represents a volume metadata edit request
type VolEditReq struct {
Metadata map[string]string `json:"metadata"`
Metadata map[string]string `json:"metadata"`
MetadataDel bool `json:"metadatadel"`
}

0 comments on commit 11fece9

Please sign in to comment.