Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: sitescripts/logs/bin/mergeSubscriptionStats.py

Issue 10942098: Make sure subprocess calls don`t ignore result codes indicating errors. Fix JS docs generation whil… (Closed)
Patch Set: Created July 4, 2013, 11:23 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 # coding: utf-8 1 # coding: utf-8
2 2
3 # This file is part of the Adblock Plus web scripts, 3 # This file is part of the Adblock Plus web scripts,
4 # Copyright (C) 2006-2013 Eyeo GmbH 4 # Copyright (C) 2006-2013 Eyeo GmbH
5 # 5 #
6 # Adblock Plus is free software: you can redistribute it and/or modify 6 # Adblock Plus is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License version 3 as 7 # it under the terms of the GNU General Public License version 3 as
8 # published by the Free Software Foundation. 8 # published by the Free Software Foundation.
9 # 9 #
10 # Adblock Plus is distributed in the hope that it will be useful, 10 # Adblock Plus is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details. 13 # GNU General Public License for more details.
14 # 14 #
15 # You should have received a copy of the GNU General Public License 15 # You should have received a copy of the GNU General Public License
16 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. 16 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
17 17
18 import os, re, subprocess, urllib 18 import os, re, subprocess, urllib
19 from sitescripts.utils import get_config, setupStderr 19 from sitescripts.utils import get_config, setupStderr
20 from ConfigParser import SafeConfigParser, NoOptionError 20 from ConfigParser import SafeConfigParser, NoOptionError
21 from StringIO import StringIO 21 from StringIO import StringIO
22 22
23 def readStatsFile(path): 23 def readStatsFile(path):
24 result = SafeConfigParser() 24 result = SafeConfigParser()
25 match = re.search(r'^ssh://(\w+)@([^/:]+)(?::(\d+))?', path) 25 match = re.search(r'^ssh://(\w+)@([^/:]+)(?::(\d+))?', path)
26 if match: 26 if match:
27 command = ['ssh', '-q', '-o' 'NumberOfPasswordPrompts 0', '-T', '-k', '-l', match.group(1), match.group(2)] 27 command = ['ssh', '-q', '-o' 'NumberOfPasswordPrompts 0', '-T', '-k', '-l', match.group(1), match.group(2)]
28 if match.group(3): 28 if match.group(3):
29 command[1:1] = ['-P', match.group(3)] 29 command[1:1] = ['-P', match.group(3)]
30 (data, dummy) = subprocess.Popen(command, stdout=subprocess.PIPE).communicat e() 30 data = subprocess.check_output(command)
31 result.readfp(StringIO(data)) 31 result.readfp(StringIO(data))
32 elif path.startswith('http://') or path.startswith('https://'): 32 elif path.startswith('http://') or path.startswith('https://'):
33 result.readfp(urllib.urlopen(path)) 33 result.readfp(urllib.urlopen(path))
34 elif os.path.exists(path): 34 elif os.path.exists(path):
35 result.read(path) 35 result.read(path)
36 return result 36 return result
37 37
38 def getStatsFiles(): 38 def getStatsFiles():
39 config = get_config() 39 config = get_config()
40 40
(...skipping 22 matching lines...) Expand all
63 increaseOption(section, '%s %s mirror %s' % (match.group(1), match.group (2), mirrorName), increase) 63 increaseOption(section, '%s %s mirror %s' % (match.group(1), match.group (2), mirrorName), increase)
64 64
65 if __name__ == '__main__': 65 if __name__ == '__main__':
66 setupStderr() 66 setupStderr()
67 67
68 result = readStatsFile(get_config().get('subscriptionStats', 'mainFile')) 68 result = readStatsFile(get_config().get('subscriptionStats', 'mainFile'))
69 for (mirrorName, statsFile) in getStatsFiles(): 69 for (mirrorName, statsFile) in getStatsFiles():
70 mergeStatsFile(mirrorName, result, readStatsFile(statsFile)) 70 mergeStatsFile(mirrorName, result, readStatsFile(statsFile))
71 file = open(get_config().get('subscriptionStats', 'mainFile'), 'wb') 71 file = open(get_config().get('subscriptionStats', 'mainFile'), 'wb')
72 result.write(file) 72 result.write(file)
OLDNEW

Powered by Google App Engine
This is Rietveld