Class: Fog::Compute::Bluebox::Real
- Inherits:
-
Object
- Object
- Fog::Compute::Bluebox::Real
- Defined in:
- lib/fog/bluebox/compute.rb,
lib/fog/bluebox/requests/compute/get_block.rb,
lib/fog/bluebox/requests/compute/get_blocks.rb,
lib/fog/bluebox/requests/compute/get_product.rb,
lib/fog/bluebox/requests/compute/create_block.rb,
lib/fog/bluebox/requests/compute/get_location.rb,
lib/fog/bluebox/requests/compute/get_products.rb,
lib/fog/bluebox/requests/compute/get_template.rb,
lib/fog/bluebox/requests/compute/reboot_block.rb,
lib/fog/bluebox/requests/compute/destroy_block.rb,
lib/fog/bluebox/requests/compute/get_locations.rb,
lib/fog/bluebox/requests/compute/get_templates.rb,
lib/fog/bluebox/requests/compute/create_template.rb,
lib/fog/bluebox/requests/compute/destroy_template.rb
Instance Method Summary collapse
-
#create_block(product_id, template_id, location_id, options = {}) ⇒ Object
Create a new block.
-
#create_template(block_id, options = {}) ⇒ Object
Create a template from block.
-
#destroy_block(block_id) ⇒ Object
Destroy a block.
-
#destroy_template(id) ⇒ Object
Create a template from block.
-
#get_block(block_id) ⇒ Object
Get details of a block.
-
#get_blocks ⇒ Object
Get list of blocks.
-
#get_location(location_id) ⇒ Object
Get details of a location.
-
#get_locations ⇒ Object
Get list of locations.
-
#get_product(product_id) ⇒ Object
Get details of a product.
-
#get_products ⇒ Object
Get list of products.
-
#get_template(template_id) ⇒ Object
Get details of a template.
-
#get_templates ⇒ Object
Get list of OS templates.
-
#initialize(options = {}) ⇒ Real
constructor
A new instance of Real.
-
#reboot_block(block_id, type = 'SOFT') ⇒ Object
Reboot block.
- #reload ⇒ Object
- #request(params) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Real
Returns a new instance of Real.
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/fog/bluebox/compute.rb', line 64 def initialize(={}) @bluebox_api_key = [:bluebox_api_key] @bluebox_customer_id = [:bluebox_customer_id] @connection_options = [:connection_options] || {} @host = [:bluebox_host] || "boxpanel.bluebox.net" @persistent = [:persistent] || false @port = [:bluebox_port] || 443 @scheme = [:bluebox_scheme] || 'https' @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options) end |
Instance Method Details
#create_block(product_id, template_id, location_id, options = {}) ⇒ Object
Create a new block
Parameters
-
product_id<~String> - ID of block product (size)
-
template_id<~String> - ID of block OS/build template
-
location_id<~String> - ID of deployment location
-
options<~Hash>:
* password<~String> - Password for block
or
* ssh_public_key<~String> - SSH public key * username<~String> - Defaults to deploy
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fog/bluebox/requests/compute/create_block.rb', line 21 def create_block(product_id, template_id, location_id, = {}) unless .has_key?('password') || .has_key?('ssh_public_key') raise ArgumentError, 'Either password or public_key must be supplied' end query = { 'product' => product_id, 'template' => template_id, 'location' => location_id } request( :expects => 200, :method => 'POST', :path => '/api/blocks.json', :query => query, :body => .map {|k,v| "#{CGI.escape(k)}=#{CGI.escape(v)}"}.join('&') ) end |
#create_template(block_id, options = {}) ⇒ Object
Create a template from block
Parameters
-
block_id<~Integer> - Id of block to create template from
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO
15 16 17 18 19 20 21 22 |
# File 'lib/fog/bluebox/requests/compute/create_template.rb', line 15 def create_template(block_id, ={}) request( :expects => 202, :method => 'POST', :path => "api/block_templates.json", :query => {'id' => block_id}.merge!() ) end |
#destroy_block(block_id) ⇒ Object
Destroy a block
Parameters
-
block_id<~Integer> - Id of block to destroy
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
TODO
15 16 17 18 19 20 21 |
# File 'lib/fog/bluebox/requests/compute/destroy_block.rb', line 15 def destroy_block(block_id) request( :expects => 200, :method => 'DELETE', :path => "api/blocks/#{block_id}.json" ) end |
#destroy_template(id) ⇒ Object
Create a template from block
Parameters
-
id<~Integer> - Id of image to destroy
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO
15 16 17 18 19 20 21 |
# File 'lib/fog/bluebox/requests/compute/destroy_template.rb', line 15 def destroy_template(id) request( :expects => 200, :method => 'DELETE', :path => "api/block_templates/#{id}.json" ) end |
#get_block(block_id) ⇒ Object
Get details of a block.
Parameters
-
block_id<~Integer> - Id of block to lookup
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
TODO
15 16 17 18 19 20 21 |
# File 'lib/fog/bluebox/requests/compute/get_block.rb', line 15 def get_block(block_id) request( :expects => 200, :method => 'GET', :path => "api/blocks/#{block_id}.json" ) end |
#get_blocks ⇒ Object
Get list of blocks
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
‘ips’<~Array> - Ip addresses for the block
-
‘id’<~String> - Id of the block
-
‘storage’<~Integer> - Disk space quota for the block
-
‘memory’<~Integer> - RAM quota for the block
-
‘cpu’<~Float> - The fractional CPU quota for this block
-
‘hostname’<~String> - The hostname for the block
-
-
17 18 19 20 21 22 23 |
# File 'lib/fog/bluebox/requests/compute/get_blocks.rb', line 17 def get_blocks request( :expects => 200, :method => 'GET', :path => 'api/blocks.json' ) end |
#get_location(location_id) ⇒ Object
Get details of a location
Parameters
-
location_id<~Integer> - Id of location to lookup
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO
15 16 17 18 19 20 21 |
# File 'lib/fog/bluebox/requests/compute/get_location.rb', line 15 def get_location(location_id) request( :expects => 200, :method => 'GET', :path => "api/locations/#{location_id}.json" ) end |
#get_locations ⇒ Object
Get list of locations
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
‘id’<~String> - UUID of the location
-
‘description’<~String> - Description of the location
-
-
13 14 15 16 17 18 19 |
# File 'lib/fog/bluebox/requests/compute/get_locations.rb', line 13 def get_locations request( :expects => 200, :method => 'GET', :path => 'api/locations.json' ) end |
#get_product(product_id) ⇒ Object
Get details of a product
Parameters
-
product_id<~Integer> - Id of flavor to lookup
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO
15 16 17 18 19 20 21 |
# File 'lib/fog/bluebox/requests/compute/get_product.rb', line 15 def get_product(product_id) request( :expects => 200, :method => 'GET', :path => "api/block_products/#{product_id}.json" ) end |
#get_products ⇒ Object
Get list of products
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
‘id’<~String> - UUID of the product
-
‘description’<~String> - Description of the product
-
‘cost’<~Decimal> - Hourly cost of the product
-
-
14 15 16 17 18 19 20 |
# File 'lib/fog/bluebox/requests/compute/get_products.rb', line 14 def get_products request( :expects => 200, :method => 'GET', :path => 'api/block_products.json' ) end |
#get_template(template_id) ⇒ Object
Get details of a template
Parameters
-
template_id<~Integer> - Id of template to lookup
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
TODO
15 16 17 18 19 20 21 |
# File 'lib/fog/bluebox/requests/compute/get_template.rb', line 15 def get_template(template_id) request( :expects => 200, :method => 'GET', :path => "api/block_templates/#{template_id}.json" ) end |
#get_templates ⇒ Object
Get list of OS templates
Returns
-
response<~Excon::Response>:
-
body<~Array>:
-
‘id’<~String> - UUID of the image
-
‘description’<~String> - Description of the image
-
‘public’<~Boolean> - Public / Private image
-
‘created’<~Datetime> - Timestamp of when the image was created
-
-
15 16 17 18 19 20 21 |
# File 'lib/fog/bluebox/requests/compute/get_templates.rb', line 15 def get_templates request( :expects => 200, :method => 'GET', :path => 'api/block_templates.json' ) end |
#reboot_block(block_id, type = 'SOFT') ⇒ Object
Reboot block
Parameters
-
block_id<~String> - Id of block to reboot
-
type<~String> - Type of reboot, must be in [‘HARD’, ‘SOFT’]
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
TODO
16 17 18 19 20 21 22 |
# File 'lib/fog/bluebox/requests/compute/reboot_block.rb', line 16 def reboot_block(block_id, type = 'SOFT') request( :expects => 200, :method => 'PUT', :path => "api/blocks/#{block_id}/#{'soft_' if type == 'SOFT'}reboot.json" ) end |
#reload ⇒ Object
75 76 77 |
# File 'lib/fog/bluebox/compute.rb', line 75 def reload @connection.reset end |
#request(params) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/fog/bluebox/compute.rb', line 79 def request(params) params[:headers] ||= {} params[:headers].merge!({ 'Authorization' => "Basic #{Base64.encode64([@bluebox_customer_id, @bluebox_api_key].join(':')).delete("\r\n")}" }) begin response = @connection.request(params) rescue Excon::Errors::HTTPStatusError => error raise case error when Excon::Errors::NotFound Fog::Compute::Bluebox::NotFound.slurp(error) else error end end unless response.body.empty? response.body = Fog::JSON.decode(response.body) end response end |