diff --git a/clientbase/object_client.go b/clientbase/object_client.go index ceb9333a..980fb870 100644 --- a/clientbase/object_client.go +++ b/clientbase/object_client.go @@ -6,6 +6,7 @@ import ( "github.com/pkg/errors" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/watch" @@ -18,6 +19,17 @@ type ObjectFactory interface { List() runtime.Object } +type UnstructuredObjectFactory struct { +} + +func (u *UnstructuredObjectFactory) Object() runtime.Object { + return &unstructured.Unstructured{} +} + +func (u *UnstructuredObjectFactory) List() runtime.Object { + return &unstructured.UnstructuredList{} +} + type ObjectClient struct { restClient rest.Interface resource *metav1.APIResource @@ -36,6 +48,16 @@ func NewObjectClient(namespace string, restClient rest.Interface, apiResource *m } } +func (p *ObjectClient) UnstructuredClient() *ObjectClient { + return &ObjectClient{ + restClient: p.restClient, + resource: p.resource, + gvk: p.gvk, + ns: p.ns, + Factory: &UnstructuredObjectFactory{}, + } +} + func (p *ObjectClient) getAPIPrefix() string { if p.gvk.Group == "" { return "api"