Sha256: 674cc87aa562eb26bf7199a721d7389462e865bd5bb25ebe75245c01e820eb32

Contents?: true

Size: 1.15 KB

Versions: 11

Compression:

Stored size: 1.15 KB

Contents

require 'fog/core/collection'
require 'fog/vsphere/models/compute/volume'

module Fog
  module Compute
    class Vsphere
      class Volumes < Fog::Collection
        attribute :server

        model Fog::Compute::Vsphere::Volume

        def all(filters = {})
          requires :server

          case server
            when Fog::Compute::Vsphere::Server
              load service.list_vm_volumes(server.id)
            when Fog::Compute::Vsphere::Template
              load service.list_template_volumes(server.id)
            else
              raise 'volumes should have vm or template'
            end

          self.each { |volume| volume.server_id = server.id }
          self
        end

        def get(id)
          new service.get_volume(id)
        end

        def new(attributes = {})
          if server
            # Default to the root volume datastore if one is not configured.
            datastore = ! attributes.key?(:datastore) && self.any? ? self.first.datastore : nil

            super({ :server_id => server.id, :datastore => datastore }.merge!(attributes))
          else
            super
          end
        end
     end
    end
  end
end

Version data entries

11 entries across 11 versions & 3 rubygems

Version Path
vagrant-cloudstack-1.1.0 vendor/bundle/gems/fog-1.22.1/lib/fog/vsphere/models/compute/volumes.rb
ns-fog-1.22.11 lib/fog/vsphere/models/compute/volumes.rb
ns-fog-1.22.10 lib/fog/vsphere/models/compute/volumes.rb
ns-fog-1.22.9 lib/fog/vsphere/models/compute/volumes.rb
ns-fog-1.22.8 lib/fog/vsphere/models/compute/volumes.rb
ns-fog-1.22.7 lib/fog/vsphere/models/compute/volumes.rb
ns-fog-1.22.6 lib/fog/vsphere/models/compute/volumes.rb
ns-fog-1.22.4 lib/fog/vsphere/models/compute/volumes.rb
ns-fog-1.22.3 lib/fog/vsphere/models/compute/volumes.rb
ns-fog-1.22.2 lib/fog/vsphere/models/compute/volumes.rb
fog-1.22.1 lib/fog/vsphere/models/compute/volumes.rb