1
+ import { ObjectSerializer } from './api' ;
1
2
import { ADD , CHANGE , DELETE , ERROR , Informer , ListPromise , ObjectCallback , UPDATE } from './informer' ;
2
3
import { KubernetesObject } from './types' ;
3
4
import { RequestResult , Watch } from './watch' ;
4
5
5
6
export interface ObjectCache < T > {
6
7
get ( name : string , namespace ?: string ) : T | undefined ;
8
+
7
9
list ( namespace ?: string ) : ReadonlyArray < T > ;
8
10
}
9
11
@@ -20,6 +22,7 @@ export class ListWatch<T extends KubernetesObject> implements ObjectCache<T>, In
20
22
private readonly watch : Watch ,
21
23
private readonly listFn : ListPromise < T > ,
22
24
autoStart : boolean = true ,
25
+ private readonly labelSelector ?: string ,
23
26
) {
24
27
this . callbackCache [ ADD ] = [ ] ;
25
28
this . callbackCache [ UPDATE ] = [ ] ;
@@ -125,9 +128,18 @@ export class ListWatch<T extends KubernetesObject> implements ObjectCache<T>, In
125
128
}
126
129
} ) ;
127
130
this . addOrUpdateItems ( list . items ) ;
131
+ const queryParams = {
132
+ resourceVersion : list . metadata ! . resourceVersion ,
133
+ } as {
134
+ resourceVersion : string | undefined ,
135
+ labelSelector : string | undefined ,
136
+ } ;
137
+ if ( this . labelSelector !== undefined ) {
138
+ queryParams . labelSelector = ObjectSerializer . serialize ( this . labelSelector , 'string' ) ;
139
+ }
128
140
this . request = await this . watch . watch (
129
141
this . path ,
130
- { resourceVersion : list . metadata ! . resourceVersion } ,
142
+ queryParams ,
131
143
this . watchHandler . bind ( this ) ,
132
144
this . doneHandler . bind ( this ) ,
133
145
) ;
0 commit comments