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:
parent
5487db4367
commit
b5c1d10b0b
7 changed files with 177 additions and 3 deletions
42
lib/fog/compute/parsers/terremark_ecloud/get_task.rb
Normal file
42
lib/fog/compute/parsers/terremark_ecloud/get_task.rb
Normal 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
|
51
lib/fog/compute/parsers/terremark_ecloud/get_task_list.rb
Normal file
51
lib/fog/compute/parsers/terremark_ecloud/get_task_list.rb
Normal 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
|
19
lib/fog/compute/requests/terremark_ecloud/get_task.rb
Normal file
19
lib/fog/compute/requests/terremark_ecloud/get_task.rb
Normal 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
|
19
lib/fog/compute/requests/terremark_ecloud/get_task_list.rb
Normal file
19
lib/fog/compute/requests/terremark_ecloud/get_task_list.rb
Normal 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
|
|
@ -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
|
||||
|
|
39
tests/compute/requests/terremark_ecloud/task_tests.rb
Normal file
39
tests/compute/requests/terremark_ecloud/task_tests.rb
Normal 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
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue