Skip to content
Snippets Groups Projects
Commit 3129b4aa authored by Maksim Gorelik's avatar Maksim Gorelik
Browse files

ViperGetStringSlice

parent e0a86644
No related branches found
No related tags found
No related merge requests found
Pipeline #46984 failed
package common
import (
"errors"
"fmt"
"github.com/spf13/viper"
)
func ViperGetStringSlice(key string) ([]string, error) {
// viper.GetStringSlice does not work properly https://github.com/spf13/viper/issues/380#issuecomment-445244338
var res []string
err := viper.UnmarshalKey(key, &res)
if err != nil {
return nil, errors.Join(err, fmt.Errorf("error reading %s from env", key))
} else {
return res, nil
}
}
...@@ -2,6 +2,7 @@ package kong ...@@ -2,6 +2,7 @@ package kong
import ( import (
"fmt" "fmt"
"gitlab.eclipse.org/eclipse/xfsc/personal-credential-manager-cloud/plugin-kubernetes-operator/common"
"strconv" "strconv"
"strings" "strings"
...@@ -18,7 +19,12 @@ var log = logger.GetLogger() ...@@ -18,7 +19,12 @@ var log = logger.GetLogger()
func SyncKongServices(services *[]types.Metadata) { func SyncKongServices(services *[]types.Metadata) {
adminApi := viper.GetString("KONG_ADMIN_API") adminApi := viper.GetString("KONG_ADMIN_API")
tags := viper.GetStringSlice("PLUGIN_TAGS")
tags, err := common.ViperGetStringSlice("PLUGIN_TAGS")
if err != nil {
log.Sugar().Errorln(err)
return
}
kr, err := kongListRoutes(adminApi, "", tags) kr, err := kongListRoutes(adminApi, "", tags)
if err != nil || kr == nil { if err != nil || kr == nil {
...@@ -56,32 +62,29 @@ func SyncKongServices(services *[]types.Metadata) { ...@@ -56,32 +62,29 @@ func SyncKongServices(services *[]types.Metadata) {
} }
} }
func getPort(svc *v1types.Service) (string, error) {
postfix := viper.GetString("PLUGIN_PORT_NAME_POSTFIX")
for _, port := range svc.Spec.Ports {
if strings.HasSuffix(port.Name, postfix) {
return strconv.Itoa(int(port.Port)), nil
}
}
// If no port with the postfix is found, return an error
err := fmt.Errorf("port with postfix `%s` not found for service: %s", postfix, svc.Name)
return "", err
}
func SyncKongService(event watch.EventType, svc *v1types.Service, metadata *types.Metadata) { func SyncKongService(event watch.EventType, svc *v1types.Service, metadata *types.Metadata) {
adminApi := viper.GetString("KONG_ADMIN_API") adminApi := viper.GetString("KONG_ADMIN_API")
str := []string{metadata.Name} str := []string{metadata.Name}
name := strings.ReplaceAll(strings.Join(str, "-"), " ", "-") name := strings.ReplaceAll(strings.Join(str, "-"), " ", "-")
service, err := kongListService(adminApi, metadata.ServiceGuid) service, err := kongListService(adminApi, metadata.ServiceGuid)
tags := viper.GetStringSlice("PLUGIN_TAGS")
methods := viper.GetStringSlice("PLUGIN_HTTP_METHODS") tags, err := common.ViperGetStringSlice("PLUGIN_TAGS")
if err != nil {
log.Sugar().Errorln(err)
return
}
methods, err := common.ViperGetStringSlice("PLUGIN_HTTP_METHODS")
if err != nil {
log.Sugar().Errorln(err)
return
}
port, err := getPort(svc) port, err := getPort(svc)
if err != nil { if err != nil {
log.Sugar().Errorln(err) log.Sugar().Errorln(err)
return return
} }
host := svc.Name + "." + svc.Namespace + ".svc.cluster.local" host := svc.Name + "." + svc.Namespace + ".svc.cluster.local"
if err == nil { if err == nil {
...@@ -93,7 +96,7 @@ func SyncKongService(event watch.EventType, svc *v1types.Service, metadata *type ...@@ -93,7 +96,7 @@ func SyncKongService(event watch.EventType, svc *v1types.Service, metadata *type
err = kongDeleteService(metadata.ServiceGuid, adminApi) err = kongDeleteService(metadata.ServiceGuid, adminApi)
} }
if err != nil { if err != nil {
log.Sugar().Errorln("Deletion not successfull.") log.Sugar().Errorln("Deletion not successful.")
return return
} }
} }
...@@ -104,7 +107,7 @@ func SyncKongService(event watch.EventType, svc *v1types.Service, metadata *type ...@@ -104,7 +107,7 @@ func SyncKongService(event watch.EventType, svc *v1types.Service, metadata *type
err = kongCreateRoute(metadata.ServiceGuid, metadata.RouteGuid, name, metadata.Route, adminApi, "PATCH", tags, methods) err = kongCreateRoute(metadata.ServiceGuid, metadata.RouteGuid, name, metadata.Route, adminApi, "PATCH", tags, methods)
} }
if err != nil { if err != nil {
log.Sugar().Errorln("Deletion not successfull.") log.Sugar().Errorln(err, "Modification not successful.")
return return
} }
} }
...@@ -116,9 +119,22 @@ func SyncKongService(event watch.EventType, svc *v1types.Service, metadata *type ...@@ -116,9 +119,22 @@ func SyncKongService(event watch.EventType, svc *v1types.Service, metadata *type
err = kongCreateRoute(metadata.ServiceGuid, metadata.RouteGuid, name, metadata.Route, adminApi, "POST", tags, methods) err = kongCreateRoute(metadata.ServiceGuid, metadata.RouteGuid, name, metadata.Route, adminApi, "POST", tags, methods)
} }
if err != nil { if err != nil {
log.Sugar().Errorln("Deletion not successfull.") log.Sugar().Errorln("Creation not successful.")
return return
} }
} }
} }
} }
func getPort(svc *v1types.Service) (string, error) {
postfix := viper.GetString("PLUGIN_PORT_NAME_POSTFIX")
for _, port := range svc.Spec.Ports {
if strings.HasSuffix(port.Name, postfix) {
return strconv.Itoa(int(port.Port)), nil
}
}
// If no port with the postfix is found, return an error
err := fmt.Errorf("port with postfix `%s` not found for service: %s", postfix, svc.Name)
return "", err
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment