work work on hetzner integration

This commit is contained in:
Andras Bacsai
2025-10-09 16:54:13 +02:00
parent f85a4f04d9
commit bf5c08d071
16 changed files with 628 additions and 79 deletions
+36
View File
@@ -54,6 +54,11 @@ class ServerConnectionCheckJob implements ShouldBeEncrypted, ShouldQueue
return;
}
// Check Hetzner server status if applicable
if ($this->server->hetzner_server_id && $this->server->cloudProviderToken) {
$this->checkHetznerStatus();
}
// Temporarily disable mux if requested
if ($this->disableMux) {
$this->disableSshMux();
@@ -95,6 +100,37 @@ class ServerConnectionCheckJob implements ShouldBeEncrypted, ShouldQueue
}
}
private function checkHetznerStatus(): void
{
try {
$hetznerService = new \App\Services\HetznerService($this->server->cloudProviderToken->token);
$serverData = $hetznerService->getServer($this->server->hetzner_server_id);
$status = $serverData['status'] ?? null;
// Save status to database
$this->server->update(['hetzner_server_status' => $status]);
// If Hetzner reports server is off, mark as unreachable
if ($status === 'off') {
$this->server->settings->update([
'is_reachable' => false,
'is_usable' => false,
]);
Log::info('ServerConnectionCheck: Hetzner server is powered off', [
'server_id' => $this->server->id,
'server_name' => $this->server->name,
'hetzner_status' => $status,
]);
}
} catch (\Throwable $e) {
Log::debug('ServerConnectionCheck: Hetzner status check failed', [
'server_id' => $this->server->id,
'error' => $e->getMessage(),
]);
}
}
private function checkConnection(): bool
{
try {