【问题标题】:Use Python requests to filter Azure DevOps Services REST API agent pools使用 Python 请求筛选 Azure DevOps Services REST API 代理池
【发布时间】:2020-10-22 08:25:49
【问题描述】:

需要对以下代码进行哪些特定更改,以便使用 Python 请求模块和记录在 @987654321 的 Azure DevOps Services REST API 端点通过属性 nameisHosted 成功过滤代理池列表@?

当列表被{name=Default,isHosted=false} 过滤时,应该只返回 1 个代理池,如下所示,但问题是下面的代码返回所有代理池,包括具有不同名称的代理池和托管的代理池。

import requests
import os
import base64
import json 

personal_access_token = ":"+os.environ["AZ_PERSONAL_ACCESS_TOKEN"]
headers = {}
headers['Content-type'] = "application/json"
headers['Authorization'] = b'Basic ' + base64.b64encode(personal_access_token.encode('utf-8'))

#Get a list of agent pools.
instance = "dev.azure.com/MyOrganization"
propVals = "{name=Default,isHosted=false}"
api_version = "5.1"
url = ("https://%s/_apis/distributedtask/pools?properties=%s?api-version=%s" % (instance, propVals, api_version))

r = requests.get(url, headers=headers)  

print("r.status_code is: ", r.status_code)
print("r.json() is: ", r.json())

请注意,关于如何使用 Python 与 Azure DevOps Services API 集成的文档似乎很少。另外,请注意我们使用的是 Python 3.7.6。

【问题讨论】:

    标签: python python-3.x azure azure-devops azure-devops-rest-api


    【解决方案1】:

    根据您提供的docs,如果您只想获得 1 个池,您可以使用以下 URL 参数(而不是 properties):

    poolName={poolName}
    

    不仅仅是name=,就像您的代码中一样:propVals = "{name=Default,isHosted=false}"

    另外,我没有看到isHosted的任何参数,我认为你不需要它,因为如果你使用poolName,无论如何你只会得到一个池。

    因此,请将您的代码更新为:propVals = "poolName=Default",因为您的最终到达网址应该是:

    https://dev.azure.com/{organization}/_apis/distributedtask/pools?poolName={poolName}&api-version=5.1
    

    注意:&api-version=5.1 而不是?api-version=5.1

    【讨论】:

    • 实际有效的 URL(由 Python 在此处处理)是 url = ("https://dev.azure.com/%s/_apis/distributedtask/pools?poolName=%s&api-version=%s" % (azuredevops_organization_name, poolName, api_version)) 。请注意%s,它清楚地表达了删除{curly 大括号} 这可能暗示在您的答案中。
    猜你喜欢
    • 1970-01-01
    • 2021-07-07
    • 2020-06-27
    • 2020-09-04
    • 1970-01-01
    • 2021-06-19
    • 2020-02-13
    • 1970-01-01
    • 2021-04-20
    相关资源
    最近更新 更多