Skip to content

Commit 31eb8d0

Browse files
Add apply method to dynamic client (#291)
1 parent 8fdfd3a commit 31eb8d0

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

openshift/dynamic/apply.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def dict_merge(a, b):
5555
result = deepcopy(a)
5656
for k, v in b.items():
5757
if k in result and isinstance(result[k], dict):
58-
result[k] = dict_merge(result[k], v)
58+
result[k] = dict_merge(result[k], v)
5959
else:
6060
result[k] = deepcopy(v)
6161
return result

openshift/dynamic/client.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
from openshift import __version__
1818
from openshift.dynamic.exceptions import ResourceNotFoundError, ResourceNotUniqueError, api_exception, KubernetesValidateMissing
19+
from openshift.dynamic.apply import apply
1920
from urllib3.exceptions import ProtocolError, MaxRetryError
2021

2122
try:
@@ -176,6 +177,16 @@ def patch(self, resource, body=None, name=None, namespace=None, **kwargs):
176177

177178
return self.request('patch', path, body=body, content_type=content_type, **kwargs)
178179

180+
@meta_request
181+
def apply(self, resource, body=None, name=None, namespace=None):
182+
body = self.serialize_body(body)
183+
name = name or body.get('metadata', {}).get('name')
184+
if not name:
185+
raise ValueError("name is required to apply {}.{}".format(resource.group_version, resource.kind))
186+
if resource.namespaced:
187+
namespace = self.ensure_namespace(resource, namespace, body)
188+
return apply(resource, body)
189+
179190
def watch(self, resource, namespace=None, name=None, label_selector=None, field_selector=None, resource_version=None, timeout=None):
180191
"""
181192
Stream events for a resource from the Kubernetes API
@@ -498,6 +509,9 @@ def replace(self, *args, **kwargs):
498509
def patch(self, *args, **kwargs):
499510
return self.verb_mapper('patch', *args, **kwargs)
500511

512+
def apply(self, *args, **kwargs):
513+
return self.verb_mapper('apply', *args, **kwargs)
514+
501515
def to_dict(self):
502516
return {
503517
'_type': 'ResourceList',

0 commit comments

Comments
 (0)