Merge pull request #477 from surajnarwade/keep_trying_job

Kompose will keep trying its job
This commit is contained in:
Charlie Drage 2017-04-03 11:25:11 -04:00 committed by GitHub
commit 14a5ed38cf
4 changed files with 50 additions and 40 deletions

View File

@ -287,7 +287,9 @@ func Down(opt kobject.ConvertOptions) {
//Remove deployed application //Remove deployed application
errUndeploy := t.Undeploy(komposeObject, opt) errUndeploy := t.Undeploy(komposeObject, opt)
if errUndeploy != nil { if errUndeploy != nil {
log.Fatalf("Error while deleting application: %s", errUndeploy) for _, err = range errUndeploy {
log.Fatalf("Error while deleting application: %s", err)
}
} }
} }

View File

@ -691,17 +691,18 @@ func (k *Kubernetes) Deploy(komposeObject kobject.KomposeObject, opt kobject.Con
} }
// Undeploy deletes deployed objects from Kubernetes cluster // Undeploy deletes deployed objects from Kubernetes cluster
func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error { func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) []error {
var errorList []error
//Convert komposeObject //Convert komposeObject
objects, err := k.Transform(komposeObject, opt) objects, err := k.Transform(komposeObject, opt)
if err != nil { if err != nil {
return errors.Wrap(err, "k.Transform failed") errorList = append(errorList, err)
} }
client, namespace, err := k.GetKubernetesClient() client, namespace, err := k.GetKubernetesClient()
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, v := range objects { for _, v := range objects {
@ -713,20 +714,22 @@ func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.C
//delete deployment //delete deployment
deployment, err := client.Deployments(namespace).List(options) deployment, err := client.Deployments(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range deployment.Items { for _, l := range deployment.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
rpDeployment, err := kubectl.ReaperFor(extensions.Kind("Deployment"), client) rpDeployment, err := kubectl.ReaperFor(extensions.Kind("Deployment"), client)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
//FIXME: gracePeriod is nil //FIXME: gracePeriod is nil
err = rpDeployment.Stop(namespace, t.Name, TIMEOUT*time.Second, nil) err = rpDeployment.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted Deployment: %s", t.Name) log.Infof("Successfully deleted Deployment: %s", t.Name)
} }
} }
@ -734,20 +737,21 @@ func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.C
//delete svc //delete svc
svc, err := client.Services(namespace).List(options) svc, err := client.Services(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range svc.Items { for _, l := range svc.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
rpService, err := kubectl.ReaperFor(api.Kind("Service"), client) rpService, err := kubectl.ReaperFor(api.Kind("Service"), client)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
//FIXME: gracePeriod is nil //FIXME: gracePeriod is nil
err = rpService.Stop(namespace, t.Name, TIMEOUT*time.Second, nil) err = rpService.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted Service: %s", t.Name) log.Infof("Successfully deleted Service: %s", t.Name)
} }
} }
@ -755,13 +759,13 @@ func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.C
// delete pvc // delete pvc
pvc, err := client.PersistentVolumeClaims(namespace).List(options) pvc, err := client.PersistentVolumeClaims(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range pvc.Items { for _, l := range pvc.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
err = client.PersistentVolumeClaims(namespace).Delete(t.Name) err = client.PersistentVolumeClaims(namespace).Delete(t.Name)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted PersistentVolumeClaim: %s", t.Name) log.Infof("Successfully deleted PersistentVolumeClaim: %s", t.Name)
} }
@ -777,14 +781,14 @@ func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.C
} }
ingress, err := client.Ingress(namespace).List(options) ingress, err := client.Ingress(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range ingress.Items { for _, l := range ingress.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
err = client.Ingress(namespace).Delete(t.Name, ingDeleteOptions) err = client.Ingress(namespace).Delete(t.Name, ingDeleteOptions)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted Ingress: %s", t.Name) log.Infof("Successfully deleted Ingress: %s", t.Name)
} }
@ -794,23 +798,24 @@ func (k *Kubernetes) Undeploy(komposeObject kobject.KomposeObject, opt kobject.C
//delete pod //delete pod
pod, err := client.Pods(namespace).List(options) pod, err := client.Pods(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range pod.Items { for _, l := range pod.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
rpPod, err := kubectl.ReaperFor(api.Kind("Pod"), client) rpPod, err := kubectl.ReaperFor(api.Kind("Pod"), client)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
//FIXME: gracePeriod is nil //FIXME: gracePeriod is nil
err = rpPod.Stop(namespace, t.Name, TIMEOUT*time.Second, nil) err = rpPod.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted Pod: %s", t.Name) log.Infof("Successfully deleted Pod: %s", t.Name)
} }
} }
} }
} }
return nil
return errorList
} }

View File

@ -495,20 +495,21 @@ func (o *OpenShift) Deploy(komposeObject kobject.KomposeObject, opt kobject.Conv
} }
//Undeploy removes deployed artifacts from OpenShift cluster //Undeploy removes deployed artifacts from OpenShift cluster
func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error { func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) []error {
var errorList []error
//Convert komposeObject //Convert komposeObject
objects, err := o.Transform(komposeObject, opt) objects, err := o.Transform(komposeObject, opt)
if err != nil { if err != nil {
return errors.Wrap(err, "o.Transform failed") errorList = append(errorList, err)
} }
oclient, err := o.getOpenShiftClient() oclient, err := o.getOpenShiftClient()
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
kclient, namespace, err := o.GetKubernetesClient() kclient, namespace, err := o.GetKubernetesClient()
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, v := range objects { for _, v := range objects {
@ -520,13 +521,13 @@ func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.Co
//delete imageStream //delete imageStream
imageStream, err := oclient.ImageStreams(namespace).List(options) imageStream, err := oclient.ImageStreams(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range imageStream.Items { for _, l := range imageStream.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
err = oclient.ImageStreams(namespace).Delete(t.Name) err = oclient.ImageStreams(namespace).Delete(t.Name)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted ImageStream: %s", t.Name) log.Infof("Successfully deleted ImageStream: %s", t.Name)
} }
@ -536,13 +537,13 @@ func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.Co
//options := api.ListOptions{LabelSelector: label} //options := api.ListOptions{LabelSelector: label}
buildConfig, err := oclient.BuildConfigs(namespace).List(options) buildConfig, err := oclient.BuildConfigs(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range buildConfig.Items { for _, l := range buildConfig.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
err := oclient.BuildConfigs(namespace).Delete(t.Name) err := oclient.BuildConfigs(namespace).Delete(t.Name)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted BuildConfig: %s", t.Name) log.Infof("Successfully deleted BuildConfig: %s", t.Name)
} }
@ -552,14 +553,14 @@ func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.Co
// delete deploymentConfig // delete deploymentConfig
deploymentConfig, err := oclient.DeploymentConfigs(namespace).List(options) deploymentConfig, err := oclient.DeploymentConfigs(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range deploymentConfig.Items { for _, l := range deploymentConfig.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
dcreaper := deploymentconfigreaper.NewDeploymentConfigReaper(oclient, kclient) dcreaper := deploymentconfigreaper.NewDeploymentConfigReaper(oclient, kclient)
err := dcreaper.Stop(namespace, t.Name, TIMEOUT*time.Second, nil) err := dcreaper.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted DeploymentConfig: %s", t.Name) log.Infof("Successfully deleted DeploymentConfig: %s", t.Name)
} }
@ -569,18 +570,18 @@ func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.Co
//delete svc //delete svc
svc, err := kclient.Services(namespace).List(options) svc, err := kclient.Services(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range svc.Items { for _, l := range svc.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
rpService, err := kubectl.ReaperFor(api.Kind("Service"), kclient) rpService, err := kubectl.ReaperFor(api.Kind("Service"), kclient)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
//FIXME: gracePeriod is nil //FIXME: gracePeriod is nil
err = rpService.Stop(namespace, t.Name, TIMEOUT*time.Second, nil) err = rpService.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted Service: %s", t.Name) log.Infof("Successfully deleted Service: %s", t.Name)
} }
@ -590,13 +591,13 @@ func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.Co
// delete pvc // delete pvc
pvc, err := kclient.PersistentVolumeClaims(namespace).List(options) pvc, err := kclient.PersistentVolumeClaims(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range pvc.Items { for _, l := range pvc.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
err = kclient.PersistentVolumeClaims(namespace).Delete(t.Name) err = kclient.PersistentVolumeClaims(namespace).Delete(t.Name)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted PersistentVolumeClaim: %s", t.Name) log.Infof("Successfully deleted PersistentVolumeClaim: %s", t.Name)
} }
@ -606,13 +607,13 @@ func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.Co
// delete route // delete route
route, err := oclient.Routes(namespace).List(options) route, err := oclient.Routes(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range route.Items { for _, l := range route.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
err = oclient.Routes(namespace).Delete(t.Name) err = oclient.Routes(namespace).Delete(t.Name)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted Route: %s", t.Name) log.Infof("Successfully deleted Route: %s", t.Name)
} }
@ -622,23 +623,25 @@ func (o *OpenShift) Undeploy(komposeObject kobject.KomposeObject, opt kobject.Co
//delete pods //delete pods
pod, err := kclient.Pods(namespace).List(options) pod, err := kclient.Pods(namespace).List(options)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
for _, l := range pod.Items { for _, l := range pod.Items {
if reflect.DeepEqual(l.Labels, komposeLabel) { if reflect.DeepEqual(l.Labels, komposeLabel) {
rpPod, err := kubectl.ReaperFor(api.Kind("Pod"), kclient) rpPod, err := kubectl.ReaperFor(api.Kind("Pod"), kclient)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
//FIXME: gracePeriod is nil //FIXME: gracePeriod is nil
err = rpPod.Stop(namespace, t.Name, TIMEOUT*time.Second, nil) err = rpPod.Stop(namespace, t.Name, TIMEOUT*time.Second, nil)
if err != nil { if err != nil {
return err errorList = append(errorList, err)
} }
log.Infof("Successfully deleted Pod: %s", t.Name) log.Infof("Successfully deleted Pod: %s", t.Name)
} }
} }
} }
} }
return nil return errorList
} }

View File

@ -28,5 +28,5 @@ type Transformer interface {
// Deploy deploys KomposeObject to provider // Deploy deploys KomposeObject to provider
Deploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error Deploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error
// Undeploy deletes/undeploys KomposeObject from provider // Undeploy deletes/undeploys KomposeObject from provider
Undeploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) error Undeploy(komposeObject kobject.KomposeObject, opt kobject.ConvertOptions) []error
} }