blob: 31287903f0a11abf37dc061ec9425ed0fb18243b [file] [log] [blame]
import json
import sys
import urllib2
def submit_commits(commits, dashboard_url, slave_name, slave_password, status_to_accept=['OK']):
try:
payload = json.dumps({
'slaveName': slave_name,
'slavePassword': slave_password,
'commits': commits,
})
request = urllib2.Request(dashboard_url + '/api/report-commits')
request.add_header('Content-Type', 'application/json')
request.add_header('Content-Length', len(payload))
output = urllib2.urlopen(request, payload).read()
try:
result = json.loads(output)
except Exception, error:
raise Exception(error, output)
if result.get('status') not in status_to_accept:
raise Exception(result)
return result
except Exception as error:
sys.exit('Failed to submit commits: %s' % str(error))
def text_content(element):
text = ''
for child in element.childNodes:
if child.nodeType == child.TEXT_NODE:
text += child.data
else:
text += text_content(child)
return text
HTTP_AUTH_HANDLERS = {
'basic': urllib2.HTTPBasicAuthHandler,
'digest': urllib2.HTTPDigestAuthHandler,
}
def setup_auth(server):
auth = server.get('auth')
if not auth:
return
password_manager = urllib2.HTTPPasswordMgr()
password_manager.add_password(realm=auth['realm'], uri=server['url'], user=auth['username'], passwd=auth['password'])
auth_handler = HTTP_AUTH_HANDLERS[auth['type']](password_manager)
urllib2.install_opener(urllib2.build_opener(auth_handler))
def load_server_config(json_path):
with open(json_path) as server_config_json:
server_config = json.load(server_config_json)
server = server_config['server']
server['url'] = server['scheme'] + '://' + server['host'] + ':' + str(server['port'])
setup_auth(server)
return server_config