Skip to content

Commit 5cd81fe

Browse files
committed
wip: server storage check
1 parent b00828d commit 5cd81fe

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

app/Console/Kernel.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use App\Jobs\PullTemplatesFromCDN;
1313
use App\Jobs\ScheduledTaskJob;
1414
use App\Jobs\ServerCheckJob;
15+
use App\Jobs\ServerStorageCheckJob;
1516
use App\Jobs\UpdateCoolifyJob;
1617
use App\Models\ScheduledDatabaseBackup;
1718
use App\Models\ScheduledTask;
@@ -115,6 +116,7 @@ private function check_resources($schedule)
115116
}
116117
foreach ($servers as $server) {
117118
$schedule->job(new ServerCheckJob($server))->everyMinute()->onOneServer();
119+
// $schedule->job(new ServerStorageCheckJob($server))->everyMinute()->onOneServer();
118120
$serverTimezone = $server->settings->server_timezone;
119121
if ($server->settings->force_docker_cleanup) {
120122
$schedule->job(new DockerCleanupJob($server))->cron($server->settings->docker_cleanup_frequency)->timezone($serverTimezone)->onOneServer();

app/Jobs/ServerStorageCheckJob.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
3+
namespace App\Jobs;
4+
5+
use App\Models\Server;
6+
use Illuminate\Bus\Queueable;
7+
use Illuminate\Contracts\Queue\ShouldBeEncrypted;
8+
use Illuminate\Contracts\Queue\ShouldQueue;
9+
use Illuminate\Foundation\Bus\Dispatchable;
10+
use Illuminate\Queue\InteractsWithQueue;
11+
use Illuminate\Queue\SerializesModels;
12+
13+
class ServerStorageCheckJob implements ShouldBeEncrypted, ShouldQueue
14+
{
15+
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
16+
17+
public $tries = 1;
18+
19+
public $timeout = 60;
20+
21+
public $containers;
22+
23+
public $applications;
24+
25+
public $databases;
26+
27+
public $services;
28+
29+
public $previews;
30+
31+
public function backoff(): int
32+
{
33+
return isDev() ? 1 : 3;
34+
}
35+
36+
public function __construct(public Server $server) {}
37+
38+
public function handle()
39+
{
40+
try {
41+
if (! $this->server->isFunctional()) {
42+
ray('Server is not ready.');
43+
44+
return 'Server is not ready.';
45+
}
46+
$team = $this->server->team;
47+
$percentage = $this->server->storageCheck();
48+
if ($percentage > 1) {
49+
ray('Server storage is at '.$percentage.'%');
50+
}
51+
52+
} catch (\Throwable $e) {
53+
ray($e->getMessage());
54+
55+
return handleError($e);
56+
}
57+
58+
}
59+
}

app/Models/Server.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,4 +1212,13 @@ public function updateWithPrivateKey(array $data, ?PrivateKey $privateKey = null
12121212

12131213
return $this;
12141214
}
1215+
1216+
public function storageCheck(): ?string
1217+
{
1218+
$commands = [
1219+
'df / --output=pcent | tr -cd 0-9',
1220+
];
1221+
1222+
return instant_remote_process($commands, $this, false);
1223+
}
12151224
}

0 commit comments

Comments
 (0)