0

我的组织使用 SSO 身份验证。尝试使用 python 中的 api 密钥通过 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
4

2 回答 2

0

经过以下步骤后问题得到解决 -

  • 去 pyral 位置
  • 编辑 config.py 文件以包含字段 USER_NAME 和 PASSWORD 的集会日志凭据
  • 在管理员模式下打开命令提示符并运行命令集 HTTPS_PROXY== http://user:password@proxy.domain.com:port
  • 对于用户 id/psw,使用您的 SSO 凭据而不是 Rally 凭据(如果它们不同)。
  • 然后运行文件 sample.py 就可以了
于 2018-08-22T22:56:18.403 回答
0

我也在这篇文章中回答了,Rally 主机不存在或无法通过 pyral 访问

我只需要解决这个问题,它是由于我的 Python 安装没有使用 TLS 1.2 引起的。您需要确保 Python 使用的 OpenSSL 版本支持 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 更新到正确版本的解决方案。我相信您将能够找到适合自己环境的东西。

于 2018-08-22T12:43:45.903 回答