forked from LaconicNetwork/kompose
Make sure that Services are first in the List
Sorts objects in Transform function, this should make sure that Services are first everywhere as long as we keep order in the slice that Transform returns. fixes #130
This commit is contained in:
parent
b24556e9d5
commit
e2da0f089a
@ -27,7 +27,6 @@ import (
|
||||
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
|
||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
|
||||
// install kubernetes api
|
||||
_ "github.com/openshift/origin/pkg/deploy/api/install"
|
||||
@ -207,7 +206,6 @@ func Up(c *cli.Context) {
|
||||
|
||||
//Convert komposeObject to K8S controllers
|
||||
objects := t.Transform(komposeObject, opt)
|
||||
sortServicesFirst(&objects)
|
||||
|
||||
//Submit objects to K8s endpoint
|
||||
kubernetes.CreateObjects(client, objects)
|
||||
@ -256,24 +254,6 @@ func Down(c *cli.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
// the objects that we get can be in any order this keeps services first
|
||||
// according to best practice kubernetes services should be created first
|
||||
// http://kubernetes.io/docs/user-guide/config-best-practices/
|
||||
func sortServicesFirst(objs *[]runtime.Object) {
|
||||
var svc, others, ret []runtime.Object
|
||||
|
||||
for _, obj := range *objs {
|
||||
if obj.GetObjectKind().GroupVersionKind().Kind == "Service" {
|
||||
svc = append(svc, obj)
|
||||
} else {
|
||||
others = append(others, obj)
|
||||
}
|
||||
}
|
||||
ret = append(ret, svc...)
|
||||
ret = append(ret, others...)
|
||||
*objs = ret
|
||||
}
|
||||
|
||||
func askForConfirmation() bool {
|
||||
var response string
|
||||
_, err := fmt.Scanln(&response)
|
||||
|
||||
@ -139,7 +139,9 @@ func PrintList(objects []runtime.Object, opt kobject.ConvertOptions) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
list.Items = append(list.Items, versionedObject)
|
||||
|
||||
}
|
||||
// version list itself
|
||||
listVersion := unversioned.GroupVersion{Group: "", Version: "v1"}
|
||||
@ -303,3 +305,21 @@ func UpdateKubernetesObjects(name string, service kobject.ServiceConfig, objects
|
||||
UpdateController(obj, fillTemplate, fillObjectMeta)
|
||||
}
|
||||
}
|
||||
|
||||
// the objects that we get can be in any order this keeps services first
|
||||
// according to best practice kubernetes services should be created first
|
||||
// http://kubernetes.io/docs/user-guide/config-best-practices/
|
||||
func SortServicesFirst(objs *[]runtime.Object) {
|
||||
var svc, others, ret []runtime.Object
|
||||
|
||||
for _, obj := range *objs {
|
||||
if obj.GetObjectKind().GroupVersionKind().Kind == "Service" {
|
||||
svc = append(svc, obj)
|
||||
} else {
|
||||
others = append(others, obj)
|
||||
}
|
||||
}
|
||||
ret = append(ret, svc...)
|
||||
ret = append(ret, others...)
|
||||
*objs = ret
|
||||
}
|
||||
|
||||
@ -234,7 +234,8 @@ func CreateKubernetesObjects(name string, service kobject.ServiceConfig, opt kob
|
||||
return objects
|
||||
}
|
||||
|
||||
// Maps komposeObject to k8s objects
|
||||
// Transform maps komposeObject to k8s objects
|
||||
// returns object that are already sorted in the way that Services are first
|
||||
func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) []runtime.Object {
|
||||
// this will hold all the converted data
|
||||
var allobjects []runtime.Object
|
||||
@ -252,7 +253,8 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject.
|
||||
|
||||
allobjects = append(allobjects, objects...)
|
||||
}
|
||||
|
||||
// sort all object so Services are first
|
||||
SortServicesFirst(&allobjects)
|
||||
return allobjects
|
||||
}
|
||||
|
||||
|
||||
@ -62,7 +62,8 @@ func initDeploymentConfig(name string, service kobject.ServiceConfig, replicas i
|
||||
return dc
|
||||
}
|
||||
|
||||
// Maps komposeObject to openshift objects
|
||||
// Transform maps komposeObject to openshift objects
|
||||
// returns objects that are already sorted in the way that Services are first
|
||||
func (k *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) []runtime.Object {
|
||||
// this will hold all the converted data
|
||||
var allobjects []runtime.Object
|
||||
@ -84,6 +85,7 @@ func (k *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
|
||||
|
||||
allobjects = append(allobjects, objects...)
|
||||
}
|
||||
|
||||
// sort all object so Services are first
|
||||
kubernetes.SortServicesFirst(&allobjects)
|
||||
return allobjects
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user