83 lines
2.1 KiB
JavaScript
Executable file
83 lines
2.1 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
|
|
|
'use strict'
|
|
|
|
var wreck = require('wreck')
|
|
var argv = process.argv.slice(2)
|
|
|
|
var cmd = argv[0]
|
|
var fingerprint = argv[1]
|
|
|
|
if (!cmd || !fingerprint) {
|
|
console.log('Command line utility for lamassu-server')
|
|
console.log('\nUsage: ssu reboot <machine-fingerprint>')
|
|
console.log('This will remotely reboot your lamassu-machine.')
|
|
process.exit(1)
|
|
}
|
|
|
|
var opts = {json: true}
|
|
wreck.get('http://localhost:7070/pid?fingerprint=' + fingerprint, opts, function (err, res, payload) {
|
|
if (err) {
|
|
console.log('Please make sure that lamassu-server is running on this box.')
|
|
process.exit(2)
|
|
}
|
|
|
|
if (!payload.pid) {
|
|
console.log('The requested lamassu-machine is not connected.')
|
|
process.exit(3)
|
|
}
|
|
|
|
var pid = payload.pid
|
|
|
|
if (Date.now() - payload.ts > 10000) {
|
|
console.log('lamassu-machine is not connected to server.')
|
|
process.exit(6)
|
|
}
|
|
|
|
var opts2 = {
|
|
headers: {'Content-Type': 'application/json'},
|
|
payload: JSON.stringify({pid: pid, fingerprint: fingerprint})
|
|
}
|
|
|
|
wreck.post('http://localhost:7070/reboot', opts2, function (err2, res) {
|
|
if (err2) {
|
|
console.log('Please make sure that lamassu-server is running on this box.')
|
|
process.exit(2)
|
|
}
|
|
|
|
if (res.statusCode !== 200) {
|
|
console.log('Communication error')
|
|
return
|
|
}
|
|
|
|
console.log('Rebooting...')
|
|
|
|
var ts = null
|
|
|
|
setTimeout(function () {
|
|
if (Date.now() - ts < 10000) {
|
|
console.log('lamassu-machine did not reboot but is still contacting server.')
|
|
process.exit(4)
|
|
}
|
|
|
|
console.log('lamassu-machine rebooted but is not coming back up.')
|
|
process.exit(5)
|
|
}, 30000)
|
|
|
|
setInterval(function () {
|
|
wreck.get('http://localhost:7070/pid?fingerprint=' + fingerprint, opts, function (err3, res, payload) {
|
|
if (err3) {
|
|
console.log('lamassu-server appears to be down.')
|
|
process.exit(2)
|
|
}
|
|
|
|
ts = payload.ts
|
|
|
|
if (payload.pid !== pid) {
|
|
console.log('lamassu-machine is back up!')
|
|
process.exit(0)
|
|
}
|
|
})
|
|
}, 5000)
|
|
})
|
|
})
|