creating networks wip

This commit is contained in:
2025-04-07 16:39:53 +01:00
parent 32d30e00aa
commit b2070e052d
11 changed files with 108 additions and 19 deletions

View File

@@ -5,11 +5,13 @@ namespace App\Services\ServerProviders;
use App\Data\ServerProviders\CreatedServer;
use App\Data\ServerProviders\Image;
use App\Data\ServerProviders\Location;
use App\Data\ServerProviders\Network;
use App\Data\ServerProviders\ServerType;
use App\Http\Integrations\Connectors\HetznerConnector;
use App\Http\Integrations\Requests\Hetzner\Images\GetImagesRequest;
use App\Http\Integrations\Requests\Hetzner\Locations\GetLocationsRequest;
use App\Http\Integrations\Requests\Hetzner\Servers\CreateServerRequest;
use App\Http\Integrations\Requests\Hetzner\Servers\GetNetworksRequest;
use App\Http\Integrations\Requests\Hetzner\ServerTypes\GetServerTypesRequest;
use App\Models\Provider;
use Exception;
@@ -107,4 +109,27 @@ class HetznerService extends ServerProviderService
);
})->where('osVersion', '!=', 'unknown')->values();
}
public function findNetwork(string $name): ?Network
{
$response = $this->connector->send(new GetNetworksRequest(
name: $name,
));
if ($response->status() !== 200) {
throw new Exception('Failed to fetch networks from Hetzner');
}
$network = collect($response->json('networks'))->where('name', $name)->first();
if ($network) {
return new Network(
id: $network['id'],
name: $network['name'],
ipRange: $network['ip_range'],
);
}
return null;
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Services\ServerProviders;
use App\Data\ServerProviders\CreatedServer;
use App\Data\ServerProviders\Network;
use Illuminate\Support\Collection;
use Saloon\Http\Connector;
@@ -22,4 +23,6 @@ abstract class ServerProviderService
abstract public function getLocations(): Collection;
abstract public function getImages(): Collection;
abstract public function findNetwork(string $name): ?Network;
}