summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-05-26 18:25:21 +0200
committerJules Laplace <julescarbon@gmail.com>2018-05-26 18:25:21 +0200
commit3d836c372d7eff1e2b507888f1ff652a30187c54 (patch)
tree7712d75d400a48124192e2967fab4d8fcc72063c /app
parent0157537cc049d4b13384b7042129a61f297f9132 (diff)
checking on RPC status and sending it thru
Diffstat (limited to 'app')
-rw-r--r--app/client/socket.js6
-rw-r--r--app/client/system/system.component.js10
-rw-r--r--app/client/system/system.reducer.js25
-rw-r--r--app/client/types.js2
-rw-r--r--app/relay/index.js52
-rw-r--r--app/relay/runner.js4
-rw-r--r--app/server/index.js7
7 files changed, 95 insertions, 11 deletions
diff --git a/app/client/socket.js b/app/client/socket.js
index cc4285b..da70dfc 100644
--- a/app/client/socket.js
+++ b/app/client/socket.js
@@ -62,6 +62,12 @@ socket.on('system_res', (data) => {
return store.dispatch({ type: types.system.relay_connected })
case 'relay_disconnected':
return store.dispatch({ type: types.system.relay_disconnected })
+ case 'rpc_connected':
+ return store.dispatch({ type: types.system.rpc_connected, runner: data.runner })
+ case 'rpc_disconnected':
+ return store.dispatch({ type: types.system.rpc_disconnected })
+ case 'relay_status':
+ return store.dispatch({ type: data.rpc_connected ? types.system.rpc_connected : types.system.rpc_disconnected, runner: data.runner })
case 'command_output':
store.dispatch({
type: types.system.command_output,
diff --git a/app/client/system/system.component.js b/app/client/system/system.component.js
index e097b61..7428c22 100644
--- a/app/client/system/system.component.js
+++ b/app/client/system/system.component.js
@@ -27,14 +27,18 @@ class System extends Component {
}
<Param title='Relay'>{relay.status}</Param>
<Param title='RPC'>{rpc.status}</Param>
- <Param title='CPU'>pix2pix dataset.py</Param>
- <Param title='GPU'>pix2pix train.py</Param>
+ <Param title='CPU'>{rpc.cpu_cmd}</Param>
+ <Param title='GPU'>{rpc.gpu_cmd}</Param>
<Param title='Current Task'>train samplernn</Param>
</Group>
<Group title="Diagnostics">
- <Param title='Commands'>
+ <Param title='Check GPU'>
<button onClick={() => actions.run('nvidia-smi')}>nvidia-smi</button>
+ </Param>
+ <Param title='List processes'>
<button onClick={() => actions.run('ps')}>ps</button>
+ </Param>
+ <Param title='List users'>
<button onClick={() => actions.run('w')}>w</button>
</Param>
</Group>
diff --git a/app/client/system/system.reducer.js b/app/client/system/system.reducer.js
index 1b0e28f..a21966d 100644
--- a/app/client/system/system.reducer.js
+++ b/app/client/system/system.reducer.js
@@ -22,6 +22,8 @@ const systemInitialState = {
rpc: {
connected: false,
status: "unknown",
+ cpu_cmd: "unknown",
+ gpu_cmd: "unknown",
error: null,
},
cmd: {
@@ -181,6 +183,29 @@ const systemReducer = (state = systemInitialState, action) => {
status: 'disconnected',
connected: false,
error: null,
+ },
+ rpc: {
+ status: 'disconnected',
+ connected: false,
+ error: null,
+ },
+ }
+ case types.system.rpc_connected:
+ return {
+ ...state,
+ rpc: {
+ status: 'connected',
+ connected: true,
+ error: null,
+ }
+ }
+ case types.system.rpc_connected:
+ return {
+ ...state,
+ rpc: {
+ status: 'disconnected',
+ connected: false,
+ error: null,
}
}
case types.system.running_command:
diff --git a/app/client/types.js b/app/client/types.js
index cba2871..1401ac6 100644
--- a/app/client/types.js
+++ b/app/client/types.js
@@ -4,6 +4,8 @@ export default {
command_output: 'SYSTEM_COMMAND_OUTPUT',
relay_connected: 'SYSTEM_RELAY_CONNECTED',
relay_disconnected: 'SYSTEM_RELAY_DISCONNECTED',
+ rpc_connected: 'SYSTEM_RPC_CONNECTED',
+ rpc_disconnected: 'SYSTEM_RPC_DISCONNECTED',
},
socket: {
connect: 'SOCKET_CONNECT',
diff --git a/app/relay/index.js b/app/relay/index.js
index 2f93644..6bb9179 100644
--- a/app/relay/index.js
+++ b/app/relay/index.js
@@ -5,8 +5,9 @@ const zerorpc = require('zerorpc')
const Readable = require('stream').Readable
const runner = require('./runner')
-let remote = io.connect(process.env.SOCKETIO_REMOTE)
+let remote, relay, rpc, rpc_connected = false
+remote = io.connect(process.env.SOCKETIO_REMOTE)
remote.on('cmd', (data) => {
console.log('cmd data', data)
if (! data.cmd) return console.log('malformed param...?')
@@ -52,28 +53,40 @@ remote.on('system', (data) => {
})
})
break
+ case 'get_status':
+ remote.emit('system_res', {
+ type: 'relay_status',
+ rpc_connected: rpc_connected,
+ runner: runner.status(),
+ })
+ break
default:
remote.emit('system_res', { error: 'unknown system command' })
break
}
})
-let rpc = new zerorpc.Client()
+rpc = new zerorpc.Client()
rpc.connect('tcp://127.0.0.1:' + process.env.RPC_PORT)
rpc.on('error', function(error) {
console.error('RPC server error:', error)
})
console.log('RPC listening on port ' + process.env.RPC_PORT)
-let relay = new zerorpc.Server({
+relay = new zerorpc.Server({
// Called when the worker starts up and is ready to receive params.
- connected: function (msg, reply) {
+ connected: function(msg, reply) {
reply()
console.log('got connect from ' + msg)
+ remote.emit('system_res', {
+ type: 'rpc_connected',
+ runner: runner.status(),
+ })
+ rpc_connected = true
return true
},
- send_frame: function (fn, meta, frame, reply) {
+ send_frame: function(fn, meta, frame, reply) {
reply()
// console.log('got frame, ' + frame.length + ' bytes')
remote.emit('frame', { fn: fn, meta: meta, frame: frame })
@@ -82,12 +95,37 @@ let relay = new zerorpc.Server({
send_status: function(key, value, reply) {
reply()
remote.emit('status', { key: key, value: value })
- }
+ },
+
+ disconnecting: function(){
+ reply()
+ remote.emit('system_res', {
+ type: 'rpc_disconnected',
+ })
+ rpc_connected = false
+ return true
+ },
})
relay.on('error', function(error) {
console.error('Relay server error:', error)
})
-relay.bind('tcp://0.0.0.0:' + process.env.RELAY_PORT);
+relay.bind('tcp://0.0.0.0:' + process.env.RELAY_PORT)
console.log('Relay listening on port ' + process.env.RELAY_PORT)
+rpc.invoke('ping', (err, res, more) => {
+ console.log('sent ping', res)
+ if (res === 'pong') {
+ remote.emit('system_res', {
+ type: 'rpc_connected',
+ runner: runner.status()
+ })
+ rpc_connected = true
+ } else {
+ remote.emit('system_res', {
+ type: 'rpc_disconnected',
+ })
+ rpc_connected = false
+ }
+})
+
module.exports = { relay: relay, remote: remote, } \ No newline at end of file
diff --git a/app/relay/runner.js b/app/relay/runner.js
index 715be7b..c9f4052 100644
--- a/app/relay/runner.js
+++ b/app/relay/runner.js
@@ -11,6 +11,10 @@ var state = {
current_gpu_task: null,
}
+export function status(){
+ return {}
+}
+
export function get_current_cpu_task(){
return state.current_cpu_task
}
diff --git a/app/server/index.js b/app/server/index.js
index acbb20b..adc8759 100644
--- a/app/server/index.js
+++ b/app/server/index.js
@@ -72,7 +72,12 @@ function bind_relay(socket) {
function bind_client(socket){
console.log('Client connected')
- socket.emit('system_res', { type: relay_connected ? 'relay_connected' : 'relay_disconnected' })
+ if (relay_connected) {
+ socket.emit('system_res', { type: 'relay_connected' })
+ relay.emit('system', { cmd: 'get_status' })
+ } else {
+ socket.emit('system_res', { type: 'relay_disconnected' })
+ }
socket.on('cmd', data => {
console.log('Client sent command', data)