使用 API 在 Rally 中检索子项目并更新所选项目的父项目
Retreiving the child projects and updating the parent for the selected projects in Rally using API
为了清理 Rally,我想更改标记为 "Closed"
的项目的父项
--MyWorkspace
- Project 1
- Project 2
- Child 1 (Status = Closed)
- Child 2 (Status = Closed)
- Child 3 (Status = Open)
- Project 3
我想更新 "Child 1" and "Child 2" to "Project 1"
的父项目(想将那些子项目移动到不同的父项目下。
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))
这只给我家长级别的项目
<id> <Name> <status>
虽然这个逻辑并不 return 所有子项目。
此外,我正在寻找 post
方法来在获得要关闭的项目列表后更新父项。
正确 - projects = rally.getProjects(workspace=workspace)
returns 所有家长项目。
为了得到所有的子项目你需要询问父:
for proj in projects:
children = proj.Children
for child in children:
print (" %12.12s %s %s" % (child.oid, child.Name, child.State))
我将通过以下方式解决整个任务:
#get object for 'New Parent':
target_project = rally.getProject('NewParentForClosedProjects')
projects = rally.getProjects(workspace=workspace)
for proj in projects:
#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
为了清理 Rally,我想更改标记为 "Closed"
--MyWorkspace
- Project 1
- Project 2
- Child 1 (Status = Closed)
- Child 2 (Status = Closed)
- Child 3 (Status = Open)
- Project 3
我想更新 "Child 1" and "Child 2" to "Project 1"
的父项目(想将那些子项目移动到不同的父项目下。
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))
这只给我家长级别的项目
<id> <Name> <status>
虽然这个逻辑并不 return 所有子项目。
此外,我正在寻找 post
方法来在获得要关闭的项目列表后更新父项。
正确 - projects = rally.getProjects(workspace=workspace)
returns 所有家长项目。
为了得到所有的子项目你需要询问父:
for proj in projects:
children = proj.Children
for child in children:
print (" %12.12s %s %s" % (child.oid, child.Name, child.State))
我将通过以下方式解决整个任务:
#get object for 'New Parent':
target_project = rally.getProject('NewParentForClosedProjects')
projects = rally.getProjects(workspace=workspace)
for proj in projects:
#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