1
0
Fork 0
mirror of https://gitlab.wikimedia.org/ladsgroup/Phabricator-maintenance-bot synced 2024-11-08 13:12:38 +01:00

new_wikis_handler: Simplify DNS checkbox's logic

Instead of determining where the change should be made,
let's try to resolve. This will catch "extremely special"
wikis like T256545, but also (rare) cases "patch merged, but DNS
fails for whatever reason".
This commit is contained in:
Martin Urbanec 2020-07-10 20:44:29 +00:00
parent 26eb484799
commit 8fb88d5eda

View file

@ -1,6 +1,7 @@
import base64 import base64
import json import json
import re import re
import socket
import requests import requests
@ -22,18 +23,12 @@ def get_file_from_gerrit(path):
return base64.b64decode(requests.get(url).text).decode('utf-8') return base64.b64decode(requests.get(url).text).decode('utf-8')
def handle_non_special_wikis(parts, language_code): def hostname_resolves(hostname):
if language_code != parts[0]: try:
return socket.gethostbyname(hostname)
dns_file = get_file_from_gerrit('operations/dns/+/master/templates/helpers/langlist.tmpl') except socket.error:
return f"'{language_code}'" in dns_file return False
return True
def handle_special_wiki_dns(parts):
dns_file = get_file_from_gerrit('operations/dns/+/master/templates/wikimedia.org')
name = parts[0]
return f"\n{name}" in dns_file
def handle_special_wiki_apache(parts): def handle_special_wiki_apache(parts):
apache_file = get_file_from_gerrit('operations/puppet/+/production/modules/mediawiki/manifests/web/prod_sites.pp') apache_file = get_file_from_gerrit('operations/puppet/+/production/modules/mediawiki/manifests/web/prod_sites.pp')
@ -84,15 +79,10 @@ def hande_task(phid):
if len(parts) != 3 or parts[2] != 'org': if len(parts) != 3 or parts[2] != 'org':
return return
if parts[1] == 'wikimedia': special = parts[1] == 'wikimedia'
dns = handle_special_wiki_dns(parts) dns_url = gerrit_path + 'operations/dns/+/master/templates/wikimedia.org' if special else gerrit_path + 'operations/dns/+/master/templates/helpers/langlist.tmpl'
special = True
dns_url = gerrit_path + 'operations/dns/+/master/templates/wikimedia.org'
else: dns = hostname_resolves(url)
dns = handle_non_special_wikis(parts, language_code)
dns_url = gerrit_path + 'operations/dns/+/master/templates/helpers/langlist.tmpl'
special = False
if not dns: if not dns:
add_text(' [] [[{}|DNS]]'.format(dns_url)) add_text(' [] [[{}|DNS]]'.format(dns_url))
if special: if special: