class Ropenstack::Compute

Public Instance Methods

action(id, act, *args) click to toggle source

Perform an action on a server on Openstack, by passing an id, and an action, some actions require more data.

E.g. action(id, “reboot”, “hard”)

# File lib/ropenstack/compute.rb, line 75
def action(id, act, *args) 
  data = case act
    when "reboot" then {'reboot' =>{"type" => args[0]}}     
    when "vnc" then {'os-getVNCConsole' => { "type" => "novnc" }} 
    when "stop" then {'os-stop' => 'null'}
    when "start" then {'os-start' => 'null'}
    when "pause" then {'pause' => 'null'}
    when "unpause" then {'unpause' => 'null'}
    when "suspend" then {'suspend' => 'null'}
    when "resume" then {'resume' => 'null'}
    when "create_image" then {'createImage' => {'name' => args[0], 'metadata' => args[1]}} 
    else raise "Invalid Action"
    end
  return post_request(address("/servers/" + id + "/action"), data, @token)
end
create_server(name, image, flavor, networks = nil, keypair = nil, security_group = nil, metadata = nil) click to toggle source

Creates a server on OpenStack.

# File lib/ropenstack/compute.rb, line 42
def create_server(name, image, flavor, networks = nil, keypair = nil, security_group = nil, metadata = nil)
  data = { 
    "server" => { 
      "name" => name,
      "imageRef" => image,
      "flavorRef" => flavor,
    }   
  }
  unless networks.nil?
    data["server"]["networks"] = networks 
  end
  unless keypair.nil?
    data["server"]["key_name"] = keypair
  end
  unless security_group.nil?
    data["server"]["security_group"] = security_group 
  end
  return post_request(address("/servers"), data, @token)
end
delete_image(id) click to toggle source

Delete an image stored on Openstack through the nova endpoint

# File lib/ropenstack/compute.rb, line 102
def delete_image(id)
  uri = URI.parse("http://" + @location.host + ":" + @location.port.to_s + "/v2/images/" + id)
  return delete_request(uri, @token)
end
delete_metadata(id, key) click to toggle source
# File lib/ropenstack/compute.rb, line 152
def delete_metadata(id, key)
  return delete_request(address("/servers/"+id+"/metadata/" + key), @token)
end
delete_server(id) click to toggle source

Deletes a server from Openstack based on an id

# File lib/ropenstack/compute.rb, line 65
def delete_server(id)
  return delete_request(address("/servers/" + id), @token)
end
extensions(ali) click to toggle source

Get a list of Compute Extensions

# File lib/ropenstack/compute.rb, line 124
def extensions(ali)
  if ali.nil?
    return get_request(address("/extensions"), @token)
  else 
    return get_request(address("/extensions/"+ ali), @token)
  end
end
flavors() click to toggle source

Get a list of flavors that Servers can be

# File lib/ropenstack/compute.rb, line 110
def flavors()
  return get_request(address("/flavors/detail"), @token)    
end
images() click to toggle source

Retrieve a list of images from Openstack through the nova endpoint

# File lib/ropenstack/compute.rb, line 94
def images() 
  uri = URI.parse("http://" + @location.host + ":9292/v2/images")
  return get_request(uri, @token)
end
ips(id, network) click to toggle source
# File lib/ropenstack/compute.rb, line 156
def ips(id, network)
  if network.nil?
    return get_request(address("/servers/"+id+"/ips"), @token) 
  else 
    return get_request(address("/servers/"+id+"/ips/" + network), @token) 
  end
end
limits() click to toggle source

Get a tenants compute quotas

# File lib/ropenstack/compute.rb, line 117
def limits()
  return get_request(address("/limits"), @token)
end
metadata(id, key) click to toggle source
# File lib/ropenstack/compute.rb, line 132
def metadata(id, key)
  if key.nil?
    return get_request(address("/servers/"+id+"/metadata"), @token)
  else
    return get_request(address("/servers/"+id+"/metadata/" + key), @token)
  end
end
servers(id) → A single server with the id matching the parameter click to toggle source
servers() → All servers visible to the tenant making the request

Gets a list of servers from OpenStack

# File lib/ropenstack/compute.rb, line 24
def servers(id)
  endpoint = "/servers"
  unless id.nil?
    endpoint = endpoint + "/" + id
  end
  return get_request(address(endpoint), @token)
end
servers_detailed() click to toggle source

Gets a more detailed list of servers from openstack.

# File lib/ropenstack/compute.rb, line 35
def servers_detailed()
  return get_request(address("/servers/detail"), @token)
end
set_metadata(id, data, key) click to toggle source
# File lib/ropenstack/compute.rb, line 140
def set_metadata(id, data, key)
  if key.nil?
    return put_request(address("/servers/"+id+"/metadata"), data, @token)
  else
    return put_request(address("/servers/"+id+"/metadata/"+key), data, @token)
  end
end
update_metadata(id, data) click to toggle source
# File lib/ropenstack/compute.rb, line 148
def update_metadata(id, data)
  return post_request(address("/servers/"+id+"/metadata"), data, @token)
end