diff -r 85578ba0aa08 -r be14ecca790f bldsystemtools/commonbldutils/GenResult/send_xml_to_diamonds.py --- a/bldsystemtools/commonbldutils/GenResult/send_xml_to_diamonds.py Fri Apr 16 16:10:01 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,178 +0,0 @@ -# Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# Script to send xml data to diamonds -# -# -command_help = """ -Send XML data from file to Diamonds. v.1.23 -Use: - send_xml_to_diamonds.py options - - Mandatory options: - -s Server address - -u Url - -f path of XML file - - Optional options: - -m Send only mail, without POST connection. Recommend only, - when direct POST connection is not available. - -o mail server. Not needed inside Nokia intranet. - -h help - - Examples: - Sending only by mail, without POST. (not recommended) - send_xml_to_diamonds.py -s diamonds.nmp.nokia.com -u /diamonds/builds/ -f c:\\build.xml -m buildtoolsautomation@nokia.com - - Sending a new build to release instance of Diamonds - send_xml_to_diamonds.py -s diamonds.nmp.nokia.com -u /diamonds/builds/ -f c:\\build.xml - - Updating test results to existing build - send_xml_to_diamonds.py -s diamonds.nmp.nokia.com -u /diamonds/builds/123/ -f c:\\test.xml - - Sending data for Relative Change in SW Asset metrics - send_xml_to_diamonds.py -s diamonds.nmp.nokia.com -u /diamonds/metrics/ -f c:\\relative.xml - - Sending data for Function Coverage - send_xml_to_diamonds.py -s diamonds.nmp.nokia.com -u /diamonds/tests/coverage/ -f c:\\coverage.xml - - Note: If you want to send XML to development version of Diamonds in testing purposes, use - address: trdeli02.nmp.nokia.com:9001 in the server address: - send_xml_to_diamonds.py -s trdeli02.nmp.nokia.com:9001 -u /diamonds/builds/ -f c:\\build.xml -""" - -from httplib import * -import os, sys, time, re - - -def send_email(subject, body, sender, receivers, encoding, mail_server): - """ - Create an email message as MIMEText instance. - """ - from email.Header import Header - from email.MIMEText import MIMEText - from email.Utils import parseaddr, formataddr - import smtplib - - msg = MIMEText(body, "plain", encoding) - msg["To"] = Header(u", ".join(receivers), encoding) - msg["Subject"] = Header(subject, encoding) - - smtp = smtplib.SMTP() - smtp.connect(mail_server) - smtp.sendmail(sender, receivers, msg.as_string()) - smtp.close() - -def get_username(): - platform = sys.platform - if platform == "win32": - return os.getenv("USERNAME") - else: - return os.getlogin() - -def get_mail_subject(sender, server, url): - return "[DIAMONDS_DATA] %s>>>%s>>>%s" % (sender, server, url) - -def get_response_message(response): - return "Response status:%s \ - \nResponse reason:%s\n" \ - % (response.status, response.reason) - -def get_process_time(total_time): - if total_time<=60: - return "%s seconds" % round(total_time, 1) - else: - return "%s minutes and %s seconds" % (int(total_time/60), round((total_time%60), 1)) - -def main(): - start_time = time.time() - server_valid = False - url_valid = False - sfile_valid = False - mail_address = None - mail_server_address = "smtp.nokia.com" - _ = sys.argv.pop(0) - - while sys.argv: - parameter = sys.argv.pop(0) - if re.search('^-', parameter): - if parameter == '-s': - server = sys.argv.pop(0) - server_valid = True - elif parameter == '-u': - url = sys.argv.pop(0) - url_valid = True - elif parameter == '-f': - source_file = sys.argv.pop(0) - sfile_valid = True - try: - xml = open(source_file).read() - except: - sys.exit("Can not open the file %s" % source_file) - elif parameter == '-m': - mail_address = sys.argv.pop(0) - elif parameter == '-o': - mail_server_address = sys.argv.pop(0) - elif parameter == '-h': - sys.exit("HELP:\n %s" % (command_help)) - else: - sys.exit("Incorrect parameter! %s" % (parameter) + command_help ) - else: - sys.exit("Incorrect parameter! %s" % (parameter) + command_help) - if not server_valid or not url_valid or not sfile_valid: - sys.exit("Too few parameters: Use -h for help") - - diamonds_mail_box = "diamonds@diamonds.nmp.nokia.com" - import_failed_message = "XML was not sent successfully to Diamonds via REST interface!\n" - import_succeed_message = "XML was sent successfully to Diamonds via REST interface.\n" - mail_sent_message = "XML was sent to Diamonds by mail. Scheduled script will try to import it to Diamonds. If you can not see data soon in Diamonds, please contact to Diamonds developers.\n" - - if not mail_address: - connection = HTTPConnection(server) - - try: - connection.request("POST", url, xml) - except: - print "Can not connect to the server %s\n" % server - sender = get_username() - #send_email(get_mail_subject(sender, server, url), xml, sender, [diamonds_mail_box], "latin-1", mail_server_address) - sys.exit(mail_sent_message) - - response = connection.getresponse() - - # More info about httplib - # http://docs.python.org/lib/module-httplib.html - if response.status == 200: - print import_succeed_message - print get_response_message(response) - print "Server response:%s\n" % response.read() - else: - print import_failed_message - print get_response_message(response) - sender = get_username() - #send_email(get_mail_subject(sender, server, url), xml, sender, [diamonds_mail_box], "latin-1", mail_server_address) - print mail_sent_message - - connection.close() - - else: - print 'Sending only mail' - sender = get_username() - #send_email(get_mail_subject(sender, server, url), xml, sender, [mail_address], "latin-1", mail_server_address) - - print "------------------------" - print "Processed in %s" % get_process_time(time.time()-start_time) - print "------------------------" - -if __name__ == "__main__": - main()