diff --git a/swh/lister/gitlab/lister.py b/swh/lister/gitlab/lister.py --- a/swh/lister/gitlab/lister.py +++ b/swh/lister/gitlab/lister.py @@ -2,7 +2,6 @@ # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information -import random import time from urllib3.util import parse_url @@ -28,34 +27,6 @@ self.PATH_TEMPLATE = '%s&per_page=%s' % ( self.PATH_TEMPLATE, per_page) - def request_params(self, identifier): - """Get the full parameters passed to requests given the - transport_request identifier. - - For the gitlab lister, the 'credentials' entries is configured - per instance. For example:: - - - credentials: - - gitlab.com: - - username: user0 - password: - - username: user1 - password: - - ... - - other-gitlab-instance: - ... - - """ - params = { - 'headers': self.request_headers() or {} - } - creds_lister = self.config['credentials'].get(self.instance) - if creds_lister: - auth = random.choice(creds_lister) - if auth: - params['auth'] = (auth['username'], auth['password']) - return params - def uid(self, repo): return '%s/%s' % (self.instance, repo['path_with_namespace']) diff --git a/swh/lister/phabricator/lister.py b/swh/lister/phabricator/lister.py --- a/swh/lister/phabricator/lister.py +++ b/swh/lister/phabricator/lister.py @@ -15,13 +15,17 @@ MODEL = PhabricatorModel LISTER_NAME = 'phabricator' - def __init__(self, forge_url, api_token, instance=None, + def __init__(self, forge_url, instance=None, api_token=None, override_config=None): if forge_url.endswith("/"): forge_url = forge_url[:-1] self.forge_url = forge_url - api_endpoint = ('api/diffusion.repository.' - 'search?api.token=%s') % api_token + if api_token: # from the cli, we might want to provide it as initially + api_endpoint = ('api/diffusion.repository.' + 'search?api.token=%s') % api_token + else: + api_endpoint = 'api/diffusion.repository.search' + api_baseurl = '%s/%s' % (forge_url, api_endpoint) if not instance: instance = urllib.parse.urlparse(forge_url).hostname @@ -29,6 +33,27 @@ super().__init__(api_baseurl=api_baseurl, override_config=override_config) + def request_params(self, identifier): + """Override the default params behavior to retrieve the api token + + Credentials are stored as: + + credentials: + phabricator: + : + - username: + password: + + """ + params = super().request_params(identifier) + if not params or 'auth' not in params: + return params + # Setup configuration token + auth = params['auth'] + params['api.token'] = auth[1] # retrieve password which is + del params['auth'] + return params + def request_headers(self): """ (Override) Set requests headers to send when querying the diff --git a/swh/lister/phabricator/tasks.py b/swh/lister/phabricator/tasks.py --- a/swh/lister/phabricator/tasks.py +++ b/swh/lister/phabricator/tasks.py @@ -6,10 +6,10 @@ from swh.lister.phabricator.lister import PhabricatorLister -def new_lister(forge_url='https://forge.softwareheritage.org', api_token='', - instance='swh', **kw): - return PhabricatorLister(forge_url=forge_url, api_token=api_token, - instance=instance, **kw) +def new_lister(forge_url='https://forge.softwareheritage.org', instance='swh', + api_token=None, **kw): + return PhabricatorLister( + forge_url=forge_url, instance=instance, api_token=api_token, **kw) @app.task(name=__name__ + '.IncrementalPhabricatorLister') diff --git a/swh/lister/phabricator/tests/test_tasks.py b/swh/lister/phabricator/tests/test_tasks.py --- a/swh/lister/phabricator/tests/test_tasks.py +++ b/swh/lister/phabricator/tests/test_tasks.py @@ -24,7 +24,7 @@ assert res.successful() lister.assert_called_once_with( - api_token='', forge_url='https://forge.softwareheritage.org', + api_token=None, forge_url='https://forge.softwareheritage.org', instance='swh') lister.db_last_index.assert_called_once_with() lister.run.assert_called_once_with(min_bound=42)