class OhBoshWillItFit::Resource
Attributes
cpus[RW]
disk[RW]
error[RW]
instance_type[RW]
ram[RW]
size[RW]
total_cpus[RW]
total_disk[RW]
total_ram[RW]
Public Class Methods
from_file(deployment_path)
click to toggle source
# File lib/ohboshwillitfit/resource.rb, line 12 def self.from_file(deployment_path) resource_pools = YAML.load_file(deployment_path)["resource_pools"] resource_pools.map do |pool| resource = self.new resource.size = pool["size"] resource.instance_type = pool["cloud_properties"]["instance_type"] resource end end
map_flavors!(resources, flavors)
click to toggle source
# File lib/ohboshwillitfit/resource.rb, line 22 def self.map_flavors!(resources, flavors) resources.each do |resource| if flavor = resource.find_flavor(flavors) resource.apply_flavor(flavor) else resource.error = "Not a valid flavor/instance_type" end end end
resource_totals(resources)
click to toggle source
# File lib/ohboshwillitfit/resource.rb, line 32 def self.resource_totals(resources) totals = { "ram" => 0, "disk" => 0, "cpus" => 0, "instances" => 0, "volumes" => 0 } resources.each do |resource| totals["ram"] += resource.total_ram if resource.total_ram totals["cpus"] += resource.total_cpus if resource.total_cpus totals["disk"] += resource.total_disk if resource.total_disk totals["instances"] += resource.size totals["volumes"] += resource.size # one boot volume per VM end totals end
Public Instance Methods
apply_flavor(flavor)
click to toggle source
# File lib/ohboshwillitfit/resource.rb, line 48 def apply_flavor(flavor) self.ram = flavor.ram self.disk = flavor.disk self.cpus = flavor.vcpus update_totals! end
find_flavor(flavors)
click to toggle source
# File lib/ohboshwillitfit/resource.rb, line 44 def find_flavor(flavors) flavors.find { |flavor| flavor.name == instance_type } end
update_totals!()
click to toggle source
# File lib/ohboshwillitfit/resource.rb, line 55 def update_totals! self.total_ram = size * ram self.total_disk = size * disk self.total_cpus = size * cpus end