通过 rally API 更新父级

Updating the parent via rally API

我有超过 1000 个项目在我们的一项工作下处于关闭状态 space。

我从 - https://rally1.rallydev.com/slm/webservice/1.29/subscription?fetch=Workspaces,Name,Projects,State

获得了数据

我们要为标记为 "Closed" 的项目更新 "Parent"。

import sys
from pyral import Rally, rallyWorkset
options = [arg for arg in sys.argv[1:] if arg.startswith('--')]
args    = [arg for arg in sys.argv[1:] if arg not in options]
server = <server>
apikey = <api_key>
workspace = <workspace>
project = <project_name>
rally = Rally(server,apikey=apikey, workspace=workspace, project=project)
rally.enableLogging('mypyral.log')

检查项目状态的方法 -

projects = rally.getProjects(workspace=workspace)
for proj in projects:
    print ("    %12.12s  %s  %s" % (proj.oid, proj.Name, proj.State))

我没有在此处找到更新项目父项的任何参考 - 休息 API post 方法 - http://pyral.readthedocs.io/en/latest/interface.html?highlight=post

我会按以下方式进行:

#get object for 'New Parent':

target_project = rally.getProject('NewParentForClosedProjects')

项目=rally.getProjects(工作空间=工作空间) 对于项目中的项目:

    #get children of project
    children = proj.Children

    for child in children:

        #if project closed:
        if child.State == 'Closed':
            #Then update Parent to new one:
            project_fields = {
                "ObjectID": child.oid,
                "Parent": target_project.ref
            }
            try:
                result = rally.update('Project', project_fields)
                print "Project %s has been successfully updated with new %s parent" % (str(child.Name), str(child.Parent))
            except RallyRESTException, ex:
                print "Update failure for Project %s" % (str(child.Name))
                print ex