Skip to content

Commit

Permalink
Merge pull request kubernetes-client#1 from brendandburns/master
Browse files Browse the repository at this point in the history
Switch to the typescript generated client.
  • Loading branch information
mbohlool authored Dec 18, 2017
2 parents dbda2a7 + ecacd42 commit c19d3d3
Show file tree
Hide file tree
Showing 1,105 changed files with 66,011 additions and 185,143 deletions.
80 changes: 74 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,80 @@
# javascript
# Javascript Kubernetes Client information

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

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

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

to update the client clone `gen` repo and run this command:
# Installation
```sh
$ npm install @kubernetes/client-node
```

# Example code

## List all pods
```javascript
const k8s = require('@kubernetes/typescript-node');

var k8sApi = k8s.Config.defaultClient();
k8sApi.listNamespacedPod('default')
.then((res) => {
console.log(res.body);
});
```

## Create a new namespace
```javascript
const k8s = require('@kubernetes/typescript-node');

var k8sApi = k8s.Config.defaultClient();

var namespace = {
metadata: {
name: 'test'
}
};

k8sApi.createNamespace(namespace).then(
(response) => {
console.log('Created namespace');
console.log(response);
k8sApi.readNamespace(namespace.metadata.name).then(
(response) => {
console.log(response);
k8sApi.deleteNamespace(
namespace.metadata.name, {} /* delete options */);
});
},
(err) => {
console.log('Error!: ' + err);
}
);
```

# Development

All dependencies of this project are expressed in its
[`package.json` file](./package.json). Before you start developing, ensure
that you have [NPM](https://www.npmjs.com/) installed, then run:

```bash
${GEN_REPO_BASE}/openapi/javascript.sh ${CLIENT_ROOT}/kubernetes ./settings
```console
npm install
```

# Testing

Tests are written using the [Chai](http://chaijs.com/) library. See
[`config_test.ts`](./config_test.ts) for an example.

To run tests, execute the following:

```console
npm test
```

82 changes: 0 additions & 82 deletions examples/client.js

This file was deleted.

8 changes: 8 additions & 0 deletions examples/example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
const k8s = require('@kubernetes/client-node');

let k8sApi = k8s.Config.defaultClient();
k8sApi.listNamespacedPod('default')
.then((res) => {
console.log(res.body);
});

25 changes: 25 additions & 0 deletions examples/namespace.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
const k8s = require('@kubernetes/client-node');

var k8sApi = k8s.Config.defaultClient();

var namespace = {
metadata: {
name: 'test'
}
};

k8sApi.createNamespace(namespace).then(
(response) => {
console.log('Created namespace');
console.log(response);
k8sApi.readNamespace(namespace.metadata.name).then(
(response) => {
console.log(response);
k8sApi.deleteNamespace(
namespace.metadata.name, {} /* delete options */);
});
},
(err) => {
console.log('Error!: ' + err);
}
);
7 changes: 7 additions & 0 deletions examples/typescript/attach/attach-example.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import k8s = require('@kubernetes/client-node');

let kc = new k8s.KubeConfig();
kc.loadFromFile(process.env['HOME'] + '/.kube/config');

let attach = new k8s.Attach(kc);
attach.attach('default', 'nginx-4217019353-9gl4s', 'nginx', process.stdout, process.stderr, null /* stdin */, false /* tty */);
9 changes: 9 additions & 0 deletions examples/typescript/exec/exec-example.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import k8s = require('@kubernetes/client-node');

let command = process.argv[2];

let kc = new k8s.KubeConfig();
kc.loadFromFile(process.env['HOME'] + '/.kube/config');

let exec = new k8s.Exec(kc);
exec.exec('default', 'nginx-4217019353-9gl4s', 'nginx', command, process.stdout, process.stderr, process.stdin, true /* tty */);
12 changes: 12 additions & 0 deletions examples/typescript/simple/example.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import k8s = require('@kubernetes/client-node');

let k8sApi = k8s.Config.defaultClient();

k8sApi.listNamespacedPod('default')
.then((res) => {
console.log(res.body);
});

// Example of instantiating a Pod object.
let pod = {
} as k8s.V1Pod;
31 changes: 31 additions & 0 deletions examples/typescript/watch/watch-example.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import k8s = require('@kubernetes/client-node');

let kc = new k8s.KubeConfig();
kc.loadFromFile(process.env['HOME'] + '/.kube/config');

let watch = new k8s.Watch(kc);
let req = watch.watch('/api/v1/namespaces',
// optional query parameters can go here.
{},
// callback is called for each received object.
(type, obj) => {
if (type == 'ADDED') {
console.log('new object:');
} else if (type == 'MODIFIED') {
console.log('changed object:')
} else if (type == 'DELETED') {
console.log('deleted object:');
} else {
console.log('unknown type: ' + type);
}
console.log(obj);
},
// done callback is called if the watch terminates normally
(err) => {
if (err) {
console.log(err);
}
});

// watch returns a request object which you can use to abort the watch.
setTimeout(() => { req.abort(); }, 10 * 1000);
23 changes: 0 additions & 23 deletions kubernetes/.swagger-codegen-ignore

This file was deleted.

7 changes: 0 additions & 7 deletions kubernetes/.travis.yml

This file was deleted.

Loading

0 comments on commit c19d3d3

Please sign in to comment.