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)