This commit is contained in:
Saeed Vaziry
2024-03-24 09:56:34 +01:00
committed by GitHub
parent 884f18db63
commit 4d051330d6
1055 changed files with 14493 additions and 20278 deletions

View File

@ -2,7 +2,6 @@
namespace App\ServerProviders;
use App\Enums\OperatingSystem;
use App\Exceptions\CouldNotConnectToProvider;
use App\Facades\Notifier;
use App\Notifications\FailedToDeleteServerFromProvider;
@ -11,6 +10,7 @@
use Exception;
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Facades\Storage;
use Illuminate\Validation\Rule;
use Throwable;
class AWS extends AbstractProvider
@ -19,10 +19,13 @@ class AWS extends AbstractProvider
protected EC2InstanceConnectClient $ec2InstanceConnectClient;
public function createValidationRules(array $input): array
public function createRules(array $input): array
{
$rules = [
'os' => 'required|in:'.implode(',', OperatingSystem::getValues()),
'os' => [
'required',
Rule::in(config('core.operating_systems')),
],
];
// plans
$plans = [];

View File

@ -2,8 +2,8 @@
namespace App\ServerProviders;
use App\Contracts\ServerProvider;
use App\Models\Server;
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Facades\Storage;
abstract class AbstractProvider implements ServerProvider
@ -15,9 +15,9 @@ public function __construct(?Server $server = null)
$this->server = $server;
}
protected function generateKeyPair(): void
public function generateKeyPair(): void
{
/** @var \Illuminate\Filesystem\FilesystemAdapter $storageDisk */
/** @var FilesystemAdapter $storageDisk */
$storageDisk = Storage::disk(config('core.key_pairs_disk'));
generate_key_pair($storageDisk->path((string) $this->server->id));
}

View File

@ -9,7 +9,7 @@
class Custom extends AbstractProvider
{
public function createValidationRules(array $input): array
public function createRules(array $input): array
{
return [
'ip' => [

View File

@ -14,7 +14,7 @@ class DigitalOcean extends AbstractProvider
{
protected string $apiUrl = 'https://api.digitalocean.com/v2';
public function createValidationRules(array $input): array
public function createRules(array $input): array
{
$rules = [
'os' => 'required|in:'.implode(',', config('core.operating_systems')),

View File

@ -13,7 +13,7 @@ class Hetzner extends AbstractProvider
{
protected string $apiUrl = 'https://api.hetzner.cloud/v1';
public function createValidationRules(array $input): array
public function createRules(array $input): array
{
return [
'os' => 'required|in:'.implode(',', config('core.operating_systems')),

View File

@ -13,7 +13,7 @@ class Linode extends AbstractProvider
{
protected string $apiUrl = 'https://api.linode.com/v4';
public function createValidationRules($input): array
public function createRules($input): array
{
$rules = [
'os' => 'required|in:'.implode(',', config('core.operating_systems')),

View File

@ -0,0 +1,28 @@
<?php
namespace App\ServerProviders;
interface ServerProvider
{
public function createRules(array $input): array;
public function credentialValidationRules(array $input): array;
public function credentialData(array $input): array;
public function data(array $input): array;
public function connect(?array $credentials = null): bool;
public function plans(): array;
public function regions(): array;
public function generateKeyPair(): void;
public function create(): void;
public function isRunning(): bool;
public function delete(): void;
}

View File

@ -15,7 +15,7 @@ class Vultr extends AbstractProvider
{
protected string $apiUrl = 'https://api.vultr.com/v2';
public function createValidationRules($input): array
public function createRules($input): array
{
$rules = [
'os' => 'required|in:'.implode(',', config('core.operating_systems')),