Sha256: 601fedaaa1ec77af36dbafefce14a51adb082f86f985a6bc97c1bf7fd96a1159

Contents?: true

Size: 1.54 KB

Versions: 39

Compression:

Stored size: 1.54 KB

Contents

require 'fog/core/model'

module Fog
  module Compute
    class VcloudDirector

      class Disk < Model # there is no lazy_load in disks

        identity  :id

        attribute :address
        attribute :description
        attribute :name
        attribute :resource_sub_type
        attribute :resource_type
        attribute :address_on_parent
        attribute :parent
        attribute :capacity
        attribute :bus_sub_type
        attribute :bus_type

        # TODO Virtual machine disk sizes may only be increased, not decreased.
        def capacity=(new_capacity)
          has_changed = ( capacity != new_capacity.to_i )
          not_first_set = !capacity.nil?
          attributes[:capacity] = new_capacity.to_i
          if not_first_set && has_changed
            data = Fog::Generators::Compute::VcloudDirector::Disks.new(all_disks)
            num_disk = name.scan(/\d+/).first.to_i
            data.modify_hard_disk_size(num_disk, new_capacity)
            response = service.put_disks(attributes[:vm].id, data.disks)
            service.process_task(response.body)
          end
        end

        def all_disks
          attributes[:all_disks] # this is passed at instantiation time
        end

        def destroy
          num_disk = name.scan(/\d+/).first.to_i
          data = Fog::Generators::Compute::VcloudDirector::Disks.new(all_disks)
          data.delete_hard_disk(num_disk)
          response = service.put_disks(attributes[:vm].id, data.disks)
          service.process_task(response.body)
        end

      end
    end
  end
end

Version data entries

39 entries across 39 versions & 2 rubygems

Version Path
fog-maestrodev-1.18.0.20131209090811 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131206115947 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131205181604 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131127194823 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131126183714 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131126122111 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131125111730 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131125083406 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131123105121 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131122203507 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131121075022 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131118164830 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131115184302 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131114200144 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131112185232 lib/fog/vcloud_director/models/compute/disk.rb
fog-maestrodev-1.18.0.20131111203459 lib/fog/vcloud_director/models/compute/disk.rb
fog-1.18.0 lib/fog/vcloud_director/models/compute/disk.rb
fog-1.17.0 lib/fog/vcloud_director/models/compute/disk.rb
fog-1.16.0 lib/fog/vcloud_director/models/compute/disk.rb