tripleo-ui/src/js/services/IronicApiService.js

61 lines
1.4 KiB
JavaScript

import * as _ from 'lodash';
import request from 'reqwest';
import when from 'when';
import { getServiceUrl, getAuthTokenId } from './utils';
class IronicApiService {
defaultRequest(path, additionalAttributes) {
return when.try(getServiceUrl, 'ironic').then((serviceUrl) => {
let requestAttributes = _.merge({
url: `${serviceUrl}${path}`,
headers: {
'X-Auth-Token': getAuthTokenId(),
'X-OpenStack-Ironic-API-Version': '1.14'
},
crossOrigin: true,
contentType: 'application/json',
type: 'json',
method: 'GET'
}, additionalAttributes);
return when(request(requestAttributes));
});
}
/**
* Ironic API: GET /v1/nodes/detail
* @returns {array} of nodes with complete details
*/
getNodes() {
return this.defaultRequest('/nodes/detail');
}
/**
* Ironic API: GET /v1/nodes/<uuid>
* @returns node object.
*/
getNode(nodeId) {
return this.defaultRequest('/nodes/' + nodeId);
}
getNodePorts(nodeUUID) {
return this.defaultRequest(`/nodes/${nodeUUID}/ports`);
}
patchNode(nodePatch) {
return this.defaultRequest('/nodes/' + nodePatch.uuid, {
method: 'PATCH',
data: JSON.stringify(nodePatch.patches)
});
}
deleteNode(nodeId) {
return this.defaultRequest('/nodes/' + nodeId, {
method: 'DELETE'
});
}
}
export default new IronicApiService();