NetworkZone

This commit is contained in:
2025-05-22 14:51:54 +01:00
parent 7d03b81723
commit bfe0f8eabf
8 changed files with 48 additions and 13 deletions

View File

@@ -111,6 +111,7 @@ class HetznerService extends ServerProviderService
name: $location['name'],
country: $location['country'],
city: $location['city'],
networkZone: $location['network_zone'] ?? null,
);
})->values();
}
@@ -135,7 +136,7 @@ class HetznerService extends ServerProviderService
})->where('osVersion', '!=', 'unknown')->values();
}
public function findNetwork(string $name): ?Network
public function findNetwork(string $name, ?string $networkZone = null): ?Network
{
$response = $this->connector->send(new GetNetworksRequest(
name: $name,
@@ -152,16 +153,18 @@ class HetznerService extends ServerProviderService
id: $network['id'],
name: $network['name'],
ipRange: $network['ip_range'],
networkZone: $networkZone ?? 'global',
);
}
return null;
}
public function createNetwork(string $name): Network
public function createNetwork(string $name, ?string $networkZone = null): Network
{
$response = $this->connector->send(new CreateNetworkRequest(
name: $name,
networkZone: $networkZone,
));
if ($response->status() !== 201) {
@@ -169,6 +172,7 @@ class HetznerService extends ServerProviderService
'response' => $response->json(),
'status' => $response->status(),
'name' => $name,
'networkZone' => $networkZone,
]);
throw new Exception('Failed to create network on Hetzner');
}
@@ -177,6 +181,7 @@ class HetznerService extends ServerProviderService
id: $response->json('network.id'),
name: $response->json('network.name'),
ipRange: $response->json('network.ip_range'),
networkZone: $response->json('network.network_zone') ?? $networkZone ?? 'global',
);
}
}

View File

@@ -28,7 +28,7 @@ abstract class ServerProviderService
abstract public function getImages(): Collection;
abstract public function findNetwork(string $name): ?Network;
abstract public function findNetwork(string $name, ?string $networkZone = null): ?Network;
abstract public function createNetwork(string $name): Network;
abstract public function createNetwork(string $name, ?string $networkZone = null): Network;
}