Volans has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/351296 )

Change subject: MediaWiki tasks: switch to use Conftool based config
......................................................................

MediaWiki tasks: switch to use Conftool based config

Bug: T163398
Change-Id: I06c7861ab6a08ea99e305745d7ab9d5bc49ea031
---
M switchdc/stages/t02_start_mediawiki_readonly.py
M switchdc/stages/t05_switch_datacenter.py
M switchdc/stages/t08_stop_mediawiki_readonly.py
3 files changed, 22 insertions(+), 62 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/switchdc 
refs/changes/96/351296/1

diff --git a/switchdc/stages/t02_start_mediawiki_readonly.py 
b/switchdc/stages/t02_start_mediawiki_readonly.py
index 900bddb..1e04240 100644
--- a/switchdc/stages/t02_start_mediawiki_readonly.py
+++ b/switchdc/stages/t02_start_mediawiki_readonly.py
@@ -1,36 +1,18 @@
 from datetime import datetime
 
-from switchdc import SwitchdcError
-from switchdc.dry_run import is_dry_run
 from switchdc.lib import mediawiki
 from switchdc.log import irc_logger, logger
 
-__title__ = 'Set MediaWiki in read-only mode in {dc_from} (db-{dc_from} config 
already merged and git pulled)'
+__title__ = 'Set MediaWiki in read-only mode in {dc_from}'
 
 
 def execute(dc_from, dc_to):
-    """Deploy the MediaWiki DB config for dc_from to set MediaWiki in 
read-only mode.
+    """Set MediaWiki config readonly to True in dc_from and verify it."""
+    message = 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes'
+    mediawiki.set_readonly(message, dc=dc_from)
 
-    Caution: the configuration must have already merged and git pullet in the 
deployment host.
-    """
-    message = 'Set MediaWiki in read-only mode in datacenter 
{dc_from}'.format(dc_from=dc_from)
-    filename = 'db-{dc_from}'.format(dc_from=dc_from)
-    expected = """'readOnlyBySection' => [
-\t's1'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-\t's2'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-\t'DEFAULT' => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes', # s3
-\t's4'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-\t's5'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-\t's6'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-\t's7'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-],"""
+    log_message = 'MediaWiki read-only period starts at: 
{now}'.format(now=datetime.utcnow())
+    logger.info(log_message)
+    irc_logger.info(log_message)
 
-    if not mediawiki.check_config_line(filename, expected):
-        log_message = 'MediaWiki read-only period starts at: 
{now}'.format(now=datetime.utcnow())
-        logger.info(log_message)
-        irc_logger.info(log_message)
-        mediawiki.scap_sync_config_file(filename, message)
-        if not mediawiki.check_config_line(filename, expected) and not 
is_dry_run():
-            logger.error('Read-only mode not changed in the MediaWiki config 
{filename}?'.format(
-                filename=filename))
-            raise SwitchdcError(1)
+    mediawiki.check_siteinfo('.query.general.readonly', attempts=5)
diff --git a/switchdc/stages/t05_switch_datacenter.py 
b/switchdc/stages/t05_switch_datacenter.py
index 306fd49..7f4a1e6 100644
--- a/switchdc/stages/t05_switch_datacenter.py
+++ b/switchdc/stages/t05_switch_datacenter.py
@@ -9,10 +9,10 @@
 
 
 def execute(dc_from, dc_to):
-    """Switched the MediaWiki master DC in etcd and in the MediaWiki code."""
-    discovery = Confctl('discovery')
+    """Switchig the MediaWiki master DC in etcd for both DNS discovery and 
MediaWiki config."""
     # 1: switch DNS discovery record for the new dc to on.
     # This will NOT trigger confd to change the DNS admin state as it will 
cause a validation error
+    discovery = Confctl('discovery')
     mw_records = '(appservers|api|imagescaler)-rw'
     discovery.update({'pooled': True}, dnsdisc=mw_records, name=dc_to)
     for obj in discovery.get(dnsdisc=mw_records, name=dc_to):
@@ -20,15 +20,10 @@
             logger.error('DNS discovery record {record} is not 
pooled'.format(record=obj.key))
             raise SwitchdcError(1)
 
-    # 2: Deploy the MediaWiki change already merged on the deployment server 
in pre-flight phase
-    filename = 'CommonSettings'
-    message = 'Switch MediaWiki active datacenter to 
{dc_to}'.format(dc_to=dc_to)
-    expected = "$wmfMasterDatacenter = '{dc_to}';".format(dc_to=dc_to)
-    if not mediawiki.check_config_line(filename, expected):
-        mediawiki.scap_sync_config_file(filename, message)
-        if not mediawiki.check_config_line(filename, expected) and not 
is_dry_run():
-            logger.error('Datacenter not changed in the MediaWiki config?')
-            raise SwitchdcError(1)
+    # 2: Switch the MediaWiki config master DC
+    mediawiki.set_master_datacenter(dc_to)
+    mediawiki.check_siteinfo('.query.general["wmf-config"].wmfMasterDatacenter 
== "{dc_to}"'.format(dc_to=dc_to),
+                             attempts=5)
 
     # 3: switch off the old dc in conftool so that DNS discovery will be fixed
     discovery.update({'pooled': False}, dnsdisc=mw_records, name=dc_from)
diff --git a/switchdc/stages/t08_stop_mediawiki_readonly.py 
b/switchdc/stages/t08_stop_mediawiki_readonly.py
index f4575a5..8d47f1b 100644
--- a/switchdc/stages/t08_stop_mediawiki_readonly.py
+++ b/switchdc/stages/t08_stop_mediawiki_readonly.py
@@ -1,36 +1,19 @@
 from datetime import datetime
 
-from switchdc import SwitchdcError
-from switchdc.dry_run import is_dry_run
 from switchdc.lib import mediawiki
 from switchdc.log import irc_logger, logger
 
-__title__ = 'Set MediaWiki in read-write mode in {dc_to} (db-{dc_to} config 
already merged and git pulled)'
+__title__ = 'Set MediaWiki in read-write mode in {dc_to}'
 
 
 def execute(dc_from, dc_to):
-    """Deploy the MediaWiki DB config for dc_to to set MediaWiki in read-write 
mode.
+    """Set MediaWiki config readonly to False in dc_to and verify it."""
+    mediawiki.set_readonly(False, dc=dc_to)
 
-    Caution: the configuration must have already merged and git pullet in the 
deployment host.
-    """
-    message = 'Set MediaWiki in read-write mode in datacenter 
{dc_to}'.format(dc_to=dc_to)
-    filename = 'db-{dc_to}'.format(dc_to=dc_to)
-    expected = """'readOnlyBySection' => [
-#\t's1'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-#\t's2'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-#\t'DEFAULT' => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes', # s3
-#\t's4'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-#\t's5'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-#\t's6'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-#\t's7'      => 'MediaWiki is in read-only mode for maintenance. Please try 
again in a few minutes',
-],"""
+    mediawiki.check_siteinfo('.query.general.readonly | not', dc=dc_to, 
attempts=5)
 
-    if not mediawiki.check_config_line(filename, expected):
-        mediawiki.scap_sync_config_file(filename, message)
-        if not mediawiki.check_config_line(filename, expected) and not 
is_dry_run():
-            logger.error('Read-only mode not changed in the MediaWiki config 
{filename}?'.format(filename=filename))
-            raise SwitchdcError(1)
+    log_message = 'MediaWiki read-only period ends at: 
{now}'.format(now=datetime.utcnow())
+    logger.info(log_message)
+    irc_logger.info(log_message)
 
-        log_message = 'MediaWiki read-only period ends at: 
{now}'.format(now=datetime.utcnow())
-        logger.info(log_message)
-        irc_logger.info(log_message)
+    mediawiki.check_siteinfo('.query.general.readonly', dc=dc_from, attempts=5)

-- 
To view, visit https://gerrit.wikimedia.org/r/351296
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I06c7861ab6a08ea99e305745d7ab9d5bc49ea031
Gerrit-PatchSet: 1
Gerrit-Project: operations/switchdc
Gerrit-Branch: master
Gerrit-Owner: Volans <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to