diff --git a/pkg/apis/v1alpha/routes/routes_handler.go b/pkg/apis/v1alpha/routes/routes_handler.go index 04c711565..cd6035460 100644 --- a/pkg/apis/v1alpha/routes/routes_handler.go +++ b/pkg/apis/v1alpha/routes/routes_handler.go @@ -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 } } diff --git a/pkg/constants/common.go b/pkg/constants/common.go index 71d572379..885dc5cb3 100644 --- a/pkg/constants/common.go +++ b/pkg/constants/common.go @@ -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" diff --git a/pkg/models/routes.go b/pkg/models/routes.go index 66e92c804..4471a10bd 100644 --- a/pkg/models/routes.go +++ b/pkg/models/routes.go @@ -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