Added device/port_stack API endpoint. Updated documentation

This commit is contained in:
jnewell
2016-04-05 14:25:45 -07:00
parent e40042bd5c
commit 0e6093abfc
2 changed files with 49 additions and 2 deletions

View File

@@ -13,6 +13,7 @@
- [`get_graphs`](#api-route-5) - [`get_graphs`](#api-route-5)
- [`get_graph_generic_by_hostname`](#api-route-6) - [`get_graph_generic_by_hostname`](#api-route-6)
- [`get_port_graphs`](#api-route-7) - [`get_port_graphs`](#api-route-7)
- [`get_port_stack`](#api-route-29)
- [`get_components`](#api-route-25) - [`get_components`](#api-route-25)
- [`add_components`](#api-route-26) - [`add_components`](#api-route-26)
- [`edit_components`](#api-route-27) - [`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) ### <a name="api-route-25">Function: `get_components`</a> [`top`](#top)
Get a list of components for a particular device. Get a list of components for a particular device.

View File

@@ -726,10 +726,15 @@ function get_port_stack() {
$app = \Slim\Slim::getInstance(); $app = \Slim\Slim::getInstance();
$router = $app->router()->getCurrentRoute()->getParams(); $router = $app->router()->getCurrentRoute()->getParams();
$hostname = $router['hostname']; $hostname = $router['hostname'];
// use hostname as device_id if it's all digits // use hostname as device_id if it's all digits
$device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname); $device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname);
$mappings = dbFetchRows("SELECT * FROM `ports_stack` WHERE `device_id` = ? AND `ifStackStatus` = 'active' ORDER BY `port_id_high` ASC", array($device_id));
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); $total_mappings = count($mappings);
$output = array( $output = array(
'status' => 'ok', 'status' => 'ok',