1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/vcloud/terremark/ecloud/requests/configure_node.rb
Dan Peterson 4b7157abc1 initial instantiate_vapp_template mocking and some other things along the way
fix some specs by adding a Shared module where necessary
2010-10-13 02:06:39 +08:00

59 lines
1.7 KiB
Ruby

module Fog
class Vcloud
module Terremark
class Ecloud
module Shared
private
def generate_configure_node_request(node_data)
builder = Builder::XmlMarkup.new
builder.NodeService(:"xmlns:i" => "http://www.w3.org/2001/XMLSchema-instance",
:xmlns => "urn:tmrk:eCloudExtensions-2.0") {
builder.Name(node_data[:name])
builder.Enabled(node_data[:enabled].to_s)
builder.Description(node_data[:description])
}
end
end
class Real
include Shared
def configure_node(node_uri, node_data)
validate_node_data(node_data, true)
request(
:body => generate_configure_node_request(node_data),
:expects => 200,
:headers => {'Content-Type' => 'application/vnd.tmrk.ecloud.nodeService+xml'},
:method => 'PUT',
:uri => node_uri,
:parse => true
)
end
end
class Mock
include Shared
def configure_node(node_uri, node_data)
node_uri = ensure_unparsed(node_uri)
validate_node_data(node_data, true)
if node = mock_node_from_url(node_uri)
node[:name] = node_data[:name]
node[:enabled] = node_data[:enabled]
node[:description] = node_data[:description]
mock_it 200, mock_node_service_response(node, ecloud_xmlns), { 'Content-Type' => 'application/vnd.tmrk.ecloud.nodeService+xml' }
else
mock_error 200, "401 Unauthorized"
end
end
end
end
end
end
end