1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

[terremark_ecloud] task requests

This commit is contained in:
geemus 2011-02-14 14:55:47 -08:00
parent 5487db4367
commit b5c1d10b0b
7 changed files with 177 additions and 3 deletions

View file

@ -0,0 +1,42 @@
module Fog
module Parsers
module TerremarkEcloud
module Compute
class GetTask < Fog::Parsers::Base
def reset
@response = {}
end
def start_element(name, attrs = [])
case name
when 'Task'
for attribute in %w{href status type}
if value = attr_value(attribute, attrs)
@response[attribute] = value
end
end
for attribute in %w{endTime startTime}
if value = attr_value(attribute, attrs)
@response[attribute] = Time.parse(value)
end
end
when 'Owner', 'Result'
data = {}
for attribute in %w{href name type}
if value = attr_value(attribute, attrs)
data[attribute] = value
end
end
@response[name] = data
end
super
end
end
end
end
end
end

View file

@ -0,0 +1,51 @@
module Fog
module Parsers
module TerremarkEcloud
module Compute
class GetTaskList < Fog::Parsers::Base
def reset
@response = { 'Tasks' => [] }
@task = {}
end
def start_element(name, attrs = [])
case name
when 'Task'
for attribute in %w{href status type}
if value = attr_value(attribute, attrs)
@task[attribute] = value
end
end
for attribute in %w{endTime startTime}
if value = attr_value(attribute, attrs)
@task[attribute] = Time.parse(value)
end
end
when 'Owner', 'Result'
data = {}
for attribute in %w{href name type}
if value = attr_value(attribute, attrs)
data[attribute] = value
end
end
@task[name] = data
end
super
end
def end_element(name)
case name
when 'Task'
@response['Tasks'] << @task
@task = {}
end
end
end
end
end
end
end

View file

@ -0,0 +1,19 @@
module Fog
module TerremarkEcloud
class Compute
class Real
require 'fog/compute/parsers/terremark_ecloud/get_task'
def get_task(href)
request({
:href => href,
:idempotent => true,
:parser => Fog::Parsers::TerremarkEcloud::Compute::GetTask.new
})
end
end
end
end
end

View file

@ -0,0 +1,19 @@
module Fog
module TerremarkEcloud
class Compute
class Real
require 'fog/compute/parsers/terremark_ecloud/get_task_list'
def get_task_list(href)
request({
:href => href,
:idempotent => true,
:parser => Fog::Parsers::TerremarkEcloud::Compute::GetTaskList.new
})
end
end
end
end
end

View file

@ -14,6 +14,8 @@ module Fog
request :get_ip_addresses
request :get_network
request :get_organization
request :get_task
request :get_task_list
request :get_vdc
class Mock

View file

@ -0,0 +1,39 @@
Shindo.tests('TerremarkEcloud::Compute | task requests', ['terremarkecloud']) do
@task_format = {
'endTime' => Fog::Nullable::Time,
'href' => String,
'Owner' => {
'href' => String,
'name' => String,
'type' => String
},
'Result' => {
'href' => String,
'name' => String,
'type' => String
},
'type' => String,
'startTime' => Time,
'status' => String
}
tests('success') do
@task_list_href = TerremarkEcloud[:compute].get_organization.body['Link'].detect {|link| link['type'] == 'application/vnd.vmware.vcloud.tasksList+xml'}['href']
tests("#get_task_list").formats({'Tasks' => [@task_format]}) do
pending if Fog.mocking?
data = TerremarkEcloud[:compute].get_task_list(@task_list_href).body
@task_href = data['Tasks'].first['href']
data
end
tests("#get_task").formats(@task_format) do
pending if Fog.mocking?
TerremarkEcloud[:compute].get_task(@task_href).body
end
end
end

View file

@ -6,10 +6,12 @@ module Fog
module Nullable
module Integer; end
module String; end
module Time; end
end
end
[FalseClass, TrueClass].each {|klass| klass.send(:include, Fog::Boolean)}
[NilClass, String].each {|klass| klass.send(:include, Fog::Nullable::String)}
[NilClass, Time].each {|klass| klass.send(:include, Fog::Nullable::Time)}
[Integer, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Integer)}
module Shindo
@ -38,7 +40,7 @@ module Shindo
format.delete(key)
case value
when Array
valid &&= datum.is_a?(Array)
valid &&= datum.is_a?(Array) || p("not Array: #{datum.inspect}")
if datum.is_a?(Array) && !value.empty?
for element in datum
type = value.first
@ -50,10 +52,10 @@ module Shindo
end
end
when Hash
valid &&= datum.is_a?(Hash)
valid &&= datum.is_a?(Hash) || p("not Hash: #{datum.inspect}")
valid &&= formats_kernel(datum, value, false)
else
p "#{key} => #{value}" unless datum.is_a?(value)
p "#{key} not #{value}: #{datum.inspect}" unless datum.is_a?(value)
valid &&= datum.is_a?(value)
end
end