Files

Class/Module Index [+]

Quicksearch

Fog::Vcloud::Compute::Server

Public Instance Methods

add_disk(size) click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 127
def add_disk(size)
  if @disk_change == :deleted
    raise RuntimeError, "Can't add a disk w/o saving changes or reloading"
  else
    load_unless_loaded!
    @disk_change = :added

    @add_disk = {
      :'rasd:HostResource' => {:vcloud_capacity => size},
      :'rasd:AddressOnParent' =>  (disk_mess.map { |dm| dm[:'rasd:AddressOnParent'] }.sort.last.to_i + 1).to_s,
      :'rasd:ResourceType' => '17'
    }
  end
  true
end
cpus() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 96
def cpus
  if cpu_mess
    { :count => cpu_mess[:"rasd:VirtualQuantity"].to_i,
      :units => cpu_mess[:"rasd:AllocationUnits"] }
  end
end
cpus=(qty) click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 103
def cpus=(qty)
  @changed = true
  cpu_mess[:"rasd:VirtualQuantity"] = qty.to_s
end
delete() click to toggle source
Alias for: destroy
delete_disk(number) click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 143
def delete_disk(number)
  if @disk_change == :added
    raise RuntimeError, "Can't delete a disk w/o saving changes or reloading"
  else
    load_unless_loaded!
    unless number == 0
      @disk_change = :deleted
      @remove_disk = number
    end
  end
  true
end
description=(description) click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 156
def description=(description)
  @description_changed = true unless attributes[:description] == description || attributes[:description] == nil
  attributes[:description] = description
end
destroy() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 207
def destroy
  if on?
    undeploy
    wait_for { off? }
  end
  wait_for { off? } # be sure..
  wait_for { ready? } # be doubly sure..
  sleep 2 # API lies. need to give it some time to be happy.
  connection.delete_vapp(href).body[:status] == "running"
end
Also aliased as: delete
disks() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 121
def disks
  disk_mess.map do |dm|
    { :number => dm[:"rasd:AddressOnParent"], :size => dm[:"rasd:VirtualQuantity"].to_i, :resource => dm[:"rasd:HostResource"] }
  end
end
friendly_status() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 28
def friendly_status
  load_unless_loaded!
  case status
  when '0'
    'creating'
  when '8'
    'off'
  when '4'
    'on'
  else
    'unkown'
  end
end
graceful_restart() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 79
def graceful_restart
  requires :href
  shutdown
  wait_for { off? }
  power_on
end
ip_address() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 23
def ip_address
  load_unless_loaded!
  vm[0][:NetworkConnectionSection][:NetworkConnection][:IpAddress]
end
memory() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 108
def memory
  if memory_mess
    { :amount => memory_mess[:"rasd:VirtualQuantity"].to_i,
      :units => memory_mess[:"rasd:AllocationUnits"] }
  end
end
memory=(amount) click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 115
def memory=(amount)
  @changed = true
  @update_memory_value = amount
  amount
end
name=(new_name) click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 91
def name=(new_name)
  attributes[:name] = new_name
  @changed = true
end
off?() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 53
def off?
  reload_status # always ensure we have the correct status
  status == '8'
end
on?() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 48
def on?
  reload_status # always ensure we have the correct status
  status == '4'
end
power_off() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 62
def power_off
  power_operation( :power_off => :powerOff )
end
power_on() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 58
def power_on
  power_operation( :power_on => :powerOn )
end
power_reset() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 70
def power_reset
  power_operation( :power_reset => :reset )
end
ready?() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 42
def ready?
  reload_status # always ensure we have the correct status
  running_tasks = tasks && tasks.flatten.any? {|ti| ti.kind_of?(Hash) && ti[:status] == 'running' }
  status != '0' && !running_tasks # 0 is provisioning, and no running tasks
end
reload() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 166
def reload
  reset_tracking
  super
end
save() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 171
def save
  if new_record?
    #Lame ...
    raise RuntimeError, "Should not be here"
  else
    if on?
      if @changed
        raise RuntimeError, "Can't save cpu, name or memory changes while the VM is on."
      end
    end
    if @update_memory_value
      memory_mess[:"rasd:VirtualQuantity"] = @update_memory_value.to_s
      connection.configure_vm_memory(memory_mess)
    end
    if @disk_change == :deleted
      data = disk_mess.delete_if do |vh|
        vh[:'rasd:ResourceType'] == '17' &&
          vh[:'rasd:AddressOnParent'].to_s == @remove_disk.to_s
      end
      connection.configure_vm_disks(vm_href, data)
    end
    if @disk_change == :added
      data = disk_mess
      data << @add_disk
      connection.configure_vm_disks(vm_href, data)
    end
    if @name_changed || @description_changed
      edit_uri = links.select {|i| i[:rel] == 'edit'}
      edit_uri = edit_uri.kind_of?(Array) ? edit_uri.flatten[0][:href] : edit_uri[:href]
      connection.configure_vm_name_description(edit_uri, self.name, self.description)
    end
  end
  reset_tracking
  true
end
shutdown() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 66
def shutdown
  power_operation( :power_shutdown => :shutdown )
end
undeploy() click to toggle source

This is the real power-off operation

# File lib/fog/compute/models/vcloud/server.rb, line 75
def undeploy
  connection.undeploy href
end
vm() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 86
def vm
  load_unless_loaded!
  self.vm_data
end
vm_href() click to toggle source
# File lib/fog/compute/models/vcloud/server.rb, line 219
def vm_href
  load_unless_loaded!
  #require 'pp'
  #pp vm_data
  #vm_data[0][:Link].select {|v| v[:rel] == 'edit'}[0][:href]
  vm_data.kind_of?(Array)? vm_data[0][:href] : vm_data[:href]
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.