1
0
mirror of https://github.com/rancher/norman.git synced 2025-09-08 18:49:31 +00:00

Make controller and client more generic

This commit is contained in:
Darren Shepherd
2018-02-13 08:52:18 -07:00
parent 63f413add2
commit 0f7c2968c9
3 changed files with 37 additions and 5 deletions

View File

@@ -31,6 +31,22 @@ func (u *UnstructuredObjectFactory) List() runtime.Object {
return &unstructured.UnstructuredList{}
}
type GenericClient interface {
UnstructuredClient() GenericClient
GroupVersionKind() schema.GroupVersionKind
Create(o runtime.Object) (runtime.Object, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (runtime.Object, error)
Get(name string, opts metav1.GetOptions) (runtime.Object, error)
Update(name string, o runtime.Object) (runtime.Object, error)
DeleteNamespaced(namespace, name string, opts *metav1.DeleteOptions) error
Delete(name string, opts *metav1.DeleteOptions) error
List(opts metav1.ListOptions) (runtime.Object, error)
Watch(opts metav1.ListOptions) (watch.Interface, error)
DeleteCollection(deleteOptions *metav1.DeleteOptions, listOptions metav1.ListOptions) error
Patch(name string, o runtime.Object, data []byte, subresources ...string) (runtime.Object, error)
ObjectFactory() ObjectFactory
}
type ObjectClient struct {
restClient rest.Interface
resource *metav1.APIResource
@@ -49,7 +65,7 @@ func NewObjectClient(namespace string, restClient rest.Interface, apiResource *m
}
}
func (p *ObjectClient) UnstructuredClient() *ObjectClient {
func (p *ObjectClient) UnstructuredClient() GenericClient {
return &ObjectClient{
restClient: p.restClient,
resource: p.resource,
@@ -230,6 +246,10 @@ func (p *ObjectClient) Patch(name string, o runtime.Object, data []byte, subreso
return result, err
}
func (p *ObjectClient) ObjectFactory() ObjectFactory {
return p.Factory
}
type dynamicDecoder struct {
factory ObjectFactory
dec *json.Decoder