forked from LaconicNetwork/kompose
Merge pull request #220 from surajssd/pvc-kompose-up
kompose up/down create and delete pvc
This commit is contained in:
commit
aea39b4e1e
@ -19,11 +19,12 @@ package kubernetes
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/Sirupsen/logrus"
|
"github.com/Sirupsen/logrus"
|
||||||
deployapi "github.com/openshift/origin/pkg/deploy/api"
|
|
||||||
"github.com/kubernetes-incubator/kompose/pkg/kobject"
|
"github.com/kubernetes-incubator/kompose/pkg/kobject"
|
||||||
"github.com/kubernetes-incubator/kompose/pkg/transformer"
|
"github.com/kubernetes-incubator/kompose/pkg/transformer"
|
||||||
|
deployapi "github.com/openshift/origin/pkg/deploy/api"
|
||||||
|
|
||||||
// install kubernetes api
|
// install kubernetes api
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
@ -33,19 +34,21 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
|
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util/intstr"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
//"k8s.io/kubernetes/pkg/controller/daemon"
|
//"k8s.io/kubernetes/pkg/controller/daemon"
|
||||||
"time"
|
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Kubernetes struct {
|
type Kubernetes struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// timeout is how long we'll wait for the termination of kubernetes resource to be successful
|
||||||
|
// used when undeploying resources from kubernetes
|
||||||
|
const TIMEOUT = 300
|
||||||
|
|
||||||
// Init RC object
|
// Init RC object
|
||||||
func InitRC(name string, service kobject.ServiceConfig, replicas int) *api.ReplicationController {
|
func InitRC(name string, service kobject.ServiceConfig, replicas int) *api.ReplicationController {
|
||||||
rc := &api.ReplicationController{
|
rc := &api.ReplicationController{
|
||||||
@ -338,7 +341,7 @@ func (k *Kubernetes) Deploy(komposeObject kobject.KomposeObject, opt kobject.Con
|
|||||||
//Convert komposeObject
|
//Convert komposeObject
|
||||||
objects := k.Transform(komposeObject, opt)
|
objects := k.Transform(komposeObject, opt)
|
||||||
|
|
||||||
fmt.Println("We are going to create Kubernetes deployments and services for your Dockerized application. \n" +
|
fmt.Println("We are going to create Kubernetes Deployments, Services and PersistentVolumeClaims for your Dockerized application. \n" +
|
||||||
"If you need different kind of resources, use the 'kompose convert' and 'kubectl create -f' commands instead. \n")
|
"If you need different kind of resources, use the 'kompose convert' and 'kubectl create -f' commands instead. \n")
|
||||||
|
|
||||||
factory := cmdutil.NewFactory(nil)
|
factory := cmdutil.NewFactory(nil)
|
||||||
@ -366,14 +369,22 @@ func (k *Kubernetes) Deploy(komposeObject kobject.KomposeObject, opt kobject.Con
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
logrus.Infof("Successfully created service: %s", t.Name)
|
logrus.Infof("Successfully created service: %s", t.Name)
|
||||||
|
case *api.PersistentVolumeClaim:
|
||||||
|
_, err := client.PersistentVolumeClaims(namespace).Create(t)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
logrus.Infof("Successfully created persistentVolumeClaim: %s", t.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fmt.Println("\nYour application has been deployed to Kubernetes. You can run 'kubectl get deployment,svc,pods' for details.")
|
fmt.Println("\nYour application has been deployed to Kubernetes. You can run 'kubectl get deployment,svc,pods,pvc' for details.")
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error {
|
func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error {
|
||||||
|
//Convert komposeObject
|
||||||
|
objects := k.Transform(komposeObject, opt)
|
||||||
|
|
||||||
factory := cmdutil.NewFactory(nil)
|
factory := cmdutil.NewFactory(nil)
|
||||||
clientConfig, err := factory.ClientConfig()
|
clientConfig, err := factory.ClientConfig()
|
||||||
@ -386,33 +397,44 @@ func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.C
|
|||||||
}
|
}
|
||||||
client := client.NewOrDie(clientConfig)
|
client := client.NewOrDie(clientConfig)
|
||||||
|
|
||||||
// delete objects from kubernetes
|
for _, v := range objects {
|
||||||
for name := range komposeObject.ServiceConfigs {
|
switch t := v.(type) {
|
||||||
//delete svc
|
case *extensions.Deployment:
|
||||||
rpService, err := kubectl.ReaperFor(api.Kind("Service"), client)
|
//delete deployment
|
||||||
if err != nil {
|
rpDeployment, err := kubectl.ReaperFor(extensions.Kind("Deployment"), client)
|
||||||
return err
|
if err != nil {
|
||||||
}
|
return err
|
||||||
//FIXME: timeout = 300s, gracePeriod is nil
|
}
|
||||||
err = rpService.Stop(namespace, name, 300*time.Second, nil)
|
//FIXME: gracePeriod is nil
|
||||||
if err != nil {
|
err = rpDeployment.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
|
||||||
return err
|
if err != nil {
|
||||||
} else {
|
return err
|
||||||
logrus.Infof("Successfully deleted service: %s", name)
|
} else {
|
||||||
|
logrus.Infof("Successfully deleted deployment: %s", t.Name)
|
||||||
|
}
|
||||||
|
case *api.Service:
|
||||||
|
//delete svc
|
||||||
|
rpService, err := kubectl.ReaperFor(api.Kind("Service"), client)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
//FIXME: gracePeriod is nil
|
||||||
|
err = rpService.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
logrus.Infof("Successfully deleted service: %s", t.Name)
|
||||||
|
}
|
||||||
|
case *api.PersistentVolumeClaim:
|
||||||
|
// delete pvc
|
||||||
|
err = client.PersistentVolumeClaims(namespace).Delete(t.Name)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
logrus.Infof("Successfully deleted PersistentVolumeClaim: %s", t.Name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//delete deployment
|
|
||||||
rpDeployment, err := kubectl.ReaperFor(extensions.Kind("Deployment"), client)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
//FIXME: timeout = 300s, gracePeriod is nil
|
|
||||||
err = rpDeployment.Stop(namespace, name, 300*time.Second, nil)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
} else {
|
|
||||||
logrus.Infof("Successfully deleted deployment: %s", name)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -169,7 +169,7 @@ func (k *OpenShift) Deploy(komposeObject kobject.KomposeObject, opt kobject.Conv
|
|||||||
//Convert komposeObject
|
//Convert komposeObject
|
||||||
objects := k.Transform(komposeObject, opt)
|
objects := k.Transform(komposeObject, opt)
|
||||||
|
|
||||||
fmt.Println("We are going to create OpenShift DeploymentConfigs and Services for your Dockerized application. \n" +
|
fmt.Println("We are going to create OpenShift DeploymentConfigs, Services and PersistentVolumeClaims for your Dockerized application. \n" +
|
||||||
"If you need different kind of resources, use the 'kompose convert' and 'oc create -f' commands instead. \n")
|
"If you need different kind of resources, use the 'kompose convert' and 'oc create -f' commands instead. \n")
|
||||||
|
|
||||||
// initialize OpenShift Client
|
// initialize OpenShift Client
|
||||||
@ -215,9 +215,15 @@ func (k *OpenShift) Deploy(komposeObject kobject.KomposeObject, opt kobject.Conv
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
logrus.Infof("Successfully created service: %s", t.Name)
|
logrus.Infof("Successfully created service: %s", t.Name)
|
||||||
|
case *api.PersistentVolumeClaim:
|
||||||
|
_, err := kclient.PersistentVolumeClaims(namespace).Create(t)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
logrus.Infof("Successfully created persistentVolumeClaim: %s", t.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fmt.Println("\nYour application has been deployed to OpenShift. You can run 'oc get dc,svc,is' for details.")
|
fmt.Println("\nYour application has been deployed to OpenShift. You can run 'oc get dc,svc,is,pvc' for details.")
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user