Skip to main content

Twisted API for Bugzilla

Project description

Access Bugzilla’s XML-RPC API asyncronously (non-blocking) using the Twisted framework.

https://travis-ci.org/ktdreyer/txbugzilla.svg?branch=master https://badge.fury.io/py/txbugzilla.svg

Simple Example: Fetching a bug

from txbugzilla import connect, BugzillaException
from twisted.internet import defer, reactor

@defer.inlineCallbacks
def example():
    # connect() defaults to https://bugzilla.redhat.com/xmlrpc.cgi
    bz = yield connect()

    # fetch a bug
    try:
        bug = yield bz.get_bug_simple(10000)
        print(bug.summary)
    except BugzillaException as e:
        print(e)

if __name__ == '__main__':
    example().addCallback(lambda ign: reactor.stop())
    reactor.run()

Example: Authentication

By default, connections to Bugzilla are anonymous, so you cannot do fun things like update bugs or view private bugs or private information. If you wish to authenticate your connection to Bugzilla, you can pass a username and password to connect(). The deferred that connect() returns will fire a callback when the authentication succeeds.

from txbugzilla import connect
from twisted.internet import defer

@defer.inlineCallbacks
def example():
    # Authenticate via username and password
    bz = yield connect(username='user@example.com', password='foo')

    # Do something as this logged-in username, for example:
    # bug = yield bz.getbugsimple(...)

Example: Re-using Authentication token

Authenticating to Bugzilla with a username and password involves one XML-RPC roundtrip during connect() in order to obtain a token and use that token on subsequent actions.

If you’ve already authenticated one time, you can save the token offline and re-use it when your program runs again.

from txbugzilla import connect
from twisted.internet import defer

@defer.inlineCallbacks
def example():
    # Authenticate via username and password
    bz = yield connect(username='user@example.com', password='foo')

    # Save bz.token to a file or database to reuse it later and avoid
    # having to re-authenticate.
    print(bz.token)
    # prints "ABC-123"

And then, to re-use this token later:

from txbugzilla import Connection
from twisted.internet import defer

@defer.inlineCallbacks
def some_time_later():
    # Re-connect using that saved token
    bz = Connection(username='user@example.com', token='ABC-123')

    # Do something as this logged-in username, for example assign a bug
    # to someone:
    yield bz.assign(1234, 'someone@redhat.com')

Example: Assigning bugs

This will definitely earn you friends.

from txbugzilla import connect
from twisted.internet import defer

@defer.inlineCallbacks
def example():
    bz = yield connect(username='user@example.com', password='foo')

    try:
        result = yield bz.assign(1234, 'someone@redhat.com')
        if result:
           print('assigned bz #1234 to someone@redhat.com')
        else:
           print('bz #1234 is already assigned to someone@redhat.com')
    except BugzillaException as e:
        print(e)

Example: Raw XML-RPC calls

Want to make some API call not mentioned here? Use the call() method to make raw XML-RPC calls. It will take care of token authentication for you, too.

For example, to see a list of all the groups of which you are a member:

from txbugzilla import connect
from twisted.internet import defer
from pprint import pprint

@defer.inlineCallbacks
def example():
    bz = yield connect(username='user@example.com', password='foo')

    try:
        result = yield bz.call('User.get', {'names': [bz.username],
                                            'include_fields': ['groups']})
        pprint(result['users'][0]['groups'])
    except BugzillaException as e:
        print(e)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

txbugzilla-0.0.2.tar.gz (5.5 kB view details)

Uploaded Source

File details

Details for the file txbugzilla-0.0.2.tar.gz.

File metadata

  • Download URL: txbugzilla-0.0.2.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for txbugzilla-0.0.2.tar.gz
Algorithm Hash digest
SHA256 7766dfec8c9a566213b0fe51530ad86b929dfa450dd9c7a5df9680c244b21ae5
MD5 b5b1f852bd40882ad93cd80349cf1c38
BLAKE2b-256 5c81c30feee7c62acb8525a4718a78e6c42bdeef9f462277c53654a90d1af917

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page