2014-12-11 4 views
2

Я пытаюсь выполнить запрос всех задач с конкретной итерации с помощью инструментария python для ралли REST API. Итерация будет выбрана во время выполнения.Rally python REST: Запросить все задания из выбранной итерации

Однако мне не удалось настроить правильный запрос. Я чувствую, что мне не хватает чего-то маленького, но важного здесь.

Это код:

query_criteria = 'Iteration.Name = "2014 november"' 
response = rally.get('Task', fetch=True, query=query_criteria) 
if response.errors: 
    sys.stdout.write("\n".join(response.errors)) 
    sys.exit(1) 
for Task in response: 
    if getattr(Task,"Iteration"): 
      print "%s %s" % (Task.Name,Task.Iteration.Name) 

Он получит 0 строк в ответ.

Если я удалю , query=query_criteria и выберем все задачи, то я вижу, что есть задачи, где значение Task.Iteration.Name составляет 2014 ноября.

Запрос не дает ошибки, поэтому я предполагаю, что значения связанных объектов (task-> Iteration) могут быть включены в запрос. Тем не менее, я получаю 0 строк в ответе.

Возможно ли, что некоторые задачи не привязаны к итерации?

Одним из решений было бы получить все задачи, а затем отфильтровать их впоследствии. Но это кажется грязным.

ответ

1

Если вы запрашиваете непосредственно в API WS в браузере, получаете ли вы результаты?

https://rally1.rallydev.com/slm/webservice/v2.0/task?workspace=https://rally1.rallydev.com/slm/webservice/v2.0/workspace/12352608129&query=(Iteration.Name%20%3D%20%22my%20iteration%22)&pagesize=200 

Я проверил, что этот код работает с Пуралом 1.1.0, Python 2.7.0 и запросами-2.3.0 - возвращает все задачи workproducts присвоенного итерации (например пользовательские истории и дефекты.). Я протестировал 3 запроса: по состоянию, по ссылке итерации и по имени итерации (первые два кода закомментированы в коде).

#!/usr/bin/env python 

################################################################################################# 
# 
# showitems -- show artifacts in a workspace/project conforming to some common criterion 
# 
################################################################################################# 

import sys, os 
from pyral import Rally, rallyWorkset, RallyRESTAPIError 

################################################################################################# 

errout = sys.stderr.write 

################################################################################################# 

def main(args): 
    options = [opt for opt in args if opt.startswith('--')] 
    args = [arg for arg in args if arg not in options] 
    server, username, password, apikey, workspace, project = rallyWorkset(options) 
    if apikey: 
     rally = Rally(server, apikey=apikey, workspace=workspace, project=project) 
    else: 
     rally = Rally(server, user=username, password=password, workspace=workspace, project=project) 
    rally.enableLogging("rally.history.showitems") 

    fields = "FormattedID,State,Name" 
    #criterion = 'State != Closed' 
    #criterion = 'iteration = /iteration/20502967321' 
    criterion = 'iteration.Name = \"iteration 5\"' 

    response = rally.get('Task', fetch=fields, query=criterion, order="FormattedID", 
            pagesize=200, limit=400) 

    for task in response: 
     print "%s %s %s" % (task.FormattedID, task.Name, task.State) 

    print "-----------------------------------------------------------------" 
    print response.resultCount, "qualifying tasks" 

################################################################################################# 
################################################################################################# 

if __name__ == '__main__': 
    main(sys.argv[1:]) 
    sys.exit(0) 
+0

'https://community.rallydev.com/slm/webservice/v2.0/Task?fetch=FormattedID,State,Name&query=(Iteration.Name%20=%20%222014%20november%22) & order = FormattedID & pagesize = 200 & start = 1' Дал мне 0 результатов. Как и интерактивные поля запросов на странице документа wsapi. Пробовал свой код (заменил имя итерации на «2014 ноября») и получил 0 квалификационных заданий. Также проверяется ссылкой итерации. Опять то же самое. Так что я потерял. Может ли это быть ограничением для пользователей сообщества? Не кажется правдоподобным, но у меня все идеи. – user2451040

+0

Если ваш запрос WS API возвращает 0 результатов, это не имеет никакого отношения к коду python. Это означает, что либо артефакты, запланированные для итерации 2014 ноября, либо имена итераций написаны неправильно (например, дополнительное или отсутствующее пространство между 2014 и новеем). Запрос по iteration.ObjectID (если вы не сделали это уже, когда вы сказали по итерации ref), и посмотрите, получаете ли вы ожидаемые результаты. Чтобы получить идентификатор Object Итерации, перейдите на страницу сведений об этом и используйте последнюю строку чисел в URL-адресе, например https://rally1.rallydev.com/ #/1234/detail/iteration/7890 ObjectID - 7890. – nickm