Class: Cleanfb::Clean

Inherits:
Object
  • Object
show all
Defined in:
lib/cleanfb.rb

Instance Method Summary collapse

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