Merge pull request #3327 from Jaredn/master

This commit is contained in:
Søren Rosiak
2016-04-11 19:09:57 +02:00
4 changed files with 72 additions and 2 deletions
+3 -2
View File
@@ -27,7 +27,7 @@ LibreNMS contributors:
- Mohammad Al-Shami <mohammad@al-shami.net> (mohshami)
- Rudy Hardeman <zarya@gigafreak.net> (zarya)
- Freddie Cash <fjwcash@gmail.com> (fjwcash)
- Thom Seddon <thom@seddonmedia.co.uk> (thomseddon)
- Thom Seddon <thom@seddonmedia.co.uk> (thomseddon)
- Vitali Kari <vitali.kari@gmail.com> (vitalisator)
- James Campbell <neokjames@gmail.com> (neokjames)
- Steve Calvário <calvario.steve@gmail.com> (Calvario)
@@ -93,6 +93,7 @@ LibreNMS contributors:
- David Bell <me@geordish.org> (geordish)
- Ibrahim Tachijian <barhom@netsat.se> (barhom)
- Guillaume Coeugnet <aliasprotect-git@yahoo.fr> (gcoeugnet)
- Jared Newell <jared.newell@gmail.com> (Jaredn)
- Karsten Nerdinger <karsten-git-librenms@nerdinger.net> (piratonym)
[1]: http://observium.org/ "Observium web site"
@@ -101,4 +102,4 @@ Observium was written by:
- Tom Laermans
- various others as indicated in the file contents and commit logs
+42
View File
@@ -13,6 +13,7 @@
- [`get_graphs`](#api-route-5)
- [`get_graph_generic_by_hostname`](#api-route-6)
- [`get_port_graphs`](#api-route-7)
- [`get_port_stack`](#api-route-29)
- [`get_components`](#api-route-25)
- [`add_components`](#api-route-26)
- [`edit_components`](#api-route-27)
@@ -275,6 +276,47 @@ Output:
}
```
### <a name="api-route-29">Function: `get_port_stack`</a> [`top`](#top)
Get a list of port mappings for a device. This is useful for showing physical ports that are in a virtual port-channel.
Route: /api/v0/devices/:hostname/port_stack
- hostname can be either the device hostname or id
Input:
- valid_mappings: Filter the result by only showing valid mappings ("0" values not shown).
Example:
```curl
curl -H 'X-Auth-Token: YOURAPITOKENHERE' https://librenms.org/api/v0/devices/localhost/port_stack?valid_mappings
```
Output:
```text
{
"status": "ok",
"err-msg": "",
"count": 2,
"mappings": [
{
"device_id": "3742",
"port_id_high": "1001000",
"port_id_low": "51001",
"ifStackStatus": "active"
},
{
"device_id": "3742",
"port_id_high": "1001000",
"port_id_low": "52001",
"ifStackStatus": "active"
}
]
}
```
### <a name="api-route-25">Function: `get_components`</a> [`top`](#top)
Get a list of components for a particular device.
+1
View File
@@ -48,6 +48,7 @@ $app->group(
$app->get('/:hostname/graphs', 'authToken', 'get_graphs')->name('get_graphs');
// api/v0/devices/$hostname/graphs
$app->get('/:hostname/ports', 'authToken', 'get_port_graphs')->name('get_port_graphs');
$app->get('/:hostname/port_stack', 'authToken', 'get_port_stack')->name('get_port_stack');
// api/v0/devices/$hostname/ports
$app->get('/:hostname/components', 'authToken', 'get_components')->name('get_components');
$app->post('/:hostname/components/:type', 'authToken', 'add_components')->name('add_components');
+26
View File
@@ -721,6 +721,32 @@ function get_port_graphs() {
}
function get_port_stack() {
global $config;
$app = \Slim\Slim::getInstance();
$router = $app->router()->getCurrentRoute()->getParams();
$hostname = $router['hostname'];
// use hostname as device_id if it's all digits
$device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname);
if (isset($_GET['valid_mappings'])) {
$mappings = dbFetchRows("SELECT * FROM `ports_stack` WHERE (`device_id` = ? AND `ifStackStatus` = 'active' AND (`port_id_high` != '0' AND `port_id_low` != '0')) ORDER BY `port_id_high` ASC", array($device_id));
} else {
$mappings = dbFetchRows("SELECT * FROM `ports_stack` WHERE `device_id` = ? AND `ifStackStatus` = 'active' ORDER BY `port_id_high` ASC", array($device_id));
}
$total_mappings = count($mappings);
$output = array(
'status' => 'ok',
'err-msg' => '',
'count' => $total_mappings,
'mappings' => $mappings,
);
$app->response->setStatus('200');
$app->response->headers->set('Content-Type', 'application/json');
echo _json_encode($output);
}
function list_alert_rules() {
global $config;
$app = \Slim\Slim::getInstance();