package controller
import (
"io"
"net/http"
"github.com/go-chi/chi"
"github.com/goodrain/rainbond/api/handler"
httputil "github.com/goodrain/rainbond/util/http"
)
type StorageController struct{}
func (c *StorageController) ListStorageClasses(w http.ResponseWriter, r *http.Request) {
list, err := handler.GetStorageHandler().ListStorageClasses()
if err != nil {
httputil.ReturnBcodeError(r, w, err)
return
}
httputil.ReturnSuccess(r, w, map[string]interface{}{"list": list, "total": len(list)})
}
func (c *StorageController) CreateStorageClass(w http.ResponseWriter, r *http.Request) {
body, err := io.ReadAll(r.Body)
if err != nil {
httputil.ReturnBcodeError(r, w, err)
return
}
sc, err := handler.GetStorageHandler().CreateStorageClass(body)
if err != nil {
httputil.ReturnBcodeError(r, w, err)
return
}
httputil.ReturnSuccess(r, w, sc)
}
func (c *StorageController) DeleteStorageClass(w http.ResponseWriter, r *http.Request) {
name := chi.URLParam(r, "name")
if err := handler.GetStorageHandler().DeleteStorageClass(name); err != nil {
httputil.ReturnBcodeError(r, w, err)
return
}
httputil.ReturnSuccess(r, w, nil)
}
func (c *StorageController) ListPersistentVolumes(w http.ResponseWriter, r *http.Request) {
list, err := handler.GetStorageHandler().ListPersistentVolumes()
if err != nil {
httputil.ReturnBcodeError(r, w, err)
return
}
httputil.ReturnSuccess(r, w, map[string]interface{}{"list": list, "total": len(list)})
}
func (c *StorageController) CreatePersistentVolume(w http.ResponseWriter, r *http.Request) {
body, err := io.ReadAll(r.Body)
if err != nil {
httputil.ReturnBcodeError(r, w, err)
return
}
pv, err := handler.GetStorageHandler().CreatePersistentVolume(body)
if err != nil {
httputil.ReturnBcodeError(r, w, err)
return
}
httputil.ReturnSuccess(r, w, pv)
}
func (c *StorageController) DeletePersistentVolume(w http.ResponseWriter, r *http.Request) {
name := chi.URLParam(r, "name")
if err := handler.GetStorageHandler().DeletePersistentVolume(name); err != nil {
httputil.ReturnBcodeError(r, w, err)
return
}
httputil.ReturnSuccess(r, w, nil)
}
func GetStorageController() *StorageController {
return &StorageController{}
}