-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.js
88 lines (75 loc) · 1.92 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/**
* Get context and cluster from current context.
*
* @param {Object} kubeconfigFile Cluster's kubeconfig file
* @returns {Object} Object contains:
* {
* context: { ... },
* cluster: { ... }
* }
*/
module.exports.extractCurrentContext = (kubeconfigFile) => {
if (!kubeconfigFile || typeof(kubeconfigFile) !== 'object') return undefined;
const currentContextName = kubeconfigFile['current-context'];
if (!currentContextName) {
return undefined;
}
const contexts = kubeconfigFile.contexts;
let context;
if (Array.isArray(contexts) && contexts.length > 0) {
for (const c of contexts) {
if (c.name === currentContextName) {
context = c;
break;
}
}
}
if (!context) {
return undefined;
}
const clusterName = context.context.cluster;
let cluster;
const clusters = kubeconfigFile.clusters;
if (Array.isArray(clusters) && clusters.length > 0) {
for (const c of clusters) {
if (c.name === clusterName) {
cluster = c;
break;
}
}
}
const userName = context.context.user;
let user;
const users = kubeconfigFile.users;
if (Array.isArray(users) && users.length > 0) {
for (const u of users) {
if (u.name === userName) {
user = u;
break;
}
}
}
return {
cluster,
context,
user
};
};
/**
* Extracts the Kubernetes version up to the third digit, removing any leading
* 'v'.
*
* @param {String} verStr String containing version number
* @param {Number} precision Precision to get version up to
* @returns {String} Precise version string
*/
module.exports.prettifyVersion = (verStr, precision) => {
if (!precision) precision = 3;
const versionArr = verStr.split('.');
if (versionArr[0][0] === 'v') versionArr[0] = versionArr[0].substr(1);
let pretty = '';
for (let i = 0; i < precision && i < versionArr.length; ++i) {
pretty += (i > 0 ? '.' : '') + versionArr[i];
}
return pretty;
};