diff options
Diffstat (limited to 'weed/server/volume_server_handlers_admin.go')
| -rw-r--r-- | weed/server/volume_server_handlers_admin.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/weed/server/volume_server_handlers_admin.go b/weed/server/volume_server_handlers_admin.go index 28631dac7..79bb89756 100644 --- a/weed/server/volume_server_handlers_admin.go +++ b/weed/server/volume_server_handlers_admin.go @@ -1,6 +1,7 @@ package weed_server import ( + "fmt" "net/http" "path/filepath" "strconv" @@ -8,6 +9,7 @@ import ( "github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/stats" "github.com/chrislusf/seaweedfs/weed/util" + "github.com/chrislusf/seaweedfs/weed/storage" ) func (vs *VolumeServer) statusHandler(w http.ResponseWriter, r *http.Request) { @@ -65,3 +67,45 @@ func (vs *VolumeServer) statsDiskHandler(w http.ResponseWriter, r *http.Request) m["DiskStatuses"] = ds writeJsonQuiet(w, r, http.StatusOK, m) } + +func (vs *VolumeServer) getVolume(volumeParameterName string, r *http.Request) (*storage.Volume, error) { + vid, err := vs.getVolumeId(volumeParameterName, r) + if err != nil { + return nil, err + } + v := vs.store.GetVolume(vid) + if v == nil { + return nil, fmt.Errorf("Not Found Volume Id %d", vid) + } + return v, nil +} + +func (vs *VolumeServer) getVolumeMountHandler(w http.ResponseWriter, r *http.Request) { + vid, err := vs.getVolumeId("volume", r) + if err != nil { + writeJsonError(w, r, http.StatusNotFound, err) + return + } + vs.store.MountVolume(vid) + writeJsonQuiet(w, r, http.StatusOK, "Volume mounted") +} + +func (vs *VolumeServer) getVolumeUnmountHandler(w http.ResponseWriter, r *http.Request) { + vid, err := vs.getVolumeId("volume", r) + if err != nil { + writeJsonError(w, r, http.StatusNotFound, err) + return + } + vs.store.UnmountVolume(vid) + writeJsonQuiet(w, r, http.StatusOK, "Volume unmounted") +} + +func (vs *VolumeServer) getVolumeDeleteHandler(w http.ResponseWriter, r *http.Request) { + vid, err := vs.getVolumeId("volume", r) + if err != nil { + writeJsonError(w, r, http.StatusNotFound, err) + return + } + vs.store.DeleteVolume(vid) + writeJsonQuiet(w, r, http.StatusOK, "Volume deleted") +} |
