Rally python REST: запрос всех задач из выбранной итерации

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

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

Это код:

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.Itered.Name имеет значение 2014 ноябрь.

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

Может быть, причина в том, что некоторые задачи не связаны с итерацией?

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

1 ответ

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

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

Я проверил, что этот код работает с pyral 1.1.0, Python 2.7.0 и request-2.3.0 - он возвращает все задачи рабочих продуктов (например, пользовательские истории и дефекты), назначенные для итерации. Я протестировал 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)
Другие вопросы по тегам