@@ -84,12 +84,7 @@ def get_watch_argument_name(self, func):
84
84
return 'watch'
85
85
86
86
def unmarshal_event (self , data , return_type ):
87
- try :
88
- js = json .loads (data )
89
- except ValueError :
90
- return data
91
- if not (isinstance (js , dict ) and 'object' in js ):
92
- return data
87
+ js = json .loads (data )
93
88
js ['raw_object' ] = js ['object' ]
94
89
if return_type :
95
90
obj = SimpleNamespace (data = json .dumps (js ['raw_object' ]))
@@ -132,7 +127,8 @@ def stream(self, func, *args, **kwargs):
132
127
133
128
self ._stop = False
134
129
return_type = self .get_return_type (func )
135
- kwargs [self .get_watch_argument_name (func )] = True
130
+ watch_arg = self .get_watch_argument_name (func )
131
+ kwargs [watch_arg ] = True
136
132
kwargs ['_preload_content' ] = False
137
133
if 'resource_version' in kwargs :
138
134
self .resource_version = kwargs ['resource_version' ]
@@ -142,7 +138,12 @@ def stream(self, func, *args, **kwargs):
142
138
resp = func (* args , ** kwargs )
143
139
try :
144
140
for line in iter_resp_lines (resp ):
145
- yield self .unmarshal_event (line , return_type )
141
+ # unmarshal when we are receiving events from watch,
142
+ # return raw string when we are streaming log
143
+ if watch_arg == "watch" :
144
+ yield self .unmarshal_event (line , return_type )
145
+ else :
146
+ yield line
146
147
if self ._stop :
147
148
break
148
149
finally :
0 commit comments