|
@@ -25,10 +25,38 @@ func (m *Manager) HandleMdadmFlushReload(w http.ResponseWriter, r *http.Request)
|
|
utils.SendErrorResponse(w, "reload failed: "+err.Error())
|
|
utils.SendErrorResponse(w, "reload failed: "+err.Error())
|
|
return
|
|
return
|
|
}
|
|
}
|
|
-
|
|
|
|
utils.SendOK(w)
|
|
utils.SendOK(w)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Handle loading the detail of a given RAID array
|
|
|
|
+func (m *Manager) HandleLoadArrayDetail(w http.ResponseWriter, r *http.Request) {
|
|
|
|
+ devName, err := utils.GetPara(r, "devName")
|
|
|
|
+ if err != nil {
|
|
|
|
+ utils.SendErrorResponse(w, "invalid device name given")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if !strings.HasPrefix(devName, "/dev/") {
|
|
|
|
+ devName = "/dev/" + devName
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //Check if it exists
|
|
|
|
+ if !m.RAIDDeviceExists(devName) {
|
|
|
|
+ utils.SendErrorResponse(w, "RAID device not exists")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //Get status of the array
|
|
|
|
+ targetRAIDInfo, err := m.GetRAIDInfo(devName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ utils.SendErrorResponse(w, err.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ js, _ := json.Marshal(targetRAIDInfo)
|
|
|
|
+ utils.SendJSONResponse(w, string(js))
|
|
|
|
+}
|
|
|
|
+
|
|
// Handle formating a device
|
|
// Handle formating a device
|
|
func (m *Manager) HandleFormatRaidDevice(w http.ResponseWriter, r *http.Request) {
|
|
func (m *Manager) HandleFormatRaidDevice(w http.ResponseWriter, r *http.Request) {
|
|
devName, err := utils.GetPara(r, "devName")
|
|
devName, err := utils.GetPara(r, "devName")
|
|
@@ -79,9 +107,13 @@ func (m *Manager) HandleListRaidDevices(w http.ResponseWriter, r *http.Request)
|
|
func (m *Manager) HandleCreateRAIDDevice(w http.ResponseWriter, r *http.Request) {
|
|
func (m *Manager) HandleCreateRAIDDevice(w http.ResponseWriter, r *http.Request) {
|
|
//TODO: Change GetPara to Post
|
|
//TODO: Change GetPara to Post
|
|
devName, err := utils.GetPara(r, "devName")
|
|
devName, err := utils.GetPara(r, "devName")
|
|
- if err != nil {
|
|
|
|
- utils.SendErrorResponse(w, "invalid device name given")
|
|
|
|
- return
|
|
|
|
|
|
+ if err != nil || devName == "" {
|
|
|
|
+ //Use auto generated one
|
|
|
|
+ devName, err = GetNextAvailableMDDevice()
|
|
|
|
+ if err != nil {
|
|
|
|
+ utils.SendErrorResponse(w, err.Error())
|
|
|
|
+ return
|
|
|
|
+ }
|
|
}
|
|
}
|
|
raidName, err := utils.GetPara(r, "raidName")
|
|
raidName, err := utils.GetPara(r, "raidName")
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -190,7 +222,7 @@ func (m *Manager) HandleRemoveRaideDevice(w http.ResponseWriter, r *http.Request
|
|
targetDevice = filepath.Join("/dev/", targetDevice)
|
|
targetDevice = filepath.Join("/dev/", targetDevice)
|
|
}
|
|
}
|
|
|
|
|
|
- mounted, err := DeviceIsMounted(targetDevice)
|
|
|
|
|
|
+ mounted, err := diskfs.DeviceIsMounted(targetDevice)
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Println("[RAID] Unmount failed: " + err.Error())
|
|
log.Println("[RAID] Unmount failed: " + err.Error())
|
|
utils.SendErrorResponse(w, err.Error())
|
|
utils.SendErrorResponse(w, err.Error())
|
|
@@ -198,7 +230,7 @@ func (m *Manager) HandleRemoveRaideDevice(w http.ResponseWriter, r *http.Request
|
|
}
|
|
}
|
|
|
|
|
|
if mounted {
|
|
if mounted {
|
|
- err = UnmountDevice(targetDevice)
|
|
|
|
|
|
+ err = diskfs.UnmountDevice(targetDevice)
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Println("[RAID] Unmount failed: " + err.Error())
|
|
log.Println("[RAID] Unmount failed: " + err.Error())
|
|
utils.SendErrorResponse(w, err.Error())
|
|
utils.SendErrorResponse(w, err.Error())
|