module Fog module Generators module Compute module Vcloudng class Disks def self.generate_xml(items=[]) disks = self.class.new(items) disk.generate end def initialize(items=[]) @items = items end def modify_hard_disk_size(disk_number, new_size) found = false @items.each do |item| if item['resource_type'] == 17 if item['element_name'] == "Hard disk #{disk_number}" found = true raise "Hard disk size can't be reduced" if item['capacity'].to_i > new_size.to_i item['capacity'] = new_size end end end raise "Hard disk #{disk_number} not found" unless found true end def generate output = "" output << header @items.each do |item| output << case item['resource_type'] when 6 scsi_controller(item) when 17 hard_disk_item(item) when 5 ide_controller_item(item) end end output << tail output end def header ' ' end def tail '' end def hard_disk_item(opts={}) " #{opts['address_on_parent']} #{opts['description']} #{opts['element_name']} #{opts['instance_id']} #{opts['parent']} 17 " end def ide_controller_item(opts={}) " #{opts['address']} #{opts['description']} #{opts['element_name']} #{opts['instance_id']} 5 " end def scsi_controller(opts={}) " #{opts['address']} #{opts['description']} #{opts['element_name']} #{opts['instance_id']} #{opts['resource_sub_type']} 6 " end end end end end end