rename to docker cleanup and and feedback implementation

This commit is contained in:
ayntk-ai 2024-08-18 23:16:59 +02:00
parent 5d32bd250b
commit 012c23586d
No known key found for this signature in database
6 changed files with 33 additions and 35 deletions

View File

@ -29,8 +29,6 @@ protected function schedule(Schedule $schedule): void
{
$this->all_servers = Server::all();
$settings = InstanceSettings::get();
$mainServer = Server::find(0);
$serverSettings = $mainServer->settings;
if (isDev()) {
// Instance Jobs
@ -44,10 +42,10 @@ protected function schedule(Schedule $schedule): void
} else {
// Instance Jobs
$schedule->command('horizon:snapshot')->everyFiveMinutes();
$schedule->command('cleanup:unreachable-servers')->cron($serverSettings->server_cleanup_frequency)->onOneServer();
$schedule->command('cleanup:unreachable-servers')->daily()->onOneServer();
$schedule->job(new PullCoolifyImageJob)->cron($settings->update_check_frequency)->onOneServer();
$schedule->job(new PullTemplatesFromCDN)->cron($settings->update_check_frequency)->onOneServer();
$schedule->job(new CleanupInstanceStuffsJob)->cron($serverSettings->server_cleanup_frequency)->onOneServer();
$schedule->job(new CleanupInstanceStuffsJob)->everyTwoMinutes()->onOneServer();
$this->schedule_updates($schedule);
// Server Jobs
@ -57,7 +55,7 @@ protected function schedule(Schedule $schedule): void
$this->check_scheduled_tasks($schedule);
$schedule->command('cleanup:database --yes')->daily();
$schedule->command('uploads:clear')->cron($serverSettings->server_cleanup_frequency)->onOneServer();
$schedule->command('uploads:clear')->everyTwoMinutes();
}
}
@ -95,9 +93,6 @@ private function schedule_updates($schedule)
private function check_resources($schedule)
{
$mainServer = Server::find(0);
$serverSettings = $mainServer->settings;
if (isCloud()) {
$servers = $this->all_servers->whereNotNull('team.subscription')->where('team.subscription.stripe_trial_already_ended', false)->where('ip', '!=', '1.2.3.4');
$own = Team::find(0)->servers;
@ -107,7 +102,11 @@ private function check_resources($schedule)
}
foreach ($servers as $server) {
$schedule->job(new ServerCheckJob($server))->everyMinute()->onOneServer();
$schedule->job(new DockerCleanupJob($server))->cron($serverSettings->server_cleanup_frequency)->onOneServer();
//The lines below need to be added as soon as timzone is merged!!
//$serverTimezone = $server->settings->server_timezone;
//$schedule->job(new DockerCleanupJob($server))->cron($server->settings->docker_cleanup_frequency)->timezone($serverTimezone)->onOneServer();
$schedule->job(new DockerCleanupJob($server))->cron($server->settings->docker_cleanup_frequency)->onOneServer();
}
}

View File

@ -29,7 +29,7 @@ public function handle(): void
if (! $this->server->isFunctional()) {
return;
}
if ($this->server->settings->is_force_cleanup_enabled) {
if ($this->server->settings->force_docker_cleanup) {
Log::info('DockerCleanupJob force cleanup on ' . $this->server->name);
CleanupDocker::run(server: $this->server, force: true);
@ -60,4 +60,4 @@ public function handle(): void
throw $e;
}
}
}
}

View File

@ -45,9 +45,9 @@ class Form extends Component
'server.settings.metrics_history_days' => 'required|integer|min:1',
'wildcard_domain' => 'nullable|url',
'server.settings.is_server_api_enabled' => 'required|boolean',
'server.settings.force_server_cleanup' => 'required|boolean',
'server.settings.server_cleanup_frequency' => 'required_if:server.settings.force_server_cleanup,true|string',
'server.settings.server_cleanup_threshold' => 'required_if:server.settings.force_server_cleanup,false|integer|min:1|max:100',
'server.settings.force_docker_cleanup' => 'required|boolean',
'server.settings.docker_cleanup_frequency' => 'required_if:server.settings.force_docker_cleanup,true|string',
'server.settings.docker_cleanup_threshold' => 'required_if:server.settings.force_docker_cleanup,false|integer|min:1|max:100',
];
protected $validationAttributes = [
@ -73,17 +73,17 @@ class Form extends Component
public function mount()
{
$this->wildcard_domain = $this->server->settings->wildcard_domain;
$this->server->settings->server_cleanup_threshold = $this->server->settings->server_cleanup_threshold;
$this->server->settings->server_cleanup_frequency = $this->server->settings->server_cleanup_frequency;
$this->server->settings->docker_cleanup_threshold = $this->server->settings->docker_cleanup_threshold;
$this->server->settings->docker_cleanup_frequency = $this->server->settings->docker_cleanup_frequency;
}
public function updated($field)
{
if ($field === 'server.settings.server_cleanup_frequency') {
$frequency = $this->server->settings->server_cleanup_frequency;
if ($field === 'server.settings.docker_cleanup_frequency') {
$frequency = $this->server->settings->docker_cleanup_frequency;
if (empty($frequency) || !validate_cron_expression($frequency)) {
$this->dispatch('error', 'Invalid Cron / Human expression for Server Cleanup Frequency. Resetting to default 10 minutes.');
$this->server->settings->server_cleanup_frequency = '*/10 * * * *';
$this->dispatch('error', 'Invalid Cron / Human expression for Docker Cleanup Frequency. Resetting to default 10 minutes.');
$this->server->settings->docker_cleanup_frequency = '*/10 * * * *';
}
}
}

View File

@ -37,8 +37,8 @@
'metrics_history_days' => ['type' => 'integer'],
'metrics_refresh_rate_seconds' => ['type' => 'integer'],
'metrics_token' => ['type' => 'string'],
'server_cleanup_frequency' => ['type' => 'string'],
'server_cleanup_threshold' => ['type' => 'integer'],
'docker_cleanup_frequency' => ['type' => 'string'],
'docker_cleanup_threshold' => ['type' => 'integer'],
'server_id' => ['type' => 'integer'],
'wildcard_domain' => ['type' => 'string'],
'created_at' => ['type' => 'string'],
@ -50,8 +50,8 @@ class ServerSetting extends Model
protected $guarded = [];
protected $casts = [
'force_server_cleanup' => 'boolean',
'server_cleanup_threshold' => 'integer',
'force_docker_cleanup' => 'boolean',
'docker_cleanup_threshold' => 'integer',
];
public function server()

View File

@ -14,9 +14,9 @@ class AddServerCleanupFieldsToServerSettingsTable extends Migration
public function up()
{
Schema::table('server_settings', function (Blueprint $table) {
$table->boolean('force_server_cleanup')->default(false);
$table->string('server_cleanup_frequency')->default('*/10 * * * *');
$table->integer('server_cleanup_threshold')->default(80);
$table->boolean('force_docker_cleanup')->default(false);
$table->string('docker_cleanup_frequency')->default('*/10 * * * *');
$table->integer('docker_cleanup_threshold')->default(80);
// Remove old columns
@ -33,9 +33,9 @@ public function up()
public function down()
{
Schema::table('server_settings', function (Blueprint $table) {
$table->dropColumn('force_server_cleanup');
$table->dropColumn('server_cleanup_frequency');
$table->dropColumn('server_cleanup_threshold');
$table->dropColumn('force_docker_cleanup');
$table->dropColumn('docker_cleanup_frequency');
$table->dropColumn('docker_cleanup_threshold');
// Add back old columns

View File

@ -126,12 +126,11 @@
<div class="flex flex-col gap-2">
<div class="flex flex-col flex-wrap gap-2 sm:flex-nowrap">
<div class="w-64">
<x-forms.checkbox helper="Enable force Server Cleanup. This will cleanup build caches / unused images / other docker things, unreachebale servers and uploads" instantSave id="server.settings.force_server_cleanup" label="Force Server Cleanup" />
</div>
@if ($server->settings->force_server_cleanup)
<x-forms.input placeholder="*/10 * * * *" id="server.settings.server_cleanup_frequency" label="Server Cleanup Frequency" required helper="Cron expression for Server Cleanup.<br>You can use every_minute, hourly, daily, weekly, monthly, yearly.<br><br>Default is every 10 minutes." />
<x-forms.checkbox helper="Enable force Docker Cleanup. This will cleanup build caches / unused images / etc." instantSave id="server.settings.force_docker_cleanup" label="Force Docker Cleanup" /> </div>
@if ($server->settings->force_docker_cleanup)
<x-forms.input placeholder="*/10 * * * *" id="server.settings.docker_cleanup_frequency" label="Docker Cleanup Frequency" required helper="Cron expression for Docker Cleanup.<br>You can use every_minute, hourly, daily, weekly, monthly, yearly.<br><br>Default is every 10 minutes." />
@else
<x-forms.input id="server.settings.server_cleanup_threshold" label="Server cleanup threshold (%)" required helper="The Server cleanup tasks will run when the disk usage exceeds this threshold." />
<x-forms.input id="server.settings.docker_cleanup_threshold" label="Docker cleanup threshold (%)" required helper="The Docker cleanup tasks will run when the disk usage exceeds this threshold." />
@endif
</div>
<div class="flex flex-wrap gap-2 sm:flex-nowrap">