shovel/lib/api/openstack/ironic.js
Andre Keedy 50ec0f2000 Add support to run an ansible playbook
- Add an API to upload a playbook
- Add an API to run an ansible playbook on a rackHD node
- fix new eslint errors
- Add unit tests

Change-Id: Ibe623c228c6ac13cab0f2726e267878bec1bdb6e
Implements: blueprint shovel-deployment-capability
2016-03-08 15:31:50 +00:00

110 lines
3.2 KiB
JavaScript

// Copyright 2015, EMC, Inc.
/*eslint-env node*/
var config = require('./../../../config.json');
var client = require('./../client');
var Promise = require('bluebird');
Promise.promisifyAll(client);
var pfx = config.ironic.version;
var request = {
host: config.ironic.httpHost,
port: config.ironic.httpPort,
path: pfx,
token: '',
data: '',
api: {
name: 'X-OpenStack-Ironic-API-Version',
version: '1.6'
}
};
/*
* Ironic wrapper functions
*/
var ironicWrapper = {
get_chassis: function (token) {
'use strict';
request.token = token;
request.path = pfx + '/chassis';
return client.GetAsync(request);
},
get_chassis_by_id: function (token, identifier) {
'use strict';
request.token = token;
request.path = pfx + '/chassis/' + identifier;
return client.GetAsync(request);
},
get_node_list: function (token) {
'use strict';
request.token = token;
request.path = pfx + '/nodes/detail';
return client.GetAsync(request);
},
get_node: function (token, identifier) {
'use strict';
request.token = token;
request.path = pfx + '/nodes/' + identifier;
return client.GetAsync(request);
},
create_node: function (token, node) {
'use strict';
request.token = token;
request.path = pfx + '/nodes';
request.data = node;
return client.PostAsync(request);
},
patch_node: function (token, identifier, data) {
'use strict';
request.token = token;
request.path = pfx + '/nodes/' + identifier;
request.data = data;
return client.PatchAsync(request);
},
delete_node: function (token, identifier) {
'use strict';
request.token = token;
request.path = pfx + '/nodes/' + identifier;
return client.DeleteAsync(request);
},
get_port_list: function (token) {
'use strict';
request.token = token;
request.path = pfx + '/ports';
return client.GetAsync(request);
},
get_port: function (token, identifier) {
'use strict';
request.token = token;
request.path = pfx + '/ports/' + identifier;
return client.GetAsync(request);
},
create_port: function (token, port) {
'use strict';
request.token = token;
request.path = pfx + '/ports';
request.data = port;
return client.PostAsync(request);
},
set_power_state: function (token, identifier, state) {
'use strict';
request.token = token;
request.path = pfx + '/nodes/' + identifier + '/states/power';
if (state === 'off' || state === 'on') {
request.data = JSON.stringify({ target: 'power ' + state });
}
if (state === 'reboot') {
request.data = JSON.stringify({ target: 'rebooting' });
}
return client.PutAsync(request);
},
get_driver_list: function (token) {
'use strict';
request.token = token;
request.path = pfx + '/drivers';
return client.GetAsync(request);
}
};
module.exports = Object.create(ironicWrapper);