class Fog::Compute::ProfitBricks::Server

Attributes

options[RW]

Public Class Methods

new(attributes = {}) click to toggle source
Calls superclass method
# File lib/fog/profitbricks/models/compute/server.rb, line 42
def initialize(attributes = {})
  super
end

Public Instance Methods

attach_cdrom(cdrom_image_id) click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 107
def attach_cdrom(cdrom_image_id)
  requires :datacenter_id, :id

  data = service.attach_cdrom(datacenter_id, id, cdrom_image_id)

  flatten(data.body)
end
attach_volume(storage_id) click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 84
def attach_volume(storage_id)
  requires :datacenter_id, :id

  data = service.attach_volume(datacenter_id, id, storage_id)
  flatten(data.body)
end
delete() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 147
def delete
  requires :datacenter_id, :id
  service.delete_server(datacenter_id, id)
  true
end
detach_cdrom(cdrom_id) click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 122
def detach_cdrom(cdrom_id)
  requires :datacenter_id, :id

  service.detach_cdrom(datacenter_id, id, cdrom_id)
  true
end
detach_volume(storage_id) click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 100
def detach_volume(storage_id)
  requires :datacenter_id, :id

  service.detach_volume(datacenter_id, id, storage_id)
  true
end
get_attached_cdrom(cdrom_image_id) click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 115
def get_attached_cdrom(cdrom_image_id)
  requires :datacenter_id, :id

  data = service.get_attached_cdrom(datacenter_id, id, cdrom_image_id)
  flatten(data.body)
end
get_attached_volume(volume_id) click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 91
def get_attached_volume(volume_id)
  requires :datacenter_id, :id

  data = service.get_attached_volume(datacenter_id, id, volume_id)
  volume = data.body
  volume['datacenter_id'] = datacenter_id
  flatten(data.body)
end
list_cdroms() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 180
def list_cdroms
  requires :datacenter_id, :id

  result = service.list_attached_cdroms(datacenter_id, id)

  cdroms = result.body['items'].each { |cdrom| cdrom['datacenter_id'] = datacenter_id }
  result.body['items'] = cdroms

  result.body
end
list_nics() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 191
def list_nics
  requires :datacenter_id, :id
  service.nics.all(datacenter_id, id)
end
list_volumes() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 169
def list_volumes
  requires :datacenter_id, :id

  result = service.list_attached_volumes(datacenter_id, id)

  volumes = result.body['items'].each { |volume| volume['datacenter_id'] = datacenter_id }
  result.body['items'] = volumes

  result.body
end
reboot() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 129
def reboot
  requires :datacenter_id, :id
  service.reboot_server(datacenter_id, id)
  true
end
reload() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 153
def reload
  requires :datacenter_id, :id

  data = begin
    collection.get(datacenter_id, id)
  rescue Excon::Errors::SocketError
    nil
  end

  return unless data

  new_attributes = data.attributes
  merge_attributes(new_attributes)
  self
end
running?() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 200
def running?
  vm_state == 'RUNNING'
end
save() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 46
def save
  requires :datacenter_id, :name, :cores, :ram

  properties = {}
  properties[:name]             = name if name
  properties[:cores]            = cores if cores
  properties[:ram]              = ram if ram
  properties[:availabilityZone] = availability_zone if availability_zone
  properties[:bootVolume]       = boot_volume if boot_volume
  properties[:bootCdrom]        = boot_cdrom if boot_cdrom
  properties[:cpuFamily]        = cpu_family if cpu_family

  entities = {}
  entities[:volumes] = get_volumes(volumes) if volumes

  entities[:nics] = get_nics(nics) if nics

  data = service.create_server(datacenter_id, properties, entities)
  merge_attributes(flatten(data.body))
  true
end
shutoff?() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 196
def shutoff?
  vm_state == 'SHUTOFF'
end
start() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 135
def start
  requires :datacenter_id, :id
  service.start_server(datacenter_id, id)
  true
end
stop() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 141
def stop
  requires :datacenter_id, :id
  service.stop_server(datacenter_id, id)
  true
end
update() click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 68
def update
  requires :datacenter_id, :id

  properties = {}
  properties[:name]             = name if name
  properties[:cores]            = cores if cores
  properties[:ram]              = ram if ram
  properties[:availabilityZone] = availability_zone if availability_zone
  properties[:cpuFamily]        = cpu_family if cpu_family
  properties[:allowReboot]      = allow_reboot if allow_reboot

  data = service.update_server(datacenter_id, id, properties)
  merge_attributes(flatten(data.body))
  true
end

Private Instance Methods

get_firewall_rules(firewall_rules) click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 244
def get_firewall_rules(firewall_rules)
  items = []
  for firewall_rule in firewall_rules do
    item = {}
    item[:name]           = firewall_rule[:name] if firewall_rule.key?(:name)
    item[:protocol]       = firewall_rule[:protocol] if firewall_rule.key?(:protocol)
    item[:sourceMac]      = firewall_rule[:source_mac] if firewall_rule.key?(:source_mac)
    item[:sourceIp]       = firewall_rule[:source_ip] if firewall_rule.key?(:source_ip)
    item[:targetIp]       = firewall_rule[:target_ip] if firewall_rule.key?(:target_ip)
    item[:portRangeStart] = firewall_rule[:port_range_start] if firewall_rule.key?(:port_range_start)
    item[:portRangeEnd]   = firewall_rule[:port_range_end] if firewall_rule.key?(:port_range_end)
    item[:icmpType]       = firewall_rule[:icmp_type] if firewall_rule.key?(:icmp_type)
    item[:icmpCode]       = firewall_rule[:icmp_code] if firewall_rule.key?(:icmp_code)
    items << { :properties => item }
  end
  { :firewallrules => { :items => items } }
end
get_nics(nics) click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 225
def get_nics(nics)
  items = []
  for nic in nics do
    firewall_rules = nil
    item = {}
    item[:name]           = nic[:name] if nic.key?(:name)
    item[:ips]            = nic[:ips] if nic.key?(:ips)
    item[:dhcp]           = nic[:dhcp] if nic.key?(:dhcp)
    item[:lan]            = nic[:lan] if nic.key?(:lan)
    item[:firewallActive] = nic[:firewall_active] if nic.key?(:firewall_active)
    if nic[:firewall_rules]
      firewall_rules = get_firewall_rules(nic[:firewall_rules])
      item[:firewallActive] = true
    end
    items << { :properties => item, :entities => firewall_rules }
  end
  { :items => items }
end
get_volumes(volumes) click to toggle source
# File lib/fog/profitbricks/models/compute/server.rb, line 206
def get_volumes(volumes)
  items = []

  for volume in volumes do
    item = {}
    item[:name] = volume[:name]
    item[:size] = volume[:size]
    item[:type] = volume[:type]
    item[:bus] = volume[:bus] || 'VIRTIO'
    item[:image] = volume[:image]
    item[:imageAlias] = volume[:image_alias]
    item[:imagePassword] = volume[:image_password]
    item[:sshKeys] = volume[:ssh_keys]
    item[:licenceType] = volume[:licence_type]
    items << { :properties => item }
  end
  { :items => items }
end