Implemented system heartbeat, to poll systems regularly that we havent heard from
This commit is contained in:
@@ -1,8 +1,4 @@
|
||||
<!-- $o = System::class -->
|
||||
@php
|
||||
use App\Models\Setup;
|
||||
@endphp
|
||||
|
||||
<div class="row">
|
||||
<!-- Name -->
|
||||
<div class="col-4">
|
||||
@@ -205,55 +201,135 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (! is_null($o->pollmode))
|
||||
<div class="offset-3 col-4">
|
||||
<table class="table monotable m-0 p-0 small noborder">
|
||||
<tbody style="border-style:dotted;">
|
||||
@if($job = $o->poll())
|
||||
<tr>
|
||||
<td class="cap text-end">@if($job->attempts)Last Attempt @else Scheduled @endif:</td>
|
||||
<td>{{ $job->created_at }} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cap text-end">Attempts :</td>
|
||||
<td>{{ $job->attempts ?: 0 }}</td>
|
||||
</tr>
|
||||
@if ($job->attempts)
|
||||
<tr>
|
||||
<td class="cap text-end">Next Attempt :</td>
|
||||
<td>{{ $job->available_at->diffForHumans(now(),$job->available_at->isFuture() ? \Carbon\CarbonInterface::DIFF_ABSOLUTE : \Carbon\CarbonInterface::DIFF_RELATIVE_TO_NOW) }}</td>
|
||||
</tr>
|
||||
<div class="offset-3 col-4 @if((old('pollmode') === "0") || is_null($o->pollmode))d-none @endif" id="heartbeat_option">
|
||||
@can('admin',$o)
|
||||
<div class="row p-0">
|
||||
<div class="offset-3 col-6">
|
||||
<label for="method" class="form-label">Heartbeat <i class="bi bi-info-circle" title="Attempt contact after last seen"></i></label>
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text"><i class="bi bi-hourglass-bottom"></i></span>
|
||||
<input type="text" class="form-control text-end @error('heartbeat') is-invalid @enderror" id="heartbeat" placeholder="Hours" name="heartbeat" value="{{ old('heartbeat',$o->heartbeat) }}">
|
||||
<span class="invalid-feedback" role="alert">
|
||||
@error('heartbeat')
|
||||
{{ $message }}
|
||||
@enderror
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endcan
|
||||
|
||||
@if (! is_null($o->pollmode))
|
||||
<div class="row">
|
||||
<div class="offset-3 col-9 bg-secondary rounded p-2 small">
|
||||
@if($job = $o->poll())
|
||||
<div class="row p-0">
|
||||
<div class="col-4 text-dark">
|
||||
@if($job->attempts)Last: @else Scheduled: @endif
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<strong class="highlight">{{ $job->created_at }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-4 text-dark">
|
||||
Attempts:
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<strong class="highlight">{{ $job->attempts ?: 0 }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if ($job->attempts)
|
||||
<div class="row">
|
||||
<div class="col-4 text-dark">
|
||||
Next:
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<strong class="highlight">{{ $job->available_at->diffForHumans(now(),$job->available_at->isFuture() ? \Carbon\CarbonInterface::DIFF_ABSOLUTE : \Carbon\CarbonInterface::DIFF_RELATIVE_TO_NOW) }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@else
|
||||
<div class="row p-0">
|
||||
<div class="col-4 text-dark">
|
||||
Last Poll:
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<strong class="highlight">{{ ($x=$o->logs->where('originate',TRUE)->last())?->created_at ?: 'Never' }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-4 text-dark">
|
||||
Method:
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<strong class="highlight">{{ $x?->sessiontype ? \App\Models\Mailer::findOrFail($x->sessiontype)->name : '-' }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if ($o->heartbeat)
|
||||
<div class="row">
|
||||
<div class="col-4 text-dark">
|
||||
Next Heartbeat:
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<strong class="highlight">{{ $x ? $x->created_at->addHours($o->heartbeat) : Carbon::now() }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@else
|
||||
<tr>
|
||||
<td class="cap text-end">Last Poll :</td>
|
||||
<td>{{ ($x=$o->logs->where('originate',TRUE)->last())?->created_at ?: 'Never' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cap text-end">Method :</td>
|
||||
<td>{{ $x?->sessiontype ?: '-' }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
<div class="row">
|
||||
<div class="col-4 text-dark">
|
||||
Status:
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<strong class="highlight">
|
||||
@if ($job) Queued
|
||||
@elseif ($o->autohold)Auto Hold
|
||||
@else
|
||||
@switch($o->pollmode)
|
||||
@case(TRUE) Crash @break;
|
||||
@case(FALSE) Normal @break;
|
||||
@default Hold
|
||||
@endswitch
|
||||
@endif
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<tr>
|
||||
<td class="cap text-end">Status :</td>
|
||||
<td>
|
||||
@if ($job) Queued
|
||||
@elseif ($o->autohold)Auto Hold
|
||||
@else
|
||||
@switch($o->pollmode)
|
||||
@case(TRUE) Crash @break;
|
||||
@case(FALSE) Normal @break;
|
||||
@default Hold
|
||||
@endswitch
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{--
|
||||
<div class="col-12">
|
||||
<table class="table monotable m-0 p-0 small noborder">
|
||||
<tbody xstyle="border-style:dotted;">
|
||||
|
||||
<tr>
|
||||
<td class="cap text-end">Status :</td>
|
||||
<td>
|
||||
@if ($job) Queued
|
||||
@elseif ($o->autohold)Auto Hold
|
||||
@else
|
||||
@switch($o->pollmode)
|
||||
@case(TRUE) Crash @break;
|
||||
@case(FALSE) Normal @break;
|
||||
@default Hold
|
||||
@endswitch
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
--}}
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -283,7 +359,6 @@
|
||||
<input type="text" class="form-control text-end @error('port') is-invalid @enderror" id="port" placeholder="Port" name="port" value="{{ old('port',$o->port) }}" @cannot($action,$o)readonly @endcannot>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -313,4 +388,21 @@
|
||||
<button type="submit" class="btn btn-success float-end" name="submit" value="create">Register</button>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section('page-scripts')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('#poll_normal').on('click',function() {
|
||||
$('#heartbeat_option').removeClass('d-none');
|
||||
})
|
||||
$('#poll_crash').on('click',function() {
|
||||
$('#heartbeat_option').removeClass('d-none');
|
||||
})
|
||||
$('#poll_hold').on('click',function() {
|
||||
$('#heartbeat_option').addClass('d-none');
|
||||
console.log('hold');
|
||||
})
|
||||
})
|
||||
</script>
|
||||
@append
|
Reference in New Issue
Block a user