mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-11-23 15:36:58 +00:00
3a45c2600b
Bug: T352113 Depends-On: Ie7c466012d8d5644b1398452e3077416ab0270c5 Change-Id: I752edd8daaebb91a4bd9a7797747ade96d537526
61 lines
1.7 KiB
PHP
61 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Extension\Notifications;
|
|
|
|
use MediaWiki\Installer\Task\Task;
|
|
use MediaWiki\Status\Status;
|
|
use Wikimedia\Rdbms\DatabaseDomain;
|
|
|
|
/**
|
|
* TODO: replace this with virtual domains
|
|
*
|
|
* This is a temporary hack to support WMF production wiki creation, with
|
|
* database creation in an external cluster. Core knows how to do this for
|
|
* virtual domains, but this extension is not yet using a virtual domain. (T348573)
|
|
*/
|
|
class InstallSchemaTask extends Task {
|
|
public function getName() {
|
|
return 'echo-schema';
|
|
}
|
|
|
|
public function getDescription() {
|
|
return 'Installing Echo tables';
|
|
}
|
|
|
|
public function getDependencies() {
|
|
return [ 'services', 'schema' ];
|
|
}
|
|
|
|
public function getAliases() {
|
|
// Group with extension tables so that things that depend on
|
|
// extension tables will have this
|
|
return 'extension-tables';
|
|
}
|
|
|
|
public function execute(): Status {
|
|
$cluster = $this->getConfigVar( 'EchoCluster' );
|
|
if ( !$cluster ) {
|
|
// This case is adequately handled by LoadExtensionSchemaUpdates
|
|
return Status::newGood();
|
|
}
|
|
|
|
// Get the load balancer
|
|
$lbFactory = $this->getServices()->getDBLoadBalancerFactory();
|
|
$databaseCreator = $this->getDatabaseCreator();
|
|
$domainId = $lbFactory->getLocalDomainID();
|
|
$database = DatabaseDomain::newFromId( $domainId )->getDatabase();
|
|
$echoLB = $lbFactory->getExternalLB( $cluster );
|
|
|
|
// Create database
|
|
if ( !$databaseCreator->existsInLoadBalancer( $echoLB, $database ) ) {
|
|
$databaseCreator->createInLoadBalancer( $echoLB, $database );
|
|
}
|
|
|
|
// Create tables
|
|
$dbw = $echoLB->getMaintenanceConnectionRef( DB_PRIMARY );
|
|
$dbw->setSchemaVars( $this->getContext()->getSchemaVars() );
|
|
return $this->applySourceFile( $dbw, 'tables-generated.sql' );
|
|
}
|
|
|
|
}
|