Allow Database Hosts to have multiple Nodes (#767)

* WIP

* Update laravel and migrations

* WIP

* fix tests

* Update composer

* Fix transformer

* Fix filament pages

* WIP

* Update DatabaseHostTransformer

* fix: tests

* pint this files pls

* resolve merge better

* Update migration

* Update Migration, Again

* Update down migration

---------

Co-authored-by: Vehikl <go@vehikl.com>
This commit is contained in:
pelican-vehikl
2024-12-06 20:24:30 -05:00
committed by GitHub
parent 5b3ae995e6
commit 7e7f0be7df
14 changed files with 95 additions and 44 deletions

View File

@@ -52,7 +52,7 @@ class DatabaseManagementServiceTest extends IntegrationTestCase
public function testDatabaseCannotBeCreatedIfServerHasReachedLimit(): void
{
$server = $this->createServerModel(['database_limit' => 2]);
$host = DatabaseHost::factory()->create(['node_id' => $server->node_id]);
$host = DatabaseHost::factory()->recycle($server->node)->create();
Database::factory()->times(2)->create(['server_id' => $server->id, 'database_host_id' => $host->id]);
@@ -84,8 +84,8 @@ class DatabaseManagementServiceTest extends IntegrationTestCase
$server = $this->createServerModel();
$name = DatabaseManagementService::generateUniqueDatabaseName('something', $server->id);
$host = DatabaseHost::factory()->create(['node_id' => $server->node_id]);
$host2 = DatabaseHost::factory()->create(['node_id' => $server->node_id]);
$host = DatabaseHost::factory()->recycle($server->node)->create();
$host2 = DatabaseHost::factory()->recycle($server->node)->create();
Database::factory()->create([
'database' => $name,
'database_host_id' => $host->id,
@@ -117,7 +117,7 @@ class DatabaseManagementServiceTest extends IntegrationTestCase
$server = $this->createServerModel();
$name = DatabaseManagementService::generateUniqueDatabaseName('something', $server->id);
$host = DatabaseHost::factory()->create(['node_id' => $server->node_id]);
$host = DatabaseHost::factory()->recycle($server->node)->create();
$username = null;
$secondUsername = null;
@@ -154,7 +154,7 @@ class DatabaseManagementServiceTest extends IntegrationTestCase
$server = $this->createServerModel();
$name = DatabaseManagementService::generateUniqueDatabaseName('something', $server->id);
$host = DatabaseHost::factory()->create(['node_id' => $server->node_id]);
$host = DatabaseHost::factory()->recycle($server->node)->create();
$this->repository->expects('createDatabase')->with($name)->andThrows(new \BadMethodCallException());
$this->repository->expects('dropDatabase')->with($name);

View File

@@ -62,7 +62,7 @@ class DeployServerDatabaseServiceTest extends IntegrationTestCase
$server = $this->createServerModel();
$node = Node::factory()->create();
DatabaseHost::factory()->create(['node_id' => $node->id]);
DatabaseHost::factory()->recycle($node)->create();
config()->set('panel.client_features.databases.allow_random', false);
@@ -95,10 +95,7 @@ class DeployServerDatabaseServiceTest extends IntegrationTestCase
public function testDatabaseHostOnSameNodeIsPreferred(): void
{
$server = $this->createServerModel();
$node = Node::factory()->create();
DatabaseHost::factory()->create(['node_id' => $node->id]);
$host = DatabaseHost::factory()->create(['node_id' => $server->node_id]);
$host = DatabaseHost::factory()->recycle($server->node)->create();
$this->managementService->expects('create')->with($server, [
'database_host_id' => $host->id,
@@ -124,7 +121,7 @@ class DeployServerDatabaseServiceTest extends IntegrationTestCase
$server = $this->createServerModel();
$node = Node::factory()->create();
$host = DatabaseHost::factory()->create(['node_id' => $node->id]);
$host = DatabaseHost::factory()->recycle($node)->create();
$this->managementService->expects('create')->with($server, [
'database_host_id' => $host->id,