1+ import * as k8s from "@kubernetes/client-node" ;
2+ import { CoreV1Api , AppsV1Api , ExtensionsV1beta1Api } from "@kubernetes/client-node" ;
3+ import { Config } from "./Config" ;
4+
5+ export class KubeUtil {
6+ private CoreV1Api : CoreV1Api = null ; // kc.makeApiClient(k8s.CoreV1Api);
7+ private AppsV1Api : AppsV1Api = null ; // kc.makeApiClient(k8s.AppsV1Api);
8+ private ExtensionsV1beta1Api : ExtensionsV1beta1Api = null ; // kc.makeApiClient(k8s.ExtensionsV1beta1Api);
9+
10+ private static _instance : KubeUtil = null ;
11+ public static instance ( ) : KubeUtil {
12+ if ( this . _instance == null ) {
13+ this . _instance = new KubeUtil ( ) ;
14+ }
15+ return this . _instance ;
16+ }
17+ constructor ( ) {
18+ var config = Config . kubeconfig ;
19+ const kc = new k8s . KubeConfig ( ) ;
20+ kc . loadFromString ( config ) ;
21+ this . CoreV1Api = kc . makeApiClient ( k8s . CoreV1Api ) ;
22+ this . AppsV1Api = kc . makeApiClient ( k8s . AppsV1Api ) ;
23+ this . ExtensionsV1beta1Api = kc . makeApiClient ( k8s . ExtensionsV1beta1Api ) ;
24+ }
25+
26+ async GetStatefulSet ( namespace , name ) {
27+ var list = await this . AppsV1Api . listNamespacedStatefulSet ( namespace ) ;
28+ for ( var i = 0 ; i < list . body . items . length ; i ++ ) {
29+ var item = list . body . items [ i ] ;
30+ if ( item . metadata . name == name ) return item ;
31+ }
32+ return null ;
33+ }
34+ async GetService ( namespace , name ) {
35+ var list = await this . CoreV1Api . listNamespacedService ( namespace ) ;
36+ for ( var i = 0 ; i < list . body . items . length ; i ++ ) {
37+ var item = list . body . items [ i ] ;
38+ //console.log(item);
39+ //var json = JSON.stringify(item, null, 3);
40+ //console.log(json);
41+ if ( item . metadata . name == name ) return item ;
42+ }
43+ return null ;
44+ }
45+ async GetPod ( namespace , name ) {
46+ var list = await this . CoreV1Api . listNamespacedPod ( namespace ) ;
47+ for ( var i = 0 ; i < list . body . items . length ; i ++ ) {
48+ var item = list . body . items [ i ] ;
49+ if ( item . metadata . name == name ) return item ;
50+ }
51+ return null ;
52+ }
53+ async GetDeployment ( namespace , name ) {
54+ var list = await this . ExtensionsV1beta1Api . listNamespacedDeployment ( namespace ) ;
55+ for ( var i = 0 ; i < list . body . items . length ; i ++ ) {
56+ var item = list . body . items [ i ] ;
57+ if ( item . metadata . name == name ) return item ;
58+ }
59+ return null ;
60+ }
61+ async GetIngress ( namespace , name ) {
62+ var list = await this . ExtensionsV1beta1Api . listNamespacedIngress ( namespace ) ;
63+ for ( var i = 0 ; i < list . body . items . length ; i ++ ) {
64+ var item = list . body . items [ i ] ;
65+ if ( item . metadata . name == name ) return item ;
66+ }
67+ return null ;
68+ }
69+
70+ }
0 commit comments