[bbg] simplify by killing parsers and using json
This commit is contained in:
parent
08dcd8f05f
commit
e01ad95ab2
|
@ -1,17 +1,17 @@
|
|||
module Fog
|
||||
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/requests/get_product'
|
||||
require 'fog/bluebox/models/servers'
|
||||
require 'fog/bluebox/requests/get_blocks'
|
||||
require 'fog/bluebox/models/flavors'
|
||||
require 'fog/bluebox/models/images'
|
||||
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/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'
|
||||
|
||||
def self.new(options={})
|
||||
|
@ -69,14 +69,12 @@ module Fog
|
|||
params[:headers].merge!({
|
||||
'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
|
||||
|
|
|
@ -21,7 +21,7 @@ module Fog
|
|||
model Fog::Bluebox::Flavor
|
||||
|
||||
def all
|
||||
data = connection.get_products.body['products']
|
||||
data = connection.get_products.body
|
||||
load(data)
|
||||
end
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ module Fog
|
|||
model Fog::Bluebox::Image
|
||||
|
||||
def all
|
||||
data = connection.get_templates.body['templates']
|
||||
data = connection.get_templates.body
|
||||
load(data)
|
||||
end
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ module Fog
|
|||
model Fog::Bluebox::Server
|
||||
|
||||
def all
|
||||
data = connection.get_blocks.body['blocks']
|
||||
data = connection.get_blocks.body
|
||||
load(data)
|
||||
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
|
||||
class Real
|
||||
|
||||
require 'fog/bluebox/parsers/create_block'
|
||||
|
||||
# Create a new block
|
||||
#
|
||||
# ==== Parameters
|
||||
# * flavor_id<~Integer> - Id of flavor to create block with
|
||||
# * image_id<~Integer> - Id of template to create block with
|
||||
# * product_id<~Integer> - Id of product to create block with
|
||||
# * template_id<~Integer> - Id of template to create block with
|
||||
# * name<~String> - Name of block
|
||||
# * password<~String> - Password for block
|
||||
#
|
||||
|
@ -16,24 +14,19 @@ module Fog
|
|||
# * response<~Excon::Response>:
|
||||
# * body<~Hash>:
|
||||
# TODO
|
||||
def create_block(flavor_id, image_id, name, password)
|
||||
data =
|
||||
<<-DATA
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<block>
|
||||
<name>#{name}</name>
|
||||
<password>#{password}</password>
|
||||
<product type="string">#{flavor_id}</product>
|
||||
<template type="string">#{image_id}</template>
|
||||
</block>
|
||||
DATA
|
||||
def create_block(product_id, template_id, name, password)
|
||||
data = {
|
||||
'name' => name,
|
||||
'password' => password,
|
||||
'product' => product_id,
|
||||
'template' => template_id
|
||||
}
|
||||
|
||||
request(
|
||||
:body => data,
|
||||
:body => data.to_json,
|
||||
:expects => 200,
|
||||
:method => 'POST',
|
||||
:parser => Fog::Parsers::Bluebox::CreateBlock.new,
|
||||
:path => '/api/blocks.xml'
|
||||
:path => '/api/blocks.json'
|
||||
)
|
||||
end
|
||||
|
||||
|
@ -41,7 +34,7 @@ DATA
|
|||
|
||||
class Mock
|
||||
|
||||
def create_block(flavor_id, image_id, name, password)
|
||||
def create_block(product_id, template_id, name, password)
|
||||
Fog::Mock.not_implemented
|
||||
end
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ module Fog
|
|||
request(
|
||||
:expects => 200,
|
||||
:method => 'DELETE',
|
||||
:path => "api/blocks/#{block_id}.xml"
|
||||
:path => "api/blocks/#{block_id}.json"
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@ module Fog
|
|||
module Bluebox
|
||||
class Real
|
||||
|
||||
require 'fog/bluebox/parsers/get_block'
|
||||
|
||||
# Get details of a block.
|
||||
#
|
||||
# ==== Parameters
|
||||
|
@ -17,8 +15,7 @@ module Fog
|
|||
request(
|
||||
:expects => 200,
|
||||
:method => 'GET',
|
||||
:parser => Fog::Parsers::Bluebox::GetBlock.new,
|
||||
:path => "api/blocks/#{block_id}.xml"
|
||||
:path => "api/blocks/#{block_id}.json"
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@ module Fog
|
|||
module Bluebox
|
||||
class Real
|
||||
|
||||
require 'fog/bluebox/parsers/get_blocks'
|
||||
|
||||
# Get list of blocks
|
||||
#
|
||||
# ==== Returns
|
||||
|
@ -19,8 +17,7 @@ module Fog
|
|||
request(
|
||||
:expects => 200,
|
||||
:method => 'GET',
|
||||
:parser => Fog::Parsers::Bluebox::GetBlocks.new,
|
||||
:path => 'api/blocks.xml'
|
||||
:path => 'api/blocks.json'
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@ module Fog
|
|||
module Bluebox
|
||||
class Real
|
||||
|
||||
require 'fog/bluebox/parsers/get_product'
|
||||
|
||||
# Get details of a product
|
||||
#
|
||||
# ==== Parameters
|
||||
|
@ -17,8 +15,7 @@ module Fog
|
|||
request(
|
||||
:expects => 200,
|
||||
:method => 'GET',
|
||||
:parser => Fog::Parsers::Bluebox::GetFlavor.new,
|
||||
:path => "api/block_products/#{flavor_id}.xml"
|
||||
:path => "api/block_products/#{flavor_id}.json"
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@ module Fog
|
|||
module Bluebox
|
||||
class Real
|
||||
|
||||
require 'fog/bluebox/parsers/get_products'
|
||||
|
||||
# Get list of products
|
||||
#
|
||||
# ==== Returns
|
||||
|
@ -16,8 +14,7 @@ module Fog
|
|||
request(
|
||||
:expects => 200,
|
||||
:method => 'GET',
|
||||
:parser => Fog::Parsers::Bluebox::GetProducts.new,
|
||||
:path => 'api/block_products.xml'
|
||||
:path => 'api/block_products.json'
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@ module Fog
|
|||
module Bluebox
|
||||
class Real
|
||||
|
||||
require 'fog/bluebox/parsers/get_templates'
|
||||
|
||||
# Get list of OS templates
|
||||
#
|
||||
# ==== Returns
|
||||
|
@ -17,8 +15,7 @@ module Fog
|
|||
request(
|
||||
:expects => 200,
|
||||
:method => 'GET',
|
||||
:parser => Fog::Parsers::Bluebox::GetTemplates.new,
|
||||
:path => 'api/block_templates.xml'
|
||||
:path => 'api/block_templates.json'
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ module Fog
|
|||
request(
|
||||
:expects => 200,
|
||||
: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
|
||||
|
||||
|
|
Loading…
Reference in New Issue