@@ -149,6 +149,20 @@ def patch(self, resource, body=None, name=None, namespace=None, **kwargs):
149149
150150 return self .request ('patch' , path , body = body , content_type = content_type , ** kwargs )
151151
152+ def server_side_apply (self , resource , body = None , name = None , namespace = None , force_conflicts = None , ** kwargs ):
153+ body = self .serialize_body (body )
154+ name = name or body .get ('metadata' , {}).get ('name' )
155+ if not name :
156+ raise ValueError ("name is required to patch {}.{}" .format (resource .group_version , resource .kind ))
157+ if resource .namespaced :
158+ namespace = self .ensure_namespace (resource , namespace , body )
159+
160+ # force content type to 'application/apply-patch+yaml'
161+ kwargs .update ({'content_type' : 'application/apply-patch+yaml' })
162+ path = resource .path (name = name , namespace = namespace )
163+
164+ return self .request ('patch' , path , body = body , force_conflicts = force_conflicts , ** kwargs )
165+
152166 def watch (self , resource , namespace = None , name = None , label_selector = None , field_selector = None , resource_version = None , timeout = None , watcher = None ):
153167 """
154168 Stream events for a resource from the Kubernetes API
@@ -227,6 +241,10 @@ def request(self, method, path, body=None, **params):
227241 query_params .append (('orphanDependents' , params ['orphan_dependents' ]))
228242 if params .get ('dry_run' ) is not None :
229243 query_params .append (('dryRun' , params ['dry_run' ]))
244+ if params .get ('field_manager' ) is not None :
245+ query_params .append (('fieldManager' , params ['field_manager' ]))
246+ if params .get ('force_conflicts' ) is not None :
247+ query_params .append (('force' , params ['force_conflicts' ]))
230248
231249 header_params = params .get ('header_params' , {})
232250 form_params = []
0 commit comments