@@ -64,18 +64,11 @@ export class Metrics {
64
64
public async getNodeMetrics ( ) : Promise < NodeMetricsList > {
65
65
const path = '/apis/metrics.k8s.io/v1beta1/nodes' ;
66
66
67
- const cluster = this . config . getCurrentCluster ( ) ;
68
- if ( ! cluster ) {
69
- throw new Error ( 'No currently active cluster' ) ;
70
- }
67
+ const requestOptions = this . requestOptionsFromPath ( path ) ;
71
68
72
- const requestOptions : request . Options = {
73
- method : 'GET' ,
74
- uri : cluster . server + path ,
75
- } ;
76
69
await this . config . applyToRequest ( requestOptions ) ;
77
70
78
- return this . handleResponse < NodeMetricsList > ( requestOptions , JSON . parse ) ;
71
+ return this . handleResponse < NodeMetricsList > ( requestOptions ) ;
79
72
}
80
73
81
74
public async getPodMetrics ( namespace ?: string ) : Promise < PodMetricsList > {
@@ -87,21 +80,26 @@ export class Metrics {
87
80
path = '/apis/metrics.k8s.io/v1beta1/pods' ;
88
81
}
89
82
83
+ const requestOptions = this . requestOptionsFromPath ( path ) ;
84
+
85
+ await this . config . applyToRequest ( requestOptions ) ;
86
+
87
+ return this . handleResponse < PodMetricsList > ( requestOptions ) ;
88
+ }
89
+
90
+ private requestOptionsFromPath ( path : string ) : request . Options {
90
91
const cluster = this . config . getCurrentCluster ( ) ;
91
92
if ( ! cluster ) {
92
93
throw new Error ( 'No currently active cluster' ) ;
93
94
}
94
95
95
- const requestOptions : request . Options = {
96
+ return {
96
97
method : 'GET' ,
97
98
uri : cluster . server + path ,
98
99
} ;
99
- await this . config . applyToRequest ( requestOptions ) ;
100
-
101
- return this . handleResponse < PodMetricsList > ( requestOptions , JSON . parse ) ;
102
100
}
103
101
104
- private handleResponse < T > ( requestOptions : request . Options , deserialize : ( body : any ) => T ) : Promise < T > {
102
+ private handleResponse < T > ( requestOptions : request . Options ) : Promise < T > {
105
103
return new Promise ( ( resolve , reject ) => {
106
104
const req = request ( requestOptions , ( error , response , body ) => {
107
105
if ( error ) {
@@ -114,7 +112,7 @@ export class Metrics {
114
112
reject ( new HttpError ( response , body , response . statusCode ) ) ;
115
113
}
116
114
} else {
117
- resolve ( deserialize ( body ) ) ;
115
+ resolve ( JSON . parse ( body ) as T ) ;
118
116
}
119
117
} ) ;
120
118
} ) ;
0 commit comments