Skip to content

Commit cb2aa4e

Browse files
committed
Fix dynamic client watch of named resource
Signed-off-by: Bob Haddleton <[email protected]>
1 parent 08aabad commit cb2aa4e

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

Diff for: kubernetes/base/dynamic/client.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,13 @@ def watch(self, resource, namespace=None, name=None, label_selector=None, field_
195195
"""
196196
if not watcher: watcher = watch.Watch()
197197

198+
# Use field selector to query for named instance so the watch parameter is handled properly.
199+
if name:
200+
field_selector = f"metadata.name={name}"
201+
198202
for event in watcher.stream(
199203
resource.get,
200204
namespace=namespace,
201-
name=name,
202205
field_selector=field_selector,
203206
label_selector=label_selector,
204207
resource_version=resource_version,

Diff for: kubernetes/base/dynamic/test_client.py

+5
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,11 @@ def test_configmap_apis(self):
468468
name=name, namespace='default', label_selector="e2e-test=true")
469469
self.assertEqual(name, resp.metadata.name)
470470

471+
count = 0
472+
for _ in client.watch(api, timeout=10, namespace="default", name=name):
473+
count += 1
474+
self.assertTrue(count > 0, msg="no events received for watch")
475+
471476
test_configmap['data']['config.json'] = "{}"
472477
resp = api.patch(
473478
name=name, namespace='default', body=test_configmap)

0 commit comments

Comments
 (0)