Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/ruby
- require 'rubygems'
- require 'json'
- require 'net/http'
- require 'uri'
- require 'pp'
- def ask_db(path)
- puppetdb = "http://localhost:8130"
- uri = URI.parse("#{puppetdb}/#{path}")
- http = Net::HTTP.new(uri.host, uri.port)
- request = Net::HTTP::Get.new(uri.request_uri)
- request.initialize_http_header({"Accept" => "application/json"})
- response = http.request(request)
- return JSON.parse(response.body)
- end
- @facts = {}
- nodelist = ask_db("nodes")
- nodelist.each do |node|
- facts = ask_db("facts/#{node}")
- if not facts["error"].nil?
- next
- end
- begin
- lvmfacts = facts["facts"].select {|k,v| k =~ /^disk_/ }
- pv = facts["facts"].select {|k,v| k =~ /^lvm_.*_free/ }
- rescue
- pp facts
- end
- @facts[node] = {}
- lvmfacts.each do |k,v|
- next unless v =~ /usr/
- #lvm_lv4_vg
- data = v.split(";")
- # ["/usr", "ext4", "4032M", "1165M", "70%used"]
- freespace = data[3].delete('M').to_i
- if freespace <= 1500
- # disk_vg00-lv_usr
- vginfo = facts['facts'].select{|key,value| key =~ /lvm_vg_#{k.split('_')[1].split('-')[0]}_free/ }
- vgfree = vginfo[0][1].delete('M').to_f unless vginfo[0].nil?
- begin
- resizeby = 3000 - freespace
- resizeable = vgfree - resizeby >= 0
- rescue
- resizeable = false
- end
- puts "#{node} - #{k} (#{vgfree}M) - #{data.join(';')} - resize possible: #{resizeable} - resizeby: #{resizeby}"
- end
- #pp data
- end
- end
- #@facts.each do |hostname,hostdata|
- # hostdata.each do |diskname,disk|
- # next if disk["vg"] == "vg00" or disk["vg"] == "VolGroup00"
- ## next if disk["mount"].nil?
- #
- # #if disk["mount"] =~ /^\/$/
- # puts "#{hostname} - '#{disk['mount']}' - #{disk['name']} - #{disk['vg']}"
- # #end
- # end
- #end
- #pp @facts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement