e2ab5cc2c8
Patch the python2-kubernetes-8.0.0-8.el7.noarch.rpm with recent bug fix commits required for proper kubernetes watch functionality. Patches watch.py up to commit 10ae476 in the 'base' repo (kubernetes-client/python-base). Commits are taken from the cloned github repo, saved in patch format, and applied as a patch to the source RPM. Reference: https://github.com/kubernetes-client/python-base/commits/master/watch/watch.py This patch includes commits beginning with d56fdbc, up to and including 10ae476 Testing: - Built and testing on local distributed cloud system - Similar testing to this patch but ased on locally modified package has been done on 1000 subcloud system - Examine/compare contents of installed package vs. expected - Generating events which trigger the watch conditions - Monitor watches for proper behaviour on expiry Story: 2008960 Task: 43053 Signed-off-by: Kyle MacLeod <kyle.macleod@windriver.com> Change-Id: I7ad78957b6ef61e7204c45f482f201d5c281385b
55 lines
1.9 KiB
Diff
55 lines
1.9 KiB
Diff
From ea11e44daf06e38a9b49c5f8cc41f19447d79bfe Mon Sep 17 00:00:00 2001
|
|
From: Haowei Cai <haoweic@google.com>
|
|
Date: Fri, 21 Feb 2020 15:19:35 -0800
|
|
Subject: [PATCH 07/13] watch stream: stop unmarshalling when streaming log
|
|
|
|
---
|
|
watch/watch.py | 17 +++++++++--------
|
|
1 file changed, 9 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/watch/watch.py b/watch/watch.py
|
|
index ba87de9..fe7a924 100644
|
|
--- a/watch/watch.py
|
|
+++ b/watch/watch.py
|
|
@@ -84,12 +84,7 @@ class Watch(object):
|
|
return 'watch'
|
|
|
|
def unmarshal_event(self, data, return_type):
|
|
- try:
|
|
- js = json.loads(data)
|
|
- except ValueError:
|
|
- return data
|
|
- if not (isinstance(js, dict) and 'object' in js):
|
|
- return data
|
|
+ js = json.loads(data)
|
|
js['raw_object'] = js['object']
|
|
if return_type:
|
|
obj = SimpleNamespace(data=json.dumps(js['raw_object']))
|
|
@@ -132,7 +127,8 @@ class Watch(object):
|
|
|
|
self._stop = False
|
|
return_type = self.get_return_type(func)
|
|
- kwargs[self.get_watch_argument_name(func)] = True
|
|
+ watch_arg = self.get_watch_argument_name(func)
|
|
+ kwargs[watch_arg] = True
|
|
kwargs['_preload_content'] = False
|
|
if 'resource_version' in kwargs:
|
|
self.resource_version = kwargs['resource_version']
|
|
@@ -142,7 +138,12 @@ class Watch(object):
|
|
resp = func(*args, **kwargs)
|
|
try:
|
|
for line in iter_resp_lines(resp):
|
|
- yield self.unmarshal_event(line, return_type)
|
|
+ # unmarshal when we are receiving events from watch,
|
|
+ # return raw string when we are streaming log
|
|
+ if watch_arg == "watch":
|
|
+ yield self.unmarshal_event(line, return_type)
|
|
+ else:
|
|
+ yield line
|
|
if self._stop:
|
|
break
|
|
finally:
|
|
--
|
|
2.25.1
|
|
|