Class: Fog::Compute::Vsphere::Volumes

Inherits:
Fog::Collection
  • Object
show all
Defined in:
lib/fog/vsphere/models/compute/volumes.rb

Instance Method Summary collapse

Instance Method Details

#all(_filters = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/fog/vsphere/models/compute/volumes.rb', line 11

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

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

#get(id) ⇒ Object



27
28
29
# File 'lib/fog/vsphere/models/compute/volumes.rb', line 27

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

#new(attributes = {}) ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/fog/vsphere/models/compute/volumes.rb', line 31

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

    super({ server_id: server_id, datastore: datastore }.merge!(attributes))
  else
    super
  end
end

#serverObject



42
43
44
45
# File 'lib/fog/vsphere/models/compute/volumes.rb', line 42

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

#server=(new_server) ⇒ Object



47
48
49
# File 'lib/fog/vsphere/models/compute/volumes.rb', line 47

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