|
16 | 16 |
|
17 | 17 | from openshift import __version__ |
18 | 18 | from openshift.dynamic.exceptions import ResourceNotFoundError, ResourceNotUniqueError, api_exception, KubernetesValidateMissing |
| 19 | +from openshift.dynamic.apply import apply |
19 | 20 | from urllib3.exceptions import ProtocolError, MaxRetryError |
20 | 21 |
|
21 | 22 | try: |
@@ -176,6 +177,16 @@ def patch(self, resource, body=None, name=None, namespace=None, **kwargs): |
176 | 177 |
|
177 | 178 | return self.request('patch', path, body=body, content_type=content_type, **kwargs) |
178 | 179 |
|
| 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 | + |
179 | 190 | def watch(self, resource, namespace=None, name=None, label_selector=None, field_selector=None, resource_version=None, timeout=None): |
180 | 191 | """ |
181 | 192 | Stream events for a resource from the Kubernetes API |
@@ -498,6 +509,9 @@ def replace(self, *args, **kwargs): |
498 | 509 | def patch(self, *args, **kwargs): |
499 | 510 | return self.verb_mapper('patch', *args, **kwargs) |
500 | 511 |
|
| 512 | + def apply(self, *args, **kwargs): |
| 513 | + return self.verb_mapper('apply', *args, **kwargs) |
| 514 | + |
501 | 515 | def to_dict(self): |
502 | 516 | return { |
503 | 517 | '_type': 'ResourceList', |
|
0 commit comments