diff --git a/generator/controller_template.go b/generator/controller_template.go index 12326ef4..a57cbe50 100644 --- a/generator/controller_template.go +++ b/generator/controller_template.go @@ -238,8 +238,8 @@ func (s *{{.schema.ID}}Client) Watch(opts metav1.ListOptions) (watch.Interface, } // Patch applies the patch and returns the patched deployment. -func (s *{{.schema.ID}}Client) Patch(o *{{.prefix}}{{.schema.CodeName}}, data []byte, subresources ...string) (*{{.prefix}}{{.schema.CodeName}}, error) { - obj, err := s.objectClient.Patch(o.Name, o, data, subresources...) +func (s *{{.schema.ID}}Client) Patch(o *{{.prefix}}{{.schema.CodeName}}, patchType types.PatchType, data []byte, subresources ...string) (*{{.prefix}}{{.schema.CodeName}}, error) { + obj, err := s.objectClient.Patch(o.Name, o, patchType, data, subresources...) return obj.(*{{.prefix}}{{.schema.CodeName}}), err } diff --git a/objectclient/object_client.go b/objectclient/object_client.go index d75896a2..01d1b930 100644 --- a/objectclient/object_client.go +++ b/objectclient/object_client.go @@ -48,7 +48,7 @@ type GenericClient interface { 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) + Patch(name string, o runtime.Object, patchType types.PatchType, data []byte, subresources ...string) (runtime.Object, error) ObjectFactory() ObjectFactory } @@ -284,7 +284,7 @@ func (p *ObjectClient) DeleteCollection(deleteOptions *metav1.DeleteOptions, lis Error() } -func (p *ObjectClient) Patch(name string, o runtime.Object, data []byte, subresources ...string) (runtime.Object, error) { +func (p *ObjectClient) Patch(name string, o runtime.Object, patchType types.PatchType, data []byte, subresources ...string) (runtime.Object, error) { ns := p.ns if obj, ok := o.(metav1.Object); ok && obj.GetNamespace() != "" { ns = obj.GetNamespace() @@ -293,7 +293,7 @@ func (p *ObjectClient) Patch(name string, o runtime.Object, data []byte, subreso if len(name) == 0 { return result, errors.New("object missing name") } - err := p.restClient.Patch(types.StrategicMergePatchType). + err := p.restClient.Patch(patchType). Prefix(p.getAPIPrefix(), p.gvk.Group, p.gvk.Version). NamespaceIfScoped(ns, p.resource.Namespaced). Resource(p.resource.Name).