From 5f13a86ac39f7f0536424da6a0d1acb4938d2b01 Mon Sep 17 00:00:00 2001 From: Perside Rosalie Date: Fri, 14 Nov 2025 11:42:25 +0100 Subject: [PATCH 01/17] Add endpoint for wiki host map --- .../Backend/MediawikiHostMapController.php | 37 +++++++++++++++++++ routes/backend.php | 1 + 2 files changed, 38 insertions(+) create mode 100644 app/Http/Controllers/Backend/MediawikiHostMapController.php diff --git a/app/Http/Controllers/Backend/MediawikiHostMapController.php b/app/Http/Controllers/Backend/MediawikiHostMapController.php new file mode 100644 index 000000000..278d9431c --- /dev/null +++ b/app/Http/Controllers/Backend/MediawikiHostMapController.php @@ -0,0 +1,37 @@ +query('domain'); + $version = Wiki::where('domain', $domain) + ->whereNull('deleted_at') + ->leftJoin('wiki_dbs', 'wiki_id', '=', 'wikis.id') + ->pluck('version') + ->first(); + + if (is_null($version)) { + abort(401); + } + $mapPath = ""; + if (!file_exists($mapPath)) { + throw new \Exception("MW host mapping file not found at {$mapPath}"); + } + $host = "something from $mapPath"; + + return response() + ->json([ + 'domain' => $domain, + 'version' => $version, + 'host' => $host + ]) + ->header('x-host', $host) + ->header('x-version', $version); + } +} diff --git a/routes/backend.php b/routes/backend.php index 82024eee0..42fa5b53f 100644 --- a/routes/backend.php +++ b/routes/backend.php @@ -18,6 +18,7 @@ function () { $router->group(['prefix' => 'ingress'], function () use ($router) { // GET $router->get('getWikiVersionForDomain', ['uses' => 'IngressController@getWikiVersionForDomain']); + $router->get('getWikiVersionToHostMapForDomain', ['uses' => 'MediawikiHostMapController@getWikiVersionToHostMapForDomain']); }); $router->group(['prefix' => 'wiki'], function () use ($router) { From 316b73ee2b4a240d1b4f46ffdc26c2cf9399b3bc Mon Sep 17 00:00:00 2001 From: Perside Rosalie Date: Fri, 14 Nov 2025 17:13:54 +0100 Subject: [PATCH 02/17] Add the map config to the controller --- .../Backend/MediawikiHostMapController.php | 21 +++++++++---------- .../getWikiVersionToHostMapForDomain.php | 8 +++++++ 2 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 tests/Routes/Ingress/getWikiVersionToHostMapForDomain.php diff --git a/app/Http/Controllers/Backend/MediawikiHostMapController.php b/app/Http/Controllers/Backend/MediawikiHostMapController.php index 278d9431c..71ff4b125 100644 --- a/app/Http/Controllers/Backend/MediawikiHostMapController.php +++ b/app/Http/Controllers/Backend/MediawikiHostMapController.php @@ -10,28 +10,27 @@ class MediawikiHostMapController extends Controller { public function getWikiVersionToHostMapForDomain(Request $request): \Illuminate\Http\JsonResponse { $domain = $request->query('domain'); - $version = Wiki::where('domain', $domain) + $wikiDbVersion = Wiki::where('domain', $domain) ->whereNull('deleted_at') ->leftJoin('wiki_dbs', 'wiki_id', '=', 'wikis.id') ->pluck('version') ->first(); - if (is_null($version)) { + if (is_null($wikiDbVersion)) { abort(401); } - $mapPath = ""; - if (!file_exists($mapPath)) { - throw new \Exception("MW host mapping file not found at {$mapPath}"); - } - $host = "something from $mapPath"; + $mwDbToHostMap = [ + 'mw1.39-wbs1' => '139-app', + 'mw1.43-wbs1' => '143-app' + ]; return response() ->json([ 'domain' => $domain, - 'version' => $version, - 'host' => $host + 'version' => $wikiDbVersion, + 'host' => $mwDbToHostMap[$wikiDbVersion], ]) - ->header('x-host', $host) - ->header('x-version', $version); + ->header('x-host', $mwDbToHostMap[$wikiDbVersion]) + ->header('x-version', $wikiDbVersion); } } diff --git a/tests/Routes/Ingress/getWikiVersionToHostMapForDomain.php b/tests/Routes/Ingress/getWikiVersionToHostMapForDomain.php new file mode 100644 index 000000000..1306eb0d2 --- /dev/null +++ b/tests/Routes/Ingress/getWikiVersionToHostMapForDomain.php @@ -0,0 +1,8 @@ + Date: Fri, 14 Nov 2025 18:08:51 +0100 Subject: [PATCH 03/17] add test --- .../getWikiVersionToHostMapForDomain.php | 8 ---- .../getWikiVersionToHostMapForDomainTest.php | 46 +++++++++++++++++++ 2 files changed, 46 insertions(+), 8 deletions(-) delete mode 100644 tests/Routes/Ingress/getWikiVersionToHostMapForDomain.php create mode 100644 tests/Routes/Ingress/getWikiVersionToHostMapForDomainTest.php diff --git a/tests/Routes/Ingress/getWikiVersionToHostMapForDomain.php b/tests/Routes/Ingress/getWikiVersionToHostMapForDomain.php deleted file mode 100644 index 1306eb0d2..000000000 --- a/tests/Routes/Ingress/getWikiVersionToHostMapForDomain.php +++ /dev/null @@ -1,8 +0,0 @@ -delete(); + parent::tearDown(); + } + + private function createWiki(string $domain, string $version) { + $wiki = Wiki::factory()->create(['domain' => $domain]); + WikiDb::create([ + 'name' => $domain, + 'user' => 'someUser', + 'password' => 'somePassword', + 'version' => $version, + 'prefix' => 'somePrefix', + 'wiki_id' => $wiki->id, + ]); + } + + public function testFoundVersionMap() { + $version = 'mw1.43-wbs1'; + $expectedHost = '143'; + $this->createWiki('found.wikibase.cloud', $version); + $this->createWiki('other.wikibase.cloud', 'otherVersion'); + $this->json('GET', $this->route . '?domain=found.wikibase.cloud') + ->assertStatus(200) + ->assertHeader('x-host', $expectedHost) + ->assertJson([ + 'host' => $expectedHost, + ]) + ->assertContent('1'); + } + +} From 46cea568112820043b31f63d5d9c21c9b13697d6 Mon Sep 17 00:00:00 2001 From: Perside Rosalie Date: Mon, 17 Nov 2025 10:21:39 +0100 Subject: [PATCH 04/17] move the configuration to /config --- .../Controllers/Backend/MediawikiHostMapController.php | 6 ++---- config/mediawiki-host.php | 7 +++++++ 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 config/mediawiki-host.php diff --git a/app/Http/Controllers/Backend/MediawikiHostMapController.php b/app/Http/Controllers/Backend/MediawikiHostMapController.php index 71ff4b125..f6f320309 100644 --- a/app/Http/Controllers/Backend/MediawikiHostMapController.php +++ b/app/Http/Controllers/Backend/MediawikiHostMapController.php @@ -9,6 +9,7 @@ class MediawikiHostMapController extends Controller { public function getWikiVersionToHostMapForDomain(Request $request): \Illuminate\Http\JsonResponse { + $domain = $request->query('domain'); $wikiDbVersion = Wiki::where('domain', $domain) ->whereNull('deleted_at') @@ -19,10 +20,7 @@ public function getWikiVersionToHostMapForDomain(Request $request): \Illuminate\ if (is_null($wikiDbVersion)) { abort(401); } - $mwDbToHostMap = [ - 'mw1.39-wbs1' => '139-app', - 'mw1.43-wbs1' => '143-app' - ]; + $mwDbToHostMap = require ('../../../../config/mediawiki-host.php'); return response() ->json([ diff --git a/config/mediawiki-host.php b/config/mediawiki-host.php new file mode 100644 index 000000000..3a1051cf2 --- /dev/null +++ b/config/mediawiki-host.php @@ -0,0 +1,7 @@ + '139', + 'mw1.43-wbs1' => '143' +]; From 4b4eb9c178fede0c3bff6534040a34c6649a7e97 Mon Sep 17 00:00:00 2001 From: Perside Rosalie Date: Mon, 17 Nov 2025 13:39:47 +0100 Subject: [PATCH 05/17] Use MediaWikiHOstResolver for mapping --- .../Backend/MediaWikiHostController.php | 40 +++++++++++++ .../Backend/MediawikiHostMapController.php | 34 ----------- app/Services/MediaWikiHostResolver.php | 10 ++++ config/mediawiki-host.php | 7 --- routes/backend.php | 2 +- .../Ingress/MediaWikiHostControllerTest.php | 58 +++++++++++++++++++ .../getWikiVersionToHostMapForDomainTest.php | 46 --------------- 7 files changed, 109 insertions(+), 88 deletions(-) create mode 100644 app/Http/Controllers/Backend/MediaWikiHostController.php delete mode 100644 app/Http/Controllers/Backend/MediawikiHostMapController.php delete mode 100644 config/mediawiki-host.php create mode 100644 tests/Routes/Ingress/MediaWikiHostControllerTest.php delete mode 100644 tests/Routes/Ingress/getWikiVersionToHostMapForDomainTest.php diff --git a/app/Http/Controllers/Backend/MediaWikiHostController.php b/app/Http/Controllers/Backend/MediaWikiHostController.php new file mode 100644 index 000000000..2d3079e5c --- /dev/null +++ b/app/Http/Controllers/Backend/MediaWikiHostController.php @@ -0,0 +1,40 @@ +query('domain'); + try { + $backendHost= $mediawikiHostResolver->getBackendHostForDomain($domain); + $webHost = $mediawikiHostResolver->getWebHostForDomain($domain); + $apiHost = $mediawikiHostResolver->getApiHostForDomain($domain); + } catch (UnknownWikiDomainException $e) { + return response()->json(['error' => 'Domain not found.'], 404 ); + } catch (UnknownDBVersionException $e) { + return response()->json(['error' => 'Unknown database version.'], 500 ); + } + + + + return response() + ->json([ + 'domain' => $domain, + 'backend-host' => $backendHost, + 'web-host' => $webHost , + 'api-host' => $apiHost, + ]) + ->header('x-backend-host', $backendHost) + ->header('x-web-host', $webHost) + ->header('x-api-host', $apiHost); + } +} diff --git a/app/Http/Controllers/Backend/MediawikiHostMapController.php b/app/Http/Controllers/Backend/MediawikiHostMapController.php deleted file mode 100644 index f6f320309..000000000 --- a/app/Http/Controllers/Backend/MediawikiHostMapController.php +++ /dev/null @@ -1,34 +0,0 @@ -query('domain'); - $wikiDbVersion = Wiki::where('domain', $domain) - ->whereNull('deleted_at') - ->leftJoin('wiki_dbs', 'wiki_id', '=', 'wikis.id') - ->pluck('version') - ->first(); - - if (is_null($wikiDbVersion)) { - abort(401); - } - $mwDbToHostMap = require ('../../../../config/mediawiki-host.php'); - - return response() - ->json([ - 'domain' => $domain, - 'version' => $wikiDbVersion, - 'host' => $mwDbToHostMap[$wikiDbVersion], - ]) - ->header('x-host', $mwDbToHostMap[$wikiDbVersion]) - ->header('x-version', $wikiDbVersion); - } -} diff --git a/app/Services/MediaWikiHostResolver.php b/app/Services/MediaWikiHostResolver.php index b100aeec0..078efd554 100644 --- a/app/Services/MediaWikiHostResolver.php +++ b/app/Services/MediaWikiHostResolver.php @@ -34,6 +34,16 @@ public function getBackendHostForDomain(string $domain): string { return sprintf('mediawiki-%s-app-backend.default.svc.cluster.local', $this->getMwVersionForDomain($domain)); } + public function getWebHostForDomain(string $domain): string { + // TODO: Move 'web.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_WEB_HOST_SUFFIX) for flexibility. + return sprintf('mediawiki-%s-app-web.default.svc.cluster.local', $this->getMwVersionForDomain($domain)); + } + + public function getApiHostForDomain(string $domain): string { + // TODO: Move 'api.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_API_HOST_SUFFIX) for flexibility. + return sprintf('mediawiki-%s-app-api.default.svc.cluster.local', $this->getMwVersionForDomain($domain)); + } + public function getMwVersionForDomain(string $domain): string { $wiki = Wiki::where('domain', $domain)->first(); diff --git a/config/mediawiki-host.php b/config/mediawiki-host.php deleted file mode 100644 index 3a1051cf2..000000000 --- a/config/mediawiki-host.php +++ /dev/null @@ -1,7 +0,0 @@ - '139', - 'mw1.43-wbs1' => '143' -]; diff --git a/routes/backend.php b/routes/backend.php index 42fa5b53f..64d7ebb64 100644 --- a/routes/backend.php +++ b/routes/backend.php @@ -18,7 +18,7 @@ function () { $router->group(['prefix' => 'ingress'], function () use ($router) { // GET $router->get('getWikiVersionForDomain', ['uses' => 'IngressController@getWikiVersionForDomain']); - $router->get('getWikiVersionToHostMapForDomain', ['uses' => 'MediawikiHostMapController@getWikiVersionToHostMapForDomain']); + $router->get('getWikiHostForDomain', ['uses' => 'MediaWikiHostController@getWikiHostForDomain']); }); $router->group(['prefix' => 'wiki'], function () use ($router) { diff --git a/tests/Routes/Ingress/MediaWikiHostControllerTest.php b/tests/Routes/Ingress/MediaWikiHostControllerTest.php new file mode 100644 index 000000000..2b07a9ddd --- /dev/null +++ b/tests/Routes/Ingress/MediaWikiHostControllerTest.php @@ -0,0 +1,58 @@ +create(['domain' => $domain]); + WikiDb::create([ + 'name' => $domain, + 'user' => 'someUser', + 'password' => 'somePassword', + 'version' => $version, + 'prefix' => 'somePrefix', + 'wiki_id' => $wiki->id, + ]); + } + + public function testDomainNotfound() { + $this->getJson('/backend/ingress/getWikiHostForDomain?domain=notfound.wikibase.cloud') + ->assertStatus(404); + } + + public function testDbVersionNotfound() { + $this->createWiki('noversion.wikibase.cloud', 'unknownVersion'); + $this->getJson('/backend/ingress/getWikiHostForDomain?domain=noversion.wikibase.cloud') + ->assertStatus(500); + } + + public function testFoundHost() { + $expectedHosts = [ + 'backend' => 'mediawiki-143-app-backend.default.svc.cluster.local', + 'web' => 'mediawiki-143-app-web.default.svc.cluster.local', + 'api' => 'mediawiki-143-app-api.default.svc.cluster.local', + ]; + $this->createWiki('found.wikibase.cloud', 'mw1.43-wbs1'); + $this->createWiki('other.wikibase.cloud', 'otherVersion'); + $this->getJson( '/backend/ingress/getWikiHostForDomain?domain=found.wikibase.cloud') + ->assertStatus(200) + ->assertHeader('x-backend-host', $expectedHosts['backend']) + ->assertHeader('x-web-host', $expectedHosts['web']) + ->assertHeader('x-api-host', $expectedHosts['api']) + ->assertJson([ + 'backend-host' => $expectedHosts['backend'], + 'web-host' => $expectedHosts['web'], + 'api-host' => $expectedHosts['api'], + 'domain' => 'found.wikibase.cloud' + ]); + } + +} diff --git a/tests/Routes/Ingress/getWikiVersionToHostMapForDomainTest.php b/tests/Routes/Ingress/getWikiVersionToHostMapForDomainTest.php deleted file mode 100644 index 4afcfc1ab..000000000 --- a/tests/Routes/Ingress/getWikiVersionToHostMapForDomainTest.php +++ /dev/null @@ -1,46 +0,0 @@ -delete(); - parent::tearDown(); - } - - private function createWiki(string $domain, string $version) { - $wiki = Wiki::factory()->create(['domain' => $domain]); - WikiDb::create([ - 'name' => $domain, - 'user' => 'someUser', - 'password' => 'somePassword', - 'version' => $version, - 'prefix' => 'somePrefix', - 'wiki_id' => $wiki->id, - ]); - } - - public function testFoundVersionMap() { - $version = 'mw1.43-wbs1'; - $expectedHost = '143'; - $this->createWiki('found.wikibase.cloud', $version); - $this->createWiki('other.wikibase.cloud', 'otherVersion'); - $this->json('GET', $this->route . '?domain=found.wikibase.cloud') - ->assertStatus(200) - ->assertHeader('x-host', $expectedHost) - ->assertJson([ - 'host' => $expectedHost, - ]) - ->assertContent('1'); - } - -} From 8ec672183c0f45702555f1420b85aa27fc391b5d Mon Sep 17 00:00:00 2001 From: Perside Rosalie Date: Mon, 17 Nov 2025 13:50:39 +0100 Subject: [PATCH 06/17] fix linting errors --- .../Controllers/Backend/MediaWikiHostController.php | 13 ++++++------- .../Routes/Ingress/MediaWikiHostControllerTest.php | 6 ++---- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/Backend/MediaWikiHostController.php b/app/Http/Controllers/Backend/MediaWikiHostController.php index 2d3079e5c..acb435974 100644 --- a/app/Http/Controllers/Backend/MediaWikiHostController.php +++ b/app/Http/Controllers/Backend/MediaWikiHostController.php @@ -10,27 +10,26 @@ class MediaWikiHostController extends Controller { - public function getWikiHostForDomain(Request $request): \Illuminate\Http\JsonResponse - { + public function getWikiHostForDomain(Request $request): \Illuminate\Http\JsonResponse { $mediawikiHostResolver = new MediaWikiHostResolver(); $domain = $request->query('domain'); try { - $backendHost= $mediawikiHostResolver->getBackendHostForDomain($domain); + $backendHost = $mediawikiHostResolver->getBackendHostForDomain($domain); $webHost = $mediawikiHostResolver->getWebHostForDomain($domain); $apiHost = $mediawikiHostResolver->getApiHostForDomain($domain); } catch (UnknownWikiDomainException $e) { - return response()->json(['error' => 'Domain not found.'], 404 ); + return response()->json(['error' => 'Domain not found.'], 404); } catch (UnknownDBVersionException $e) { - return response()->json(['error' => 'Unknown database version.'], 500 ); + return response()->json(['error' => 'Unknown database version.'], 500); } return response() ->json([ - 'domain' => $domain, + 'domain' => $domain, 'backend-host' => $backendHost, - 'web-host' => $webHost , + 'web-host' => $webHost, 'api-host' => $apiHost, ]) ->header('x-backend-host', $backendHost) diff --git a/tests/Routes/Ingress/MediaWikiHostControllerTest.php b/tests/Routes/Ingress/MediaWikiHostControllerTest.php index 2b07a9ddd..119bbddfb 100644 --- a/tests/Routes/Ingress/MediaWikiHostControllerTest.php +++ b/tests/Routes/Ingress/MediaWikiHostControllerTest.php @@ -8,7 +8,6 @@ use Tests\TestCase; class MediaWikiHostControllerTest extends TestCase { - use RefreshDatabase; private function createWiki(string $domain, string $version) { @@ -42,7 +41,7 @@ public function testFoundHost() { ]; $this->createWiki('found.wikibase.cloud', 'mw1.43-wbs1'); $this->createWiki('other.wikibase.cloud', 'otherVersion'); - $this->getJson( '/backend/ingress/getWikiHostForDomain?domain=found.wikibase.cloud') + $this->getJson('/backend/ingress/getWikiHostForDomain?domain=found.wikibase.cloud') ->assertStatus(200) ->assertHeader('x-backend-host', $expectedHosts['backend']) ->assertHeader('x-web-host', $expectedHosts['web']) @@ -51,8 +50,7 @@ public function testFoundHost() { 'backend-host' => $expectedHosts['backend'], 'web-host' => $expectedHosts['web'], 'api-host' => $expectedHosts['api'], - 'domain' => 'found.wikibase.cloud' + 'domain' => 'found.wikibase.cloud', ]); } - } From 5f58b90de6125e023e112847259b7ce7bd0c3112 Mon Sep 17 00:00:00 2001 From: Perside Rosalie Date: Mon, 17 Nov 2025 14:22:02 +0100 Subject: [PATCH 07/17] fix linting errors --- app/Http/Controllers/Backend/MediaWikiHostController.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Backend/MediaWikiHostController.php b/app/Http/Controllers/Backend/MediaWikiHostController.php index acb435974..342b1b3db 100644 --- a/app/Http/Controllers/Backend/MediaWikiHostController.php +++ b/app/Http/Controllers/Backend/MediaWikiHostController.php @@ -8,13 +8,12 @@ use App\Services\UnknownWikiDomainException; use Illuminate\Http\Request; - class MediaWikiHostController extends Controller { public function getWikiHostForDomain(Request $request): \Illuminate\Http\JsonResponse { - $mediawikiHostResolver = new MediaWikiHostResolver(); + $mediawikiHostResolver = new MediaWikiHostResolver; $domain = $request->query('domain'); try { - $backendHost = $mediawikiHostResolver->getBackendHostForDomain($domain); + $backendHost = $mediawikiHostResolver->getBackendHostForDomain($domain); $webHost = $mediawikiHostResolver->getWebHostForDomain($domain); $apiHost = $mediawikiHostResolver->getApiHostForDomain($domain); } catch (UnknownWikiDomainException $e) { @@ -23,8 +22,6 @@ public function getWikiHostForDomain(Request $request): \Illuminate\Http\JsonRes return response()->json(['error' => 'Unknown database version.'], 500); } - - return response() ->json([ 'domain' => $domain, From 0e57f16f071340bbe204274216150ea733fe5eaf Mon Sep 17 00:00:00 2001 From: Perside Rosalie Date: Mon, 17 Nov 2025 16:03:32 +0100 Subject: [PATCH 08/17] Change the endpoint path --- routes/backend.php | 3 ++- .../{Ingress => Backend}/MediaWikiHostControllerTest.php | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) rename tests/Routes/{Ingress => Backend}/MediaWikiHostControllerTest.php (84%) diff --git a/routes/backend.php b/routes/backend.php index 64d7ebb64..1a65b2897 100644 --- a/routes/backend.php +++ b/routes/backend.php @@ -18,9 +18,10 @@ function () { $router->group(['prefix' => 'ingress'], function () use ($router) { // GET $router->get('getWikiVersionForDomain', ['uses' => 'IngressController@getWikiVersionForDomain']); - $router->get('getWikiHostForDomain', ['uses' => 'MediaWikiHostController@getWikiHostForDomain']); }); + $router->get('getWikiHostForDomain', ['uses' => 'MediaWikiHostController@getWikiHostForDomain']); + $router->group(['prefix' => 'wiki'], function () use ($router) { $router->get('getWikiForDomain', ['uses' => 'WikiController@getWikiForDomain']); $router->patch('updateEntityImport', ['uses' => '\App\Http\Controllers\WikiEntityImportController@update']); diff --git a/tests/Routes/Ingress/MediaWikiHostControllerTest.php b/tests/Routes/Backend/MediaWikiHostControllerTest.php similarity index 84% rename from tests/Routes/Ingress/MediaWikiHostControllerTest.php rename to tests/Routes/Backend/MediaWikiHostControllerTest.php index 119bbddfb..6806dd1ac 100644 --- a/tests/Routes/Ingress/MediaWikiHostControllerTest.php +++ b/tests/Routes/Backend/MediaWikiHostControllerTest.php @@ -1,6 +1,6 @@ getJson('/backend/ingress/getWikiHostForDomain?domain=notfound.wikibase.cloud') + $this->getJson('/backend/getWikiHostForDomain?domain=notfound.wikibase.cloud') ->assertStatus(404); } public function testDbVersionNotfound() { $this->createWiki('noversion.wikibase.cloud', 'unknownVersion'); - $this->getJson('/backend/ingress/getWikiHostForDomain?domain=noversion.wikibase.cloud') + $this->getJson('/backend/getWikiHostForDomain?domain=noversion.wikibase.cloud') ->assertStatus(500); } @@ -41,7 +41,7 @@ public function testFoundHost() { ]; $this->createWiki('found.wikibase.cloud', 'mw1.43-wbs1'); $this->createWiki('other.wikibase.cloud', 'otherVersion'); - $this->getJson('/backend/ingress/getWikiHostForDomain?domain=found.wikibase.cloud') + $this->getJson('/backend/getWikiHostForDomain?domain=found.wikibase.cloud') ->assertStatus(200) ->assertHeader('x-backend-host', $expectedHosts['backend']) ->assertHeader('x-web-host', $expectedHosts['web']) From e2a540372872f98283ca732175861835f44bfe6e Mon Sep 17 00:00:00 2001 From: Perside Rosalie Date: Mon, 17 Nov 2025 16:11:52 +0100 Subject: [PATCH 09/17] remove space --- routes/backend.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/backend.php b/routes/backend.php index 1a65b2897..584702e05 100644 --- a/routes/backend.php +++ b/routes/backend.php @@ -20,7 +20,7 @@ function () { $router->get('getWikiVersionForDomain', ['uses' => 'IngressController@getWikiVersionForDomain']); }); - $router->get('getWikiHostForDomain', ['uses' => 'MediaWikiHostController@getWikiHostForDomain']); +$router->get('getWikiHostForDomain', ['uses' => 'MediaWikiHostController@getWikiHostForDomain']); $router->group(['prefix' => 'wiki'], function () use ($router) { $router->get('getWikiForDomain', ['uses' => 'WikiController@getWikiForDomain']); From b94d2d6f1fb41c5d2c65c34ea8810f2a79c38dc2 Mon Sep 17 00:00:00 2001 From: Perside Rosalie Date: Mon, 17 Nov 2025 18:06:11 +0100 Subject: [PATCH 10/17] Add alpha host --- app/Http/Controllers/Backend/MediaWikiHostController.php | 5 ++++- app/Services/MediaWikiHostResolver.php | 5 +++++ tests/Routes/Backend/MediaWikiHostControllerTest.php | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Backend/MediaWikiHostController.php b/app/Http/Controllers/Backend/MediaWikiHostController.php index 342b1b3db..890f5ed11 100644 --- a/app/Http/Controllers/Backend/MediaWikiHostController.php +++ b/app/Http/Controllers/Backend/MediaWikiHostController.php @@ -16,6 +16,7 @@ public function getWikiHostForDomain(Request $request): \Illuminate\Http\JsonRes $backendHost = $mediawikiHostResolver->getBackendHostForDomain($domain); $webHost = $mediawikiHostResolver->getWebHostForDomain($domain); $apiHost = $mediawikiHostResolver->getApiHostForDomain($domain); + $alphaHost = $mediawikiHostResolver->getAlphaHostForDomain($domain); } catch (UnknownWikiDomainException $e) { return response()->json(['error' => 'Domain not found.'], 404); } catch (UnknownDBVersionException $e) { @@ -28,9 +29,11 @@ public function getWikiHostForDomain(Request $request): \Illuminate\Http\JsonRes 'backend-host' => $backendHost, 'web-host' => $webHost, 'api-host' => $apiHost, + 'alpha-host' => $alphaHost, ]) ->header('x-backend-host', $backendHost) ->header('x-web-host', $webHost) - ->header('x-api-host', $apiHost); + ->header('x-api-host', $apiHost) + ->header('x-alpha-host', $alphaHost); } } diff --git a/app/Services/MediaWikiHostResolver.php b/app/Services/MediaWikiHostResolver.php index 078efd554..6f68f2eb3 100644 --- a/app/Services/MediaWikiHostResolver.php +++ b/app/Services/MediaWikiHostResolver.php @@ -44,6 +44,11 @@ public function getApiHostForDomain(string $domain): string { return sprintf('mediawiki-%s-app-api.default.svc.cluster.local', $this->getMwVersionForDomain($domain)); } + public function getAlphaHostForDomain(string $domain): string { + // TODO: Move 'alpha.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_ALPHA_HOST_SUFFIX) for flexibility. + return sprintf('mediawiki-%s-app-alpha.default.svc.cluster.local', $this->getMwVersionForDomain($domain)); + } + public function getMwVersionForDomain(string $domain): string { $wiki = Wiki::where('domain', $domain)->first(); diff --git a/tests/Routes/Backend/MediaWikiHostControllerTest.php b/tests/Routes/Backend/MediaWikiHostControllerTest.php index 6806dd1ac..d55745737 100644 --- a/tests/Routes/Backend/MediaWikiHostControllerTest.php +++ b/tests/Routes/Backend/MediaWikiHostControllerTest.php @@ -38,6 +38,7 @@ public function testFoundHost() { 'backend' => 'mediawiki-143-app-backend.default.svc.cluster.local', 'web' => 'mediawiki-143-app-web.default.svc.cluster.local', 'api' => 'mediawiki-143-app-api.default.svc.cluster.local', + 'alpha' => 'mediawiki-143-app-alpha.default.svc.cluster.local', ]; $this->createWiki('found.wikibase.cloud', 'mw1.43-wbs1'); $this->createWiki('other.wikibase.cloud', 'otherVersion'); @@ -46,10 +47,12 @@ public function testFoundHost() { ->assertHeader('x-backend-host', $expectedHosts['backend']) ->assertHeader('x-web-host', $expectedHosts['web']) ->assertHeader('x-api-host', $expectedHosts['api']) + ->assertHeader('x-alpha-host', $expectedHosts['alpha']) ->assertJson([ 'backend-host' => $expectedHosts['backend'], 'web-host' => $expectedHosts['web'], 'api-host' => $expectedHosts['api'], + 'alpha-host' => $expectedHosts['alpha'], 'domain' => 'found.wikibase.cloud', ]); } From 6a3ce63a9df3cc3c84f82a3c3dc28c097fc8b5eb Mon Sep 17 00:00:00 2001 From: Perside Rosalie Date: Tue, 18 Nov 2025 13:24:33 +0100 Subject: [PATCH 11/17] rename path to getWikiHostsForDomain and did some refactoring --- .../Backend/MediaWikiHostController.php | 39 ------------------- .../Backend/MediaWikiHostsController.php | 36 +++++++++++++++++ app/Services/MediaWikiHostResolver.php | 30 +++++++------- routes/backend.php | 2 +- ....php => MediaWikiHostsControllersTest.php} | 10 +++-- 5 files changed, 58 insertions(+), 59 deletions(-) delete mode 100644 app/Http/Controllers/Backend/MediaWikiHostController.php create mode 100644 app/Http/Controllers/Backend/MediaWikiHostsController.php rename tests/Routes/Backend/{MediaWikiHostControllerTest.php => MediaWikiHostsControllersTest.php} (85%) diff --git a/app/Http/Controllers/Backend/MediaWikiHostController.php b/app/Http/Controllers/Backend/MediaWikiHostController.php deleted file mode 100644 index 890f5ed11..000000000 --- a/app/Http/Controllers/Backend/MediaWikiHostController.php +++ /dev/null @@ -1,39 +0,0 @@ -query('domain'); - try { - $backendHost = $mediawikiHostResolver->getBackendHostForDomain($domain); - $webHost = $mediawikiHostResolver->getWebHostForDomain($domain); - $apiHost = $mediawikiHostResolver->getApiHostForDomain($domain); - $alphaHost = $mediawikiHostResolver->getAlphaHostForDomain($domain); - } catch (UnknownWikiDomainException $e) { - return response()->json(['error' => 'Domain not found.'], 404); - } catch (UnknownDBVersionException $e) { - return response()->json(['error' => 'Unknown database version.'], 500); - } - - return response() - ->json([ - 'domain' => $domain, - 'backend-host' => $backendHost, - 'web-host' => $webHost, - 'api-host' => $apiHost, - 'alpha-host' => $alphaHost, - ]) - ->header('x-backend-host', $backendHost) - ->header('x-web-host', $webHost) - ->header('x-api-host', $apiHost) - ->header('x-alpha-host', $alphaHost); - } -} diff --git a/app/Http/Controllers/Backend/MediaWikiHostsController.php b/app/Http/Controllers/Backend/MediaWikiHostsController.php new file mode 100644 index 000000000..569dc4876 --- /dev/null +++ b/app/Http/Controllers/Backend/MediaWikiHostsController.php @@ -0,0 +1,36 @@ +query('domain'); + try { + $hosts = $mediawikiHostResolver->getHostsForDomain($domain); + } catch (UnknownWikiDomainException $e) { + return response()->json(['error' => 'Domain not found.'], 404); + } catch (UnknownDBVersionException $e) { + return response()->json(['error' => 'Unknown database version.'], 500); + } + + return response() + ->json([ + 'domain' => $domain, + 'backend-host' => $hosts['backend'], + 'web-host' => $hosts['web'], + 'api-host' => $hosts['api'], + 'alpha-host' => $hosts['alpha'], + ]) + ->header('x-backend-host', $hosts['backend']) + ->header('x-web-host', $hosts['web']) + ->header('x-api-host', $hosts['api']) + ->header('x-alpha-host', $hosts['alpha']); + } +} diff --git a/app/Services/MediaWikiHostResolver.php b/app/Services/MediaWikiHostResolver.php index 6f68f2eb3..3f583fddc 100644 --- a/app/Services/MediaWikiHostResolver.php +++ b/app/Services/MediaWikiHostResolver.php @@ -29,26 +29,26 @@ class MediaWikiHostResolver { // return $this->getBackendHostForDomain($wiki->domain); // } + /** + * @throws UnknownDBVersionException + * @throws UnknownWikiDomainException + */ + public function getHostsForDomain(String $domain ): array { + $mwVersionForDomain = $this->getMwVersionForDomain($domain); + // TODO: Move host to an env variable (e.g. PLATFORM_MW_BACKEND_HOST_SUFFIX) for flexibility. + return [ + 'web' => sprintf('mediawiki-%s-app-web.default.svc.cluster.local', $mwVersionForDomain), + 'backend' => sprintf('mediawiki-%s-app-backend.default.svc.cluster.local', $mwVersionForDomain), + 'api' => sprintf('mediawiki-%s-app-api.default.svc.cluster.local', $mwVersionForDomain), + 'alpha' => sprintf('mediawiki-%s-app-alpha.default.svc.cluster.local', $mwVersionForDomain) + ]; + } + public function getBackendHostForDomain(string $domain): string { // TODO: Move 'backend.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_BACKEND_HOST_SUFFIX) for flexibility. return sprintf('mediawiki-%s-app-backend.default.svc.cluster.local', $this->getMwVersionForDomain($domain)); } - public function getWebHostForDomain(string $domain): string { - // TODO: Move 'web.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_WEB_HOST_SUFFIX) for flexibility. - return sprintf('mediawiki-%s-app-web.default.svc.cluster.local', $this->getMwVersionForDomain($domain)); - } - - public function getApiHostForDomain(string $domain): string { - // TODO: Move 'api.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_API_HOST_SUFFIX) for flexibility. - return sprintf('mediawiki-%s-app-api.default.svc.cluster.local', $this->getMwVersionForDomain($domain)); - } - - public function getAlphaHostForDomain(string $domain): string { - // TODO: Move 'alpha.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_ALPHA_HOST_SUFFIX) for flexibility. - return sprintf('mediawiki-%s-app-alpha.default.svc.cluster.local', $this->getMwVersionForDomain($domain)); - } - public function getMwVersionForDomain(string $domain): string { $wiki = Wiki::where('domain', $domain)->first(); diff --git a/routes/backend.php b/routes/backend.php index 584702e05..a8aae9412 100644 --- a/routes/backend.php +++ b/routes/backend.php @@ -20,7 +20,7 @@ function () { $router->get('getWikiVersionForDomain', ['uses' => 'IngressController@getWikiVersionForDomain']); }); -$router->get('getWikiHostForDomain', ['uses' => 'MediaWikiHostController@getWikiHostForDomain']); +$router->get('getWikiHostsForDomain', ['uses' => 'MediaWikiHostsController@getWikiHostsForDomain']); $router->group(['prefix' => 'wiki'], function () use ($router) { $router->get('getWikiForDomain', ['uses' => 'WikiController@getWikiForDomain']); diff --git a/tests/Routes/Backend/MediaWikiHostControllerTest.php b/tests/Routes/Backend/MediaWikiHostsControllersTest.php similarity index 85% rename from tests/Routes/Backend/MediaWikiHostControllerTest.php rename to tests/Routes/Backend/MediaWikiHostsControllersTest.php index d55745737..5928a5cdf 100644 --- a/tests/Routes/Backend/MediaWikiHostControllerTest.php +++ b/tests/Routes/Backend/MediaWikiHostsControllersTest.php @@ -7,9 +7,11 @@ use Illuminate\Foundation\Testing\RefreshDatabase; use Tests\TestCase; -class MediaWikiHostControllerTest extends TestCase { +class MediaWikiHostsControllersTest extends TestCase { use RefreshDatabase; + protected $route = '/backend/getWikiHostsForDomain'; + private function createWiki(string $domain, string $version) { $wiki = Wiki::factory()->create(['domain' => $domain]); WikiDb::create([ @@ -23,13 +25,13 @@ private function createWiki(string $domain, string $version) { } public function testDomainNotfound() { - $this->getJson('/backend/getWikiHostForDomain?domain=notfound.wikibase.cloud') + $this->getJson($this->route . '?domain=notfound.wikibase.cloud') ->assertStatus(404); } public function testDbVersionNotfound() { $this->createWiki('noversion.wikibase.cloud', 'unknownVersion'); - $this->getJson('/backend/getWikiHostForDomain?domain=noversion.wikibase.cloud') + $this->getJson($this->route . '?domain=noversion.wikibase.cloud') ->assertStatus(500); } @@ -42,7 +44,7 @@ public function testFoundHost() { ]; $this->createWiki('found.wikibase.cloud', 'mw1.43-wbs1'); $this->createWiki('other.wikibase.cloud', 'otherVersion'); - $this->getJson('/backend/getWikiHostForDomain?domain=found.wikibase.cloud') + $this->getJson($this->route . '?domain=found.wikibase.cloud') ->assertStatus(200) ->assertHeader('x-backend-host', $expectedHosts['backend']) ->assertHeader('x-web-host', $expectedHosts['web']) From 527282e05c93c5ac09059e408e6adaa17c9e8390 Mon Sep 17 00:00:00 2001 From: Perside Rosalie Date: Tue, 18 Nov 2025 13:32:43 +0100 Subject: [PATCH 12/17] fix linting --- app/Services/MediaWikiHostResolver.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Services/MediaWikiHostResolver.php b/app/Services/MediaWikiHostResolver.php index 3f583fddc..75f25b245 100644 --- a/app/Services/MediaWikiHostResolver.php +++ b/app/Services/MediaWikiHostResolver.php @@ -33,14 +33,15 @@ class MediaWikiHostResolver { * @throws UnknownDBVersionException * @throws UnknownWikiDomainException */ - public function getHostsForDomain(String $domain ): array { + public function getHostsForDomain(string $domain): array { $mwVersionForDomain = $this->getMwVersionForDomain($domain); + // TODO: Move host to an env variable (e.g. PLATFORM_MW_BACKEND_HOST_SUFFIX) for flexibility. return [ 'web' => sprintf('mediawiki-%s-app-web.default.svc.cluster.local', $mwVersionForDomain), 'backend' => sprintf('mediawiki-%s-app-backend.default.svc.cluster.local', $mwVersionForDomain), 'api' => sprintf('mediawiki-%s-app-api.default.svc.cluster.local', $mwVersionForDomain), - 'alpha' => sprintf('mediawiki-%s-app-alpha.default.svc.cluster.local', $mwVersionForDomain) + 'alpha' => sprintf('mediawiki-%s-app-alpha.default.svc.cluster.local', $mwVersionForDomain), ]; } From 7a90ab3c4ac60b11b30278166ffc9f66905cb4b8 Mon Sep 17 00:00:00 2001 From: Ollie Date: Tue, 18 Nov 2025 17:20:40 +0000 Subject: [PATCH 13/17] Fix MediaWikiHostsControllerTest name and namespace --- ...tsControllersTest.php => MediaWikiHostsControllerTest.php} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename tests/Routes/Backend/{MediaWikiHostsControllersTest.php => MediaWikiHostsControllerTest.php} (96%) diff --git a/tests/Routes/Backend/MediaWikiHostsControllersTest.php b/tests/Routes/Backend/MediaWikiHostsControllerTest.php similarity index 96% rename from tests/Routes/Backend/MediaWikiHostsControllersTest.php rename to tests/Routes/Backend/MediaWikiHostsControllerTest.php index 5928a5cdf..8912256d8 100644 --- a/tests/Routes/Backend/MediaWikiHostsControllersTest.php +++ b/tests/Routes/Backend/MediaWikiHostsControllerTest.php @@ -1,13 +1,13 @@ Date: Mon, 17 Nov 2025 16:46:07 +0000 Subject: [PATCH 14/17] Fix and refactor MediaWikiHostsControllerTest --- .../Backend/MediaWikiHostsControllerTest.php | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/tests/Routes/Backend/MediaWikiHostsControllerTest.php b/tests/Routes/Backend/MediaWikiHostsControllerTest.php index 8912256d8..03f65f953 100644 --- a/tests/Routes/Backend/MediaWikiHostsControllerTest.php +++ b/tests/Routes/Backend/MediaWikiHostsControllerTest.php @@ -25,37 +25,40 @@ private function createWiki(string $domain, string $version) { } public function testDomainNotfound() { - $this->getJson($this->route . '?domain=notfound.wikibase.cloud') + $this->getJson("$this->route?domain=notfound.wikibase.cloud") ->assertStatus(404); } public function testDbVersionNotfound() { - $this->createWiki('noversion.wikibase.cloud', 'unknownVersion'); - $this->getJson($this->route . '?domain=noversion.wikibase.cloud') + $this->createWiki('test.wikibase.cloud', 'unknownVersion'); + + $this->getJson("$this->route?domain=test.wikibase.cloud") ->assertStatus(500); } - public function testFoundHost() { + public function testSuccess() { $expectedHosts = [ 'backend' => 'mediawiki-143-app-backend.default.svc.cluster.local', 'web' => 'mediawiki-143-app-web.default.svc.cluster.local', 'api' => 'mediawiki-143-app-api.default.svc.cluster.local', 'alpha' => 'mediawiki-143-app-alpha.default.svc.cluster.local', ]; - $this->createWiki('found.wikibase.cloud', 'mw1.43-wbs1'); - $this->createWiki('other.wikibase.cloud', 'otherVersion'); - $this->getJson($this->route . '?domain=found.wikibase.cloud') + + $this->createWiki('test139.wikibase.cloud', 'mw1.39-wbs1'); + $this->createWiki('test143.wikibase.cloud', 'mw1.43-wbs1'); + + $this->getJson("$this->route?domain=test143.wikibase.cloud") ->assertStatus(200) ->assertHeader('x-backend-host', $expectedHosts['backend']) ->assertHeader('x-web-host', $expectedHosts['web']) ->assertHeader('x-api-host', $expectedHosts['api']) ->assertHeader('x-alpha-host', $expectedHosts['alpha']) ->assertJson([ + 'domain' => 'test143.wikibase.cloud', 'backend-host' => $expectedHosts['backend'], 'web-host' => $expectedHosts['web'], 'api-host' => $expectedHosts['api'], 'alpha-host' => $expectedHosts['alpha'], - 'domain' => 'found.wikibase.cloud', ]); } } From d0eda480649f53b3a7b40f649b834b88790e5480 Mon Sep 17 00:00:00 2001 From: Ollie Date: Tue, 18 Nov 2025 17:26:10 +0000 Subject: [PATCH 15/17] Reorder methods in MediaWikiHostsControllerTest --- .../Backend/MediaWikiHostsControllerTest.php | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/tests/Routes/Backend/MediaWikiHostsControllerTest.php b/tests/Routes/Backend/MediaWikiHostsControllerTest.php index 03f65f953..099553fa3 100644 --- a/tests/Routes/Backend/MediaWikiHostsControllerTest.php +++ b/tests/Routes/Backend/MediaWikiHostsControllerTest.php @@ -12,30 +12,6 @@ class MediaWikiHostsControllerTest extends TestCase { protected $route = '/backend/getWikiHostsForDomain'; - private function createWiki(string $domain, string $version) { - $wiki = Wiki::factory()->create(['domain' => $domain]); - WikiDb::create([ - 'name' => $domain, - 'user' => 'someUser', - 'password' => 'somePassword', - 'version' => $version, - 'prefix' => 'somePrefix', - 'wiki_id' => $wiki->id, - ]); - } - - public function testDomainNotfound() { - $this->getJson("$this->route?domain=notfound.wikibase.cloud") - ->assertStatus(404); - } - - public function testDbVersionNotfound() { - $this->createWiki('test.wikibase.cloud', 'unknownVersion'); - - $this->getJson("$this->route?domain=test.wikibase.cloud") - ->assertStatus(500); - } - public function testSuccess() { $expectedHosts = [ 'backend' => 'mediawiki-143-app-backend.default.svc.cluster.local', @@ -61,4 +37,28 @@ public function testSuccess() { 'alpha-host' => $expectedHosts['alpha'], ]); } + + public function testDomainNotfound() { + $this->getJson("$this->route?domain=notfound.wikibase.cloud") + ->assertStatus(404); + } + + public function testDbVersionNotfound() { + $this->createWiki('test.wikibase.cloud', 'unknownVersion'); + + $this->getJson("$this->route?domain=test.wikibase.cloud") + ->assertStatus(500); + } + + private function createWiki(string $domain, string $version) { + $wiki = Wiki::factory()->create(['domain' => $domain]); + WikiDb::create([ + 'name' => $domain, + 'user' => 'someUser', + 'password' => 'somePassword', + 'version' => $version, + 'prefix' => 'somePrefix', + 'wiki_id' => $wiki->id, + ]); + } } From 864792e0778afda4c781ccfeea1f52b3bbcab180 Mon Sep 17 00:00:00 2001 From: Ollie Date: Tue, 18 Nov 2025 10:47:23 +0000 Subject: [PATCH 16/17] Rename method in MediaWikiHostsControllerTest --- tests/Routes/Backend/MediaWikiHostsControllerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Routes/Backend/MediaWikiHostsControllerTest.php b/tests/Routes/Backend/MediaWikiHostsControllerTest.php index 099553fa3..7bba11c86 100644 --- a/tests/Routes/Backend/MediaWikiHostsControllerTest.php +++ b/tests/Routes/Backend/MediaWikiHostsControllerTest.php @@ -43,7 +43,7 @@ public function testDomainNotfound() { ->assertStatus(404); } - public function testDbVersionNotfound() { + public function testUnknownDbVersion() { $this->createWiki('test.wikibase.cloud', 'unknownVersion'); $this->getJson("$this->route?domain=test.wikibase.cloud") From 87b3475ab1a85435d6aabc7572baab02545806a6 Mon Sep 17 00:00:00 2001 From: Ollie Date: Tue, 18 Nov 2025 18:14:06 +0000 Subject: [PATCH 17/17] Update TODO comments in MediaWikiHostResolver --- app/Services/MediaWikiHostResolver.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Services/MediaWikiHostResolver.php b/app/Services/MediaWikiHostResolver.php index 75f25b245..d4cd4f47d 100644 --- a/app/Services/MediaWikiHostResolver.php +++ b/app/Services/MediaWikiHostResolver.php @@ -36,7 +36,7 @@ class MediaWikiHostResolver { public function getHostsForDomain(string $domain): array { $mwVersionForDomain = $this->getMwVersionForDomain($domain); - // TODO: Move host to an env variable (e.g. PLATFORM_MW_BACKEND_HOST_SUFFIX) for flexibility. + // TODO: Make hosts format configurable for flexibility return [ 'web' => sprintf('mediawiki-%s-app-web.default.svc.cluster.local', $mwVersionForDomain), 'backend' => sprintf('mediawiki-%s-app-backend.default.svc.cluster.local', $mwVersionForDomain), @@ -46,7 +46,7 @@ public function getHostsForDomain(string $domain): array { } public function getBackendHostForDomain(string $domain): string { - // TODO: Move 'backend.default.svc.cluster.local' to an env variable (e.g. PLATFORM_MW_BACKEND_HOST_SUFFIX) for flexibility. + // TODO: Make host format configurable for flexibility return sprintf('mediawiki-%s-app-backend.default.svc.cluster.local', $this->getMwVersionForDomain($domain)); }