mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
API Call to assign/remove a Portgroup to Ports (#13245)
* API Call to assign/remove a Portgroup to Ports * . * .
This commit is contained in:
@@ -69,3 +69,58 @@ Output:
|
||||
"message": "Port group New Port Group created"
|
||||
}
|
||||
```
|
||||
|
||||
### `assign_portgroup`
|
||||
|
||||
Assign a Port Group to a list of Ports
|
||||
|
||||
Route: `/api/v0/port_groups/:port_group_id/assign`
|
||||
|
||||
Input (JSON):
|
||||
|
||||
- `port_ids`: *required* - List of Port Ids
|
||||
|
||||
Examples:
|
||||
|
||||
Dynamic Example:
|
||||
|
||||
```curl
|
||||
curl -H 'X-Auth-Token: YOURAPITOKENHERE' -X POST -d '{"port_ids": ["4","34","25,"983"]}' https://librenms.org/api/v0/port_groups/3/assign
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": "ok",
|
||||
"Port Ids 4, 34, 25, 983 have been added to Port Group Id 3": 200
|
||||
}
|
||||
```
|
||||
|
||||
### `remove_portgroup`
|
||||
|
||||
Remove a Port Group from a list of Ports
|
||||
|
||||
Route: `/api/v0/port_groups/:port_group_id/remove`
|
||||
|
||||
Input (JSON):
|
||||
|
||||
- `port_ids`: *required* - List of Port Ids
|
||||
|
||||
Examples:
|
||||
|
||||
Dynamic Example:
|
||||
|
||||
```curl
|
||||
curl -H 'X-Auth-Token: YOURAPITOKENHERE' -X POST -d '{"port_ids": ["4","34","25,"983"]}' https://librenms.org/api/v0/port_groups/3/remove
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```json
|
||||
{
|
||||
"status": "ok",
|
||||
"Port Ids 4, 34, 25, 983 have been removed from Port Group Id 3": 200
|
||||
}
|
||||
```
|
||||
|
||||
|
@@ -1934,6 +1934,54 @@ function get_port_groups(Illuminate\Http\Request $request)
|
||||
return api_success($groups->makeHidden('pivot')->toArray(), 'groups', 'Found ' . $groups->count() . ' port groups');
|
||||
}
|
||||
|
||||
function assign_port_group(Illuminate\Http\Request $request)
|
||||
{
|
||||
$port_group_id = $request->route('port_group_id');
|
||||
$data = json_decode($request->getContent(), true);
|
||||
$port_id_list = $data['port_ids'];
|
||||
|
||||
if (json_last_error() || ! is_array($data)) {
|
||||
return api_error(400, "We couldn't parse the provided json. " . json_last_error_msg());
|
||||
}
|
||||
|
||||
if (! isset($port_id_list)) {
|
||||
return api_error(400, "Missing data field 'port_ids' " . json_last_error_msg());
|
||||
}
|
||||
|
||||
$port_group = PortGroup::find($port_group_id);
|
||||
if (! isset($port_group)) {
|
||||
return api_error(404, 'Port Group ID ' . $port_group_id . ' not found');
|
||||
}
|
||||
|
||||
$port_group->ports()->attach($port_id_list);
|
||||
|
||||
return api_success(200, 'Port Ids ' . implode(', ', $port_id_list) . ' have been added to Port Group Id ' . $port_group_id);
|
||||
}
|
||||
|
||||
function remove_port_group(Illuminate\Http\Request $request)
|
||||
{
|
||||
$port_group_id = $request->route('port_group_id');
|
||||
$data = json_decode($request->getContent(), true);
|
||||
$port_id_list = $data['port_ids'];
|
||||
|
||||
if (json_last_error() || ! is_array($data)) {
|
||||
return api_error(400, "We couldn't parse the provided json. " . json_last_error_msg());
|
||||
}
|
||||
|
||||
if (! isset($port_id_list)) {
|
||||
return api_error(400, "Missing data field 'port_ids' " . json_last_error_msg());
|
||||
}
|
||||
|
||||
$port_group = PortGroup::find($port_group_id);
|
||||
if (! isset($port_group)) {
|
||||
return api_error(404, 'Port Group ID ' . $port_group_id . ' not found');
|
||||
}
|
||||
|
||||
$port_group->ports()->detach($port_id_list);
|
||||
|
||||
return api_success(200, 'Port Ids ' . implode(', ', $port_id_list) . ' have been removed from Port Group Id ' . $port_group_id);
|
||||
}
|
||||
|
||||
function add_device_group(Illuminate\Http\Request $request)
|
||||
{
|
||||
$data = json_decode($request->getContent(), true);
|
||||
|
@@ -77,6 +77,8 @@ Route::group(['prefix' => 'v0', 'namespace' => '\App\Api\Controllers'], function
|
||||
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('port_groups', 'LegacyApiController@add_port_group')->name('add_port_group');
|
||||
Route::post('port_groups/{port_group_id}/assign', 'LegacyApiController@assign_port_group')->name('assign_port_group');
|
||||
Route::post('port_groups/{port_group_id}/remove', 'LegacyApiController@remove_port_group')->name('remove_port_group');
|
||||
Route::post('devices/{id}/parents', 'LegacyApiController@add_parents_to_host')->name('add_parents_to_host');
|
||||
Route::delete('/devices/{id}/parents', 'LegacyApiController@del_parents_from_host')->name('del_parents_from_host');
|
||||
Route::post('locations', 'LegacyApiController@add_location')->name('add_location');
|
||||
|
Reference in New Issue
Block a user