Skip to content

Commit 03e737d

Browse files
committed
refactor example code
This commit addresses most of the issues raised in 1907: - Migrate from require() to import. - Migrate from Promises API to async/await. - Use kubernetes/client-node instead of dist/ - Add examples specific tslint to allow console. This commit does not sync the examples from the master branch to the release-1.x branch.
1 parent a7564c5 commit 03e737d

30 files changed

+245
-300
lines changed

examples/cache-example.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// in a real program use require('@kubernetes/client-node')
2-
const k8s = require('../dist/index');
1+
import * as k8s from '@kubernetes/client-node';
32

43
const kc = new k8s.KubeConfig();
54
kc.loadFromDefault();

examples/example.js

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// in a real program use require('@kubernetes/client-node')
2-
const k8s = require('../dist/index');
1+
import * as k8s from '@kubernetes/client-node';
32

43
const kc = new k8s.KubeConfig();
54
kc.loadFromDefault();
@@ -8,11 +7,9 @@ const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
87

98
const namespace = 'default';
109

11-
k8sApi
12-
.listNamespacedPod({ namespace })
13-
.then((res) => {
14-
console.log(res);
15-
})
16-
.catch((err) => {
17-
console.error(err);
18-
});
10+
try {
11+
const res = await k8sApi.listNamespacedPod({ namespace });
12+
console.log(res);
13+
} catch (err) {
14+
console.error(err);
15+
}

examples/follow-logs.js

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
// in a real program use require('@kubernetes/client-node')
2-
const k8s = require('../dist/index');
3-
const stream = require('stream');
1+
import * as k8s from '@kubernetes/client-node';
2+
import stream from 'node:stream';
43

54
const kc = new k8s.KubeConfig();
65
kc.loadFromDefault();
@@ -18,19 +17,19 @@ logStream.on('data', (chunk) => {
1817
process.stdout.write(chunk);
1918
});
2019

21-
log.log(namespace, pod, container, logStream, {
22-
follow: true,
23-
tailLines: 50,
24-
pretty: false,
25-
timestamps: false,
26-
})
27-
.catch((err) => {
28-
console.error(err);
29-
})
30-
.then((req) => {
31-
// disconnects after 5 seconds
32-
setTimeout(function () {
33-
//Note: You might have to install AbortController if you are using node version < 15.0.0
34-
req.abort();
35-
}, 5000);
20+
try {
21+
const req = await log.log(namespace, pod, container, logStream, {
22+
follow: true,
23+
tailLines: 50,
24+
pretty: false,
25+
timestamps: false,
3626
});
27+
28+
// disconnects after 5 seconds
29+
setTimeout(() => {
30+
// Note: You might have to install AbortController if you are using Node version < 15.0.0
31+
req.abort();
32+
}, 5000);
33+
} catch (err) {
34+
console.error(err);
35+
}
Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// in a real program use require('@kubernetes/client-node')
2-
const k8s = require('../dist/index');
1+
import * as k8s from '@kubernetes/client-node';
32

43
const namespace = 'default';
54

@@ -21,19 +20,11 @@ metadata.annotations = {
2120
};
2221
job.metadata = metadata;
2322

24-
batchV1beta1Api
25-
.readNamespacedCronJob({ name: cronJobName, namespace })
26-
.then((cronJobRes) => {
27-
job.spec = cronJobRes?.spec?.jobTemplate.spec;
28-
batchV1Api
29-
.createNamespacedJob({ namespace, body: job })
30-
.then((res) => {
31-
console.log(res);
32-
})
33-
.catch((err) => {
34-
console.log(err);
35-
});
36-
})
37-
.catch((err) => {
38-
console.log(err);
39-
});
23+
try {
24+
const cronJobRes = await batchV1beta1Api.readNamespacedCronJob({ name: cronJobName, namespace });
25+
job.spec = cronJobRes?.spec?.jobTemplate.spec;
26+
const res = await batchV1Api..createNamespacedJob({ namespace, body: job });
27+
console.log(res);
28+
} catch (err) {
29+
console.error(err);
30+
}

examples/in-cluster.js

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// in a real program use require('@kubernetes/client-node')
2-
const k8s = require('../dist/index');
1+
import * as k8s from '@kubernetes/client-node';
32

43
const kc = new k8s.KubeConfig();
54
kc.loadFromCluster();
@@ -8,11 +7,10 @@ const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
87

98
const namespace = 'default';
109

11-
k8sApi
12-
.listNamespacedPod({ namespace })
13-
.then((res) => {
14-
console.log(res);
15-
})
16-
.catch((err) => {
17-
console.error(err);
18-
});
10+
try {
11+
const res = await k8sApi.listNamespacedPod({ namespace });
12+
13+
console.log(res);
14+
} catch (err) {
15+
console.error(err);
16+
}

examples/ingress.js

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// in a real program use require('@kubernetes/client-node')
2-
const k8s = require('../dist/index');
1+
import * as k8s from '@kubernetes/client-node';
32

43
const kc = new k8s.KubeConfig();
54
kc.loadFromDefault();
@@ -9,35 +8,38 @@ const k8sApi = kc.makeApiClient(k8s.NetworkingV1Api);
98
const namespace = 'default';
109
const clientIdentifier = 'my-subdomain';
1110

12-
k8sApi
13-
.createNamespacedIngress({
14-
namespace,
15-
body: {
16-
apiVersion: 'networking.k8s.io/v1',
17-
kind: 'Ingress',
18-
metadata: { name: `production-custom-${clientIdentifier}` },
19-
spec: {
20-
rules: [
21-
{
22-
host: `${clientIdentifier}.example.com`,
23-
http: {
24-
paths: [
25-
{
26-
backend: {
27-
service: {
28-
name: 'production-auto-deploy',
29-
port: { number: 5000 },
11+
try {
12+
await k8sApi
13+
.createNamespacedIngress({
14+
namespace,
15+
body: {
16+
apiVersion: 'networking.k8s.io/v1',
17+
kind: 'Ingress',
18+
metadata: { name: `production-custom-${clientIdentifier}` },
19+
spec: {
20+
rules: [
21+
{
22+
host: `${clientIdentifier}.example.com`,
23+
http: {
24+
paths: [
25+
{
26+
backend: {
27+
service: {
28+
name: 'production-auto-deploy',
29+
port: { number: 5000 },
30+
},
3031
},
32+
path: '/',
33+
pathType: 'ImplementationSpecific',
3134
},
32-
path: '/',
33-
pathType: 'ImplementationSpecific',
34-
},
35-
],
35+
],
36+
},
3637
},
37-
},
38-
],
39-
tls: [{ hosts: [`${clientIdentifier}.example.com`] }],
38+
],
39+
tls: [{ hosts: [`${clientIdentifier}.example.com`] }],
40+
},
4041
},
41-
},
42-
})
43-
.catch((e) => console.error(e));
42+
})
43+
} catch (e) {
44+
console.error(e);
45+
}

examples/kubectl/equivalents/apply.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// in a real program use require('@kubernetes/client-node')
2-
import * as k8s from '../../../dist/index';
1+
import * as k8s from '@kubernetes/client-node';
32

43
const kc = new k8s.KubeConfig();
54
kc.loadFromDefault();
@@ -19,4 +18,4 @@ const deployment = {
1918
}
2019
}
2120

22-
client.patch(deployment)
21+
client.patch(deployment)

examples/kubectl/equivalents/create.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// in a real program use require('@kubernetes/client-node')
2-
import * as k8s from '../../../dist/index';
1+
import * as k8s from '@kubernetes/client-node';
32

43
const kc = new k8s.KubeConfig();
54
kc.loadFromDefault();
@@ -12,4 +11,4 @@ const namespace = {
1211
}
1312
}
1413

15-
client.create(namespace)
14+
client.create(namespace)

examples/kubectl/equivalents/delete.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// in a real program use require('@kubernetes/client-node')
2-
import * as k8s from '../../../dist/index';
1+
import * as k8s from '@kubernetes/client-node';
32

43
const kc = new k8s.KubeConfig();
54
kc.loadFromDefault();
@@ -12,4 +11,4 @@ const namespace = {
1211
}
1312
}
1413

15-
client.delete(namespace)
14+
client.delete(namespace)

examples/kubectl/equivalents/get.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// in a real program use require('@kubernetes/client-node')
2-
import * as k8s from '../../../dist/index';
1+
import * as k8s from '@kubernetes/client-node';
32

43
const kc = new k8s.KubeConfig();
54
kc.loadFromDefault();
@@ -13,4 +12,4 @@ const namespace = {
1312
}
1413

1514
const live_namespace = (await client.read(namespace)).body
16-
console.log(live_namespace)
15+
console.log(live_namespace)

0 commit comments

Comments
 (0)