Использование Rally Rest API для операций CRUD - PullRequest
7 голосов
/ 08 февраля 2011

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

Я потратил некоторое время на просмотр Rally-Rest-Api Ruby Gem, и хотя у меня немного опыта работы с Ruby, интерфейс API Query по-прежнему смущает меня и у меня возникли некоторые проблемы, когда я оборачиваюсь вокруг него. Я знаю, что хотел бы мой regex, но я просто не знаю, как передать это в запрос.

Вот что у меня есть:

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

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

Ответы [ 2 ]

8 голосов
/ 08 февраля 2011

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

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

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

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
4 голосов
/ 08 февраля 2011

Попробуйте:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...