124 lines
3.6 KiB
JavaScript
124 lines
3.6 KiB
JavaScript
/*Copyright (c) 2016 Intel, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
* not use this file except in compliance with the License. You may obtain
|
|
* a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
|
|
import React from "react";
|
|
|
|
var config = require('../../config.js');
|
|
var util = require('../../util.js');
|
|
|
|
const NodeList = React.createClass({
|
|
|
|
delete: function(nodeId) {
|
|
var url = config.url + '/redfish/v1/Nodes/' + nodeId;
|
|
$.ajax({
|
|
url: url,
|
|
type: 'DELETE',
|
|
headers: {
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json'
|
|
},
|
|
success: function(resp) {
|
|
this.props.onUpdateNodes();
|
|
}.bind(this),
|
|
error: function(xhr, status, err) {
|
|
console.error(url, status, err.toString());
|
|
}.bind(this)
|
|
});
|
|
},
|
|
|
|
setBoot: function(nodeId) {
|
|
var url = config.url + '/redfish/v1/Nodes/' + nodeId;
|
|
$.ajax({
|
|
url: url,
|
|
type: 'PATCH',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
data: JSON.stringify({
|
|
"Boot": {
|
|
"BootSourceOverrideEnabled": "Continuous",
|
|
"BootSourceOverrideTarget": "Pxe"
|
|
}
|
|
}),
|
|
success: function(resp) {
|
|
this.props.onUpdateNodes();
|
|
}.bind(this),
|
|
error: function(xhr, status, err) {
|
|
console.error(url, status, err.toString());
|
|
}.bind(this)
|
|
});
|
|
},
|
|
|
|
assemble: function(nodeId) {
|
|
var url = config.url + '/redfish/v1/Nodes/' + nodeId + '/Actions/ComposedNode.Assemble';
|
|
$.ajax({
|
|
url: url,
|
|
type: 'POST',
|
|
success: function(resp) {
|
|
this.props.onUpdateNodes();
|
|
}.bind(this),
|
|
error: function(xhr, status, err) {
|
|
console.error(url, status, err.toString());
|
|
}.bind(this)
|
|
});
|
|
},
|
|
|
|
powerOn: function(nodeId) {
|
|
var url = config.url + '/redfish/v1/Nodes/' + nodeId + '/Actions/ComposedNode.Reset';
|
|
$.ajax({
|
|
url: url,
|
|
type: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
data: JSON.stringify({"ResetType": "On"}),
|
|
success: function(resp) {
|
|
this.props.onUpdateNodes();
|
|
}.bind(this),
|
|
error: function(xhr, status, err) {
|
|
console.error(url, status, err.toString());
|
|
}.bind(this)
|
|
});
|
|
},
|
|
|
|
renderList: function() {
|
|
return this.props.nodes.map((node, i) =>
|
|
<div class="item" key={i}>
|
|
{node.Name}
|
|
<input type="button" class="detail-button" onClick={() => this.props.onShowDetail(node, this.props.header)} value="Show" />
|
|
<input type="button" class="detail-button" onClick={() => this.delete(node.Id)} value="Delete" />
|
|
<input type="button" class="detail-button" onClick={() => this.setBoot(node.Id)} value="Set Boot Source" />
|
|
<input type="button" class="detail-button" onClick={() => this.assemble(node.Id)} value="Assemble" />
|
|
<input type="button" class="detail-button" onClick={() => this.powerOn(node.Id)} value="Power On" />
|
|
<br />
|
|
{node.Description}
|
|
<hr class="separator"/>
|
|
</div>
|
|
);
|
|
},
|
|
|
|
render: function() {
|
|
return (
|
|
<div>
|
|
{this.renderList()}
|
|
</div>
|
|
);
|
|
},
|
|
});
|
|
|
|
NodeList.defaultProps = { nodes: [], header: ""};
|
|
|
|
export default NodeList;
|