2017-02-06 5 views
0

У меня есть более 1000 проектов, находящихся в закрытом состоянии под одним из наших рабочих мест.Обновление родителя через ралли API

Я получил эти данные из - https://rally1.rallydev.com/slm/webservice/1.29/subscription?fetch=Workspaces,Name,Projects,State

Мы хотим обновить «Родитель» для проектов, которые помечены как «Закрыто».

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)) 

Я не нашел никаких ссылок, чтобы обновить родительский проект здесь - Rest API post метод - http://pyral.readthedocs.io/en/latest/interface.html?highlight=post

+0

Какой язык? Есть набор инструментов для узла, java, .net и других. Это должен быть довольно простой сценарий - выполнить запрос, чтобы найти все закрытые проекты, перебрать их и установить родительский элемент в новый проект. Если вы можете опубликовать некоторый код, показывающий ваш прогресс, мы, вероятно, можем быть более полезны ... –

+0

@KyleMorse - Я пытаюсь использовать его на Python, но мы гибки, чтобы заставить его работать на любом языке, таком как ruby ​​OR nodejs. На данный момент у меня есть список проектов, которые я хочу переместить в разные родительские. Я ищу метод API, который может сделать это для одного проекта. –

+0

Я думаю, что вы можете добавить к коллекции для детей 25 предметов за раз. Это уменьшит ваши # звонков совсем немного. Я не уверен, поддерживает ли это инструментарий python или ruby. узел определенно делает. –

ответ

1

Я хотел бы сделать это в следующим образом:

#get object for 'New Parent': 

target_proj ЭСТ = rally.getProject ('') NewParentForClosedProjects

проекты = rally.getProjects (рабочее пространство = рабочее пространство) для Proj в проектах:

#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 
Смежные вопросы