Add API function to check daemon status of monitor
This replaces daemonStatus(), zmcStatus() and zmaStatus() from the original includes/functions.php. Can be accessed like: /api/monitors/daemonStatus/id:2/daemon:zma.json
This commit is contained in:
parent
b0aeea262b
commit
dcde5e16ad
|
@ -124,5 +124,43 @@ class MonitorsController extends AppController {
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if a daemon is running for the monitor id
|
||||||
|
public function daemonStatus() {
|
||||||
|
$id = $this->request->params['named']['id'];
|
||||||
|
$daemon = $this->request->params['named']['daemon'];
|
||||||
|
|
||||||
|
if (!$this->Monitor->exists($id)) {
|
||||||
|
throw new NotFoundException(__('Invalid monitor'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$monitor = $this->Monitor->find('first', array(
|
||||||
|
'fields' => array('Id', 'Type', 'Device'),
|
||||||
|
'conditions' => array('Id' => $id)
|
||||||
|
));
|
||||||
|
|
||||||
|
// Clean up the returned array
|
||||||
|
$monitor = Set::extract('/Monitor/.', $monitor);
|
||||||
|
|
||||||
|
// Pass -d for local, otherwise -m
|
||||||
|
if ($monitor[0]['Type'] == 'Local') {
|
||||||
|
$args = "-d ". $monitor[0]['Device'];
|
||||||
|
} else {
|
||||||
|
$args = "-m ". $monitor[0]['Id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build the command, and execute it
|
||||||
|
$zm_path_bin = Configure::read('ZM_PATH_BIN');
|
||||||
|
$command = escapeshellcmd("$zm_path_bin/zmdc.pl status $daemon $args");
|
||||||
|
$status = exec( $command );
|
||||||
|
|
||||||
|
// If 'not' is present, the daemon is not running, so return false
|
||||||
|
$status = (strpos($status, 'not')) ? false : true;
|
||||||
|
|
||||||
|
$this->set(array(
|
||||||
|
'status' => $status,
|
||||||
|
'_serialize' => array('status')
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue