@@ -19,6 +19,7 @@ import (
19
19
"log"
20
20
"net/http"
21
21
"strconv"
22
+ "strings"
22
23
23
24
restful "github.com/emicklei/go-restful"
24
25
// TODO(maciaszczykm): Avoid using dot-imports.
@@ -131,6 +132,10 @@ func CreateHttpApiHandler(client *client.Client, heapsterClient HeapsterClient,
131
132
apiV1Ws .GET ("/replicationcontroller" ).
132
133
To (apiHandler .handleGetReplicationControllerList ).
133
134
Writes (ReplicationControllerList {}))
135
+ apiV1Ws .Route (
136
+ apiV1Ws .GET ("/replicationcontroller/{namespace}" ).
137
+ To (apiHandler .handleGetReplicationControllerList ).
138
+ Writes (ReplicationControllerList {}))
134
139
apiV1Ws .Route (
135
140
apiV1Ws .GET ("/replicationcontroller/{namespace}/{replicationController}" ).
136
141
To (apiHandler .handleGetReplicationControllerDetail ).
@@ -151,11 +156,19 @@ func CreateHttpApiHandler(client *client.Client, heapsterClient HeapsterClient,
151
156
apiV1Ws .GET ("/workload" ).
152
157
To (apiHandler .handleGetWorkloads ).
153
158
Writes (workload.Workloads {}))
159
+ apiV1Ws .Route (
160
+ apiV1Ws .GET ("/workload/{namespace}" ).
161
+ To (apiHandler .handleGetWorkloads ).
162
+ Writes (workload.Workloads {}))
154
163
155
164
apiV1Ws .Route (
156
165
apiV1Ws .GET ("/replicaset" ).
157
166
To (apiHandler .handleGetReplicaSets ).
158
167
Writes (replicaset.ReplicaSetList {}))
168
+ apiV1Ws .Route (
169
+ apiV1Ws .GET ("/replicaset/{namespace}" ).
170
+ To (apiHandler .handleGetReplicaSets ).
171
+ Writes (replicaset.ReplicaSetList {}))
159
172
apiV1Ws .Route (
160
173
apiV1Ws .GET ("/replicaset/{namespace}/{replicaSet}" ).
161
174
To (apiHandler .handleGetReplicaSetDetail ).
@@ -165,6 +178,10 @@ func CreateHttpApiHandler(client *client.Client, heapsterClient HeapsterClient,
165
178
apiV1Ws .GET ("/pod" ).
166
179
To (apiHandler .handleGetPods ).
167
180
Writes (pod.PodList {}))
181
+ apiV1Ws .Route (
182
+ apiV1Ws .GET ("/pod/{namespace}" ).
183
+ To (apiHandler .handleGetPods ).
184
+ Writes (pod.PodList {}))
168
185
apiV1Ws .Route (
169
186
apiV1Ws .GET ("/pod/{namespace}/{pod}" ).
170
187
To (apiHandler .handleGetPodDetail ).
@@ -174,7 +191,10 @@ func CreateHttpApiHandler(client *client.Client, heapsterClient HeapsterClient,
174
191
apiV1Ws .GET ("/deployment" ).
175
192
To (apiHandler .handleGetDeployments ).
176
193
Writes (deployment.DeploymentList {}))
177
-
194
+ apiV1Ws .Route (
195
+ apiV1Ws .GET ("/deployment/{namespace}" ).
196
+ To (apiHandler .handleGetDeployments ).
197
+ Writes (deployment.DeploymentList {}))
178
198
apiV1Ws .Route (
179
199
apiV1Ws .GET ("/deployment/{namespace}/{deployment}" ).
180
200
To (apiHandler .handleGetDeploymentDetail ).
@@ -184,6 +204,10 @@ func CreateHttpApiHandler(client *client.Client, heapsterClient HeapsterClient,
184
204
apiV1Ws .GET ("/daemonset" ).
185
205
To (apiHandler .handleGetDaemonSetList ).
186
206
Writes (daemonset.DaemonSetList {}))
207
+ apiV1Ws .Route (
208
+ apiV1Ws .GET ("/daemonset/{namespace}" ).
209
+ To (apiHandler .handleGetDaemonSetList ).
210
+ Writes (daemonset.DaemonSetList {}))
187
211
apiV1Ws .Route (
188
212
apiV1Ws .GET ("/daemonset/{namespace}/{daemonSet}" ).
189
213
To (apiHandler .handleGetDaemonSetDetail ).
@@ -230,6 +254,10 @@ func CreateHttpApiHandler(client *client.Client, heapsterClient HeapsterClient,
230
254
apiV1Ws .GET ("/service" ).
231
255
To (apiHandler .handleGetServiceList ).
232
256
Writes (resourceService.ServiceList {}))
257
+ apiV1Ws .Route (
258
+ apiV1Ws .GET ("/service/{namespace}" ).
259
+ To (apiHandler .handleGetServiceList ).
260
+ Writes (resourceService.ServiceList {}))
233
261
apiV1Ws .Route (
234
262
apiV1Ws .GET ("/service/{namespace}/{service}" ).
235
263
To (apiHandler .handleGetServiceDetail ).
@@ -244,7 +272,8 @@ func CreateHttpApiHandler(client *client.Client, heapsterClient HeapsterClient,
244
272
245
273
// Handles get service list API call.
246
274
func (apiHandler * ApiHandler ) handleGetServiceList (request * restful.Request , response * restful.Response ) {
247
- result , err := resourceService .GetServiceList (apiHandler .client )
275
+ namespace := parseNamespacePathParameter (request )
276
+ result , err := resourceService .GetServiceList (apiHandler .client , namespace )
248
277
if err != nil {
249
278
handleInternalError (response , err )
250
279
return
@@ -361,7 +390,8 @@ func (apiHandler *ApiHandler) handleGetAvailableProcotols(request *restful.Reque
361
390
func (apiHandler * ApiHandler ) handleGetReplicationControllerList (
362
391
request * restful.Request , response * restful.Response ) {
363
392
364
- result , err := GetReplicationControllerList (apiHandler .client )
393
+ namespace := parseNamespacePathParameter (request )
394
+ result , err := GetReplicationControllerList (apiHandler .client , namespace )
365
395
if err != nil {
366
396
handleInternalError (response , err )
367
397
return
@@ -374,7 +404,8 @@ func (apiHandler *ApiHandler) handleGetReplicationControllerList(
374
404
func (apiHandler * ApiHandler ) handleGetWorkloads (
375
405
request * restful.Request , response * restful.Response ) {
376
406
377
- result , err := workload .GetWorkloads (apiHandler .client , apiHandler .heapsterClient )
407
+ namespace := parseNamespacePathParameter (request )
408
+ result , err := workload .GetWorkloads (apiHandler .client , apiHandler .heapsterClient , namespace )
378
409
if err != nil {
379
410
handleInternalError (response , err )
380
411
return
@@ -387,7 +418,8 @@ func (apiHandler *ApiHandler) handleGetWorkloads(
387
418
func (apiHandler * ApiHandler ) handleGetReplicaSets (
388
419
request * restful.Request , response * restful.Response ) {
389
420
390
- result , err := replicaset .GetReplicaSetList (apiHandler .client )
421
+ namespace := parseNamespacePathParameter (request )
422
+ result , err := replicaset .GetReplicaSetList (apiHandler .client , namespace )
391
423
if err != nil {
392
424
handleInternalError (response , err )
393
425
return
@@ -416,7 +448,8 @@ func (apiHandler *ApiHandler) handleGetReplicaSetDetail(
416
448
func (apiHandler * ApiHandler ) handleGetDeployments (
417
449
request * restful.Request , response * restful.Response ) {
418
450
419
- result , err := deployment .GetDeploymentList (apiHandler .client )
451
+ namespace := parseNamespacePathParameter (request )
452
+ result , err := deployment .GetDeploymentList (apiHandler .client , namespace )
420
453
if err != nil {
421
454
handleInternalError (response , err )
422
455
return
@@ -445,7 +478,8 @@ func (apiHandler *ApiHandler) handleGetDeploymentDetail(
445
478
func (apiHandler * ApiHandler ) handleGetPods (
446
479
request * restful.Request , response * restful.Response ) {
447
480
448
- result , err := pod .GetPodList (apiHandler .client , apiHandler .heapsterClient )
481
+ namespace := parseNamespacePathParameter (request )
482
+ result , err := pod .GetPodList (apiHandler .client , apiHandler .heapsterClient , namespace )
449
483
if err != nil {
450
484
handleInternalError (response , err )
451
485
return
@@ -652,7 +686,7 @@ func handleInternalError(response *restful.Response, err error) {
652
686
func (apiHandler * ApiHandler ) handleGetDaemonSetList (
653
687
request * restful.Request , response * restful.Response ) {
654
688
655
- namespace := request . PathParameter ( "namespace" )
689
+ namespace := parseNamespacePathParameter ( request )
656
690
result , err := daemonset .GetDaemonSetList (apiHandler .client , namespace )
657
691
if err != nil {
658
692
handleInternalError (response , err )
@@ -697,3 +731,19 @@ func (apiHandler *ApiHandler) handleDeleteDaemonSet(
697
731
698
732
response .WriteHeader (http .StatusOK )
699
733
}
734
+
735
+ // parseNamespacePathParameter parses namespace selector for list pages in path paramater.
736
+ // The namespace selector is a comma separated list of namespaces that are trimmed.
737
+ // No namespaces means "view all user namespaces", i.e., everything except kube-system.
738
+ func parseNamespacePathParameter (request * restful.Request ) * common.NamespaceQuery {
739
+ namespace := request .PathParameter ("namespace" )
740
+ namespaces := strings .Split (namespace , "," )
741
+ var nonEmptyNamespaces []string
742
+ for _ , n := range namespaces {
743
+ n = strings .Trim (n , " " )
744
+ if len (n ) > 0 {
745
+ nonEmptyNamespaces = append (nonEmptyNamespaces , n )
746
+ }
747
+ }
748
+ return common .NewNamespaceQuery (nonEmptyNamespaces )
749
+ }
0 commit comments