kompose up for openshift

kompose --provider openshift up
This commit is contained in:
Tomas Kral 2016-10-09 13:15:26 +02:00
parent 776c94803f
commit 5e1a5cbb3b
No known key found for this signature in database
GPG Key ID: E690DA7E4F291FA6
2 changed files with 68 additions and 6 deletions

View File

@ -194,7 +194,7 @@ func Up(c *cli.Context) {
t = new(openshift.OpenShift)
}
//Submit objects provider
//Submit objects to provider
errDeploy := t.Deploy(komposeObject, opt)
if errDeploy != nil {
logrus.Fatalf("Error while deploying application: %s", errDeploy)

View File

@ -18,18 +18,27 @@ package openshift
import (
"errors"
deployapi "github.com/openshift/origin/pkg/deploy/api"
imageapi "github.com/openshift/origin/pkg/image/api"
"fmt"
"strings"
"github.com/kubernetes-incubator/kompose/pkg/kobject"
"github.com/kubernetes-incubator/kompose/pkg/transformer/kubernetes"
"github.com/Sirupsen/logrus"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"k8s.io/kubernetes/pkg/runtime"
"strings"
kclient "k8s.io/kubernetes/pkg/client/unversioned"
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
oclient "github.com/openshift/origin/pkg/client"
ocliconfig "github.com/openshift/origin/pkg/cmd/cli/config"
deployapi "github.com/openshift/origin/pkg/deploy/api"
imageapi "github.com/openshift/origin/pkg/image/api"
)
type OpenShift struct {
@ -157,7 +166,60 @@ func (k *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
}
func (k *OpenShift) Deploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error {
return errors.New("Not Implemented")
//Convert komposeObject
objects := k.Transform(komposeObject, opt)
fmt.Println("We are going to create OpenShift DeploymentConfigs and Services for your Dockerized application. \n" +
"If you need different kind of resources, use the 'kompose convert' and 'oc create -f' commands instead. \n")
// initialize OpenShift Client
loadingRules := ocliconfig.NewOpenShiftClientConfigLoadingRules()
overrides := &clientcmd.ConfigOverrides{}
oclientConfig, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, overrides).ClientConfig()
if err != nil {
return err
}
oclient := oclient.NewOrDie(oclientConfig)
// initialize Kubernetes client
kfactory := kcmdutil.NewFactory(nil)
kclientConfig, err := kfactory.ClientConfig()
if err != nil {
return err
}
kclient := kclient.NewOrDie(kclientConfig)
// get namespace from config
namespace, _, err := kfactory.DefaultNamespace()
if err != nil {
return err
}
for _, v := range objects {
switch t := v.(type) {
case *imageapi.ImageStream:
_, err := oclient.ImageStreams(namespace).Create(t)
if err != nil {
return err
}
logrus.Infof("Successfully created ImageStream: %s", t.Name)
case *deployapi.DeploymentConfig:
_, err := oclient.DeploymentConfigs(namespace).Create(t)
if err != nil {
return err
}
logrus.Infof("Successfully created deployment: %s", t.Name)
case *api.Service:
_, err := kclient.Services(namespace).Create(t)
if err != nil {
return err
}
logrus.Infof("Successfully created service: %s", t.Name)
}
}
fmt.Println("\nYour application has been deployed to OpenShift. You can run 'oc get dc,svc,is' for details.")
return nil
}
func (k *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error {