diff --git a/kubernetes/base/dynamic/client.py b/kubernetes/base/dynamic/client.py index e4f2e1487..352e11a80 100644 --- a/kubernetes/base/dynamic/client.py +++ b/kubernetes/base/dynamic/client.py @@ -195,10 +195,13 @@ class DynamicClient(object): """ if not watcher: watcher = watch.Watch() + # Use field selector to query for named instance so the watch parameter is handled properly. + if name: + field_selector = f"metadata.name={name}" + for event in watcher.stream( resource.get, namespace=namespace, - name=name, field_selector=field_selector, label_selector=label_selector, resource_version=resource_version, diff --git a/kubernetes/base/dynamic/test_client.py b/kubernetes/base/dynamic/test_client.py index 2c3155941..2043226a5 100644 --- a/kubernetes/base/dynamic/test_client.py +++ b/kubernetes/base/dynamic/test_client.py @@ -468,6 +468,11 @@ class TestDynamicClient(unittest.TestCase): name=name, namespace='default', label_selector="e2e-test=true") self.assertEqual(name, resp.metadata.name) + count = 0 + for _ in client.watch(api, timeout=10, namespace="default", name=name): + count += 1 + self.assertTrue(count > 0, msg="no events received for watch") + test_configmap['data']['config.json'] = "{}" resp = api.patch( name=name, namespace='default', body=test_configmap)