Sha256: 2583cbf147359297f1c075bd1e3c1c6c69009d529080bbc6f1b06dc599f6d697

Contents?: true

Size: 1.34 KB

Versions: 22

Compression:

Stored size: 1.34 KB

Contents

module Fog
  module Compute
    class Vsphere
      class Volumes < Fog::Collection
        autoload :Volume, File.expand_path('../volume', __FILE__)

        attribute :server_id

        model Fog::Compute::Vsphere::Volume

        def all(filters = {})
          requires :server_id

          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_id
            # 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

        def server
          return nil if server_id.nil?
          service.servers.get(server_id)
        end

        def server=(new_server)
          server_id = new_server.id
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
fog-vsphere-1.7.0.1 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-1.3.0 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-1.2.2 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-1.2.1 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-1.2.0 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-1.1.0 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-1.0.1 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-1.0.0 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.8.1 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.8.0 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.7.0 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.6.4 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.6.3 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.6.2 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.6.1 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.6.0 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.5.0 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.4.0 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.3.0 lib/fog/vsphere/models/compute/volumes.rb
fog-vsphere-0.2.0 lib/fog/vsphere/models/compute/volumes.rb