Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

Commit 66eb114

Browse files
committed
Support customizing “Accept” header and added a testcase to test custom header
1 parent 8a969ee commit 66eb114

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

Diff for: dynamic/client.py

+10-5
Original file line numberDiff line numberDiff line change
@@ -219,11 +219,16 @@ def request(self, method, path, body=None, **params):
219219
header_params = params.get('header_params', {})
220220
form_params = []
221221
local_var_files = {}
222-
# HTTP header `Accept`
223-
header_params['Accept'] = self.client.select_header_accept([
224-
'application/json',
225-
'application/yaml',
226-
])
222+
223+
# Checking Accept header if True pass the user header else default it to json and yaml.
224+
new_header_params = dict((key.lower(), value) for key, value in header_params.items())
225+
if 'accept' in new_header_params:
226+
header_params['Accept'] = new_header_params['accept']
227+
else:
228+
header_params['Accept'] = self.client.select_header_accept([
229+
'application/json',
230+
'application/yaml',
231+
])
227232

228233
# HTTP header `Content-Type`
229234
if params.get('content_type'):

Diff for: dynamic/test_client.py

+17-1
Original file line numberDiff line numberDiff line change
@@ -359,11 +359,27 @@ def test_configmap_apis(self):
359359

360360
resp = api.get(namespace='default', pretty=True, label_selector="e2e-test=true")
361361
self.assertEqual([], resp.items)
362-
362+
363363
def test_node_apis(self):
364364
client = DynamicClient(api_client.ApiClient(configuration=self.config))
365365
api = client.resources.get(api_version='v1', kind='Node')
366366

367367
for item in api.get().items:
368368
node = api.get(name=item.metadata.name)
369369
self.assertTrue(len(dict(node.metadata.labels)) > 0)
370+
371+
# test_node_apis_partial_object_metadata lists all nodes in the cluster, but only retrieves object metadata
372+
def test_node_apis_partial_object_metadata(self):
373+
client = DynamicClient(api_client.ApiClient(configuration=self.config))
374+
api = client.resources.get(api_version='v1', kind='Node')
375+
376+
params = {'header_params': {'Accept': 'application/json;as=PartialObjectMetadataList;v=v1;g=meta.k8s.io'}}
377+
resp = api.get(**params)
378+
self.assertEqual('PartialObjectMetadataList', resp.kind)
379+
self.assertEqual('meta.k8s.io/v1', resp.apiVersion)
380+
381+
params = {'header_params': {'aCcePt': 'application/json;as=PartialObjectMetadataList;v=v1;g=meta.k8s.io'}}
382+
resp = api.get(**params)
383+
self.assertEqual('PartialObjectMetadataList', resp.kind)
384+
self.assertEqual('meta.k8s.io/v1', resp.apiVersion)
385+

0 commit comments

Comments
 (0)