API Call to assign/remove a Portgroup to Ports (#13245)

* API Call to assign/remove a Portgroup to Ports

* .

* .
This commit is contained in:
SourceDoctor
2021-09-21 15:41:01 +02:00
committed by GitHub
parent 0d499b538b
commit 11dfbc02b7
3 changed files with 105 additions and 0 deletions

View File

@@ -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
}
```

View File

@@ -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);

View File

@@ -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');