Skip to content

Commit c19d3d3

Browse files
authored
Merge pull request #1 from brendandburns/master
Switch to the typescript generated client.
2 parents dbda2a7 + ecacd42 commit c19d3d3

File tree

1,105 files changed

+66011
-185143
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,105 files changed

+66011
-185143
lines changed

README.md

Lines changed: 74 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,80 @@
1-
# javascript
1+
# Javascript Kubernetes Client information
22

3-
Javascript client. Work in progress.
3+
The Javascript clients for Kubernetes is implemented in
4+
[typescript](https://typescriptlang.org), but can be called from either
5+
Javascript or Typescript.
46

7+
For now, the client is implemented for server-side use with node
8+
using the `request` library.
59

6-
# Update client
10+
There are future plans to also build a jQuery compatible library but
11+
for now, all of the examples and instructions assume the node client.
712

8-
to update the client clone `gen` repo and run this command:
13+
# Installation
14+
```sh
15+
$ npm install @kubernetes/client-node
16+
```
17+
18+
# Example code
19+
20+
## List all pods
21+
```javascript
22+
const k8s = require('@kubernetes/typescript-node');
23+
24+
var k8sApi = k8s.Config.defaultClient();
25+
k8sApi.listNamespacedPod('default')
26+
.then((res) => {
27+
console.log(res.body);
28+
});
29+
```
30+
31+
## Create a new namespace
32+
```javascript
33+
const k8s = require('@kubernetes/typescript-node');
34+
35+
var k8sApi = k8s.Config.defaultClient();
36+
37+
var namespace = {
38+
metadata: {
39+
name: 'test'
40+
}
41+
};
42+
43+
k8sApi.createNamespace(namespace).then(
44+
(response) => {
45+
console.log('Created namespace');
46+
console.log(response);
47+
k8sApi.readNamespace(namespace.metadata.name).then(
48+
(response) => {
49+
console.log(response);
50+
k8sApi.deleteNamespace(
51+
namespace.metadata.name, {} /* delete options */);
52+
});
53+
},
54+
(err) => {
55+
console.log('Error!: ' + err);
56+
}
57+
);
58+
```
59+
60+
# Development
61+
62+
All dependencies of this project are expressed in its
63+
[`package.json` file](./package.json). Before you start developing, ensure
64+
that you have [NPM](https://www.npmjs.com/) installed, then run:
965

10-
```bash
11-
${GEN_REPO_BASE}/openapi/javascript.sh ${CLIENT_ROOT}/kubernetes ./settings
66+
```console
67+
npm install
1268
```
69+
70+
# Testing
71+
72+
Tests are written using the [Chai](http://chaijs.com/) library. See
73+
[`config_test.ts`](./config_test.ts) for an example.
74+
75+
To run tests, execute the following:
76+
77+
```console
78+
npm test
79+
```
80+

examples/client.js

Lines changed: 0 additions & 82 deletions
This file was deleted.

examples/example.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const k8s = require('@kubernetes/client-node');
2+
3+
let k8sApi = k8s.Config.defaultClient();
4+
k8sApi.listNamespacedPod('default')
5+
.then((res) => {
6+
console.log(res.body);
7+
});
8+

examples/namespace.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
const k8s = require('@kubernetes/client-node');
2+
3+
var k8sApi = k8s.Config.defaultClient();
4+
5+
var namespace = {
6+
metadata: {
7+
name: 'test'
8+
}
9+
};
10+
11+
k8sApi.createNamespace(namespace).then(
12+
(response) => {
13+
console.log('Created namespace');
14+
console.log(response);
15+
k8sApi.readNamespace(namespace.metadata.name).then(
16+
(response) => {
17+
console.log(response);
18+
k8sApi.deleteNamespace(
19+
namespace.metadata.name, {} /* delete options */);
20+
});
21+
},
22+
(err) => {
23+
console.log('Error!: ' + err);
24+
}
25+
);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import k8s = require('@kubernetes/client-node');
2+
3+
let kc = new k8s.KubeConfig();
4+
kc.loadFromFile(process.env['HOME'] + '/.kube/config');
5+
6+
let attach = new k8s.Attach(kc);
7+
attach.attach('default', 'nginx-4217019353-9gl4s', 'nginx', process.stdout, process.stderr, null /* stdin */, false /* tty */);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import k8s = require('@kubernetes/client-node');
2+
3+
let command = process.argv[2];
4+
5+
let kc = new k8s.KubeConfig();
6+
kc.loadFromFile(process.env['HOME'] + '/.kube/config');
7+
8+
let exec = new k8s.Exec(kc);
9+
exec.exec('default', 'nginx-4217019353-9gl4s', 'nginx', command, process.stdout, process.stderr, process.stdin, true /* tty */);

examples/typescript/simple/example.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import k8s = require('@kubernetes/client-node');
2+
3+
let k8sApi = k8s.Config.defaultClient();
4+
5+
k8sApi.listNamespacedPod('default')
6+
.then((res) => {
7+
console.log(res.body);
8+
});
9+
10+
// Example of instantiating a Pod object.
11+
let pod = {
12+
} as k8s.V1Pod;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import k8s = require('@kubernetes/client-node');
2+
3+
let kc = new k8s.KubeConfig();
4+
kc.loadFromFile(process.env['HOME'] + '/.kube/config');
5+
6+
let watch = new k8s.Watch(kc);
7+
let req = watch.watch('/api/v1/namespaces',
8+
// optional query parameters can go here.
9+
{},
10+
// callback is called for each received object.
11+
(type, obj) => {
12+
if (type == 'ADDED') {
13+
console.log('new object:');
14+
} else if (type == 'MODIFIED') {
15+
console.log('changed object:')
16+
} else if (type == 'DELETED') {
17+
console.log('deleted object:');
18+
} else {
19+
console.log('unknown type: ' + type);
20+
}
21+
console.log(obj);
22+
},
23+
// done callback is called if the watch terminates normally
24+
(err) => {
25+
if (err) {
26+
console.log(err);
27+
}
28+
});
29+
30+
// watch returns a request object which you can use to abort the watch.
31+
setTimeout(() => { req.abort(); }, 10 * 1000);

kubernetes/.swagger-codegen-ignore

Lines changed: 0 additions & 23 deletions
This file was deleted.

kubernetes/.travis.yml

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)