2013-06-28 06:49:11 -04:00
|
|
|
require 'fog/core/collection'
|
2013-08-27 05:19:54 -04:00
|
|
|
require 'fog/vcloud_director/models/compute/disk'
|
2013-06-28 06:49:11 -04:00
|
|
|
|
|
|
|
module Fog
|
|
|
|
module Compute
|
2013-08-27 05:19:54 -04:00
|
|
|
class VcloudDirector
|
2013-06-28 06:49:11 -04:00
|
|
|
|
2013-07-09 10:55:06 -04:00
|
|
|
class Disks < Collection
|
2013-08-27 05:19:54 -04:00
|
|
|
model Fog::Compute::VcloudDirector::Disk
|
2013-06-28 06:49:11 -04:00
|
|
|
|
2013-07-09 10:55:06 -04:00
|
|
|
attribute :vm
|
2013-06-28 06:49:11 -04:00
|
|
|
|
|
|
|
def create(size)
|
2013-07-09 10:55:06 -04:00
|
|
|
item_list unless @disks
|
2013-08-27 05:19:54 -04:00
|
|
|
data = Fog::Generators::Compute::VcloudDirector::Disks.new(@disks)
|
2013-06-28 06:49:11 -04:00
|
|
|
data.add_hard_disk(size)
|
2013-07-09 10:55:06 -04:00
|
|
|
response = service.put_vm_disks(vm.id, data.disks)
|
2013-07-05 13:10:43 -04:00
|
|
|
service.process_task(response.body)
|
2013-06-28 06:49:11 -04:00
|
|
|
end
|
|
|
|
|
2013-07-09 10:55:06 -04:00
|
|
|
def get_by_id(item_id)
|
|
|
|
item = item_list.detect{ |i| i[:id] == item_id}
|
2013-08-20 09:33:34 -04:00
|
|
|
item.merge!(:all_disks => @disks, :vm => vm) if item
|
2013-07-09 10:55:06 -04:00
|
|
|
item
|
|
|
|
end
|
|
|
|
|
|
|
|
def item_list
|
|
|
|
@disks = service.get_vm_disks(vm.id).body
|
|
|
|
items = @disks[:disks]
|
|
|
|
items.each do |disk|
|
|
|
|
disk[:all_disks] = @disks
|
|
|
|
disk[:vm] = vm
|
|
|
|
end
|
|
|
|
items
|
2013-06-28 06:49:11 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|