fix router bugs
This commit is contained in:
@@ -19,7 +19,6 @@ package routes
|
||||
import (
|
||||
"github.com/emicklei/go-restful"
|
||||
|
||||
"errors"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
@@ -64,6 +63,11 @@ func Register(ws *restful.WebService) {
|
||||
Produces(restful.MIME_JSON))
|
||||
}
|
||||
|
||||
type Router struct {
|
||||
RouterType string `json:"type"`
|
||||
Annotations map[string]string `json:"annotations"`
|
||||
}
|
||||
|
||||
// Get all namespace ingress controller services
|
||||
func GetAllRouters(request *restful.Request, response *restful.Response) {
|
||||
|
||||
@@ -99,7 +103,7 @@ func CreateRouter(request *restful.Request, response *restful.Response) {
|
||||
|
||||
namespace := request.PathParameter("namespace")
|
||||
|
||||
newRouter := models.Router{}
|
||||
newRouter := Router{}
|
||||
err := request.ReadEntity(&newRouter)
|
||||
|
||||
if err != nil {
|
||||
@@ -145,7 +149,7 @@ func UpdateRouter(request *restful.Request, response *restful.Response) {
|
||||
|
||||
namespace := request.PathParameter("namespace")
|
||||
|
||||
newRouter := models.Router{}
|
||||
newRouter := Router{}
|
||||
err := request.ReadEntity(&newRouter)
|
||||
|
||||
if err != nil {
|
||||
@@ -166,30 +170,14 @@ func UpdateRouter(request *restful.Request, response *restful.Response) {
|
||||
}
|
||||
}
|
||||
|
||||
func ParseParameter(router models.Router) (routerType v1.ServiceType, annotationMap map[string]string, err error) {
|
||||
func ParseParameter(router Router) (routerType v1.ServiceType, annotationMap map[string]string, err error) {
|
||||
|
||||
routerType = v1.ServiceTypeNodePort
|
||||
annotationMap = make(map[string]string)
|
||||
|
||||
if strings.Compare(strings.ToLower(router.RouterType), "loadbalancer") == 0 {
|
||||
annotations := router.Annotations
|
||||
|
||||
annotation := strings.FieldsFunc(annotations, func(r rune) bool {
|
||||
return r == ',' || r == '='
|
||||
})
|
||||
|
||||
if len(annotation)%2 != 0 {
|
||||
glog.Error("Wrong annotations, missing key or value")
|
||||
return routerType, annotationMap, errors.New("wrong annotations, missing key or value")
|
||||
}
|
||||
|
||||
for i := 0; i < len(annotation); i += 2 {
|
||||
annotationMap[annotation[i]] = annotation[i+1]
|
||||
}
|
||||
|
||||
return v1.ServiceTypeLoadBalancer, annotationMap, nil
|
||||
return v1.ServiceTypeLoadBalancer, router.Annotations, nil
|
||||
} else {
|
||||
return v1.ServiceTypeNodePort, nil, nil
|
||||
return v1.ServiceTypeNodePort, make(map[string]string, 0), nil
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,5 +26,7 @@ type PageableResponse struct {
|
||||
}
|
||||
|
||||
const APIVERSION = "v1alpha1"
|
||||
|
||||
const KIND = "kubesphere"
|
||||
|
||||
const DATA_HOME = "/etc/kubesphere"
|
||||
const INGRESS_CONTROLLER_FOLDER = DATA_HOME + "/ingress-controller"
|
||||
|
||||
@@ -28,20 +28,14 @@ import (
|
||||
"k8s.io/client-go/kubernetes/scheme"
|
||||
|
||||
"kubesphere.io/kubesphere/pkg/client"
|
||||
"kubesphere.io/kubesphere/pkg/constants"
|
||||
)
|
||||
|
||||
const RouterYamlDirectory = "/etc/kubesphere/ingress-controller/"
|
||||
|
||||
type Router struct {
|
||||
RouterType string `json:"type"`
|
||||
Annotations string `json:"annotations"`
|
||||
}
|
||||
|
||||
func GetAllRouters() ([]*coreV1.Service, error) {
|
||||
|
||||
k8sClient := client.NewK8sClient()
|
||||
|
||||
routers := []*coreV1.Service{}
|
||||
routers := make([]*coreV1.Service, 0)
|
||||
|
||||
opts := metaV1.ListOptions{}
|
||||
|
||||
@@ -103,14 +97,14 @@ func LoadYamls() ([]string, error) {
|
||||
|
||||
var yamls []string
|
||||
|
||||
files, err := ioutil.ReadDir(RouterYamlDirectory)
|
||||
files, err := ioutil.ReadDir(constants.INGRESS_CONTROLLER_FOLDER)
|
||||
if err != nil {
|
||||
glog.Error(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, file := range files {
|
||||
content, err := ioutil.ReadFile(RouterYamlDirectory + "/" + file.Name())
|
||||
content, err := ioutil.ReadFile(constants.INGRESS_CONTROLLER_FOLDER + "/" + file.Name())
|
||||
|
||||
if err != nil {
|
||||
glog.Error(err)
|
||||
@@ -308,16 +302,14 @@ func UpdateRouter(namespace string, routerType coreV1.ServiceType, annotations m
|
||||
return router, nil
|
||||
}
|
||||
|
||||
if router.Spec.Type != routerType {
|
||||
router.Spec.Type = routerType
|
||||
router.SetAnnotations(annotations)
|
||||
router.Spec.Type = routerType
|
||||
router.SetAnnotations(annotations)
|
||||
|
||||
router, err = k8sClient.CoreV1().Services(namespace).Update(router)
|
||||
router, err = k8sClient.CoreV1().Services(namespace).Update(router)
|
||||
|
||||
if err != nil {
|
||||
glog.Error(err)
|
||||
return router, err
|
||||
}
|
||||
if err != nil {
|
||||
glog.Error(err)
|
||||
return router, err
|
||||
}
|
||||
|
||||
return router, nil
|
||||
|
||||
Reference in New Issue
Block a user