ошибка при подключении Rally из python через pyral с использованием ключа API

Моя организация использует аутентификацию SSO. Я получаю сообщение об ошибке при попытке подключиться к ралли с помощью ключа API от Python через pyral. Не уверен, что я делаю неправильно. Любая помощь приветствуется! Я использую приведенный ниже код в файле sample.py (единственное изменение заключается в том, что я ввожу значение ключа API, имя рабочей области и имя проекта) -

import sys
from pyral import Rally, rallyWorkset
options = [arg for arg in sys.argv[1:] if arg.startswith('--')]
args    = [arg for arg in sys.argv[1:] if arg not in options]
server, user, password, apikey, workspace, project = rallyWorkset(options)
print(server)
rally = Rally('rally1.rallydev.com', apikey='<my api key>', workspace='<workspace name>', project='<project name>')
rally.enableLogging('mypyral.log')
workspaces = rally.getWorkspaces()
for wksp in workspaces:
    print("%s %s" % (wksp.oid, wksp.Name))
    projects = rally.getProjects(workspace=wksp.Name)
    for proj in projects:
        print("%12.12s  %s" % (proj.oid, proj.Name))

ОШИБКА Я получаю -

rally1.rallydev.com
Traceback (most recent call last):
  File "sample.py", line 10, in <module>
    rally = Rally('rally1.rallydev.com', apikey='<my api key>', workspace='<workspace name>', project='<project name>')
  File "C:\...\Python\Python36\lib\site-packages\pyral\restapi.py", line 259, in __init__
    self.contextHelper.check(self.server, wksp, proj, self.isolated_workspace)
  File "C:\...\Python\Python36\lib\site-packages\pyral\context.py", line 171, in check
    user_response = self._getUserInfo()
  File "C:\...\Python\Python36\lib\site-packages\pyral\context.py", line 276, in _getUserInfo
    raise RallyRESTAPIError(problem)
pyral.context.RallyRESTAPIError: Target Rally host: 'rally1.rallydev.com' non-existent or unreachable

person Sujoy    schedule 22.08.2018    source источник


Ответы (2)


Я также ответил на этот пост: Хост Rally не существует или недоступен через pyral.

Мне просто нужно было решить эту проблему, и это было вызвано тем, что моя установка Python не использовала TLS 1.2. Вам нужно будет убедиться, что версия OpenSSL, используемая вашим Python, поддерживает TLS 1.2.

Чтобы увидеть используемую версию TLS, вы можете выполнить эту проверку:

python -c "import requests; print(requests.get('https://www.howsmyssl.com/a/check', verify=False).json()['tls_version'])"

Чтобы увидеть, какой OpenSSL используется:

python -c "import ssl; print(ssl.OPENSSL_VERSION)"

У меня нет разрешения обновить OpenSSL до нужной версии. Я уверен, что вы сможете найти что-то для вашей собственной среды.

person Michael B    schedule 22.08.2018
comment
Спасибо Михаил за помощь. Но у меня уже был TLS 1.2, и это не было проблемой. Я смог решить эту проблему после настройки HTTPS-прокси. Я опубликую подробности ниже. - person Sujoy; 23.08.2018
comment
Здорово! Я был недальновидным, не добавив информацию о прокси. Поскольку мой был связан с TLS 1.2. Рад, что это работает для вас! - person Michael B; 23.08.2018

проблема была решена после следующих шагов -

  • перейти к пиральной локации
  • отредактируйте файл config.py, чтобы включить свои учетные данные для входа в систему для полей USER_NAME и PASSWORD.
  • откройте командную строку в режиме администратора и запустите набор команд HTTPS_PROXY==http://user:[email protected]:port
  • для идентификатора пользователя/пароля используйте свои учетные данные SSO, а не учетные данные Rally (если они отличаются).
  • Затем запустите файл sample.py, и он сработает.
person Sujoy    schedule 22.08.2018