Skip to content

Instantly share code, notes, and snippets.

@sustr4
Created December 2, 2015 09:37
Show Gist options
  • Save sustr4/026aeb059ecc87a2f4b5 to your computer and use it in GitHub Desktop.
Save sustr4/026aeb059ecc87a2f4b5 to your computer and use it in GitHub Desktop.
Add-up week-by-week usage of resources, based on YAML exported from Clouditor.
require 'yaml'
data = YAML.load_file("vm_records_export.yml")
# 1 Jan 2014: 1388534400
# 1 Jan 2015: 1420070400
# 1 week: 604800
weeks = Array.new(54, 0.0)
usage = Array.new(53, 0)
memusage = Array.new(53, 0)
machines = Array.new(53, 0)
for i in 0..53
weeks[i] = 1420070400 + i*604800
end
now = Time.now.to_i
data.each { |rec|
rec["runtime"].each { |runtime|
runtime["end_time"] = now if runtime["end_time"] == 0
for i in 0..52
count_start = runtime["start_time"] < weeks[i] ? weeks[i] : runtime["start_time"] < weeks[i+1] ? runtime["start_time"] : weeks[i+1]
count_end = runtime["end_time"] > weeks[i+1] ? weeks[i+1] : runtime["end_time"] > weeks[i] ? runtime["end_time"] : weeks[i]
usage[i] = usage[i] + ((count_end - count_start) / 3600 * rec["vcpu"])
memusage[i] = memusage[i] + ((count_end - count_start) / 3600 * rec["memory"])
machines[i] = machines[i] + 1 if (runtime["start_time"] >= weeks[i] && runtime["start_time"] < weeks[i+1])
end
}
}
print "Week,CPU Hours,MBHrs,New machines\n"
for i in 0..52
print "#{i+1},#{usage[i]},#{memusage[i]},#{machines[i]}\n"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment