diff options
author | David Pursehouse <david.pursehouse@sonymobile.com> | 2014-05-29 17:08:22 +0900 |
---|---|---|
committer | David Pursehouse <david.pursehouse@sonymobile.com> | 2014-05-29 17:15:44 +0900 |
commit | d202b97cb67f816ee7b82f6850e8a36bf65babf9 (patch) | |
tree | fe140b22066d175f9c954ffe89e3cc2c7b802759 /rest_example.py | |
parent | 7064be15a16240c3318a9c54141387d40ecb69f5 (diff) | |
download | pygerrit-d202b97cb67f816ee7b82f6850e8a36bf65babf9.tar.gz |
Revert "Remove support for Gerrit over ssh"
The ssh interface is still being used and patches are being
contributed [1].
It's easier to revert the removal on master than attempt to keep
the support in a separate branch.
This reverts commit f0b77968389966cd7bad0cac1fe7f04526eafde1.
[1] https://github.com/sonyxperiadev/pygerrit/pull/21
Conflicts:
README.rst
example.py
requirements.txt
setup.py
unittests.py
Change-Id: I9e02208c57cb2022ff39cff6650101ed40c0519d
Diffstat (limited to 'rest_example.py')
-rwxr-xr-x | rest_example.py | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/rest_example.py b/rest_example.py new file mode 100755 index 0000000..1b69c00 --- /dev/null +++ b/rest_example.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# The MIT License +# +# Copyright 2013 Sony Mobile Communications. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +""" Example of using the Gerrit client REST API. """ + +import argparse +import logging +import sys + +from requests.auth import HTTPBasicAuth, HTTPDigestAuth +from requests.exceptions import RequestException +try: + # pylint: disable=F0401 + from requests_kerberos import HTTPKerberosAuth, OPTIONAL + # pylint: enable=F0401 + _kerberos_support = True +except ImportError: + _kerberos_support = False + +from pygerrit.rest import GerritRestAPI +from pygerrit.rest.auth import HTTPDigestAuthFromNetrc, HTTPBasicAuthFromNetrc + + +def _main(): + descr = 'Send request using Gerrit HTTP API' + parser = argparse.ArgumentParser( + description=descr, + formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser.add_argument('-g', '--gerrit-url', dest='gerrit_url', + required=True, + help='gerrit server url') + parser.add_argument('-b', '--basic-auth', dest='basic_auth', + action='store_true', + help='use basic auth instead of digest') + if _kerberos_support: + parser.add_argument('-k', '--kerberos-auth', dest='kerberos_auth', + action='store_true', + help='use kerberos auth') + parser.add_argument('-u', '--username', dest='username', + help='username') + parser.add_argument('-p', '--password', dest='password', + help='password') + parser.add_argument('-n', '--netrc', dest='netrc', + action='store_true', + help='Use credentials from netrc') + parser.add_argument('-v', '--verbose', dest='verbose', + action='store_true', + help='enable verbose (debug) logging') + + options = parser.parse_args() + + level = logging.DEBUG if options.verbose else logging.INFO + logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', + level=level) + + if _kerberos_support and options.kerberos_auth: + if options.username or options.password \ + or options.basic_auth or options.netrc: + parser.error("--kerberos-auth may not be used together with " + "--username, --password, --basic-auth or --netrc") + auth = HTTPKerberosAuth(mutual_authentication=OPTIONAL) + elif options.username and options.password: + if options.netrc: + logging.warning("--netrc option ignored") + if options.basic_auth: + auth = HTTPBasicAuth(options.username, options.password) + else: + auth = HTTPDigestAuth(options.username, options.password) + elif options.netrc: + if options.basic_auth: + auth = HTTPBasicAuthFromNetrc(url=options.gerrit_url) + else: + auth = HTTPDigestAuthFromNetrc(url=options.gerrit_url) + else: + auth = None + + rest = GerritRestAPI(url=options.gerrit_url, auth=auth) + + try: + changes = rest.get("/changes/?q=owner:self%20status:open") + logging.info("%d changes", len(changes)) + for change in changes: + logging.info(change['change_id']) + except RequestException as err: + logging.error("Error: %s", str(err)) + +if __name__ == "__main__": + sys.exit(_main()) |