openshift-rest-client
Version:
Node.js client for developing with OpenShift
92 lines (57 loc) • 3.74 kB
Markdown
[](https://travis-ci.org/nodeshift/openshift-rest-client) [](https://coveralls.io/github/nodeshift/openshift-rest-client?branch=master)
### Openshift Client
[](https://greenkeeper.io/)
Node.js based client for the Openshift REST API, not unlike the Fabric8 Maven Plugin, but for node clients/builds.
### Basic Usage
`npm install --save openshift-rest-client`
Code:
const openshiftRestClient = require('openshift-rest-client').OpenshiftClient;
openshiftRestClient().then((client) => {
// Use the client object to find a list of projects, for example
client.apis['project.openshift.io'].v1.projects.get().then((response) => {
console.log(response.body);
});
});
The openshift-rest-client translates Path Item Objects \[[1]\] (*e.g*.,
`/apis/project.openshift.io/v1/projects`) to object chains ending in HTTP methods (*e.g.*,
`apis['project.openshift.io'].v1.projects.get`).
So, to fetch all Projects:
```js
const projects = await client.apis['project.openshift.io'].v1.projects.get()
```
The openshift-rest-client translates Path Templating \[[2]\] (*e.g.*,
`/apis/build.openshift.io/v1/namespaces/$NAMESPACE/buildconfigs`) to function calls (*e.g.*,
`apis['build.openshift.io'].v1.namespaces('default').buildconfigs`).
So, to create a new Build Config in the default Namespace:
```js
const buildConfig = require('./build-config.json')
const create = await client.apis['build.openshift.io'].v1.namespaces('default').buildconfigs.post({ body: buildConfig })
```
and then fetch your newly created Build Config:
```js
const deployment = await client.apis['build.openshift.io'].v1.namespaces('default').buildconfigs(buildConfig.metadata.name).get()
```
and finally, remove the Build Config:
```js
await client.apis['build.openshift.io'].v1.namespaces('default').buildconfigs(buildConfig.metadata.name).delete()
```
The openshift-rest-client supports `.delete`, `.get`, `.patch`, `.post`, and `.put`.
There are also aliases defined, so instead of writing `client.apis['build.openshift.io']`, you can just use `client.apis.build` for example. The list of aliases can be seen here: https://github.com/nodeshift/openshift-rest-client/blob/master/lib/openshift-rest-client.js
### Advanced Usage
By default, the openshift-rest-client will use the [kubernetes-client](https://www.npmjs.com/package/kubernetes-client) module to get your configuration.
The openshift-rest-client exposes the config module from the kubernetes client for ease of use.
For example, if you want to provide a different path to your configuration, you can do something like this:
const openshiftRestClient = require('openshift-rest-client').OpenshiftClient;
const config = require('openshift-rest-client').config;
const path '~/some/path/config';
const customConfig = config.fromKubeconfig(path);
openshiftRestClient({config: customConfig}).then((client) => {
// Use the client object to find a list of projects, for example
client.apis['project.openshift.io'].v1.project.get().then((response) => {
console.log(response.body);
});
});
To see more examples of how to customize your config, check out the [kubernetes-client Initializing section](https://www.npmjs.com/package/kubernetes-client#initializing)
#### Changes in 2.0
The client has been totally rewritten for the 2.0 release. This includes a new, more fluent, API.
The old API will live in the 1.x branch.