[python-bugzilla] BugzillaError upon instantiating

Pierre-Yves Chibon pingou at pingoured.fr
Tue Oct 6 14:52:06 UTC 2015


On Tue, Oct 06, 2015 at 10:38:14AM -0400, Cole Robinson wrote:
> On 10/06/2015 03:24 AM, Pierre-Yves Chibon wrote:
> >> Does pkgdb use a bugzillarc file to store password values? python-bugzilla has
> >> support for reading info from /etc/bugzillarc and ~/.bugzillarc, but
> >> admittedly I always forget it exists since it's from before my time I've never
> >> been sure if anyone is actually using it.
> >>
> >> Maybe the bugzillarc file is setting the user/pass to literal 'None' or similar.
> >  
> > This would make sense indeed, but I just reproduced the bug again and I do not
> > have a ~/.bugzillarc
> > 
> > $ ls ~/.bug*
> > /home/pingou/.bugwarriorrc
> > /home/pingou/.bugzillacookies
> > /home/pingou/.bugzillatoken
> >  
> 
> You hit the same error as the original report? That's strange to me then. Can
> you run the script I posted in the bug and paste the output?

Here it is:


$ python test.py
DEBUG:bugzilla:Detecting subclass for https://bugzilla.redhat.com/xmlrpc.cgi
INFO:bugzilla:Using RHBugzilla for URL containing bugzilla.redhat.com
INFO:bugzilla:Chose subclass RHBugzilla v0.1
DEBUG:bugzilla.base:Using tokenfile=/home/pingou/.bugzillatoken
DEBUG:bugzilla.base:Using cookiefile=/home/pingou/.bugzillacookies
DEBUG:bugzilla.base:Calling Bug.get with: {'extra_fields': ['comments', 'description', 'external_bugs', 'flags', 'sub_components', 'tags'], 'ids': [1267821]}
INFO:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): bugzilla.redhat.com
DEBUG:requests.packages.urllib3.connectionpool:"POST /xmlrpc.cgi HTTP/1.1" 200 None
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    print bzapi.getbug(1267821)
  File "/usr/lib/python2.7/site-packages/bugzilla/base.py", line 1030, in getbug
    exclude_fields=exclude_fields, extra_fields=extra_fields)
  File "/usr/lib/python2.7/site-packages/bugzilla/base.py", line 1023, in _getbug
    extra_fields=extra_fields)[0]
  File "/usr/lib/python2.7/site-packages/bugzilla/base.py", line 995, in _getbugs
    r = self._proxy.Bug.get(getbugdata)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1224, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.7/site-packages/bugzilla/base.py", line 168, in _ServerProxy__request
    ret = ServerProxy._ServerProxy__request(self, methodname, params)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1578, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/site-packages/bugzilla/base.py", line 259, in request
    return self._request_helper(url, request_body)
  File "/usr/lib/python2.7/site-packages/bugzilla/base.py", line 245, in _request_helper
    raise sys.exc_info()[1]
xmlrpclib.Fault: <Fault 32000: 'The cookies or token provide were not valid or have expired. You may login again to get new cookies or a new token.'>

> >>> After trying to replicate the issue in a python shell, the exception seems to be
> >>> gone but another is thrown in:
> >>> File "/usr/lib/python2.7/site-packages/bugzilla/base.py", line 1203, in query
> >>> r = self._query(query)
> >>> ...
> >>> Fault: <Fault 32000: 'The cookies or token provide were not valid or have
> >>> expired. You may login again to get new cookies or a new token.'>
> >>>
> >>> Here as well, iirc it is possible to query a bug with python-bugzilla without
> >>> being logged in, so I would not expect this exception.
> >>>
> >>
> >> Yes, this bit seems new from the bugzilla.redhat.com side AFAICT. But that's
> >> actually useful IMO; A common issue people have is that their credentials
> >> expire and it subtly changes the output of the bugzilla API... bugs stop
> >> showing up in queries since they are marked private, private info like
> >> qa_whiteboard disappears, etc. So if the user has an expired cached token I
> >> think it's better to bail out explicitly.
> > 
> > I guess I only partly agree. I use .logged_in() to check if I am logged in and
> > I have scripts that for which the user do not need to be logged_in. The new
> > workflow breaks them if their credentials are invalid, but the script doesn't
> > need these credentials. So, yes, I only partly agree and I would argue that the
> > script depending on the logged in status should check .logged_in().
> > 
> 
> Good point, but in the case when you know user doesn't need to be logged in,
> you can explicitly request the bugzilla API _not_ use cached credentials by doing
> 
> bzapi = bugzilla.Bugzilla(url, cookiefile=None, tokenfile=None)

I'll keep that in mind, thanks for the pointer.

Pierre


More information about the python-bugzilla mailing list