Add ability to fetch oxidized device config via the librenms API (#10913)

* Add get_oxidized_config api route

* Add "get_oxidized_config" function.

* add get_oxidized_config docs and fix typo in the search_oxidized docs.
This commit is contained in:
theochita
2019-12-08 19:04:53 +00:00
committed by Jellyfrog
parent 096835b67d
commit 96ed161c81
3 changed files with 38 additions and 1 deletions

View File

@@ -1191,7 +1191,7 @@ Input:
Example: Example:
```curl ```curl
curl -H 'X-Auth-Token: YOURAPITOKENHERE' https://librenms.org/api/v0/oxidized/configsearch/vlan10 curl -H 'X-Auth-Token: YOURAPITOKENHERE' https://librenms.org/api/v0/oxidized/config/search/vlan10
``` ```
Output: Output:
@@ -1211,3 +1211,28 @@ Output:
"count": 2 "count": 2
} }
``` ```
### `get_oxidized_config`
Returns a specific device's config from oxidized.
Route: `api/v0/oxidized/config/:device_name`
- device_name is the full dns name of the device used when adding the device to librenms.
Input:
-
Example:
```curl
curl -H 'X-Auth-Token: YOURAPITOKENHERE' https://librenms.org/api/v0/oxidized/config/router.corp.com
```
Output:
```json
{
"status": "ok",
"config": "DEVICE CONFIG HERE"
}
```

View File

@@ -1204,6 +1204,17 @@ function search_oxidized(\Illuminate\Http\Request $request)
} }
} }
function get_oxidized_config(\Illuminate\Http\Request $request)
{
$hostname = $request->route('device_name');
$result = json_decode(file_get_contents(Config::get('oxidized.url') . '/node/fetch/' . $hostname . '?format=json'), true);
if (!$result) {
return api_error(404, "Received no data from Oxidized");
} else {
return api_success($result, 'config');
}
}
function list_oxidized(\Illuminate\Http\Request $request) function list_oxidized(\Illuminate\Http\Request $request)
{ {
$hostname = $request->route('hostname'); $hostname = $request->route('hostname');

View File

@@ -74,6 +74,7 @@ Route::group(['prefix' => 'v0', 'namespace' => '\App\Api\Controllers'], function
Route::delete('rules/{id}', 'LegacyApiController@delete_rule')->name('delete_rule'); Route::delete('rules/{id}', 'LegacyApiController@delete_rule')->name('delete_rule');
Route::post('services/{hostname}', 'LegacyApiController@add_service_for_host')->name('add_service_for_host'); Route::post('services/{hostname}', 'LegacyApiController@add_service_for_host')->name('add_service_for_host');
Route::get('oxidized/config/search/{searchstring}', 'LegacyApiController@search_oxidized')->name('search_oxidized'); Route::get('oxidized/config/search/{searchstring}', 'LegacyApiController@search_oxidized')->name('search_oxidized');
Route::get('oxidized/config/{device_name}', 'LegacyApiController@get_oxidized_config')->name('get_oxidized_config');
Route::post('devicegroups', 'LegacyApiController@add_device_group')->name('add_device_group'); Route::post('devicegroups', 'LegacyApiController@add_device_group')->name('add_device_group');
}); });