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