2013-03-27 26 views
0

我可以使用Ruby腳本和Rally Rest API刪除Rally v12.4中的缺陷。然後缺陷進入回收站。我如何完全刪除它?如何以編程方式使用ruby刪除Rally回收站中的缺陷?

如果您必須知道...我從ClearQuest導入數據(使用Enterprise editino並且沒有CQ連接器)。當我通過映射工作時,我導入一小批來檢查它的工作方式。我重複一遍,但每次都想清除所有的缺陷。我編寫了一個Ruby腳本來刪除它們,但它不會將它們從回收站中清除,並且必須逐個完成。一旦我遷移了數百個ClearQuest門票,但後來發現問題,我不想一個接一個從回收站中刪除它們。

同樣,要回答的問題是,「我如何徹底刪除它?」

+0

是有一個純粹的回收站API? – rogerdpack 2013-03-27 18:23:11

回答

0

以下腳本可以幫助完成此任務:

# Usage: ruby rally_empty_recycle_bin.rb 
# Specify the User-Defined variables below. Script will iterate through all items in 
# Rally Recycle bin for specified Workspace and Project, and prompt the user to confirm 
# permanent deletion of the item of interest. 

require 'rally_api' 

$my_base_url  = "https://rally1.rallydev.com/slm" 
$my_username  = "[email protected]" 
$my_password  = "password" 
$my_workspace  = "My Workspace" 
$my_project  = "My Project" 
$wsapi_version  = "1.41" 

# Make no edits below this line!! 
# ================================= 

#Setting custom headers 
$headers       = RallyAPI::CustomHttpHeader.new() 
$headers.name      = "Rally Empty Recycle Bin" 
$headers.vendor      = "Rally Labs" 
$headers.version     = "0.50" 

# Load (and maybe override with) my personal/private variables from a file... 
my_vars= File.dirname(__FILE__) + "/my_vars.rb" 
if FileTest.exist?(my_vars) then require my_vars end 

begin 

    #==================== Make a connection to Rally ==================== 

    config     = {:base_url => $my_base_url} 
    config[:username]  = $my_username 
    config[:password]  = $my_password 
    config[:workspace]  = $my_workspace 
    config[:project]  = $my_project 
    config[:version]  = $wsapi_version 
    config[:headers]  = $headers 

    @rally = RallyAPI::RallyRestJson.new(config) 

    # Lookup source Test Folder 
    recycle_bin_query = RallyAPI::RallyQuery.new() 
    recycle_bin_query.type = :recyclebin 
    recycle_bin_query.fetch = true 

    recycle_bin_query_results = @rally.find(recycle_bin_query) 

    number_recycle_bin_items = recycle_bin_query_results.total_result_count 

    if number_recycle_bin_items == 0 
    puts "No items found in Recycle Bin. Exiting." 
    exit 
    end 

    puts "Found #{number_recycle_bin_items} items in Recycle Bin for possible deletion." 
    puts "Start processing deletions..." 

# Loop through matching artifacts and delete them. Prompt user 
# for each deletion. 

    number_processed = 0 
    number_deleted = 0 
    affirmative_answer = "Y" 

    recycle_bin_query_results.each do | this_recycle_bin_item | 

    number_processed += 1 
    puts "Processing deletion for item #{number_processed} of #{number_recycle_bin_items}." 

    item_formatted_id = this_recycle_bin_item["ID"] 
    item_name = this_recycle_bin_item["Name"] 
    item_type = this_recycle_bin_item["Type"] 
    puts "Deleting Item #{item_formatted_id}, #{item_type}: #{item_name}..." 
    puts this_recycle_bin_item["_ref"] 
    really_delete = [(print "Really delete? [Y/n]:"), gets.rstrip][1] 

    if really_delete == affirmative_answer then 
     begin 
     delete_result = @rally.delete(this_recycle_bin_item["_ref"]) 
     puts "DELETED #{item_formatted_id}: #{item_name}" 
     puts delete_result 
     number_deleted += 1 
     rescue => ex 
     puts "Error occurred trying to delete: #{item_formatted_id}: #{item_name}" 
     puts ex.backtrace 
     end 
    else 
     puts "Did NOT delete #{item_formatted_id}: #{item_name}." 
    end 
    end 

    puts 
    puts "Deleted a total of #{number_deleted} items from the Recycle Bin." 
    puts "Complete!" 

end 
相關問題