adjusting refresh topology writable volumes(not finished yet)
Need to refreshWritableVolumes for each replication type
This commit is contained in:
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"log"
|
||||
"net/http"
|
||||
"pkg/directory"
|
||||
@@ -70,9 +71,9 @@ func dirAssignHandler(w http.ResponseWriter, r *http.Request) {
|
||||
func dirAssign2Handler(w http.ResponseWriter, r *http.Request) {
|
||||
c, _ := strconv.Atoi(r.FormValue("count"))
|
||||
rt, err := storage.NewReplicationType(r.FormValue("replication"))
|
||||
if err!=nil {
|
||||
writeJson(w, r, map[string]string{"error": err.Error()})
|
||||
return
|
||||
if err != nil {
|
||||
writeJson(w, r, map[string]string{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
if topo.GetVolumeLayout(rt).GetActiveVolumeCount() <= 0 {
|
||||
if topo.FreeSpace() <= 0 {
|
||||
@@ -111,22 +112,21 @@ func dirNewStatusHandler(w http.ResponseWriter, r *http.Request) {
|
||||
writeJson(w, r, topo.ToMap())
|
||||
}
|
||||
func volumeGrowHandler(w http.ResponseWriter, r *http.Request) {
|
||||
rt, err := storage.NewReplicationType(r.FormValue("replication"))
|
||||
if err!=nil {
|
||||
writeJson(w, r, map[string]string{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
count, err := strconv.Atoi(r.FormValue("count"))
|
||||
if topo.FreeSpace() < count * rt.GetCopyCount() {
|
||||
writeJson(w, r, map[string]string{"error": "Only "+strconv.Itoa(topo.FreeSpace())+" volumes left! Not enough for "+strconv.Itoa(count*rt.GetCopyCount())})
|
||||
return
|
||||
count := 0
|
||||
rt, err := storage.NewReplicationType(r.FormValue("replication"))
|
||||
if err == nil {
|
||||
if count, err = strconv.Atoi(r.FormValue("count")); err == nil {
|
||||
if topo.FreeSpace() < count*rt.GetCopyCount() {
|
||||
err = errors.New("Only " + strconv.Itoa(topo.FreeSpace()) + " volumes left! Not enough for " + strconv.Itoa(count*rt.GetCopyCount()))
|
||||
} else {
|
||||
count, err = vg.GrowByCountAndType(count, rt, topo)
|
||||
}
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
count, err := vg.GrowByType(rt, topo)
|
||||
writeJson(w, r, map[string]interface{}{"count": count, "error": err})
|
||||
writeJson(w, r, map[string]string{"error": err.Error()})
|
||||
} else {
|
||||
count, err := vg.GrowByCountAndType(count, rt, topo)
|
||||
writeJson(w, r, map[string]interface{}{"count": count, "error": err})
|
||||
writeJson(w, r, map[string]interface{}{"count": count})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,6 +144,7 @@ func runMaster(cmd *Command, args []string) bool {
|
||||
http.HandleFunc("/vol/grow", volumeGrowHandler)
|
||||
|
||||
mapper.StartRefreshWritableVolumes()
|
||||
topo.StartRefreshWritableVolumes()
|
||||
|
||||
log.Println("Start directory service at http://127.0.0.1:" + strconv.Itoa(*mport))
|
||||
e := http.ListenAndServe(":"+strconv.Itoa(*mport), nil)
|
||||
|
||||
Reference in New Issue
Block a user