2014-12-11 5 views
2

랠리 REST API에 대한 python 툴킷을 사용하여 특정 반복에서 모든 작업을 쿼리하려고합니다. 반복은 런타임에 선택됩니다.랠리 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 값이 11 월 2014 일인 작업이 있음을 알 수 있습니다.

쿼리에서 오류가 발생하지 않으므로 관련 개체 (작업 -> 반복)의 값을 쿼리에 포함 할 수 있다고 가정합니다. 그러나 응답으로 0 행을받습니다.

일부 작업이 반복 작업에 첨부되어 있지 않은 것일 수 있습니다.

한 가지 해결책은 모든 작업을 가져 와서 나중에 필터링하는 것입니다. 그러나 그것은 더러워 보인다.

답변

1

브라우저의 WS API에서 직접 쿼리하는 경우 결과가 표시됩니까? (. 예컨대 사용자 스토리 및 결함)가 반복에 할당 workproducts의 모든 작업을 반환 -

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, 파이썬 2.7.0 및 요청-2.3.0와 함께 작동하는지 확인. 세 가지 쿼리를 테스트했습니다 : 상태, 반복 참조 및 반복 이름 (처음 두 개는 코드에서 주석 처리됨).

#!/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 11 월 \"으로 바꿨습니다) 정규화 된 작업이 0 개 있습니다. 또한 반복 참조에 의해 테스트되었습니다. 다시 똑같아. 그래서 나는 길을 잃었습니다. 커뮤니티 에디션 사용자에게 제한이 될 수 있습니까? 그럴듯한 소리는 들리지 않지만, 나는 모두 아이디어가 없습니다. – user2451040

+0

WS API 쿼리가 0 개의 결과를 반환하면 파이썬 코드와 아무런 관련이 없습니다. 즉, 11 월 2014 일 반복 예정인 아티팩트가 없거나 반복 이름의 철자가 잘못되었음을 의미합니다 (예 : 2014 년과 11 월 사이의 여분 또는 누락 된 공간). 반복에 의한 쿼리 .ObjectID (이미 말한 iteration ref로) 원하는 결과를 얻었는지 확인하십시오. 반복의 ObjectID를 얻으려면 URL의 세부 정보 페이지로 이동하여 URL의 마지막 숫자 문자열을 사용하십시오 (예 : https://rally1.rallydev.com/). #/1234/detail/iteration/7890 ObjectID는 7890입니다. – nickm