Skip to content
This repository was archived by the owner on Nov 19, 2020. It is now read-only.

Commit b68231b

Browse files
authored
Merge pull request #111 from LukeShu/lukeshu/fix-watch-err
Fix problems with Watcher (typo, Type="ERROR" events)
2 parents 21a65ec + e7a4ab0 commit b68231b

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

watch.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,17 @@ func (w *watcherJSON) Next(r Resource) (string, error) {
6161
return "", fmt.Errorf("decode event: %v", err)
6262
}
6363
if event.Type == "" {
64-
return "", errors.New("wwatch event had no type field")
64+
return "", errors.New("watch event had no type field")
65+
}
66+
if event.Type == EventError {
67+
status := &metav1.Status{}
68+
if err := json.Unmarshal([]byte(event.Object), status); err != nil {
69+
return "", fmt.Errorf("decoding event error: %v", err)
70+
}
71+
return event.Type, &APIError{
72+
Status: status,
73+
Code: int(*status.Code),
74+
}
6575
}
6676
if err := json.Unmarshal([]byte(event.Object), r); err != nil {
6777
return "", fmt.Errorf("decode resource: %v", err)
@@ -85,6 +95,16 @@ func (w *watcherPB) Next(r Resource) (string, error) {
8595
if event.Type == nil || *event.Type == "" {
8696
return "", errors.New("watch event had no type field")
8797
}
98+
if *event.Type == EventError {
99+
status := &metav1.Status{}
100+
if err := proto.Unmarshal(unknown.Raw, status); err != nil {
101+
return "", fmt.Errorf("decoding event error: %v", err)
102+
}
103+
return *event.Type, &APIError{
104+
Status: status,
105+
Code: int(*status.Code),
106+
}
107+
}
88108
if err := proto.Unmarshal(unknown.Raw, msg); err != nil {
89109
return "", err
90110
}

0 commit comments

Comments
 (0)