2011-02-08 5 views
7

В моей компании мы недавно начали использовать Rally для нашего инструмента управления проектами. Первоначально кто-то, кто был внешним для нашей команды, вложил много времени вручную, создавая итерации, используя соглашение об именах, которое просто не собирается дживить с существующей схемой нашей команды. Вместо того, чтобы просить эту бедную душу удалить эти пустые итерации вручную, один за другим, я хотел бы автоматизировать этот процесс, используя REST API Rally. Короче говоря, нам нужно удалить эти 100+ пустых итераций, которые охватывают три разных проекта (которые все используют общий родительский элемент).Использование API Rally Rest для операций CRUD

Я провел некоторое время, глядя на rally-rest-api рубиновый камень, и, хотя у меня есть некоторый ограниченный опыт рубина Query интерфейс API остается запутанной для меня, и у меня возникли некоторые проблемы оберточной мою голову вокруг него. Я знаю, что мне нравится в регулярном выражении, но я просто не знаю, как это сделать для запроса.

Вот то, что я до сих пор:

require 'rubygems' 
require 'rally_rest_api' 

rally = RallyRestAPI.new(:username => "myuser", 
         :password => "mypass") 
regex = /ET-VT-100/  
# get all names that match criteria 
iterations = rally.find(:iteration) { "query using above regex?" } 
# delete all the matching iterations 
iterations.each do |iteration| 
    iteration.delete  
end 

Любые указатели в правильном направлении будет высоко ценится. Я чувствую, что я почти там.

ответ

8

Мне нужно было сделать что-то похожее на это несколько месяцев назад, когда я хотел переименовать большую группу итераций.

Во-первых, убедитесь, что пользователь, с которым вы выполняете аутентификацию, имеет по крайней мере роль «Редактор», назначаемую во всех проектах, из которых вы хотите удалить итерации. Кроме того, если у вас есть какие-либо проекты в вашей рабочей области, в которых у вас нет прав на чтение, вам сначала нужно будет предоставить проект (ы) для начала запроса. (Возможно, вы даже не знаете о них, кто-то из вашей организации мог бы создать их).

Следующие получает ссылку на проекты, а затем перебирает итерации с указанным регулярным выражением:

require 'rubygems' 
require 'rally_rest_api' 

rally = RallyRestAPI.new(:username => "myuser", 
         :password => "mypass") 

# Assumes all projects contain "FooBar" in name 
projects = rally.find(:project) { contains :name, "FooBar"} 
projects.each do |project| 
    project.iterations.each do |iteration| 
    if iteration.name =~ /ET-VT-100/ 
     iteration.delete 
    end 
    end 
end 
+1

Спасибо, это сработало! – envigo

4

Try:

iterations = rally.find(:iteration) { contains :name, "ET-VT-100" } 

Это предполагает, что итерация имеет ET-VT-100 в названии, возможно, придется запросить против какой-либо другой области. Regexes не поддерживается REST api, afaict.

+1

я получаю следующее сообщение об ошибке: ' Не разрешено читать: Итерация 357306536 '. Я дважды проверял мои разрешения для каждого из проектов, и у меня есть редактор для каждого из них. – envigo

+1

См. Мой ответ выше на этот вопрос, скорее всего, вам сначала нужно получить ссылку на проект. – csamuel

Смежные вопросы