API Calls to list Device Outages, calculated Availability (#12103)

* API Calls to list Device Outages, calculated Availability

* switch to eloquent

* style correction
This commit is contained in:
SourceDoctor
2020-09-24 00:21:08 +02:00
committed by GitHub
parent f3f67e834f
commit 9ade71d20c
3 changed files with 140 additions and 0 deletions

View File

@@ -12,8 +12,10 @@
* the source code distribution for details.
*/
use App\Models\Availability;
use App\Models\Device;
use App\Models\DeviceGroup;
use App\Models\DeviceOutage;
use App\Models\PortsFdb;
use App\Models\Sensor;
use Illuminate\Database\Eloquent\Builder;
@@ -447,6 +449,48 @@ function del_device(Illuminate\Http\Request $request)
return api_success([$device], 'devices', $response);
}
function device_availability(\Illuminate\Http\Request $request)
{
// return availability per device
$hostname = $request->route('hostname');
if (empty($hostname)) {
return api_error(400, 'No hostname has been provided to get availability');
}
$device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname);
return check_device_permission($device_id, function ($device_id) {
$availabilities = Availability::select('duration', 'availability_perc')
->where('device_id', '=', $device_id)
->orderBy('duration', 'ASC');
return api_success($availabilities->get(), 'availability');
});
}
function device_outages(\Illuminate\Http\Request $request)
{
// return outages per device
$hostname = $request->route('hostname');
if (empty($hostname)) {
return api_error(400, 'No hostname has been provided to get availability');
}
$device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname);
return check_device_permission($device_id, function ($device_id) {
$outages = DeviceOutage::select('going_down', 'up_again')
->where('device_id', '=', $device_id)
->orderBy('going_down', 'DESC');
return api_success($outages->get(), 'outages');
});
}
function get_vlans(Illuminate\Http\Request $request)
{
$hostname = $request->route('hostname');