Class: Ropenstack::Compute
- Inherits:
-
OpenstackService
- Object
- Rest
- OpenstackService
- Ropenstack::Compute
- Includes:
- Version2
- Defined in:
- lib/ropenstack/compute.rb
Overview
-
Name: Compute
* Description: Implementation of the Compute API Client in Ruby * Author: Sam ‘Tehsmash’ Betts * Date: 01/15/2013
Defined Under Namespace
Instance Method Summary collapse
-
#action(id, act, *args) ⇒ Object
Perform an action on a server on Openstack, by passing an id, and an action, some actions require more data.
-
#create_server(name, image, flavor, networks = nil, keypair = nil, security_group = nil, metadata = nil) ⇒ Object
Creates a server on OpenStack.
-
#delete_image(id) ⇒ Object
Delete an image stored on Openstack through the nova endpoint.
- #delete_metadata(id, key) ⇒ Object
-
#delete_server(id) ⇒ Object
Deletes a server from Openstack based on an id.
-
#extensions(ali) ⇒ Object
Get a list of Compute Extensions.
-
#flavors ⇒ Object
Get a list of flavors that Servers can be.
-
#images ⇒ Object
Retrieve a list of images from Openstack through the nova endpoint.
- #ips(id, network) ⇒ Object
-
#limits ⇒ Object
Get a tenants compute quotas.
- #metadata(id, key) ⇒ Object
-
#servers(id) ⇒ Object
Gets a list of servers from OpenStack .
-
#servers_detailed ⇒ Object
Gets a more detailed list of servers from openstack.
- #set_metadata(id, data, key) ⇒ Object
- #update_metadata(id, data) ⇒ Object
Methods included from Version2
Methods included from Version2::Extensions::SecurityGroups
#create_security_group, #create_security_group_rule, #destroy_security_group, #destroy_security_group_rule, #security_groups
Methods included from Version2::Extensions::Keypairs
#create_keypair, #delete_keypair, #keypairs
Methods inherited from OpenstackService
Methods inherited from Rest
#build_headers, #build_http, #delete_request, #do_request, #error_manager, #get_request, #post_request, #put_request
Constructor Details
This class inherits a constructor from Ropenstack::OpenstackService
Instance Method Details
#action(id, act, *args) ⇒ Object
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”)
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# 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) ⇒ Object
Creates a server on OpenStack.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/ropenstack/compute.rb', line 42 def create_server(name, image, flavor, networks = nil, keypair = nil, security_group = nil, = 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) ⇒ Object
Delete an image stored on Openstack through the nova endpoint
102 103 104 105 |
# 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) ⇒ Object
152 153 154 |
# File 'lib/ropenstack/compute.rb', line 152 def (id, key) return delete_request(address("/servers/"+id+"/metadata/" + key), @token) end |
#delete_server(id) ⇒ Object
Deletes a server from Openstack based on an id
65 66 67 |
# File 'lib/ropenstack/compute.rb', line 65 def delete_server(id) return delete_request(address("/servers/" + id), @token) end |
#extensions(ali) ⇒ Object
Get a list of Compute Extensions
124 125 126 127 128 129 130 |
# 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 ⇒ Object
Get a list of flavors that Servers can be
110 111 112 |
# File 'lib/ropenstack/compute.rb', line 110 def flavors() return get_request(address("/flavors/detail"), @token) end |
#images ⇒ Object
Retrieve a list of images from Openstack through the nova endpoint
94 95 96 97 |
# 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) ⇒ Object
156 157 158 159 160 161 162 |
# 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 ⇒ Object
Get a tenants compute quotas
117 118 119 |
# File 'lib/ropenstack/compute.rb', line 117 def limits() return get_request(address("/limits"), @token) end |
#metadata(id, key) ⇒ Object
132 133 134 135 136 137 138 |
# File 'lib/ropenstack/compute.rb', line 132 def (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) ⇒ Object
Gets a list of servers from OpenStack
:call-seq:
servers(id) => A single server with the id matching the parameter
servers() => All servers visible to the tenant making the request
24 25 26 27 28 29 30 |
# 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 ⇒ Object
Gets a more detailed list of servers from openstack.
35 36 37 |
# File 'lib/ropenstack/compute.rb', line 35 def servers_detailed() return get_request(address("/servers/detail"), @token) end |
#set_metadata(id, data, key) ⇒ Object
140 141 142 143 144 145 146 |
# File 'lib/ropenstack/compute.rb', line 140 def (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) ⇒ Object
148 149 150 |
# File 'lib/ropenstack/compute.rb', line 148 def (id, data) return post_request(address("/servers/"+id+"/metadata"), data, @token) end |