class Fog::Compute::CloudSigma::Server

Public Instance Methods

add_nic(vlan=nil, ip_v4_conf=nil, ip_v6_conf=nil, model='virtio', boot_order=nil) click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 165
def add_nic(vlan=nil, ip_v4_conf=nil, ip_v6_conf=nil, model='virtio', boot_order=nil)
  nic_data = {
      'model' => model,
      'vlan' => vlan,
      'ip_v4_conf' => ip_v4_conf,
      'ip_v6_conf' => ip_v6_conf
  }
  if boot_order
    nic_data['boot_order'] = boot_order
  end

  self.nics = self.nics << Nic.new(nic_data)
end
add_private_nic(vlan, model='virtio', boot_order=nil) click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 191
def add_private_nic(vlan, model='virtio', boot_order=nil)
  vlan = vlan.kind_of?(String) ? vlan : vlan.identity
  add_nic(vlan, nil, nil, model, boot_order)
end
add_public_nic(ip_or_conf=:dhcp, model='virtio', boot_order=nil) click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 179
def add_public_nic(ip_or_conf=:dhcp, model='virtio', boot_order=nil)
  case ip_or_conf
    when :dhcp
      add_nic(nil, {:conf => :dhcp}, nil, model, boot_order)
    when :manual
      add_nic(nil, {:conf => :manual}, nil, model, boot_order)
    else
      ip = ip_or_conf.kind_of?(String) ? ip_or_conf : ip_or_conf.identity
      add_nic(nil, {:conf => :static, :ip => ip}, nil, model, boot_order)
  end
end
clone(clone_params={}) click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 94
def clone(clone_params={})
  requires :identity
  response = service.clone_server(identity, clone_params)

  self.class.new(response.body)
end
close_vnc() click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 89
def close_vnc
  requires :identity
  service.close_vnc(identity)
end
create() click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 37
def create
  requires :name, :cpu, :mem, :vnc_password
  data = attributes

  response = service.create_server(data)
  new_attributes = response.body['objects'].first
  merge_attributes(new_attributes)
end
delete()
Alias for: destroy
destroy() click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 56
def destroy
  requires :identity

  service.delete_server(identity)
  true
end
Also aliased as: delete
mount_volume(volume, device = 'virtio', dev_channel = nil, boot_order = nil) click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 101
def mount_volume(volume, device = 'virtio', dev_channel = nil, boot_order = nil)
  unless dev_channel
    specified_channels = self.volumes.map { |v| v.dev_channel }.sort
    if specified_channels
      controller, controller_channel = 0, 0
      max_ctlr, max_chnl = case device
                             when 'ide'
                               [4, 2]
                             else
                               [1024, 5]
                           end

      dev_channel = "#{controller}:#{controller_channel}"
      while specified_channels.include? dev_channel
        controller_channel += 1
        if controller_channel >= max_chnl
          controller_channel = 0
          controller += 1
          if controller >= max_ctlr
            raise Fog::CloudSigma::Errors::Error.new("Max channel reached, cannot attach more")
          end
        end
        dev_channel = "#{controller}:#{controller_channel}"
      end
    else # no other channels specified
      dev_channel = '0:0'
    end
  end

  vol_id = volume.kind_of?(String) ? volume : volume.identity
  mountpoint_data = {
      'drive' => vol_id,
      'device' => device,
      'dev_channel' => dev_channel,
  }

  if boot_order
    mountpoint_data['boot_order'] = boot_order
  end

  self.volumes = self.volumes << MountPoint.new(mountpoint_data)
end
open_vnc() click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 84
def open_vnc
  requires :identity
  service.open_vnc(identity)
end
ready?() click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 80
def ready?
  status == "running"
end
remove_all_nics() click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 206
def remove_all_nics
  self.nics = []
end
remove_nic(mac_or_position) click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 196
def remove_nic(mac_or_position)
  if mac_or_position.kind_of? Fixnum
    self.nics.delete_at(mac_or_position)
    # assign to update attributes
    return self.nics = self.nics
  end

  self.nics = self.nics.reject { |n| n.mac == mac_or_position }
end
save() click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 29
def save
  if persisted?
    update
  else
    create
  end
end
shutdown() click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 75
def shutdown
  requires :identity
  service.stop_server(identity, true)
end
start(start_params={}) click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 65
def start(start_params={})
  requires :identity
  service.start_server(identity, start_params)
end
stop() click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 70
def stop
  requires :identity
  service.stop_server(identity)
end
unmount_all_volumes() click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 161
def unmount_all_volumes
  self.volumes = []
end
unmount_volume(volume_or_position) click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 144
def unmount_volume(volume_or_position)
  if volume_or_position.kind_of? Fixnum
    self.volumes.delete_at(volume_or_position)
    # assign to update attributes
    return self.volumes = self.volumes
  end

  vol_id = volume_or_position.kind_of?(String) ? volume_or_position : volume_or_position.identity
  self.volumes = self.volumes.reject do |v|
    if v.volume.kind_of? Hash
      v.volume['uuid'] == vol_id
    else
      v.volume == vol_id
    end
  end
end
update() click to toggle source
# File lib/fog/cloudsigma/models/server.rb, line 46
def update
  requires :identity, :name, :cpu, :mem, :vnc_password

  data = attributes

  response = service.update_server(identity, data)
  new_attributes = response.body
  merge_attributes(new_attributes)
end