From 25e8de30c16448603f377369c18f422a007040eb Mon Sep 17 00:00:00 2001 From: theochita Date: Thu, 17 Oct 2019 03:46:44 +0100 Subject: [PATCH] Implement Oxidized "config search" as an API (#10648) * Implement Oxidized config search as API * Add Oxidized config search DOC. * Update Devices.md * change /configsearch/{searchstring} to /config/search/{searchstring} * Update Devices.md --- doc/API/Devices.md | 36 +++++++++++++++++++++++++++++ includes/html/api_functions.inc.php | 12 ++++++++++ routes/api.php | 1 + 3 files changed, 49 insertions(+) diff --git a/doc/API/Devices.md b/doc/API/Devices.md index f51dc5f524..9cb7965f97 100644 --- a/doc/API/Devices.md +++ b/doc/API/Devices.md @@ -1174,3 +1174,39 @@ Output: } ] ``` + + +### `search_oxidized` + +search all oxidized device configs for a string. + +Route: `api/v0/oxidized/config/search/:searchstring` + + - searchstring is the specific string you would like to search for. + +Input: + +- + +Example: +```curl +curl -H 'X-Auth-Token: YOURAPITOKENHERE' https://librenms.org/api/v0/oxidized/configsearch/vlan10 +``` + +Output: +```json +{ + "status": "ok", + "nodes": [ + { + "node": "asr9k.librenms.org", + "full_name": "cisco\/ASR9K.Librenms.org" + }, + { + "node": "ios.Librenms.org", + "full_name": "cisco\/ios.Librenms.org" + } + ], + "count": 2 +} +``` diff --git a/includes/html/api_functions.inc.php b/includes/html/api_functions.inc.php index ed4d672824..6b3d98fa1d 100644 --- a/includes/html/api_functions.inc.php +++ b/includes/html/api_functions.inc.php @@ -1186,6 +1186,18 @@ function get_inventory(\Illuminate\Http\Request $request) } +function search_oxidized(\Illuminate\Http\Request $request) +{ + $search_in_conf_textbox = $request->route('searchstring'); + $result = search_oxidized_config($search_in_conf_textbox); + + if (!$result) { + return api_error(404, "Received no data from Oxidized"); + } else { + return api_success($result, 'nodes'); + } +} + function list_oxidized(\Illuminate\Http\Request $request) { $hostname = $request->route('hostname'); diff --git a/routes/api.php b/routes/api.php index c0866557bc..14e95c9cbc 100644 --- a/routes/api.php +++ b/routes/api.php @@ -73,6 +73,7 @@ Route::group(['prefix' => 'v0', 'namespace' => '\App\Api\Controllers'], function Route::put('rules', 'LegacyApiController@add_edit_rule')->name('edit_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::get('oxidized/config/search/{searchstring}', 'LegacyApiController@search_oxidized')->name('search_oxidized'); }); // restricted by access