Add Vultr cloud provider integration

This commit is contained in:
Cornelis Terblanche committed 2026-06-03 21:32:18 +02:00
1 parent 2833c68af9
commit 94abbe1590
33 files changed
+2978 -44

No files matched your search

@@ -0,0 +1,28 @@
<?php
namespace Database\Factories;
use App\Models\CloudProviderToken;
use App\Models\Team;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends Factory<CloudProviderToken>
*/
class CloudProviderTokenFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'team_id' => Team::factory(),
'provider' => 'hetzner',
'token' => 'test-cloud-provider-token',
'name' => fake()->words(3, true),
];
}
}
@@ -0,0 +1,44 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
if (! Schema::hasColumn('servers', 'vultr_instance_id')) {
Schema::table('servers', function (Blueprint $table) {
$table->string('vultr_instance_id')->nullable()->after('hetzner_server_status');
});
}
if (! Schema::hasColumn('servers', 'vultr_instance_status')) {
Schema::table('servers', function (Blueprint $table) {
$table->string('vultr_instance_status')->nullable()->after('vultr_instance_id');
});
}
}
/**
* Reverse the migrations.
*/
public function down(): void
{
if (Schema::hasColumn('servers', 'vultr_instance_status')) {
Schema::table('servers', function (Blueprint $table) {
$table->dropColumn('vultr_instance_status');
});
}
if (Schema::hasColumn('servers', 'vultr_instance_id')) {
Schema::table('servers', function (Blueprint $table) {
$table->dropColumn('vultr_instance_id');
});
}
}
};