diff --git a/tools/copy_reports_structure.rb b/tools/copy_reports_structure.rb index 68bf2739d2d..d03842d1945 100644 --- a/tools/copy_reports_structure.rb +++ b/tools/copy_reports_structure.rb @@ -10,7 +10,7 @@ def find_group(group_name) end def duplicate_for_group(source_group_name, destination_group_name) - puts "Copying report structure from '#{source_group_name}' group to ' #{destination_group_name}'" + puts "Copying report structure from '#{source_group_name}' group to ' #{destination_group_name}' ..." source_group = find_group(source_group_name) destination_group = find_group(destination_group_name) destination_group.settings = source_group.settings @@ -23,7 +23,7 @@ def duplicate_for_group(source_group_name, destination_group_name) def duplicate_for_role(source_group_name, destination_role_name) - puts "Starting to copy report structure from group '#{source_group_name}' to role ' #{destination_role_name}'" + puts "Copying report structure from group '#{source_group_name}' to role ' #{destination_role_name}' ..." source_group = find_group(source_group_name) destination_role = MiqUserRole.where(:name => destination_role_name) raise "MiqUserRole '#{destination_role_name}' not found" if destination_role.nil? @@ -51,25 +51,34 @@ def duplicate_for_role(source_group_name, destination_role_name) opt :source_group, "Source group to take report structure from", :short => "s", :type => :string opt :group, "Destination group", :short => "g", :type => :string opt :role, "Destination role", :short => "r", :type => :string - opt :default_group, "Group to reset reports structure to default", :short => "d", :type => :string - opt :default_role, "Role to reset reports structure to default", :short => "p", :type => :string + opt :delete_group, "Group to reset reports structure to default", :short => "d", :type => :string + opt :delete_role, "Role to reset reports structure to default", :short => "p", :type => :string end if opts[:source_group_given] - msg = ":source_group argument can not be used with :default_group" if opts[:default_group_given] - msg ||= ":source_group argument can not be used with :default_role" if opts[:default_role_given] + msg = ":source_group argument can not be used with :delete_group" if opts[:delete_group_given] + msg ||= ":source_group argument can not be used with :delete_role" if opts[:delete_role_given] msg ||= "either :group or :role arguments requiered" unless opts[:group_given] || opts[:role_given] Trollop.die(msg) unless msg.nil? - duplicate_for_group(opts[:source_group], opts[:group]) if opts[:group_given] duplicate_for_role(opts[:source_group], opts[:role]) if opts[:role_given] else - + unless opts[:delete_group_given] || opts[:delete_role_given] + Trollop.die("use either :delete_group or :delete_role parameter for resetting report structure to default") + end + reset_for_group(opts[:delete_group]) if opts[:delete_group_given] + reset_for_role(opts[:delete_role_given]) if opts[:delete_role_given] end -def reset_for_group(group) - +def reset_for_group(group_name) + puts "Removing custom report structure for group '#{group_name}'..." + group = find_group(group_name) + group.settings = nil + group.save + puts "Succsefully removed custom report structure for group '#{group_name}'" +rescue => e + $stderr.puts e.message end def reset_for_role(role)