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

Side by Side Diff: run.py

Issue 29366987: Issue 3574 - Update run.py to recognize adblockplus::host records (Closed)
Patch Set: Created Dec. 7, 2016, 10:20 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # coding: utf-8 2 # coding: utf-8
3 3
4 import argparse 4 import argparse
5 import sys 5 import sys
6 import os 6 import os
7 import posixpath 7 import posixpath
8 import re 8 import re
9 import subprocess 9 import subprocess
10 import yaml 10 import yaml
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 child.stdout.close() 69 child.stdout.close()
70 child.wait() 70 child.wait()
71 elif options.remote is False: 71 elif options.remote is False:
72 dirname = os.path.dirname(sys.argv[0]) 72 dirname = os.path.dirname(sys.argv[0])
73 path_name = os.path.join(dirname, *path_canonical) 73 path_name = os.path.join(dirname, *path_canonical)
74 with open(path_name, 'rb') as handle: 74 with open(path_name, 'rb') as handle:
75 config = yaml.load(handle) 75 config = yaml.load(handle)
76 else: 76 else:
77 sys.exit('Please either specify a --remote host or use --local') 77 sys.exit('Please either specify a --remote host or use --local')
78 78
79 servers = config.get('servers', {}) 79 servers = config.get('adblockplus::hosts', {})
80 return servers 80 return servers
81 81
82 82
83 def resolveHostList(options): 83 def resolveHostList(options):
84 84
85 result = set() 85 result = set()
86 86
87 try: 87 try:
88 valid_hosts = getValidHosts(options) 88 valid_hosts = getValidHosts(options)
89 except Warning as error: 89 except Warning as error:
90 print >>sys.stderr, 'Warning: failed to determine valid hosts:', error 90 print >>sys.stderr, 'Warning: failed to determine valid hosts:', error
91 result.update(options.hosts) 91 result.update(options.hosts)
92 else: 92 else:
93 for name in options.hosts: 93 for name in options.hosts:
94 chunk = [ 94 chunk = [
95 value.get('dns', key) for (key, value) in valid_hosts.items() 95 value.get('fqdn', key) for (key, value) in valid_hosts.items()
96 96
97 if name == key 97 if name == key
98 or name == '*' 98 or name == '*'
99 or name == value.get('dns', None) 99 or name == value.get('fqdn', None)
100 or name in value.get('groups', ()) 100 or name in value.get('groups', ())
101 ] 101 ]
102 102
103 if len(chunk) == 0: 103 if len(chunk) == 0:
104 print >>sys.stderr, 'Warning: failed to recognize host or group' , name 104 print >>sys.stderr, 'Warning: failed to recognize host or group' , name
105 else: 105 else:
106 result.update(chunk) 106 result.update(chunk)
107 107
108 return result 108 return result
109 109
110 110
111 def runCommand(user, host, command, ignore_errors=False): 111 def runCommand(user, host, command, ignore_errors=False):
112 if not isinstance(command, list): 112 if not isinstance(command, list):
113 command = [command] 113 command = [command]
114 command = ['ssh'] + (['-l', user] if user else []) + [host] + command 114 command = ['ssh'] + (['-l', user] if user else []) + [host] + command
115 if ignore_errors: 115 if ignore_errors:
116 subprocess.call(command) 116 subprocess.call(command)
117 else: 117 else:
118 subprocess.check_call(command) 118 subprocess.check_call(command)
119 119
120 if __name__ == '__main__': 120 if __name__ == '__main__':
121 options = parseOptions(sys.argv[1:]) 121 options = parseOptions(sys.argv[1:])
122 selectedHosts = resolveHostList(options) 122 selectedHosts = resolveHostList(options)
123 if len(selectedHosts) == 0: 123 if len(selectedHosts) == 0:
124 print >>sys.stderr, 'No valid hosts or groups specified, nothing to do' 124 print >>sys.stderr, 'No valid hosts or groups specified, nothing to do'
125 sys.exit(0) 125 sys.exit(0)
126 for host in selectedHosts: 126 for host in selectedHosts:
127 print >>sys.stderr, 'Running on %s...' % host 127 print >>sys.stderr, 'Running on %s...' % host
128 runCommand(options.user, host, options.args, options.ignore_errors) 128 runCommand(options.user, host, options.args, options.ignore_errors)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld