@pixul/node-rancher-api
Advanced tools
Comparing version 1.1.0 to 1.2.0
158
lib/lib.js
@@ -6,9 +6,13 @@ 'use strict'; | ||
const Promise = require('bluebird'); | ||
const {URL} = require('url'); | ||
const EventApi = require('./eventApi'); | ||
const internals = {}; | ||
internals.schema = Joi.object({ | ||
url : Joi.string().required(), | ||
access_key : Joi.string().required(), | ||
secret_key : Joi.string().required() | ||
url : Joi.string().required(), | ||
access_key: Joi.string().required(), | ||
secret_key: Joi.string().required() | ||
}); | ||
@@ -19,7 +23,13 @@ | ||
Joi.assert(config, internals.schema); | ||
this.config = config; | ||
if ((new URL(config.url)).protocol === 'https') { | ||
this.config.enableSsl = true; | ||
} | ||
this.request = request.defaults({ | ||
baseUrl : `${config.url}`, | ||
headers : { | ||
Authorization : `Basic ${new Buffer(`${config.access_key}:${config.secret_key}`).toString('base64')}`, | ||
'Content-Type' : 'application/json' | ||
baseUrl: `${config.url}`, | ||
headers: { | ||
Authorization : `Basic ${new Buffer(`${config.access_key}:${config.secret_key}`).toString('base64')}`, | ||
'Content-Type': 'application/json' | ||
} | ||
@@ -34,3 +44,3 @@ }); | ||
} | ||
if (res.statusCode < 200 || res.statusCode >= 300) { | ||
@@ -42,3 +52,3 @@ const e = new Error(`Invalid response code: ${res.statusCode}`); | ||
} | ||
return resolve(typeof json === 'string' ? JSON.parse(json) : json); | ||
@@ -48,9 +58,9 @@ }); | ||
} | ||
createContainer(container) { | ||
return this._request('POST', '/container', { | ||
json : container | ||
json: container | ||
}); | ||
} | ||
getContainer(containerId) { | ||
@@ -60,16 +70,16 @@ Joi.assert(containerId, Joi.string().required(), 'Must specify container id'); | ||
} | ||
updateContainer(container) { | ||
return this._request('POST', `/container/${container.id}`, { | ||
json : container | ||
json: container | ||
}); | ||
} | ||
stopContainer(containerId, stopParams) { | ||
Joi.assert(containerId, Joi.string().required(), 'Must specify container id'); | ||
return this._request('POST', `/container/${containerId}/?action=stop`, { | ||
json : stopParams | ||
json: stopParams | ||
}); | ||
} | ||
startContainer(containerId) { | ||
@@ -79,3 +89,3 @@ Joi.assert(containerId, Joi.string().required(), 'Must specify container id'); | ||
} | ||
restartContainer(containerId) { | ||
@@ -85,3 +95,3 @@ Joi.assert(containerId, Joi.string().required(), 'Must specify container id'); | ||
} | ||
removeContainer(containerId) { | ||
@@ -91,3 +101,3 @@ Joi.assert(containerId, Joi.string().required(), 'Must specify container id'); | ||
} | ||
purgeContainer(containerId) { | ||
@@ -97,3 +107,3 @@ Joi.assert(containerId, Joi.string().required(), 'Must specify container id'); | ||
} | ||
getContainerLogs(containerId) { | ||
@@ -103,9 +113,9 @@ Joi.assert(containerId, Joi.string().required(), 'Must specify container id'); | ||
} | ||
createStack(stack) { | ||
return this._request('POST', '/stacks', { | ||
json : stack | ||
json: stack | ||
}); | ||
} | ||
getStacks(query) { | ||
@@ -120,3 +130,3 @@ return new Promise((resolve, reject) => { | ||
} | ||
getStack(stackId) { | ||
@@ -126,3 +136,3 @@ Joi.assert(stackId, Joi.string().required(), 'Must specify stack id'); | ||
} | ||
getStackServices(stackId) { | ||
@@ -132,3 +142,3 @@ Joi.assert(stackId, Joi.string().required(), 'Must specify stack id'); | ||
} | ||
removeStack(stackId) { | ||
@@ -138,7 +148,7 @@ Joi.assert(stackId, Joi.string().required(), 'Must specify stack id'); | ||
} | ||
getPorts() { | ||
return this._request('GET', '/ports'); | ||
} | ||
getHosts(query) { | ||
@@ -153,15 +163,15 @@ return new Promise((resolve, reject) => { | ||
} | ||
getHost(hostId) { | ||
return this._request('GET', `/hosts/${hostId}`); | ||
} | ||
deleteHost(hostId) { | ||
return this._request('DELETE', `/hosts/${hostId}`); | ||
} | ||
evacuateHost(hostId) { | ||
return this._request('POST', `/hosts/${hostId}/?action=evacuate`); | ||
} | ||
getRegistrationToken() { | ||
@@ -180,3 +190,3 @@ return new Promise((resolve, reject) => { | ||
} | ||
getServices(query) { | ||
@@ -191,3 +201,3 @@ return new Promise((resolve, reject) => { | ||
} | ||
getService(serviceId) { | ||
@@ -197,3 +207,3 @@ Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
} | ||
getServiceStats(serviceId) { | ||
@@ -203,3 +213,3 @@ Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
} | ||
stopService(serviceId) { | ||
@@ -209,3 +219,3 @@ Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
} | ||
startService(serviceId) { | ||
@@ -215,23 +225,33 @@ Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
} | ||
createService(service) { | ||
return this._request('POST', '/services', { | ||
json: service | ||
}) | ||
} | ||
restartService(serviceId, restartParams) { | ||
Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
return this._request('POST', `/services/${serviceId}/?action=restart`, { | ||
json : restartParams | ||
json: restartParams | ||
}); | ||
} | ||
upgradeService(serviceId, upgradeParams) { | ||
Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
return this._request('POST', `/services/${serviceId}/?action=upgrade`, { | ||
json : upgradeParams | ||
json: upgradeParams | ||
}); | ||
} | ||
finishUpgradeService(serviceId){ | ||
return this._request('POST', `/services/${serviceId}?action=finishupgrade`); | ||
} | ||
createLoadBalancer(createParams) { | ||
return this._request('POST', '/loadBalancerServices', { | ||
json : createParams | ||
json: createParams | ||
}); | ||
} | ||
deleteLoadBalancer(serviceId) { | ||
@@ -241,17 +261,17 @@ Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
} | ||
updateLoadBalancer(serviceId, updateParams) { | ||
Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
return this._request('PUT', `/loadBalancerServices/${serviceId}`, { | ||
json : updateParams | ||
json: updateParams | ||
}); | ||
} | ||
upgradeLoadBalancer(serviceId, upgradeParams) { | ||
Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
return this._request('POST', `/loadBalancerServices/${serviceId}/?action=upgrade`, { | ||
json : upgradeParams | ||
json: upgradeParams | ||
}); | ||
} | ||
activateLoadBalancer(serviceId) { | ||
@@ -261,10 +281,10 @@ Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
} | ||
addServiceLinkLoadBalancer(serviceId, params) { | ||
Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
return this._request('POST', `/loadBalancerServices/${serviceId}/?action=addservicelink`, { | ||
json : params | ||
json: params | ||
}); | ||
} | ||
cancelUpgradeLoadBalancer(serviceId) { | ||
@@ -274,3 +294,3 @@ Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
} | ||
continueUpgradeLoadBalancer(serviceId) { | ||
@@ -280,3 +300,3 @@ Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
} | ||
deactivateLoadBalancer(serviceId) { | ||
@@ -286,3 +306,3 @@ Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
} | ||
finishUpgradeLoadBalancer(serviceId) { | ||
@@ -292,10 +312,10 @@ Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
} | ||
removeServiceLinkLoadBalancer(serviceId, params) { | ||
Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
return this._request('POST', `/loadBalancerServices/${serviceId}/?action=removeservicelink`, { | ||
json : params | ||
json: params | ||
}); | ||
} | ||
rollbackLoadBalancer(serviceId, params) { | ||
@@ -305,9 +325,9 @@ Joi.assert(serviceId, Joi.string().required(), 'Must specify service id'); | ||
} | ||
createVolume(volume) { | ||
return this._request('POST', '/volume', { | ||
json : volume | ||
json: volume | ||
}); | ||
} | ||
getVolume(volumeId) { | ||
@@ -317,3 +337,3 @@ Joi.assert(volumeId, Joi.string().required(), 'Must specify volumeId'); | ||
} | ||
removeVolume(volumeId) { | ||
@@ -323,4 +343,16 @@ Joi.assert(volumeId, Joi.string().required(), 'Must specify volumeId'); | ||
} | ||
getCertificates() { | ||
return this._request('GET', '/certificates') | ||
} | ||
getVolumes() { | ||
return this._request('GET', '/volumes?limit=0') | ||
} | ||
EventApi() { | ||
return new EventApi(this.config); | ||
} | ||
} | ||
module.exports = RancherClient; |
{ | ||
"name": "@pixul/node-rancher-api", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"description": "Rancher API client", | ||
@@ -31,3 +31,4 @@ "main": "lib/lib.js", | ||
"joi": "10.x", | ||
"request": "2.x" | ||
"request": "2.x", | ||
"ws": "^3.3.1" | ||
}, | ||
@@ -34,0 +35,0 @@ "devDependencies": { |
@@ -138,1 +138,54 @@ # node-rancher-api | ||
## Event API | ||
```js | ||
const Rancher = require('@pixul/node-rancher-api'); | ||
const rancher = new Rancher({ | ||
url: 'https://try.rancher.com/v2-beta/projects/XXXXXXXX/', | ||
access_key: 'SoMeToKeN', | ||
secret_key: 'someSecRetToken' | ||
}); | ||
const eventApi = new Rancher.EventApi(); | ||
eventApi.on('error', err => { | ||
console.log(err); | ||
}); | ||
eventApi.on('resource.change.host.1h874.active', event => { | ||
const hostId = event.data.resource.id; | ||
}); | ||
eventApi.on('resource.change.host.1h874.transitioning', event => { | ||
const hostId = event.data.resource.id; | ||
}); | ||
eventApi.on('resource.change.host.1h874.active.transitioning', event => { // Will never be trigger, never | ||
const hostId = event.data.resource.id; | ||
}); | ||
``` | ||
### Event filters | ||
#### Basic | ||
* `resource.change` | ||
* `resource.change.<type>` | ||
* `resource.change.<type>.<id>` | ||
#### State filter | ||
If the resource got a `state` attribute set and a `transitioning` value to `no` | ||
* `resource.change.<state>` | ||
* `resource.change.<type>.<state>` | ||
* `resource.change.<type>.<id>.<state>` | ||
### Transitioning resource | ||
If the resource got `transitioning` set to `yes` | ||
* `resource.change.transitioning` | ||
* `resource.change.<type>.transitioning` | ||
* `resource.change.<type>.<id>.transitioning` |
52613
326
191
4
+ Addedws@^3.3.1
+ Addedasync-limiter@1.0.1(transitive)
+ Addedsafe-buffer@5.1.2(transitive)
+ Addedultron@1.1.1(transitive)
+ Addedws@3.3.3(transitive)