mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-11-23 15:36:58 +00:00
Move addWiki.php special case to an installer task
Bug: T352113 Depends-On: Ie7c466012d8d5644b1398452e3077416ab0270c5 Change-Id: I752edd8daaebb91a4bd9a7797747ade96d537526
This commit is contained in:
parent
0a50bd16cd
commit
3a45c2600b
|
@ -1165,5 +1165,10 @@
|
||||||
],
|
],
|
||||||
"ConfigRegistry": {
|
"ConfigRegistry": {
|
||||||
"Echo": "GlobalVarConfig::newInstance"
|
"Echo": "GlobalVarConfig::newInstance"
|
||||||
}
|
},
|
||||||
|
"InstallerTasks": [
|
||||||
|
{
|
||||||
|
"class": "MediaWiki\\Extension\\Notifications\\InstallSchemaTask"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
60
includes/InstallSchemaTask.php
Normal file
60
includes/InstallSchemaTask.php
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
<?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' );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue