Class: Cleanfb::Clean
- Inherits:
-
Object
- Object
- Cleanfb::Clean
- Defined in:
- lib/cleanfb.rb
Instance Method Summary collapse
-
#remove ⇒ Object
Method to remove ALL files backed up on the Puppet masters filebucket from a specified agent.
Instance Method Details
#remove ⇒ Object
Method to remove ALL files backed up on the Puppet masters filebucket from a specified agent.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/cleanfb.rb', line 11 def remove() # return if no args return "Please supply a file" if ARGV[0].nil? || ARGV[0].empty? # return the help output if requested if ((ARGV.include? "-h") or (ARGV.include? "--help")) return "Remove backups of an agent from the Puppet master's filebucket.\n\n/ Usage: cleanfb <client>\n\n options: -h or --help | help and information\n/ -y | defaults all input to yes\n" end arg = ARGV[0] # set ans to yes automatically if -y option if !ARGV.nil? and (ARGV.include? "-y") and ARGV.length > 1 ans = "y" arg = ARGV[1] if (ARGV.index("-y") == 0) # else prompt for answer else print "Remove #{arg} ? y|n: " ans = STDIN.gets.chomp end # if yes, retrieve the files and remove them if ans == "y" || ans == "yes" cmd = `puppet filebucket list -l|grep -i #{arg}` unless (ARGV.include? "-y") test = cmd.split(" ").last multi_match = false cmd.each_line do |line| if !line.include? test multi_match = true end end if multi_match print "Matched multiple hosts. Remove all? y|n: " ans = STDIN.gets.chomp unless ans == "y" || ans == "yes" return "Ending run" end end end unless cmd.nil? || cmd.empty? cmd.each_line do |line| path = "/opt/puppetlabs/puppet/cache/bucket" sum = line.split(" ")[0] start = (sum.scan /\w/).join("/") path += "/" + start[0..15] + sum + "/" puts "Removing " + path #cmd = `rm -rf #{path}` cmd = `mv -f #{path}/content /root/saved_config/#{path}` end else puts "No file #{arg} found." end end return end |