Fix namespace resolution with DEFAULT_NAMESPACE and other parameters set (#2659)
This commit is contained in:
+21
-15
@@ -42,7 +42,7 @@ func init() {
|
|||||||
FunctionNamespace: os.Getenv(ENV_FUNCTION_NAMESPACE),
|
FunctionNamespace: os.Getenv(ENV_FUNCTION_NAMESPACE),
|
||||||
BuiderNamespace: os.Getenv(ENV_BUILDER_NAMESPACE),
|
BuiderNamespace: os.Getenv(ENV_BUILDER_NAMESPACE),
|
||||||
DefaultNamespace: os.Getenv(ENV_DEFAULT_NAMESPACE),
|
DefaultNamespace: os.Getenv(ENV_DEFAULT_NAMESPACE),
|
||||||
FissionResourceNS: getNamespaces(),
|
FissionResourceNS: GetNamespaces(),
|
||||||
Logger: loggerfactory.GetLogger(),
|
Logger: loggerfactory.GetLogger(),
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,27 +106,33 @@ func (nsr *NamespaceResolver) FissionNSWithOptions(option ...option) map[string]
|
|||||||
return fissionResourceNS
|
return fissionResourceNS
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNamespaces() map[string]string {
|
func GetNamespaces() map[string]string {
|
||||||
envValue := os.Getenv(ENV_ADDITIONAL_NAMESPACE)
|
namespaces := make(map[string]string)
|
||||||
if len(envValue) == 0 {
|
|
||||||
return map[string]string{
|
envValue := os.Getenv(ENV_DEFAULT_NAMESPACE)
|
||||||
metav1.NamespaceDefault: metav1.NamespaceDefault,
|
if len(envValue) > 0 {
|
||||||
|
namespaces[envValue] = envValue
|
||||||
|
}
|
||||||
|
|
||||||
|
envValue = os.Getenv(ENV_ADDITIONAL_NAMESPACE)
|
||||||
|
if len(envValue) > 0 {
|
||||||
|
lstNamespaces := strings.Split(envValue, ",")
|
||||||
|
for _, namespace := range lstNamespaces {
|
||||||
|
//check to handle string with additional comma at the end of string. eg- ns1,ns2,
|
||||||
|
if namespace != "" {
|
||||||
|
namespaces[namespace] = namespace
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lstNamespaces := strings.Split(envValue, ",")
|
if len(namespaces) == 0 {
|
||||||
namespaces := make(map[string]string, len(lstNamespaces))
|
namespaces[metav1.NamespaceDefault] = metav1.NamespaceDefault
|
||||||
for _, namespace := range lstNamespaces {
|
|
||||||
//check to handle string with additional comma at the end of string. eg- ns1,ns2,
|
|
||||||
if namespace != "" {
|
|
||||||
namespaces[namespace] = namespace
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return namespaces
|
return namespaces
|
||||||
}
|
}
|
||||||
|
|
||||||
func (nsr *NamespaceResolver) GetBuilderNS(namespace string) string {
|
func (nsr *NamespaceResolver) GetBuilderNS(namespace string) string {
|
||||||
if nsr.FunctionNamespace == "" || nsr.BuiderNamespace == "" {
|
if nsr.BuiderNamespace == "" {
|
||||||
return namespace
|
return namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +143,7 @@ func (nsr *NamespaceResolver) GetBuilderNS(namespace string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (nsr *NamespaceResolver) GetFunctionNS(namespace string) string {
|
func (nsr *NamespaceResolver) GetFunctionNS(namespace string) string {
|
||||||
if nsr.FunctionNamespace == "" || nsr.BuiderNamespace == "" {
|
if nsr.FunctionNamespace == "" {
|
||||||
return namespace
|
return namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+124
-6
@@ -1,6 +1,7 @@
|
|||||||
package utils
|
package utils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -20,22 +21,52 @@ func TestNamespaceResolver(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "should return testns2 namespace",
|
name: "should return testns2 namespace",
|
||||||
namespaceResolver: getFissionNamespaces("fission-builder", "fission-function", "testns"),
|
namespaceResolver: getFissionNamespaces("fission-builder", "fission-function", "default"),
|
||||||
namespace: "testns2",
|
namespace: "testns2",
|
||||||
expected: "testns2",
|
expected: "testns2",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "should return fission-builder namespace",
|
||||||
|
namespaceResolver: getFissionNamespaces("fission-builder", "", "default"),
|
||||||
|
namespace: "default",
|
||||||
|
expected: "fission-builder",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "should return testns3 namespace",
|
name: "should return testns3 namespace",
|
||||||
namespaceResolver: getFissionNamespaces("", "", "testns"),
|
namespaceResolver: getFissionNamespaces("fission-builder", "", "testns"),
|
||||||
namespace: "testns3",
|
namespace: "testns3",
|
||||||
expected: "testns3",
|
expected: "testns3",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "should return testns4 namespace",
|
||||||
|
namespaceResolver: getFissionNamespaces("", "fission-function", "default"),
|
||||||
|
namespace: "testns4",
|
||||||
|
expected: "testns4",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "should return testns5 namespace",
|
||||||
|
namespaceResolver: getFissionNamespaces("", "fission-function", "testns"),
|
||||||
|
namespace: "testns5",
|
||||||
|
expected: "testns5",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "should return default namespace",
|
name: "should return default namespace",
|
||||||
namespaceResolver: getFissionNamespaces("fission-builder", "", "default"),
|
namespaceResolver: getFissionNamespaces("", "", "default"),
|
||||||
namespace: "default",
|
namespace: "default",
|
||||||
expected: "default",
|
expected: "default",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "should return testns6 namespace",
|
||||||
|
namespaceResolver: getFissionNamespaces("", "", "default"),
|
||||||
|
namespace: "testns6",
|
||||||
|
expected: "testns6",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "should return testns7 namespace",
|
||||||
|
namespaceResolver: getFissionNamespaces("", "", ""),
|
||||||
|
namespace: "testns7",
|
||||||
|
expected: "testns7",
|
||||||
|
},
|
||||||
} {
|
} {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
ns := test.namespaceResolver.GetBuilderNS(test.namespace)
|
ns := test.namespaceResolver.GetBuilderNS(test.namespace)
|
||||||
@@ -61,22 +92,52 @@ func TestNamespaceResolver(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "should return testns2 namespace",
|
name: "should return testns2 namespace",
|
||||||
namespaceResolver: getFissionNamespaces("fission-builder", "fission-function", "testns"),
|
namespaceResolver: getFissionNamespaces("fission-builder", "fission-function", "default"),
|
||||||
namespace: "testns2",
|
namespace: "testns2",
|
||||||
expected: "testns2",
|
expected: "testns2",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "should return fission-function namespace",
|
||||||
|
namespaceResolver: getFissionNamespaces("", "fission-function", "default"),
|
||||||
|
namespace: "default",
|
||||||
|
expected: "fission-function",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "should return testns3 namespace",
|
name: "should return testns3 namespace",
|
||||||
namespaceResolver: getFissionNamespaces("", "", "testns"),
|
namespaceResolver: getFissionNamespaces("", "fission-function", "testns"),
|
||||||
namespace: "testns3",
|
namespace: "testns3",
|
||||||
expected: "testns3",
|
expected: "testns3",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "should return testns4 namespace",
|
||||||
|
namespaceResolver: getFissionNamespaces("fission-builder", "", "default"),
|
||||||
|
namespace: "testns4",
|
||||||
|
expected: "testns4",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "should return testns5 namespace",
|
||||||
|
namespaceResolver: getFissionNamespaces("fission-builder", "", "testns"),
|
||||||
|
namespace: "testns5",
|
||||||
|
expected: "testns5",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "should return default namespace",
|
name: "should return default namespace",
|
||||||
namespaceResolver: getFissionNamespaces("", "fission-function", "default"),
|
namespaceResolver: getFissionNamespaces("", "", "default"),
|
||||||
namespace: "default",
|
namespace: "default",
|
||||||
expected: "default",
|
expected: "default",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "should return testns6 namespace",
|
||||||
|
namespaceResolver: getFissionNamespaces("", "", "default"),
|
||||||
|
namespace: "testns6",
|
||||||
|
expected: "testns6",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "should return testns7 namespace",
|
||||||
|
namespaceResolver: getFissionNamespaces("", "", ""),
|
||||||
|
namespace: "testns7",
|
||||||
|
expected: "testns7",
|
||||||
|
},
|
||||||
} {
|
} {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
ns := test.namespaceResolver.GetFunctionNS(test.namespace)
|
ns := test.namespaceResolver.GetFunctionNS(test.namespace)
|
||||||
@@ -115,6 +176,51 @@ func TestNamespaceResolver(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("getNamespace", func(t *testing.T) {
|
||||||
|
for _, test := range []struct {
|
||||||
|
name string
|
||||||
|
defaultNamespace string
|
||||||
|
additionalNamespace string
|
||||||
|
expected int
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "length of namespaces should be 1",
|
||||||
|
defaultNamespace: "",
|
||||||
|
additionalNamespace: "",
|
||||||
|
expected: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "length of namespaces should be 1",
|
||||||
|
defaultNamespace: "default",
|
||||||
|
additionalNamespace: "",
|
||||||
|
expected: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "length of namespaces should be 1",
|
||||||
|
defaultNamespace: "default",
|
||||||
|
additionalNamespace: "default",
|
||||||
|
expected: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "length of namespaces should be 3",
|
||||||
|
defaultNamespace: "default",
|
||||||
|
additionalNamespace: "testns1,testns2",
|
||||||
|
expected: 3,
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
t.Run(test.name, func(t *testing.T) {
|
||||||
|
err := setNamespace(test.defaultNamespace, test.additionalNamespace)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error setting environment Variable %s", err.Error())
|
||||||
|
}
|
||||||
|
ns := GetNamespaces()
|
||||||
|
if test.expected != len(ns) {
|
||||||
|
t.Errorf("expected length of namespace %d, got %d", test.expected, len(ns))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func getFissionNamespaces(builderNS, functionNS, defaultNS string) *NamespaceResolver {
|
func getFissionNamespaces(builderNS, functionNS, defaultNS string) *NamespaceResolver {
|
||||||
@@ -124,3 +230,15 @@ func getFissionNamespaces(builderNS, functionNS, defaultNS string) *NamespaceRes
|
|||||||
DefaultNamespace: defaultNS,
|
DefaultNamespace: defaultNS,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setNamespace(defaultNamespace string, additionalNamespace string) error {
|
||||||
|
err := os.Setenv(ENV_DEFAULT_NAMESPACE, defaultNamespace)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = os.Setenv(ENV_ADDITIONAL_NAMESPACE, additionalNamespace)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user