move API handlers in webservice resource files

This commit is contained in:
Wang Xin
2018-05-31 19:51:46 +08:00
parent 1a1cd8f644
commit 786eaefb7d
5 changed files with 57 additions and 71 deletions

View File

@@ -1,61 +1,28 @@
package models
import (
"github.com/emicklei/go-restful"
v12 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/apis/meta/v1"
"kubesphere.io/kubesphere/pkg/client"
"kubesphere.io/kubesphere/pkg/constants"
"net/http"
)
type pvcListBySc struct {
type PvcListBySc struct {
Name string `json:"name"`
Claims []v12.PersistentVolumeClaim `json:"persistentvolumeclaims"`
Claims []v12.PersistentVolumeClaim `json:"items"`
}
type scMetrics struct {
type ScMetrics struct {
Name string `json:"name"`
Metrics storageMetrics `json:"metrics"`
Metrics StorageMetrics `json:"metrics"`
}
type storageMetrics struct {
type StorageMetrics struct {
Capacity string `json:"capacity,omitempty"`
Usage string `json:"usage,omitempty"`
}
// List all PersistentVolumeClaims of a specific StorageClass
// Extended API URL: "GET /api/v1alpha/storage/storageclasses/{name}/persistentvolumeclaims"
func GetPvcListBySc(request *restful.Request, response *restful.Response) {
scName := request.PathParameter("storageclass")
claims, err := getPvcListBySc(scName)
if err != nil {
response.WriteError(http.StatusInternalServerError, err)
}
result := constants.ResultMessage{
Data: pvcListBySc{scName, claims}}
response.WriteAsJson(result)
}
// Get metrics of a specific StorageClass
// Extended API URL: "GET /api/v1alpha/storage/storageclasses/{name}/metrics"
func GetScMetrics(request *restful.Request, response *restful.Response) {
scName := request.PathParameter("storageclass")
metrics, err := getScMetrics(scName)
if err != nil {
response.WriteError(http.StatusInternalServerError, err)
}
result := constants.ResultMessage{
Data: scMetrics{Name: scName, Metrics: metrics},
}
response.WriteAsJson(result)
}
func getPvcListBySc(storageclass string) (res []v12.PersistentVolumeClaim, err error) {
func GetPvcListBySc(storageclass string) (res []v12.PersistentVolumeClaim, err error) {
cli := client.NewK8sClient()
claimList, err := cli.CoreV1().PersistentVolumeClaims("").List(v1.ListOptions{})
@@ -72,11 +39,11 @@ func getPvcListBySc(storageclass string) (res []v12.PersistentVolumeClaim, err e
return res, nil
}
func getScMetrics(storageclass string) (res storageMetrics, err error) {
func GetScMetrics(storageclass string) (res StorageMetrics, err error) {
cli := client.NewK8sClient()
pvList, err := cli.CoreV1().PersistentVolumes().List(v1.ListOptions{})
if err != nil {
return storageMetrics{}, err
return StorageMetrics{}, err
}
var total resource.Quantity
@@ -86,5 +53,5 @@ func getScMetrics(storageclass string) (res storageMetrics, err error) {
}
total.Add(volume.Spec.Capacity[v12.ResourceStorage])
}
return storageMetrics{Usage: total.String()}, nil
return StorageMetrics{Usage: total.String()}, nil
}