feat(digitalocean): add droplet provisioning support

This commit is contained in:
Andras Bacsai
2026-07-08 10:42:58 +02:00
parent 5936874ffd
commit c303c34cfd
32 changed files with 2796 additions and 19 deletions
+24
View File
@@ -71,6 +71,10 @@ class ServerConnectionCheckJob implements ShouldBeEncrypted, ShouldQueue
$this->checkVultrStatus();
}
if ($this->server->digitalocean_droplet_id && $this->server->cloudProviderToken) {
$this->checkDigitalOceanStatus();
}
// Temporarily disable mux if requested
if ($this->disableMux) {
$this->disableSshMux();
@@ -204,6 +208,26 @@ class ServerConnectionCheckJob implements ShouldBeEncrypted, ShouldQueue
}
}
private function checkDigitalOceanStatus(): void
{
try {
$status = $this->server->refreshDigitalOceanState();
} catch (\Throwable $e) {
Log::debug('ServerConnectionCheck: DigitalOcean status check failed', [
'server_id' => $this->server->id,
'error' => $e->getMessage(),
]);
return;
}
$this->server->digitalocean_droplet_status = $status;
if (in_array($status, ['off', 'archive', 'deleted'], true)) {
throw new \Exception('DigitalOcean droplet is not running');
}
}
private function checkConnection(): bool
{
try {