From b24f5cf638f16fd1550dcfa4b0e4dee3b56c5018 Mon Sep 17 00:00:00 2001 From: Laura Fuentes Grau Date: Sun, 6 Dec 2020 16:06:15 +0100 Subject: [PATCH] Send IC control commands from status dialog #265 --- src/ic/ic-data-data-manager.js | 34 ++++++++++++++++++++++++++++++++++ src/ic/ic-dialog.js | 2 +- src/ic/ic-status-store.js | 26 ++++++++++++++++++++++++-- src/ic/ics.js | 23 ++++++++++++++++++++--- 4 files changed, 79 insertions(+), 6 deletions(-) diff --git a/src/ic/ic-data-data-manager.js b/src/ic/ic-data-data-manager.js index d0ca2fd..b26675c 100644 --- a/src/ic/ic-data-data-manager.js +++ b/src/ic/ic-data-data-manager.js @@ -78,6 +78,40 @@ class IcDataDataManager { }) } + restart(url,socketname,token){ + RestAPI.post(url, null).then(response => { + AppDispatcher.dispatch({ + type: 'ic-status/restart-successful', + data: response, + token: token, + socketname: socketname, + }); + }).catch(error => { + AppDispatcher.dispatch({ + type: 'ic-status/restart-error', + error: error + }) + }) + } + + shutdown(url,socketname,token){ + RestAPI.post(url, null).then(response => { + AppDispatcher.dispatch({ + type: 'ic-status/shutdown-successful', + data: response, + token: token, + socketname: socketname, + }); + }).catch(error => { + AppDispatcher.dispatch({ + type: 'ic-status/shutdown-error', + error: error + }) + }) + } + + + closeAll() { // close every open socket for (var identifier in this._sockets) { diff --git a/src/ic/ic-dialog.js b/src/ic/ic-dialog.js index 0acbcb5..4e0e9a4 100644 --- a/src/ic/ic-dialog.js +++ b/src/ic/ic-dialog.js @@ -38,7 +38,7 @@ class ICDialog extends React.Component { closeConfirmModal(canceled){ if(!canceled){ - this.props.sendControlCommand(this.state.command); + this.props.sendControlCommand(this.state.command,this.props.ic); } this.setState({confirmCommand: false, command: ''}); diff --git a/src/ic/ic-status-store.js b/src/ic/ic-status-store.js index c78353a..3f701ef 100644 --- a/src/ic/ic-status-store.js +++ b/src/ic/ic-status-store.js @@ -28,7 +28,7 @@ class ICStatusStore extends ArrayStore { switch(action.type) { case 'ic-status/get-status': - ICDataDataManager.getStatus(action.url, action.socketname, action.token,action.icid); + ICDataDataManager.getStatus(action.url, action.socketname, action.token, action.icid); return super.reduce(state, action); case 'ic-status/status-received': @@ -38,7 +38,29 @@ class ICStatusStore extends ArrayStore { case 'ic-status/status-error': console.log("status error"); - return super.reduce(state, action); + return state; + + case 'ic-status/restart': + ICDataDataManager.restart(action.url, action.socketname, action.token); + return state; + + case 'ic-status/restart-successful': + return state; + + case 'ic-status/restart-error': + console.log("restart error"); + return state; + + case 'ic-status/shutdown': + ICDataDataManager.shutdown(action.url, action.socketname, action.token); + return state; + + case 'ic-status/shutdown-successful': + return state; + + case 'ic-status/shutdown-error': + console.log("shutdown error"); + return state; default: return super.reduce(state, action); diff --git a/src/ic/ics.js b/src/ic/ics.js index c582503..4f8e2eb 100644 --- a/src/ic/ics.js +++ b/src/ic/ics.js @@ -365,8 +365,25 @@ class InfrastructureComponents extends Component { this.setState({ icModal: true, modalIC: ic, modalICStatus: icStatus, modalICGraph: icGraph, modalIndex: index }) } - sendControlCommand(command){ - console.log(command); + sendControlCommand(command,ic){ + let splitWebsocketURL = ic.websocketurl.split("/"); + + if(command === "restart"){ + AppDispatcher.dispatch({ + type: 'ic-status/restart', + url: ic.apiurl + "/restart", + socketname: splitWebsocketURL[splitWebsocketURL.length - 1], + token: this.state.sessionToken, + }); + }else if(command === "shutdown"){ + AppDispatcher.dispatch({ + type: 'ic-status/shutdown', + url: ic.apiurl + "/shutdown", + socketname: splitWebsocketURL[splitWebsocketURL.length - 1], + token: this.state.sessionToken, + }); + } + } render() { @@ -439,7 +456,7 @@ class InfrastructureComponents extends Component { this.closeNewModal(data)} /> this.closeEditModal(data)} ic={this.state.modalIC} /> this.closeImportModal(data)} /> - this.closeICModal(data)} ic={this.state.modalIC} token={this.state.sessionToken} icStatus={this.state.modalICStatus} icGraph={this.state.modalICGraph} sendControlCommand={(command) => this.sendControlCommand(command)}/> + this.closeICModal(data)} ic={this.state.modalIC} token={this.state.sessionToken} icStatus={this.state.modalICStatus} icGraph={this.state.modalICGraph} sendControlCommand={(command, ic) => this.sendControlCommand(command, ic)}/> this.closeDeleteModal(e)} />