class Fog::Compute::SakuraCloud::Servers

Public Instance Methods

all() click to toggle source
# File lib/fog/sakuracloud/models/compute/servers.rb, line 10
def all
  load service.list_servers.body['Servers']
end
create(options = {}) click to toggle source
# File lib/fog/sakuracloud/models/compute/servers.rb, line 26
def create(options = {})
  user = options[:user] || 'root'
  Fog::Logger.warning("Create Server")
  name = options[:name] ? options[:name] : Fog::UUID.uuid
  data = service.create_server(options).body["Server"]
  server = service.servers.new
  server.merge_attributes(data)

  if options[:volume]
    disk = create_and_attach_volume(server, options)
    server.reload
  end
  server.boot if options[:boot]
  server
end
get(id) click to toggle source
# File lib/fog/sakuracloud/models/compute/servers.rb, line 14
def get(id)
  all.find { |f| f.id == id }
rescue Fog::Errors::NotFound
  nil
end
regist_interface_to_server(id) click to toggle source
# File lib/fog/sakuracloud/models/compute/servers.rb, line 20
def regist_interface_to_server(id)
  sv = get(id)
  sv.regist_interface
  sv
end

Private Instance Methods

create_and_attach_volume(server, options) click to toggle source
# File lib/fog/sakuracloud/models/compute/servers.rb, line 43
def create_and_attach_volume(server, options)
    Fog::Logger.warning("Create Volume")
    sakuracloud_api_token        = options[:sakuracloud_api_token] || Fog.credentials[:sakuracloud_api_token]
    sakuracloud_api_token_secret = options[:sakuracloud_api_token_secret] || Fog.credentials[:sakuracloud_api_token_secret]
    size_mb = options[:volume][:size_mb].to_i || 20480
    volume = Fog::Volume::SakuraCloud.new(:sakuracloud_api_token => sakuracloud_api_token, :sakuracloud_api_token_secret => sakuracloud_api_token_secret)
    disk = volume.disks.create :name => Fog::UUID.uuid,
                        :plan  => options[:volume][:diskplan].to_i,
                        :source_archive => options[:volume][:sourcearchive].to_s,
                        :size_mb => size_mb
    Fog::Logger.warning("Waiting disk until available")
    disk.wait_for { availability == 'available' }
    volume.attach_disk(disk.id, server.id)
    disk_attached?(server, disk.id)
    Fog::Logger.warning("Modifing disk")
    volume.configure_disk(disk.id, options[:sshkey])
    volume.register_note_to_disk(disk.id, options[:startup_script]) if options[:startup_script]
    disk
end
disk_attached?(server, disk_id) click to toggle source
# File lib/fog/sakuracloud/models/compute/servers.rb, line 63
def disk_attached?(server, disk_id)
  until server.disks.find {|s| disk_id.to_s}
    print '.'
    sleep 2
    server.reload
  end
end