From d0ec0e654b1861237a74d196e355a52c74781a7a Mon Sep 17 00:00:00 2001 From: Jesse Suen Date: Thu, 12 Jul 2018 23:43:51 -0700 Subject: [PATCH] Fix issue where ingress incorrectly was converting to v1 instead of extensions/v1beta1 --- pkg/apis/application/v1alpha1/types.go | 4 ++-- util/health/health.go | 6 +++--- util/kube/kube.go | 6 +++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index 5bb45356e7d6e..456127d3150f1 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -117,9 +117,9 @@ const ( type HookStatus struct { // Name is the resource name Name string `json:"name" protobuf:"bytes,1,opt,name=name"` - // Name is the resource name + // Kind is the resource kind Kind string `json:"kind" protobuf:"bytes,2,opt,name=kind"` - // Name is the resource name + // APIVersion is the resource API version APIVersion string `json:"apiVersion" protobuf:"bytes,3,opt,name=apiVersion"` // Type is the type of hook (e.g. PreSync, Sync, PostSync, Skip) Type HookType `json:"type" protobuf:"bytes,4,opt,name=type"` diff --git a/util/health/health.go b/util/health/health.go index 21b1407b6bef3..b42115f54d747 100644 --- a/util/health/health.go +++ b/util/health/health.go @@ -6,7 +6,7 @@ import ( "k8s.io/api/apps/v1" appsv1 "k8s.io/api/apps/v1" coreV1 "k8s.io/api/core/v1" - "k8s.io/api/extensions/v1beta1" + extv1beta1 "k8s.io/api/extensions/v1beta1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" @@ -59,11 +59,11 @@ func IsWorse(current, new appv1.HealthStatusCode) bool { } func getIngressHealth(obj *unstructured.Unstructured) (*appv1.HealthStatus, error) { - obj, err := kube.ConvertToVersion(obj, "", "v1") + obj, err := kube.ConvertToVersion(obj, "extensions", "v1beta1") if err != nil { return nil, err } - var ingress v1beta1.Ingress + var ingress extv1beta1.Ingress err = runtime.DefaultUnstructuredConverter.FromUnstructured(obj.Object, &ingress) if err != nil { return nil, err diff --git a/util/kube/kube.go b/util/kube/kube.go index 28381efe653a9..40d8cd939fa2a 100644 --- a/util/kube/kube.go +++ b/util/kube/kube.go @@ -596,7 +596,11 @@ func ConvertToVersion(obj *unstructured.Unstructured, group, version string) (*u cmd.Stdin = bytes.NewReader(manifestBytes) out, err := cmd.Output() if err != nil { - return nil, err + if exErr, ok := err.(*exec.ExitError); ok { + errMsg := cleanKubectlOutput(string(exErr.Stderr)) + return nil, errors.New(errMsg) + } + return nil, fmt.Errorf("failed to convert %s/%s to %s/%s", obj.GetKind(), obj.GetName(), group, version) } // NOTE: when kubectl convert runs against stdin (i.e. kubectl convert -f -), the output is // a unstructured list instead of an unstructured object