Feat add ns generation (#1667)

* feat: add ns generation for k8s

Signed-off-by: AhmedGrati <ahmedgrati1999@gmail.com>

* feat: add ns generation for openshift

Signed-off-by: AhmedGrati <ahmedgrati1999@gmail.com>

* test: add functional tests

Signed-off-by: AhmedGrati <ahmedgrati1999@gmail.com>

* fix: remove some code nits

Signed-off-by: AhmedGrati <ahmedgrati1999@gmail.com>

---------

Signed-off-by: AhmedGrati <ahmedgrati1999@gmail.com>
This commit is contained in:
AhmedGrati
2023-07-16 22:59:16 +01:00
committed by GitHub
parent 071451dfdf
commit b6b708b637
14 changed files with 291 additions and 1 deletions
+7
View File
@@ -259,6 +259,12 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
}
// this will hold all the converted data
var allobjects []runtime.Object
if komposeObject.Namespace != "" {
ns := transformer.CreateNamespace(komposeObject.Namespace)
allobjects = append(allobjects, ns)
}
var err error
var composeFileDir string
buildRepo := opt.BuildRepo
@@ -422,6 +428,7 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
// sort all object so Services are first
o.SortServicesFirst(&allobjects)
o.RemoveDupObjects(&allobjects)
transformer.AssignNamespaceToObjects(&allobjects, komposeObject.Namespace)
// o.FixWorkloadVersion(&allobjects)
return allobjects, nil
@@ -29,6 +29,7 @@ import (
"github.com/kubernetes/kompose/pkg/transformer/kubernetes"
deployapi "github.com/openshift/api/apps/v1"
"github.com/pkg/errors"
api "k8s.io/api/core/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
)
@@ -465,3 +466,28 @@ func TestServiceExternalTrafficPolicy(t *testing.T) {
}
}
}
func TestNamespaceGeneration(t *testing.T) {
ns := "app"
komposeObject := kobject.KomposeObject{
ServiceConfigs: map[string]kobject.ServiceConfig{"app": newServiceConfig()},
Namespace: ns,
}
o := OpenShift{}
objs, err := o.Transform(komposeObject, kobject.ConvertOptions{})
if err != nil {
t.Error(errors.Wrap(err, "k.Transform failed"))
}
for _, obj := range objs {
if namespace, ok := obj.(*api.Namespace); ok {
if strings.ToLower(ns) != strings.ToLower(namespace.ObjectMeta.Name) {
t.Errorf("Expected namespace name %v, got %v", ns, namespace.ObjectMeta.Name)
}
}
if dep, ok := obj.(*deployapi.DeploymentConfig); ok {
if dep.ObjectMeta.Namespace != ns {
t.Errorf("Expected deployment namespace %v, got %v", ns, dep.ObjectMeta.Namespace)
}
}
}
}