class TortoiseLabs::VPS

VPS

Attributes

disk[R]
id[R]
ips[R]
mac[R]
memory[R]
name[R]
nickname[R]
node[R]
swap[R]
user[R]

Public Class Methods

get(id) click to toggle source
# File lib/tortoiselabs/vps.rb, line 220
def self.get(id)
  vpshash = JSON.parse(TortoiseLabs::Client.get("/vps/#{id}"))["service"]
  self.new(vpshash)
end
list() click to toggle source

Class methods

# File lib/tortoiselabs/vps.rb, line 184
def self.list
  json = JSON.parse(TortoiseLabs::Client.get("/vps/list"))
  return nil if json.empty?
  
  vpses = Hash.new
  json["vpslist"].each do |vps|
    obj = self.new(vps)
    vpses[obj.nickname] = obj
  end
  
  vpses
end
new(vps) click to toggle source

Instance methods

# File lib/tortoiselabs/vps.rb, line 50
def initialize(vps)
  @node, @name, @mac, @memory, @disk = vps["node"], vps["name"],  
    vps["mac"], vps["memory"], vps["disk"]
    
  @nickname, @id, @swap, @user = vps["nickname"], vps["id"], 
    vps["swap"], vps["user"]
    
  @ips = Hash.new
  vps["ips"].each do |iphash|
    obj = IP.new(iphash)
    @ips[obj.ip] = obj
  end
end
plans() click to toggle source
# File lib/tortoiselabs/vps.rb, line 204
def self.plans
  result = JSON.parse(TortoiseLabs::Client.get("/vps/signup"))
  plans = Array.new
  result["resource_plans"].each do |p|
    obj = Plan.new(p["id"], p["disk"], p["memory"], p["name"], 
      p["price_btc"], p["price_usd"], p["swap"])
    plans << obj
  end
  plans
end
regions() click to toggle source
# File lib/tortoiselabs/vps.rb, line 197
def self.regions
  result = JSON.parse(TortoiseLabs::Client.get("/vps/signup"))["regions"]
  regions = Array.new
  result.each { |r| regions << Region.new(r["id"], r["name"]) }
  regions
end
signup(regionid, planid) click to toggle source
# File lib/tortoiselabs/vps.rb, line 215
def self.signup(regionid, planid)
  result = TortoiseLabs::Client.post("/vps/signup",
    {:region => regionid, :plan => planid})
end

Public Instance Methods

create() click to toggle source
# File lib/tortoiselabs/vps.rb, line 121
def create
  result = TortoiseLabs::Client.get("/vps/#{@id}/create")
  result.parsed_response["job"]
end
delete_iso(isoid) click to toggle source
# File lib/tortoiselabs/vps.rb, line 177
def delete_iso(isoid)
  result = TortoiseLabs::Client.post("/vps/#{@id}/hvmiso/#{isoid}/delete")
  hvm
end
deploy(image, rootpass, arch = "x86_64") click to toggle source
# File lib/tortoiselabs/vps.rb, line 93
def deploy(image, rootpass, arch = "x86_64")
  # arch can be either x86_64 or i386
  # Image is one of the values returned by the templates method above
  
  unless image =~ /_login\.xml$/i
    image = image + "_login.xml"
  end
  
  result = TortoiseLabs::Client.post("/vps/#{@id}/deploy", 
    {:imagename => image, :rootpass => rootpass, :arch => arch})
  jobs
end
destroy() click to toggle source
# File lib/tortoiselabs/vps.rb, line 111
def destroy
  result = TortoiseLabs::Client.get("/vps/#{@id}/destroy")
  result.parsed_response["job"]
end
hvm() click to toggle source
# File lib/tortoiselabs/vps.rb, line 147
def hvm
  result = TortoiseLabs::Client.get("/vps/#{@id}/hvm").parsed_response
  JSON.parse(result)["isolist"]
end
jobs() click to toggle source
# File lib/tortoiselabs/vps.rb, line 131
def jobs
  res = TortoiseLabs::Client.get("/vps/#{@id}/jobs.json").parsed_response
  
  jobs = Hash.new
  res.each do |jobhash|
    begin
      obj = Job.new(jobhash)
      jobs[obj.id] = obj
    rescue NoMethodError => err
      # occurs when there are no jobs
    end
  end
  
  jobs
end
monitoring=(boolean) click to toggle source
# File lib/tortoiselabs/vps.rb, line 74
def monitoring=(boolean)
  if boolean
    result = TortoiseLabs::Client.get("/vps/#{@id}/monitoring/enable")
  else
    result = TortoiseLabs::Client.get("/vps/#{@id}/monitoring/disable")
  end
  boolean
end
monitoring?() click to toggle source
# File lib/tortoiselabs/vps.rb, line 83
def monitoring?
  vps = JSON.parse(TortoiseLabs::Client.get("/vps/#{id}"))
  vps["service"]["monitoring"]
end
new_iso(isoname, isouri) click to toggle source
# File lib/tortoiselabs/vps.rb, line 171
def new_iso(isoname, isouri)
  result = TortoiseLabs::Client.post("/vps/#{@id}/hvmiso/new", 
    {:isoname => isoname, :isouri => isouri})
  hvm
end
nickname=(newnickname) click to toggle source
# File lib/tortoiselabs/vps.rb, line 68
def nickname=(newnickname)
  options = {:nickname => newnickname}
  result = TortoiseLabs::Client.post("/vps/#{@id}/setnickname",  options)
  @nickname = result["nickname"]
end
powercycle() click to toggle source
# File lib/tortoiselabs/vps.rb, line 126
def powercycle
  result = TortoiseLabs::Client.get("/vps/#{@id}/powercycle")
  result.parsed_response["job"]
end
running?() click to toggle source
# File lib/tortoiselabs/vps.rb, line 106
def running?
  result = TortoiseLabs::Client.get("/vps/#{@id}/status.json")
  result.parsed_response["running"]
end
set_boot_order(bootorder) click to toggle source
# File lib/tortoiselabs/vps.rb, line 158
def set_boot_order(bootorder)
  result = TortoiseLabs::Client.post("/vps/#{@id}/hvm/setbootorder",
    {:bootorder => bootorder})
  result.parsed_response["isolist"]
end
set_iso(isoid) click to toggle source
# File lib/tortoiselabs/vps.rb, line 152
def set_iso(isoid)
  result = TortoiseLabs::Client.post("/vps/#{@id}/hvm/setiso", 
    {:isoid => isoid})
  hvm
end
set_nic_type(nictype) click to toggle source
# File lib/tortoiselabs/vps.rb, line 164
def set_nic_type(nictype)
  # nictype can be e1000, virtio-net or rtl8139
  result = TortoiseLabs::Client.post("/vps/#{@id}/hvm/setnictype",
    {:nictype => nictype})
  hvm
end
shutdown() click to toggle source
# File lib/tortoiselabs/vps.rb, line 116
def shutdown
  result = TortoiseLabs::Client.get("/vps/#{@id}/shutdown")
  result.parsed_response["job"]
end
templates() click to toggle source
# File lib/tortoiselabs/vps.rb, line 88
def templates
  result = TortoiseLabs::Client.get("/vps/#{@id}/deploy")
  JSON.parse(result)["templates"]
end
to_s() click to toggle source
# File lib/tortoiselabs/vps.rb, line 64
def to_s
  @nickname
end