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

Many changes: -Become more of a proper Fog Service. -Drop most of the Collection/Model customizations. -Add a hook for services to do something after #new with the instance -Move to the ToHashDocument parser ... so no more having to actually make parsers. -Fog::Vcloud::Extension is kind of like Fog::Service, but for writing extension modules to Fog::Vcloud. -Fix up existing specs/mocks (they're not complete atm, but the existing ones are up to date). -Fog::Vcloud::Terremark::Ecloud gets almost all extensions implemented (almost). -Fog::Vcloud::Terremark::Ecloud bumped to working with the current TMRK API release. -Factor out some TMRK/ecloud specifc mock data into the ecloud module. -Probably forgetting something.
53 lines
1.7 KiB
Ruby
53 lines
1.7 KiB
Ruby
module Fog
|
|
module Vcloud
|
|
module Terremark
|
|
module Ecloud
|
|
module Real
|
|
|
|
def validate_network_data(network_data, configure=false)
|
|
valid_opts = [:id, :href, :name, :rnat, :address, :broadcast, :gateway]
|
|
unless valid_opts.all? { |opt| network_data.keys.include?(opt) }
|
|
raise ArgumentError.new("Required data missing: #{(valid_opts - network_data.keys).map(&:inspect).join(", ")}")
|
|
end
|
|
end
|
|
|
|
def configure_network(network_uri, network_data)
|
|
validate_network_data(network_data)
|
|
|
|
request(
|
|
:body => generate_configure_network_request(network_data),
|
|
:expects => 200,
|
|
:headers => {'Content-Type' => 'application/vnd.tmrk.ecloud.networkService+xml'},
|
|
:method => 'PUT',
|
|
:uri => network_uri
|
|
)
|
|
end
|
|
|
|
private
|
|
|
|
def generate_configure_network_request(network_data)
|
|
builder = Builder::XmlMarkup.new
|
|
builder.Network(:"xmlns:i" => "http://www.w3.org/2001/XMLSchema-instance",
|
|
:xmlns => "urn:tmrk:eCloudExtensions-2.3") {
|
|
builder.Id(network_data[:id])
|
|
builder.Href(network_data[:href])
|
|
builder.Name(network_data[:name])
|
|
builder.RnatAddress(network_data[:rnat])
|
|
builder.Address(network_data[:address])
|
|
builder.BroadcastAddress(network_data[:broadcast])
|
|
builder.GatewayAddress(network_data[:gateway])
|
|
}
|
|
end
|
|
|
|
end
|
|
|
|
module Mock
|
|
|
|
def configure_network(network_uri, network_data)
|
|
Fog::Mock.not_implemented
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|