Skip to content

Commit

Permalink
Populate GVK in objects fetched from API server.
Browse files Browse the repository at this point in the history
  • Loading branch information
porridge committed Jan 15, 2020
1 parent 83f4c7c commit bd66a53
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion pkg/kudoctl/util/kudo/kudo.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ import (

v1core "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/discovery"

Expand All @@ -19,6 +20,7 @@ import (

"github.com/kudobuilder/kudo/pkg/apis/kudo/v1beta1"
"github.com/kudobuilder/kudo/pkg/client/clientset/versioned"
"github.com/kudobuilder/kudo/pkg/client/clientset/versioned/scheme"
"github.com/kudobuilder/kudo/pkg/kudoctl/clog"
"github.com/kudobuilder/kudo/pkg/kudoctl/kube"
"github.com/kudobuilder/kudo/pkg/kudoctl/kudoinit/crd"
Expand Down Expand Up @@ -127,13 +129,30 @@ func (c *Client) InstanceExistsInCluster(operatorName, namespace, version, insta
return true, nil
}

// Populate the GVK from scheme, since it is cleared by design on typed objects.
// https://github.com/kubernetes/client-go/issues/413
func setFirstGVK(object runtime.Object) error {
gvks, unversioned, err := scheme.Scheme.ObjectKinds(object)
if err != nil {
return err
}
if !unversioned {
object.GetObjectKind().SetGroupVersionKind(gvks[0])
}
return nil
}

// GetInstance queries kubernetes api for instance of given name in given namespace
// returns error for error conditions. Instance not found is not considered an error and will result in 'nil, nil'
func (c *Client) GetInstance(name, namespace string) (*v1beta1.Instance, error) {
instance, err := c.clientset.KudoV1beta1().Instances(namespace).Get(name, v1.GetOptions{})
if apierrors.IsNotFound(err) {
return nil, nil
}
if err != nil {
return instance, err
}
err = setFirstGVK(instance)
return instance, err
}

Expand All @@ -144,6 +163,10 @@ func (c *Client) GetOperatorVersion(name, namespace string) (*v1beta1.OperatorVe
if apierrors.IsNotFound(err) {
return nil, nil
}
if err != nil {
return ov, err
}
err = setFirstGVK(ov)
return ov, err
}

Expand Down

0 comments on commit bd66a53

Please sign in to comment.