usr/src/tools/onbld/Checks/DbLookups.py
author John Sonnenschein <John.Sonnenschein@Sun.COM>
Thu, 20 Nov 2008 11:38:28 -0800
changeset 8174 29be171fb93b
parent 8042 54a2500a85d8
child 9920 9a117fecafb3
permissions -rw-r--r--
6773896 hg pbchk throws exception when webrti disappears
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
     1
#! /usr/bin/python
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
     2
#
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
     3
# CDDL HEADER START
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
     4
#
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
     8
#
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    11
# See the License for the specific language governing permissions
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    12
# and limitations under the License.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    13
#
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    19
#
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    20
# CDDL HEADER END
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    21
#
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    22
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    23
#
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    24
# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    25
# Use is subject to license terms.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    26
#
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    27
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    28
#
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    29
# Various database lookup classes/methods, i.e.:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    30
#     * monaco
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    31
#     * bugs.opensolaris.org (b.o.o.)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    32
#     * opensolaris.org/cgi/arc.py (for ARC)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    33
#
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    34
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    35
import re
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    36
import urllib
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    37
import urllib2
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    38
import htmllib
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    39
import os
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    40
from socket import socket, AF_INET, SOCK_STREAM
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    41
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    42
from onbld.Checks import onSWAN
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    43
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    44
class BugException(Exception):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    45
	def __init__(self, data=''):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    46
		self.data = data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    47
		Exception.__init__(self, data)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    48
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    49
	def __str__(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    50
		return "Unknown error: %s" % self.data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    51
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    52
class NonExistentBug(BugException):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    53
	def __str__(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    54
		return "Bug %s does not exist" % self.data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    55
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    56
class BugDBException(Exception):
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    57
	def __init__(self, data=''):
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    58
		self.data = data
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    59
		Exception.__init__(self, data)
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    60
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    61
	def __str__(self):
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    62
		return "Unknown bug database: %s" % self.data
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    63
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    64
class BugDB(object):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    65
	"""Lookup change requests.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    66
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    67
	Object can be used on or off of SWAN, using either monaco or
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    68
	bugs.opensolaris.org as a database.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    69
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    70
	Usage:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    71
	bdb = BugDB()
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    72
	r = bdb.lookup("6455550")
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    73
	print r["6455550"]["synopsis"]
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    74
	r = bdb.lookup(["6455550", "6505625"])
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    75
	print r["6505625"]["synopsis"]
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    76
	"""
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    77
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    78
	def __init__(self, priority = ("bugster",), forceBoo = False):
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    79
		"""Create a BugDB object.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    80
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    81
		Keyword argument:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    82
		forceBoo: use b.o.o even from SWAN (default=False)
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    83
		priority: use bug databases in this order
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
    84
		"""
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    85
		self.__validBugDB = ["bugster"]
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    86
		self.__onSWAN = not forceBoo and onSWAN()
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    87
		for database in priority:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    88
			if database not in self.__validBugDB:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    89
				raise BugDBException, database
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    90
		self.__priority = priority
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    91
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    92
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    93
	def __boobug(self, cr):
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    94
		cr = str(cr)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    95
		url = "http://bugs.opensolaris.org/view_bug.do"
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    96
   		req = urllib2.Request(url, urllib.urlencode({"bug_id": cr}))
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    97
		results = {}
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    98
		try:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
    99
			data = urllib2.urlopen(req).readlines()
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   100
		except urllib2.HTTPError, e:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   101
			if e.code != 404:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   102
				print "ERROR: HTTP error at " + \
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   103
					req.get_full_url() + \
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   104
					" got error: " + str(e.code)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   105
				raise e
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   106
			else:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   107
				raise NonExistentBug
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   108
		except urllib2.URLError, e:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   109
			print "ERROR: could not connect to " + \
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   110
				req.get_full_url() + \
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   111
				' got error: "' + e.reason[1] + '"'
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   112
			raise e
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   113
		htmlParser = htmllib.HTMLParser(None)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   114
		metaHtmlRe = re.compile(r'^<meta name="([^"]+)" content="([^"]*)">$')
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   115
		for line in data:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   116
			m = metaHtmlRe.search(line)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   117
			if not m:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   118
				continue
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   119
			val = urllib.unquote(m.group(2))
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   120
			htmlParser.save_bgn()
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   121
			htmlParser.feed(val)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   122
			results[m.group(1)] = htmlParser.save_end()
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   123
		htmlParser.close()
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   124
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   125
		if "synopsis" not in results:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   126
			raise NonExistentBug(cr)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   127
					
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   128
		results["cr_number"] = cr
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   129
		results["sub_category"] = results.pop("subcategory")
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   130
		results["status"] = results.pop("state")
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   131
		results["date_submitted"] = results.pop("submit_date")
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   132
		
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   133
		return results
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   134
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   135
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   136
	def __monaco(self, crs):
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   137
		"""Return all info for requested change reports.
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   138
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   139
		Argument:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   140
		crs: list of change request ids
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   141
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   142
		Returns:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   143
		Dictionary, mapping CR=>dictionary, where the nested dictionary
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   144
		is a mapping of field=>value
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   145
		"""
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   146
		
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   147
		#
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   148
		# We request synopsis last, and split on only
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   149
		# the number of separators that we expect to
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   150
		# see such that a | in the synopsis doesn't
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   151
		# throw us out of whack.
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   152
		#
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   153
		monacoFields = [ "cr_number", "category", "sub_category",
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   154
			"area", "release", "build", "responsible_manager",
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   155
			"responsible_engineer", "priority", "status", "sub_status",
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   156
			"submitted_by", "date_submitted", "synopsis" ]
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   157
		cmd = []
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   158
		cmd.append("set What = cr." + ', cr.'.join(monacoFields))
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   159
		cmd.append("")
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   160
		cmd.append("set Which = cr.cr_number in (" + ','.join(crs) +")")
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   161
		cmd.append("")
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   162
		cmd.append("set FinalClauses = order by cr.cr_number")
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   163
		cmd.append("")
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   164
		cmd.append("doMeta genQuery cr")
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   165
		url = "http://hestia.sfbay.sun.com/cgi-bin/expert?format="
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   166
		url += "Pipe-delimited+text;Go=2;no_header=on;cmds="
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   167
		url += urllib.quote_plus("\n".join(cmd))
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   168
		results = {}
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   169
		try:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   170
			data = urllib2.urlopen(url).readlines()
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   171
		except urllib2.HTTPError, e:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   172
			print "ERROR: HTTP error at " + url + \
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   173
				" got error: " + str(e.code)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   174
			raise e
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   175
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   176
		except urllib2.URLError, e:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   177
			print "ERROR: could not connect to " + url + \
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   178
				' got error: "' + e.reason[1] + '"'
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   179
			raise e
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   180
		for line in data:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   181
			line = line.rstrip('\n')
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   182
			values = line.split('|', len(monacoFields) - 1)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   183
			v = 0
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   184
			cr = values[0]
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   185
			results[cr] = {}
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   186
			for field in monacoFields:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   187
				results[cr][field] = values[v]
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   188
				v += 1
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   189
		return results
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   190
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   191
	def lookup(self, crs):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   192
		"""Return all info for requested change reports.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   193
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   194
		Argument:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   195
		crs: one change request id (may be integer, string, or list),
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   196
	             or multiple change request ids (must be a list)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   197
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   198
		Returns:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   199
		Dictionary, mapping CR=>dictionary, where the nested dictionary
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   200
		is a mapping of field=>value
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   201
		"""
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   202
		results = {}
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   203
		if not isinstance(crs, list):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   204
			crs = [str(crs)]
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   205
		for database in self.__priority:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   206
			if database == "bugster":				
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   207
				if self.__onSWAN:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   208
					results.update(self.__monaco(crs))
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   209
				# else we're off-swan and querying via boo, which we can
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   210
				# only do one bug at a time
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   211
				else:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   212
					for cr in crs:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   213
						cr = str(cr)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   214
						try:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   215
							results[cr] = self.__boobug(cr)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   216
						except NonExistentBug:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   217
							continue
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   218
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   219
			# the CR has already been found by one bug database
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   220
			# so don't bother looking it up in the others
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   221
			for cr in crs:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   222
				if cr in results:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   223
					crs.remove(cr)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   224
		
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   225
		return results
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   226
####################################################################
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   227
def ARC(arclist):
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   228
	opts = {}
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   229
	url = "http://opensolaris.org/cgi/arc.py"
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   230
	opts["n"] = str(len(arclist))
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   231
	for i, arc in enumerate(arclist):
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   232
		arc, case = arc
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   233
		opts["arc" + str(i)] = arc
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   234
		opts["case" + str(i)] = case
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   235
	req = urllib2.Request(url, urllib.urlencode(opts))
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   236
	try:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   237
		data = urllib2.urlopen(req).readlines()
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   238
	except urllib2.HTTPError, e:
8174
29be171fb93b 6773896 hg pbchk throws exception when webrti disappears
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 8042
diff changeset
   239
		print "ERROR: HTTP error at " + req.get_full_url() + \
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   240
			" got error: " + str(e.code)
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   241
		raise e
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   242
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   243
	except urllib2.URLError, e:
8174
29be171fb93b 6773896 hg pbchk throws exception when webrti disappears
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 8042
diff changeset
   244
		print "ERROR: could not connect to " + req.get_full_url() + \
8042
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   245
			' got error: "' + e.reason[1] + '"'
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   246
		raise e
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   247
	ret = {}
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   248
	for line in data:
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   249
		oneline = line.rstrip('\n')
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   250
		fields = oneline.split('|')
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   251
		# check if each is valid ( fields[0]::validity )
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   252
		if fields[0] != "0":
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   253
			continue
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   254
		arc, case = fields[1].split(" ")
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   255
		ret[(arc, case)] = fields[2]
54a2500a85d8 6750617 un-MacGyver BugDB lookups
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7764
diff changeset
   256
	return ret
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   257
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   258
####################################################################
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   259
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   260
# Pointers to the webrti server hostname & port to use
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   261
# Using it directly is probably not *officially* supported, so we'll
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   262
# have a pointer to the official `webrticli` command line interface
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   263
# if using a direct socket connection fails for some reason, so we
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   264
# have a fallback
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   265
WEBRTI_HOST = 'webrti.sfbay.sun.com'
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   266
WEBRTI_PORT = 9188
7764
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   267
WEBRTICLI = '/net/onnv.sfbay.sun.com/export/onnv-gate/public/bin/webrticli'
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   268
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   269
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   270
class RtiException(Exception):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   271
	def __init__(self, data=''):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   272
		self.data = data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   273
		Exception.__init__(self, data)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   274
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   275
	def __str__(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   276
		return "Unknown error: %s" % self.data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   277
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   278
class RtiCallFailed(RtiException):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   279
	def __str__(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   280
		return "Unable to call webrti: %s" % self.data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   281
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   282
class RtiSystemProblem(RtiException):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   283
	def __str__(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   284
		return "RTI status cannot be determined: %s" % self.data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   285
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   286
class RtiIncorrectCR(RtiException):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   287
	def __str__(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   288
		return "Incorrect CR number specified: %s" % self.data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   289
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   290
class RtiNotFound(RtiException):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   291
	def __str__(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   292
		return "RTI not found: %s" % self.data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   293
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   294
class RtiNeedConsolidation(RtiException):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   295
	def __str__(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   296
		return "More than one consolidation has this CR: %s" % self.data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   297
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   298
class RtiBadGate(RtiException):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   299
	def __str__(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   300
		return "Incorrect gate name specified: %s" % self.data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   301
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   302
class RtiOffSwan(RtiException):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   303
	def __str__(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   304
		return "RTI status checks need SWAN access: %s" % self.data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   305
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   306
WEBRTI_ERRORS = {
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   307
	'1': RtiSystemProblem,
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   308
	'2': RtiIncorrectCR,
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   309
	'3': RtiNotFound,
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   310
	'4': RtiNeedConsolidation,
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   311
	'5': RtiBadGate,
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   312
}
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   313
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   314
# Our Rti object which we'll use to represent an Rti query
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   315
# It's really just a wrapper around the Rti connection, and attempts
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   316
# to establish a direct socket connection and query the webrti server
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   317
# directly (thus avoiding a system/fork/exec call).  If it fails, it
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   318
# falls back to the webrticli command line client.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   319
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   320
returnCodeRe = re.compile(r'.*RETURN_CODE=(\d+)')
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   321
class Rti:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   322
	"""Lookup an RTI.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   323
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   324
	Usage:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   325
	r = Rti("6640538")
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   326
	print r.rtiNumber();
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   327
	"""
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   328
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   329
	def __init__(self, cr, gate=None, consolidation=None):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   330
		"""Create an Rti object for the specified change request.
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   331
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   332
		Argument:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   333
		cr: change request id
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   334
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   335
		Keyword arguments, to limit scope of RTI search:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   336
		gate: path to gate workspace (default=None)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   337
		consolidation: consolidation name (default=None)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   338
		"""
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   339
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   340
		bufSz = 1024
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   341
		addr = (WEBRTI_HOST, WEBRTI_PORT)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   342
		# If the passed 'cr' was given as an int, then wrap it
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   343
		# into a string to make our life easier
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   344
		if isinstance(cr, int):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   345
			cr = str(cr)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   346
		self.__queryCr = cr
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   347
		self.__queryGate = gate
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   348
		self.__queryConsolidation = consolidation
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   349
7764
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   350
		self.__webRtiOutput = []
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   351
		self.__mainCR = []
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   352
		self.__rtiNumber = []
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   353
		self.__consolidation = []
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   354
		self.__project = []
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   355
		self.__status = []
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   356
		self.__rtiType = []
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   357
		try:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   358
			# try to use a direct connection to the
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   359
			# webrti server first
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   360
			sock = socket(AF_INET, SOCK_STREAM)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   361
			sock.connect(addr)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   362
			command = "WEBRTICLI/1.0\nRTIstatus\n%s\n" % cr
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   363
			if consolidation:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   364
				command += "-c\n%s\n" % consolidation
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   365
			if gate:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   366
				command += "-g\n%s\n" % gate
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   367
			command += "\n"
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   368
			sock.send(command)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   369
			dataList = []
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   370
			# keep receiving data from the socket until the
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   371
			# server closes the connection
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   372
			stillReceiving = True
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   373
			while stillReceiving:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   374
				dataPiece = sock.recv(bufSz)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   375
				if dataPiece:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   376
					dataList.append(dataPiece)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   377
				else:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   378
					stillReceiving = False
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   379
			# create the lines, skipping the first
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   380
			# ("WEBRTCLI/1.0\n")
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   381
			data = '\n'.join(''.join(dataList).split('\n')[1:])
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   382
		except:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   383
			if not onSWAN():
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   384
				raise RtiOffSwan(cr)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   385
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   386
			if not os.path.exists(WEBRTICLI):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   387
				raise RtiCallFailed('not found')
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   388
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   389
			# fallback to the "supported" webrticli interface
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   390
			command = WEBRTICLI
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   391
			if consolidation:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   392
				command += " -c " + consolidation
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   393
			if gate:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   394
				command += " -g " + gate
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   395
			command += " RTIstatus " + cr
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   396
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   397
			try:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   398
				cliPipe = os.popen(command)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   399
			except:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   400
				# we couldn't call the webrticli for some
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   401
				# reason, so return a failure
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   402
				raise RtiCallFailed('unknown')
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   403
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   404
			data = cliPipe.readline()
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   405
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   406
		# parse the data to see if we got a return code
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   407
		# if we did, then that's bad.  if we didn't,
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   408
		# then our call was successfully
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   409
		m = returnCodeRe.search(data)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   410
		if m:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   411
			# we got a return code, set it in our
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   412
			# object, set the webRtiOutput for debugging
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   413
			# or logging, and return a failure
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   414
			if m.group(1) in WEBRTI_ERRORS:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   415
				exc = WEBRTI_ERRORS[m.group(1)]
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   416
			else:
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   417
				exc = RtiException
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   418
			raise exc(data)
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   419
7764
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   420
		data = data.splitlines()
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   421
		# At this point, we should have valid data
7764
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   422
		for line in data:	
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   423
			line = line.rstrip('\r\n')
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   424
			self.__webRtiOutput.append(line) 
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   425
			fields = line.split(':')
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   426
			self.__mainCR.append(fields[0])
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   427
			self.__rtiNumber.append(fields[1])
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   428
			self.__consolidation.append(fields[2])
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   429
			self.__project.append(fields[3])
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   430
			self.__status.append(fields[4])
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   431
			self.__rtiType.append(fields[5])
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   432
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   433
	# accessors in case callers need the raw data
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   434
	def mainCR(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   435
		return self.__mainCR
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   436
	def rtiNumber(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   437
		return self.__rtiNumber
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   438
	def consolidation(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   439
		return self.__consolidation
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   440
	def project(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   441
		return self.__project
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   442
	def status(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   443
		return self.__status
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   444
	def rtiType(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   445
		return self.__rtiType
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   446
	def queryCr(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   447
		return self.__queryCr
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   448
	def queryGate(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   449
		return self.__queryGate
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   450
	def queryConsolidation(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   451
		return self.__queryConsolidation
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   452
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   453
	# in practice, most callers only care about the following
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   454
	def accepted(self):
7764
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   455
		for status in self.__status:
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   456
			if status != "S_ACCEPTED":
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   457
				return False
06fde484fcce 6752197 rti check logic could be enhanced to deal with multiple returns
John Sonnenschein <John.Sonnenschein@Sun.COM>
parents: 7711
diff changeset
   458
		return True
7078
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   459
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   460
	# for logging/debugging in case the caller wants the raw webrti output
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   461
	def webRtiOutput(self):
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   462
		return self.__webRtiOutput
935563142864 6538468 add Mercurial support to ON developer tools
mjnelson
parents:
diff changeset
   463