diff --git a/dynamic/client.py b/dynamic/client.py index 7b82b3d..47aa37c 100644 --- a/dynamic/client.py +++ b/dynamic/client.py @@ -219,11 +219,16 @@ def request(self, method, path, body=None, **params): header_params = params.get('header_params', {}) form_params = [] local_var_files = {} + # HTTP header `Accept` - header_params['Accept'] = self.client.select_header_accept([ - 'application/json', - 'application/yaml', - ]) + if params.get('header_params') is not None: + partial_object = params.get('header_params') + if 'PartialObjectMetadata' in partial_object.get('Accept'): + header_params['Accept'] = 'application/json;as=PartialObjectMetadata;v=v1;g=meta.k8s.io' + else: + #default + header_params['Accept'] = self.client.select_header_accept([ + 'application/json', 'application/yaml']) # HTTP header `Content-Type` if params.get('content_type'): diff --git a/dynamic/test_client.py b/dynamic/test_client.py index b68e081..1567a70 100644 --- a/dynamic/test_client.py +++ b/dynamic/test_client.py @@ -77,6 +77,17 @@ def test_cluster_custom_resources(self): self.assertEqual(name, resp.metadata.name) self.assertTrue(resp.status) + #Checking header_params `PartialObjectMetadata` + header_params = 'PartialObjectMetadata' + params = {'header_params': {'Accept': 'application/json;as=PartialObjectMetadata;v=v1;g=meta.k8s.io'}} + api_version = 'meta.k8s.io/v1' + resp = crd_api.get( + name=name, + **params + ) + self.assertEqual(header_params, resp.kind) + self.assertEqual(api_version, resp.apiVersion) + try: changeme_api = client.resources.get( api_version='apps.example.com/v1', kind='ClusterChangeMe')