Class: Fog::GoGrid::Compute::Real
- Inherits:
-
Object
- Object
- Fog::GoGrid::Compute::Real
- Defined in:
- lib/fog/go_grid/compute.rb,
lib/fog/go_grid/requests/compute/grid_ip_list.rb,
lib/fog/go_grid/requests/compute/grid_image_list.rb,
lib/fog/go_grid/requests/compute/grid_server_add.rb,
lib/fog/go_grid/requests/compute/grid_server_get.rb,
lib/fog/go_grid/requests/compute/grid_server_list.rb,
lib/fog/go_grid/requests/compute/grid_server_power.rb,
lib/fog/go_grid/requests/compute/common_lookup_list.rb,
lib/fog/go_grid/requests/compute/grid_server_delete.rb,
lib/fog/go_grid/requests/compute/grid_loadbalancer_list.rb
Instance Method Summary collapse
-
#common_lookup_list(lookup, options = {}) ⇒ Object
List options and lookups.
-
#grid_image_list(options = {}) ⇒ Object
List images.
-
#grid_ip_list(options = {}) ⇒ Object
List ips.
-
#grid_loadbalancer_list(options = {}) ⇒ Object
List load balancers.
-
#grid_server_add(image, ip, name, server_ram, options = {}) ⇒ Object
Create a new server.
-
#grid_server_delete(server) ⇒ Object
Delete a server.
-
#grid_server_get(servers) ⇒ Object
Get one or more servers by name.
-
#grid_server_list(options = {}) ⇒ Object
List servers.
-
#initialize(options = {}) ⇒ Real
constructor
A new instance of Real.
- #reload ⇒ Object
- #request(params) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Real
Returns a new instance of Real.
45 46 47 48 49 50 51 52 53 |
# File 'lib/fog/go_grid/compute.rb', line 45 def initialize(={}) @go_grid_api_key = [:go_grid_api_key] @go_grid_shared_secret = [:go_grid_shared_secret] @host = [:host] || "api.gogrid.com" @path = [:path] || "/api" @port = [:port] || 443 @scheme = [:scheme] || 'https' @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", [:persistent]) end |
Instance Method Details
#common_lookup_list(lookup, options = {}) ⇒ Object
List options and lookups
Parameters
-
‘lookup’<~String> - the lookup to be listed
-
options<~Hash>:
-
‘sort’<~String> - column to sort result by in [‘description’, ‘id’, ‘name’]
-
‘asc’<~String> - order to sort in [‘true’,‘false’]
-
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO: docs
18 19 20 21 22 23 |
# File 'lib/fog/go_grid/requests/compute/common_lookup_list.rb', line 18 def common_lookup_list(lookup, ={}) request( :path => 'common/lookup/list', :query => {'lookup' => lookup}.merge!() ) end |
#grid_image_list(options = {}) ⇒ Object
List images
Parameters
-
options<~Hash>:
-
‘datacenter’<~String> - datacenter to limit results to
-
‘isPublic’<~String> - If true only returns public images, in [‘false’, ‘true’]
-
‘num_items’<~Integer> - Number of items to return
-
‘page’<~Integer> - Page index for paginated results
-
‘state’<~String> - state to limit results to, in [‘Saving’, ‘Available’]
-
‘type’<~String> - image type to limit results to
-
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO: docs
21 22 23 24 25 26 |
# File 'lib/fog/go_grid/requests/compute/grid_image_list.rb', line 21 def grid_image_list(={}) request( :path => 'grid/image/list', :query => ) end |
#grid_ip_list(options = {}) ⇒ Object
List ips
Parameters
-
options<~Hash>:
-
‘datacenter’<~String> - datacenter to limit results to
-
‘ip.state’<~String> - state to limit results to in ip.state
-
‘ip.type’<~String> - type to limit results to in ip.type
-
‘num_items’<~Integer> - Number of items to return
-
‘page’<~Integer> - Page index for paginated results
-
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO: docs
20 21 22 23 24 25 |
# File 'lib/fog/go_grid/requests/compute/grid_ip_list.rb', line 20 def grid_ip_list(={}) request( :path => 'grid/ip/list', :query => ) end |
#grid_loadbalancer_list(options = {}) ⇒ Object
List load balancers
Parameters
-
options<~Hash>:
-
‘datacenter’<~String> - datacenter to limit results to
-
‘num_items’<~Integer> - Number of items to return
-
‘page’<~Integer> - Page index for paginated results
-
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO: docs
18 19 20 21 22 23 |
# File 'lib/fog/go_grid/requests/compute/grid_loadbalancer_list.rb', line 18 def grid_loadbalancer_list(={}) request( :path => 'grid/loadbalancer/list', :query => ) end |
#grid_server_add(image, ip, name, server_ram, options = {}) ⇒ Object
Create a new server
Parameters
-
‘image’<~String> - image to use, in grid_image_list
-
‘ip’<~String> - initial public ip for this server
-
‘name’<~String> - name of the server, 20 or fewer characters
-
‘server_ram’<~String> - flavor to use, in common_lookup_list(‘server.ram’)
-
‘options’<~Hash>:
-
‘description’<~String> - description of this server
-
‘isSandbox’<~String> - treat this server as image sandbox? in [‘true’, ‘false’]
-
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO: docs
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/fog/go_grid/requests/compute/grid_server_add.rb', line 21 def grid_server_add(image, ip, name, server_ram, ={}) request( :path => 'grid/server/add', :query => { 'image' => image, 'ip' => ip, 'name' => name, 'server.ram' => server_ram }.merge!() ) end |
#grid_server_delete(server) ⇒ Object
Delete a server
Parameters
-
‘server’<~String> - id or name of server to delete
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO: docs
16 17 18 19 20 21 |
# File 'lib/fog/go_grid/requests/compute/grid_server_power.rb', line 16 def grid_server_delete(server, power) request( :path => 'grid/server/power', :query => {'server' => server} ) end |
#grid_server_get(servers) ⇒ Object
Get one or more servers by name
Parameters
-
‘server’<~String> - id or name of server(s) to lookup
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO: docs
15 16 17 18 19 20 |
# File 'lib/fog/go_grid/requests/compute/grid_server_get.rb', line 15 def grid_server_get(servers) request( :path => 'grid/server/get', :query => {'server' => [*servers]} ) end |
#grid_server_list(options = {}) ⇒ Object
List servers
Parameters
-
options<~Hash>:
-
‘datacenter’<~String> - datacenter to limit results to
-
‘isSandbox’<~String> - If true only returns Image Sandbox servers, in [‘false’, ‘true’]
-
‘num_items’<~Integer> - Number of items to return
-
‘page’<~Integer> - Page index for paginated results
-
‘server.type’<~String> - server type to limit results to
-
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO: docs
20 21 22 23 24 25 |
# File 'lib/fog/go_grid/requests/compute/grid_server_list.rb', line 20 def grid_server_list(={}) request( :path => 'grid/server/list', :query => ) end |
#reload ⇒ Object
55 56 57 |
# File 'lib/fog/go_grid/compute.rb', line 55 def reload @connection.reset end |
#request(params) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/fog/go_grid/compute.rb', line 59 def request(params) params = { :expects => 200, :method => 'GET' }.merge!(params) params[:query] ||= {} params[:query].merge!({ 'api_key' => @go_grid_api_key, 'format' => 'json', 'sig' => Digest::MD5.hexdigest("#{@go_grid_api_key}#{@go_grid_shared_secret}#{Time.now.to_i}"), 'v' => '1.4' }) begin response = @connection.request( params.merge!(:path => "#{@path}/#{params[:path]}") ) rescue Excon::Errors::Error => error raise case error when Excon::Errors::NotFound Fog::GoGrid::Compute::NotFound.slurp(error) else error end end unless response.body.empty? response.body = JSON.parse(response.body) end response end |