Bug 1214231 - [RFE] forced anonymous mode for beaker client
Summary: [RFE] forced anonymous mode for beaker client
Keywords:
Status: CLOSED DUPLICATE of bug 1323921
Alias: None
Product: Beaker
Classification: Retired
Component: command line
Version: 0.18
Hardware: All
OS: Linux
unspecified
unspecified
Target Milestone: ---
Assignee: beaker-dev-list
QA Contact: tools-bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-04-22 09:38 UTC by Jiri Jaburek
Modified: 2018-02-06 00:41 UTC (History)
4 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2016-06-14 05:54:44 UTC
Embargoed:


Attachments (Terms of Use)

Description Jiri Jaburek 2015-04-22 09:38:12 UTC
Description of problem:

The beaker client (bkr) is sometimes used in automated scripts, possibly querying machines and distros / distro trees or reserving/provisioning machines.

While some actions may need privileged login, some others do not and doing authentication in those cases significantly slows down the operation if the beaker server is far away.

$ time bkr system-status --format=json f.q.d.n > /dev/null

real    0m3.676s
user    0m0.428s
sys     0m0.078s

$ time curl -sk https://hub/systems/f.q.d.n/status > /dev/null

real    0m0.898s
user    0m0.059s
sys     0m0.106s

The authentication is, however, useful by default as some systems might not be visible via anonymous access (and re-trying would just cause more delay). It should be up to the person using bkr(1) to choose between anonymous/authenticated access for a given command.

Therefore I propose something like --skip-auth for bkr(1), which would override even ~/.beaker_client/config.

Alternatively (for another bug), beaker client could support semi-persistent auth tokens, so that subsequent calls wouldn't need to authenticate all over again.


Version-Release number of selected component (if applicable):
beaker-client-19.1-1.fc19

Comment 1 Jan Stancek 2015-04-22 10:27:00 UTC
Possible workaround:

$ cat example.py
#!/usr/bin/python

import os
import sys
import xmlrpclib
import xml.dom.minidom
from bkr.client import conf
from bkr.common.hub import HubProxy

hub = HubProxy(conf=conf, auto_login=False)
print hub.auth.who_am_i()


$ time python example.py 
Traceback (most recent call last):
  File "example.py", line 11, in <module>
    print hub.auth.who_am_i()
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1224, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1578, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/site-packages/bkr/common/xmlrpc.py", line 560, in request
    result = transport_class.request(self, *args, **kwargs)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1264, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python2.7/site-packages/bkr/common/xmlrpc.py", line 461, in _single_request
    return self.parse_response(response)
  File "/usr/lib64/python2.7/xmlrpclib.py", line 1473, in parse_response
    return u.close()
  File "/usr/lib64/python2.7/xmlrpclib.py", line 793, in close
    raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: "<class 'bkr.server.identity.IdentityFailure'>: Anonymous access denied">

real    0m0.823s
user    0m0.099s
sys     0m0.021s

Comment 2 Jan Stancek 2015-04-22 10:36:52 UTC
Or if you'd prefer 'bkr' command line, overriding HubProxy class could also work. For example:

$ cat anonym_bkr.py
#!/usr/bin/python

import bkr.common.hub

class AnonymousHubProxy(bkr.common.hub.HubProxy):
        """A Hub client (thin ServerProxy wrapper)."""
        def __init__(self, conf, client_type=None, logger=None, transport=None,
                auto_login=True, auto_logout=True, **kwargs):
                auto_login = False
                super(bkr.common.hub.HubProxy, self).__init__(conf, client_type,
                        logger, transport, auto_login, auto_logout, **kwargs)

bkr.common.hub.HubProxy = AnonymousHubProxy

g = globals()
l = {}
execfile('/usr/bin/bkr', g, l)

$ time ./anonym_bkr.py whoami
XML-RPC fault: <class 'bkr.server.identity.IdentityFailure'>: Anonymous access denied

real    0m0.895s
user    0m0.183s
sys     0m0.028s

Comment 3 Dan Callaghan 2016-06-14 05:54:44 UTC
In bug 1323921 we added AUTH_METHOD="none" for this use case, although there's no equivalent command line option for it as requested here, just the config file setting. I assume that limitation is fine though.

*** This bug has been marked as a duplicate of bug 1323921 ***


Note You need to log in before you can comment on or make changes to this bug.