[bbg] simplify by killing parsers and using json
This commit is contained in:
parent
08dcd8f05f
commit
e01ad95ab2
|
@ -1,17 +1,17 @@
|
||||||
module Fog
|
module Fog
|
||||||
module Bluebox
|
module Bluebox
|
||||||
require 'fog/bluebox/models/images'
|
|
||||||
require 'fog/bluebox/requests/get_templates'
|
|
||||||
require 'fog/bluebox/models/flavors'
|
|
||||||
require 'fog/bluebox/requests/get_products'
|
|
||||||
require 'fog/bluebox/models/flavor'
|
require 'fog/bluebox/models/flavor'
|
||||||
require 'fog/bluebox/requests/get_product'
|
require 'fog/bluebox/models/flavors'
|
||||||
require 'fog/bluebox/models/servers'
|
require 'fog/bluebox/models/images'
|
||||||
require 'fog/bluebox/requests/get_blocks'
|
|
||||||
require 'fog/bluebox/models/server'
|
require 'fog/bluebox/models/server'
|
||||||
require 'fog/bluebox/requests/get_block'
|
require 'fog/bluebox/models/servers'
|
||||||
require 'fog/bluebox/requests/create_block'
|
require 'fog/bluebox/requests/create_block'
|
||||||
require 'fog/bluebox/requests/destroy_block'
|
require 'fog/bluebox/requests/destroy_block'
|
||||||
|
require 'fog/bluebox/requests/get_block'
|
||||||
|
require 'fog/bluebox/requests/get_blocks'
|
||||||
|
require 'fog/bluebox/requests/get_product'
|
||||||
|
require 'fog/bluebox/requests/get_products'
|
||||||
|
require 'fog/bluebox/requests/get_templates'
|
||||||
require 'fog/bluebox/requests/reboot_block'
|
require 'fog/bluebox/requests/reboot_block'
|
||||||
|
|
||||||
def self.new(options={})
|
def self.new(options={})
|
||||||
|
@ -69,14 +69,12 @@ module Fog
|
||||||
params[:headers].merge!({
|
params[:headers].merge!({
|
||||||
'Authorization' => "Basic #{Base64.encode64([@bluebox_customer_id, @bluebox_api_key].join(':')).delete("\r\n")}"
|
'Authorization' => "Basic #{Base64.encode64([@bluebox_customer_id, @bluebox_api_key].join(':')).delete("\r\n")}"
|
||||||
})
|
})
|
||||||
case params[:method]
|
|
||||||
when 'DELETE', 'GET', 'HEAD'
|
|
||||||
params[:headers]['Accept'] = 'application/xml'
|
|
||||||
when 'POST', 'PUT'
|
|
||||||
params[:headers]['Content-Type'] = 'application/xml'
|
|
||||||
end
|
|
||||||
|
|
||||||
@connection.request({:host => @host}.merge!(params))
|
response = @connection.request({:host => @host}.merge!(params))
|
||||||
|
unless response.body.empty?
|
||||||
|
response.body = JSON.parse(response.body)
|
||||||
|
end
|
||||||
|
response
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -21,7 +21,7 @@ module Fog
|
||||||
model Fog::Bluebox::Flavor
|
model Fog::Bluebox::Flavor
|
||||||
|
|
||||||
def all
|
def all
|
||||||
data = connection.get_products.body['products']
|
data = connection.get_products.body
|
||||||
load(data)
|
load(data)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ module Fog
|
||||||
model Fog::Bluebox::Image
|
model Fog::Bluebox::Image
|
||||||
|
|
||||||
def all
|
def all
|
||||||
data = connection.get_templates.body['templates']
|
data = connection.get_templates.body
|
||||||
load(data)
|
load(data)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ module Fog
|
||||||
model Fog::Bluebox::Server
|
model Fog::Bluebox::Server
|
||||||
|
|
||||||
def all
|
def all
|
||||||
data = connection.get_blocks.body['blocks']
|
data = connection.get_blocks.body
|
||||||
load(data)
|
load(data)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
module Fog
|
|
||||||
module Parsers
|
|
||||||
module Bluebox
|
|
||||||
|
|
||||||
class CreateBlock < Fog::Parsers::Base
|
|
||||||
|
|
||||||
def reset
|
|
||||||
@response = {}
|
|
||||||
end
|
|
||||||
|
|
||||||
def end_element(name)
|
|
||||||
case name
|
|
||||||
when 'address'
|
|
||||||
@response['ips'] ||= []
|
|
||||||
@response['ips'] << @value
|
|
||||||
when 'memory', 'storage'
|
|
||||||
@response[name] = @value.to_i
|
|
||||||
when 'cpu'
|
|
||||||
@response[name] = @value.to_f
|
|
||||||
when 'id'
|
|
||||||
if @scope == 'product'
|
|
||||||
@response['flavor_id'] = @value
|
|
||||||
else
|
|
||||||
@response[name] = @value
|
|
||||||
end
|
|
||||||
when 'name', 'hostname', 'status', 'text', 'hash'
|
|
||||||
@response[name] = @value
|
|
||||||
when 'template'
|
|
||||||
@response['image_id'] = @value
|
|
||||||
when 'product'
|
|
||||||
@scope = nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def start_element(name, attrs=[])
|
|
||||||
super
|
|
||||||
case name
|
|
||||||
when 'product'
|
|
||||||
@scope = name
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,47 +0,0 @@
|
||||||
module Fog
|
|
||||||
module Parsers
|
|
||||||
module Bluebox
|
|
||||||
|
|
||||||
class GetBlock < Fog::Parsers::Base
|
|
||||||
|
|
||||||
def reset
|
|
||||||
@response = {}
|
|
||||||
end
|
|
||||||
|
|
||||||
def end_element(name)
|
|
||||||
case name
|
|
||||||
when 'address'
|
|
||||||
@response['ips'] ||= []
|
|
||||||
@response['ips'] << @value
|
|
||||||
when 'memory', 'storage'
|
|
||||||
@response[name] = @value.to_i
|
|
||||||
when 'cpu'
|
|
||||||
@response[name] = @value.to_f
|
|
||||||
when 'hostname', 'status'
|
|
||||||
@response[name] = @value
|
|
||||||
when 'id'
|
|
||||||
if @scope == 'product'
|
|
||||||
@response['flavor_id'] = @value
|
|
||||||
else
|
|
||||||
@response[name] = @value
|
|
||||||
end
|
|
||||||
when 'template'
|
|
||||||
@response['image_id'] = @value
|
|
||||||
when 'product'
|
|
||||||
@scope = nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def start_element(name, attrs=[])
|
|
||||||
super
|
|
||||||
case name
|
|
||||||
when 'product'
|
|
||||||
@scope = name
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,33 +0,0 @@
|
||||||
module Fog
|
|
||||||
module Parsers
|
|
||||||
module Bluebox
|
|
||||||
|
|
||||||
class GetBlocks < Fog::Parsers::Base
|
|
||||||
|
|
||||||
def reset
|
|
||||||
@block = {}
|
|
||||||
@response = { 'blocks' => [] }
|
|
||||||
end
|
|
||||||
|
|
||||||
def end_element(name)
|
|
||||||
case name
|
|
||||||
when 'ip'
|
|
||||||
@block['ips'] ||= []
|
|
||||||
@block['ips'] << @value
|
|
||||||
when 'memory', 'storage'
|
|
||||||
@block[name] = @value.to_i
|
|
||||||
when 'cpu'
|
|
||||||
@block[name] = @value.to_f
|
|
||||||
when 'hostname', 'id'
|
|
||||||
@block[name] = @value
|
|
||||||
when 'record'
|
|
||||||
@response['blocks'] << @block
|
|
||||||
@block = {}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,24 +0,0 @@
|
||||||
module Fog
|
|
||||||
module Parsers
|
|
||||||
module Bluebox
|
|
||||||
|
|
||||||
class GetProduct < Fog::Parsers::Base
|
|
||||||
|
|
||||||
def reset
|
|
||||||
@response = {}
|
|
||||||
end
|
|
||||||
|
|
||||||
def end_element(name)
|
|
||||||
case name
|
|
||||||
when 'cost'
|
|
||||||
@response[name] = @value.to_f
|
|
||||||
when 'description', 'id'
|
|
||||||
@response[name] = @value
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,28 +0,0 @@
|
||||||
module Fog
|
|
||||||
module Parsers
|
|
||||||
module Bluebox
|
|
||||||
|
|
||||||
class GetProducts < Fog::Parsers::Base
|
|
||||||
|
|
||||||
def reset
|
|
||||||
@product = {}
|
|
||||||
@response = { 'products' => [] }
|
|
||||||
end
|
|
||||||
|
|
||||||
def end_element(name)
|
|
||||||
case name
|
|
||||||
when 'record'
|
|
||||||
@response['products'] << @product
|
|
||||||
@product = {}
|
|
||||||
when 'cost'
|
|
||||||
@product[name] = @value.to_f
|
|
||||||
when 'description', 'id'
|
|
||||||
@product[name] = @value
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,30 +0,0 @@
|
||||||
module Fog
|
|
||||||
module Parsers
|
|
||||||
module Bluebox
|
|
||||||
|
|
||||||
class GetTemplates < Fog::Parsers::Base
|
|
||||||
|
|
||||||
def reset
|
|
||||||
@template = {}
|
|
||||||
@response = { 'templates' => [] }
|
|
||||||
end
|
|
||||||
|
|
||||||
def end_element(name)
|
|
||||||
case name
|
|
||||||
when 'public'
|
|
||||||
@template[name] = @value
|
|
||||||
when 'id'
|
|
||||||
@template[name] = @value
|
|
||||||
when 'description'
|
|
||||||
@template[name] = @value
|
|
||||||
when 'record'
|
|
||||||
@response['templates'] << @template
|
|
||||||
@template = {}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -2,13 +2,11 @@ module Fog
|
||||||
module Bluebox
|
module Bluebox
|
||||||
class Real
|
class Real
|
||||||
|
|
||||||
require 'fog/bluebox/parsers/create_block'
|
|
||||||
|
|
||||||
# Create a new block
|
# Create a new block
|
||||||
#
|
#
|
||||||
# ==== Parameters
|
# ==== Parameters
|
||||||
# * flavor_id<~Integer> - Id of flavor to create block with
|
# * product_id<~Integer> - Id of product to create block with
|
||||||
# * image_id<~Integer> - Id of template to create block with
|
# * template_id<~Integer> - Id of template to create block with
|
||||||
# * name<~String> - Name of block
|
# * name<~String> - Name of block
|
||||||
# * password<~String> - Password for block
|
# * password<~String> - Password for block
|
||||||
#
|
#
|
||||||
|
@ -16,24 +14,19 @@ module Fog
|
||||||
# * response<~Excon::Response>:
|
# * response<~Excon::Response>:
|
||||||
# * body<~Hash>:
|
# * body<~Hash>:
|
||||||
# TODO
|
# TODO
|
||||||
def create_block(flavor_id, image_id, name, password)
|
def create_block(product_id, template_id, name, password)
|
||||||
data =
|
data = {
|
||||||
<<-DATA
|
'name' => name,
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
'password' => password,
|
||||||
<block>
|
'product' => product_id,
|
||||||
<name>#{name}</name>
|
'template' => template_id
|
||||||
<password>#{password}</password>
|
}
|
||||||
<product type="string">#{flavor_id}</product>
|
|
||||||
<template type="string">#{image_id}</template>
|
|
||||||
</block>
|
|
||||||
DATA
|
|
||||||
|
|
||||||
request(
|
request(
|
||||||
:body => data,
|
:body => data.to_json,
|
||||||
:expects => 200,
|
:expects => 200,
|
||||||
:method => 'POST',
|
:method => 'POST',
|
||||||
:parser => Fog::Parsers::Bluebox::CreateBlock.new,
|
:path => '/api/blocks.json'
|
||||||
:path => '/api/blocks.xml'
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -41,7 +34,7 @@ DATA
|
||||||
|
|
||||||
class Mock
|
class Mock
|
||||||
|
|
||||||
def create_block(flavor_id, image_id, name, password)
|
def create_block(product_id, template_id, name, password)
|
||||||
Fog::Mock.not_implemented
|
Fog::Mock.not_implemented
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ module Fog
|
||||||
request(
|
request(
|
||||||
:expects => 200,
|
:expects => 200,
|
||||||
:method => 'DELETE',
|
:method => 'DELETE',
|
||||||
:path => "api/blocks/#{block_id}.xml"
|
:path => "api/blocks/#{block_id}.json"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,6 @@ module Fog
|
||||||
module Bluebox
|
module Bluebox
|
||||||
class Real
|
class Real
|
||||||
|
|
||||||
require 'fog/bluebox/parsers/get_block'
|
|
||||||
|
|
||||||
# Get details of a block.
|
# Get details of a block.
|
||||||
#
|
#
|
||||||
# ==== Parameters
|
# ==== Parameters
|
||||||
|
@ -17,8 +15,7 @@ module Fog
|
||||||
request(
|
request(
|
||||||
:expects => 200,
|
:expects => 200,
|
||||||
:method => 'GET',
|
:method => 'GET',
|
||||||
:parser => Fog::Parsers::Bluebox::GetBlock.new,
|
:path => "api/blocks/#{block_id}.json"
|
||||||
:path => "api/blocks/#{block_id}.xml"
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,6 @@ module Fog
|
||||||
module Bluebox
|
module Bluebox
|
||||||
class Real
|
class Real
|
||||||
|
|
||||||
require 'fog/bluebox/parsers/get_blocks'
|
|
||||||
|
|
||||||
# Get list of blocks
|
# Get list of blocks
|
||||||
#
|
#
|
||||||
# ==== Returns
|
# ==== Returns
|
||||||
|
@ -19,8 +17,7 @@ module Fog
|
||||||
request(
|
request(
|
||||||
:expects => 200,
|
:expects => 200,
|
||||||
:method => 'GET',
|
:method => 'GET',
|
||||||
:parser => Fog::Parsers::Bluebox::GetBlocks.new,
|
:path => 'api/blocks.json'
|
||||||
:path => 'api/blocks.xml'
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,6 @@ module Fog
|
||||||
module Bluebox
|
module Bluebox
|
||||||
class Real
|
class Real
|
||||||
|
|
||||||
require 'fog/bluebox/parsers/get_product'
|
|
||||||
|
|
||||||
# Get details of a product
|
# Get details of a product
|
||||||
#
|
#
|
||||||
# ==== Parameters
|
# ==== Parameters
|
||||||
|
@ -17,8 +15,7 @@ module Fog
|
||||||
request(
|
request(
|
||||||
:expects => 200,
|
:expects => 200,
|
||||||
:method => 'GET',
|
:method => 'GET',
|
||||||
:parser => Fog::Parsers::Bluebox::GetFlavor.new,
|
:path => "api/block_products/#{flavor_id}.json"
|
||||||
:path => "api/block_products/#{flavor_id}.xml"
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,6 @@ module Fog
|
||||||
module Bluebox
|
module Bluebox
|
||||||
class Real
|
class Real
|
||||||
|
|
||||||
require 'fog/bluebox/parsers/get_products'
|
|
||||||
|
|
||||||
# Get list of products
|
# Get list of products
|
||||||
#
|
#
|
||||||
# ==== Returns
|
# ==== Returns
|
||||||
|
@ -16,8 +14,7 @@ module Fog
|
||||||
request(
|
request(
|
||||||
:expects => 200,
|
:expects => 200,
|
||||||
:method => 'GET',
|
:method => 'GET',
|
||||||
:parser => Fog::Parsers::Bluebox::GetProducts.new,
|
:path => 'api/block_products.json'
|
||||||
:path => 'api/block_products.xml'
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,6 @@ module Fog
|
||||||
module Bluebox
|
module Bluebox
|
||||||
class Real
|
class Real
|
||||||
|
|
||||||
require 'fog/bluebox/parsers/get_templates'
|
|
||||||
|
|
||||||
# Get list of OS templates
|
# Get list of OS templates
|
||||||
#
|
#
|
||||||
# ==== Returns
|
# ==== Returns
|
||||||
|
@ -17,8 +15,7 @@ module Fog
|
||||||
request(
|
request(
|
||||||
:expects => 200,
|
:expects => 200,
|
||||||
:method => 'GET',
|
:method => 'GET',
|
||||||
:parser => Fog::Parsers::Bluebox::GetTemplates.new,
|
:path => 'api/block_templates.json'
|
||||||
:path => 'api/block_templates.xml'
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ module Fog
|
||||||
request(
|
request(
|
||||||
:expects => 200,
|
:expects => 200,
|
||||||
:method => 'PUT',
|
:method => 'PUT',
|
||||||
:path => "api/blocks/#{block_id}/#{'soft_' if type == 'SOFT'}reboot.xml"
|
:path => "api/blocks/#{block_id}/#{'soft_' if type == 'SOFT'}reboot.json"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue