fix router bugs
This commit is contained in:
@@ -19,7 +19,6 @@ package routes
|
|||||||
import (
|
import (
|
||||||
"github.com/emicklei/go-restful"
|
"github.com/emicklei/go-restful"
|
||||||
|
|
||||||
"errors"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@@ -64,6 +63,11 @@ func Register(ws *restful.WebService) {
|
|||||||
Produces(restful.MIME_JSON))
|
Produces(restful.MIME_JSON))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Router struct {
|
||||||
|
RouterType string `json:"type"`
|
||||||
|
Annotations map[string]string `json:"annotations"`
|
||||||
|
}
|
||||||
|
|
||||||
// Get all namespace ingress controller services
|
// Get all namespace ingress controller services
|
||||||
func GetAllRouters(request *restful.Request, response *restful.Response) {
|
func GetAllRouters(request *restful.Request, response *restful.Response) {
|
||||||
|
|
||||||
@@ -99,7 +103,7 @@ func CreateRouter(request *restful.Request, response *restful.Response) {
|
|||||||
|
|
||||||
namespace := request.PathParameter("namespace")
|
namespace := request.PathParameter("namespace")
|
||||||
|
|
||||||
newRouter := models.Router{}
|
newRouter := Router{}
|
||||||
err := request.ReadEntity(&newRouter)
|
err := request.ReadEntity(&newRouter)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -145,7 +149,7 @@ func UpdateRouter(request *restful.Request, response *restful.Response) {
|
|||||||
|
|
||||||
namespace := request.PathParameter("namespace")
|
namespace := request.PathParameter("namespace")
|
||||||
|
|
||||||
newRouter := models.Router{}
|
newRouter := Router{}
|
||||||
err := request.ReadEntity(&newRouter)
|
err := request.ReadEntity(&newRouter)
|
||||||
|
|
||||||
if err != nil {
|
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
|
routerType = v1.ServiceTypeNodePort
|
||||||
annotationMap = make(map[string]string)
|
|
||||||
|
|
||||||
if strings.Compare(strings.ToLower(router.RouterType), "loadbalancer") == 0 {
|
if strings.Compare(strings.ToLower(router.RouterType), "loadbalancer") == 0 {
|
||||||
annotations := router.Annotations
|
return v1.ServiceTypeLoadBalancer, router.Annotations, nil
|
||||||
|
|
||||||
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
|
|
||||||
} else {
|
} 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 APIVERSION = "v1alpha1"
|
||||||
|
|
||||||
const KIND = "kubesphere"
|
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"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
|
|
||||||
"kubesphere.io/kubesphere/pkg/client"
|
"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) {
|
func GetAllRouters() ([]*coreV1.Service, error) {
|
||||||
|
|
||||||
k8sClient := client.NewK8sClient()
|
k8sClient := client.NewK8sClient()
|
||||||
|
|
||||||
routers := []*coreV1.Service{}
|
routers := make([]*coreV1.Service, 0)
|
||||||
|
|
||||||
opts := metaV1.ListOptions{}
|
opts := metaV1.ListOptions{}
|
||||||
|
|
||||||
@@ -103,14 +97,14 @@ func LoadYamls() ([]string, error) {
|
|||||||
|
|
||||||
var yamls []string
|
var yamls []string
|
||||||
|
|
||||||
files, err := ioutil.ReadDir(RouterYamlDirectory)
|
files, err := ioutil.ReadDir(constants.INGRESS_CONTROLLER_FOLDER)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Error(err)
|
glog.Error(err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, file := range files {
|
for _, file := range files {
|
||||||
content, err := ioutil.ReadFile(RouterYamlDirectory + "/" + file.Name())
|
content, err := ioutil.ReadFile(constants.INGRESS_CONTROLLER_FOLDER + "/" + file.Name())
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Error(err)
|
glog.Error(err)
|
||||||
@@ -308,7 +302,6 @@ func UpdateRouter(namespace string, routerType coreV1.ServiceType, annotations m
|
|||||||
return router, nil
|
return router, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if router.Spec.Type != routerType {
|
|
||||||
router.Spec.Type = routerType
|
router.Spec.Type = routerType
|
||||||
router.SetAnnotations(annotations)
|
router.SetAnnotations(annotations)
|
||||||
|
|
||||||
@@ -318,7 +311,6 @@ func UpdateRouter(namespace string, routerType coreV1.ServiceType, annotations m
|
|||||||
glog.Error(err)
|
glog.Error(err)
|
||||||
return router, err
|
return router, err
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return router, nil
|
return router, nil
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user