Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Unified Diff: chromite/lib/tracker_access.py

Issue 6371018: Remove chromite from crosutils.git. It's been moved to chromite.git. (Closed) Base URL: http://git.chromium.org/git/crosutils.git@master
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromite/lib/cros_build_lib_unittest.py ('k') | chromite/specs/x86-generic.spec » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromite/lib/tracker_access.py
diff --git a/chromite/lib/tracker_access.py b/chromite/lib/tracker_access.py
deleted file mode 100644
index 18d17ad87c6d0a21c720bb985dff4820f63f68ed..0000000000000000000000000000000000000000
--- a/chromite/lib/tracker_access.py
+++ /dev/null
@@ -1,166 +0,0 @@
-#!/usr/bin/python
-
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Helper functions for accessing the issue tracker in a pythonic way."""
-
-import os.path
-import pprint
-import sys
-
-# import the GData libraries
-import gdata.client
-import gdata.projecthosting.client
-
-DEFAULT_TRACKER_SOURCE = "chromite-tracker-access-1.0"
-VERBOSE = True # Set to True to get extra debug info...
-
-class TrackerAccess(object):
- """Class for accessing the tracker on code.google.com."""
-
- def __init__(self, email="", password="",
- tracker_source=DEFAULT_TRACKER_SOURCE):
- """TrackerAccess constructor.
-
- Args:
- email: The email address to Login with; may be "" for anonymous access.
- password: The password that goes with the email address; may be "" if
- the email is "".
- tracker_source: A string describing this program. This can be anything
- you like but should should give some indication of which
- app is making the request.
- """
- # Save parameters...
- self._email = email
- self._password = password
- self._tracker_source = tracker_source
-
- # This will be initted on first login...
- self._tracker_client = None
-
- def Login(self):
- """Login, if needed. This may be safely called more than once.
-
- Commands will call this function as their first line, so the client
- of this class need not call it themselves unless trying to debug login
- problems.
-
- This function should be called even if we're accessing anonymously.
- """
- # Bail immediately if we've already logged in...
- if self._tracker_client is not None:
- return
-
- self._tracker_client = gdata.projecthosting.client.ProjectHostingClient()
- if self._email and self._password:
- self._tracker_client.client_login(self._email, self._password,
- source=self._tracker_source,
- service="code", account_type='GOOGLE')
-
- def GetKeyedLabels(self, project_name, issue_id):
- """Get labels of the form "Key-Value" attached to the given issue.
-
- Any labels that don't have a dash in them are ignored.
-
- Args:
- project_name: The tracker project to query.
- issue_id: The ID of the issue to query; should be an int but a string
- will probably work too.
-
- Returns:
- A dictionary mapping key/value pairs from the issue's labels, like:
-
- {'Area': 'Build',
- 'Iteration': '15',
- 'Mstone': 'R9.x',
- 'Pri': '1',
- 'Type': 'Bug'}
- """
- # Login if needed...
- self.Login()
-
- # Construct the query...
- query = gdata.projecthosting.client.Query(issue_id=issue_id)
- try:
- feed = self._tracker_client.get_issues(project_name, query=query)
- except gdata.client.RequestError, e:
- if VERBOSE:
- print >>sys.stderr, "ERROR: Unable to access bug %s:%s: %s" % (
- project_name, issue_id, str(e))
- return {}
-
- # There should be exactly one result...
- assert len(feed.entry) == 1, "Expected exactly 1 result"
- (entry,) = feed.entry
-
- # We only care about labels that look like: Key-Value
- # We'll return a dictionary of those.
- keyed_labels = {}
- for label in entry.label:
- if "-" in label.text:
- label_key, label_val = label.text.split("-", 1)
- keyed_labels[label_key] = label_val
-
- return keyed_labels
-
-
-def _TestGetKeyedLabels(project_name, email, passwordFile, *bug_ids):
- """Test code for GetKeyedLabels().
-
- Args:
- project_name: The name of the project we're looking at.
- email: The email address to use to login. May be ""
- passwordFile: A file containing the password for the email address.
- May be "" if email is "" for anon access.
- bug_ids: A list of bug IDs to query.
- """
- # If password was specified as a file, read it.
- if passwordFile:
- password = open(passwordFile, "r").read().strip()
- else:
- password = ""
-
- ta = TrackerAccess(email, password)
-
- if not bug_ids:
- print "No bugs were specified"
- else:
- for bug_id in bug_ids:
- print bug_id, ta.GetKeyedLabels(project_name, int(bug_id))
-
-
-def _DoHelp(commands, *args):
- """Print help for the script."""
-
- if len(args) >= 2 and args[0] == "help" and args[1] in commands:
- # If called with arguments 'help' and 'command', show that commands's doc.
- command_name = args[1]
- print commands[command_name].__doc__
- else:
- # Something else: show generic help...
- print (
- "Usage %s <command> <command args>\n"
- "\n"
- "Known commands: \n"
- " %s\n"
- ) % (sys.argv[0], pprint.pformat(["help"] + sorted(commands)))
-
-
-def main():
- """Main function of the script."""
-
- commands = {
- "TestGetKeyedLabels": _TestGetKeyedLabels,
- }
-
- if len(sys.argv) <= 1 or sys.argv[1] not in commands:
- # Argument 1 isn't in list of commands; show help and pass all arguments...
- _DoHelp(commands, *sys.argv[1:])
- else:
- command_name = sys.argv[1]
- commands[command_name](*sys.argv[2:])
-
-if __name__ == "__main__":
- main()
« no previous file with comments | « chromite/lib/cros_build_lib_unittest.py ('k') | chromite/specs/x86-generic.spec » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698