2010-06-09 09:39:00 +08:00
|
|
|
module Fog
|
2010-09-03 01:11:45 -07:00
|
|
|
class Vcloud
|
2010-06-09 09:39:00 +08:00
|
|
|
|
2010-06-18 07:58:09 +08:00
|
|
|
class Real
|
|
|
|
basic_request :get_network
|
2010-06-09 09:39:00 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
class Mock
|
|
|
|
|
|
|
|
def get_network(network_uri)
|
|
|
|
#
|
|
|
|
# Based off of:
|
|
|
|
# vCloud API Guide v0.8 - Page 50
|
|
|
|
#
|
|
|
|
# Did not implement AssociatedNetwork, seems redundant, haven't seen it in use yet
|
|
|
|
# Did not implement the following features: Dhcp, Nat & Firewall
|
|
|
|
#
|
2010-06-18 07:58:09 +08:00
|
|
|
network_uri = ensure_unparsed(network_uri)
|
2010-06-09 09:39:00 +08:00
|
|
|
type = "application/vnd.vmware.vcloud.network+xml"
|
|
|
|
response = Excon::Response.new
|
2010-10-18 07:06:44 +08:00
|
|
|
if network = mock_data.organizations.map { |org| org.vdcs.map { |vdc| vdc.networks } }.flatten.detect { |network| network.href == network_uri.to_s }
|
2010-06-09 09:39:00 +08:00
|
|
|
xml = Builder::XmlMarkup.new
|
2010-06-18 07:58:09 +08:00
|
|
|
mock_it 200,
|
2010-10-18 07:06:44 +08:00
|
|
|
xml.Network(xmlns.merge(:href => network.href, :name => network.name, :type => type)) {
|
|
|
|
xml.Description(network.name)
|
2010-06-09 09:39:00 +08:00
|
|
|
xml.Configuration {
|
2010-10-18 07:06:44 +08:00
|
|
|
xml.Gateway(network.gateway)
|
|
|
|
xml.Netmask(network.netmask)
|
|
|
|
xml.Dns(network.dns)
|
2010-06-09 09:39:00 +08:00
|
|
|
}
|
2010-10-18 07:06:44 +08:00
|
|
|
if network.features
|
2010-06-09 09:39:00 +08:00
|
|
|
xml.Features {
|
2010-10-18 07:06:44 +08:00
|
|
|
if feature = network.features.detect { |feature| feature[:type] == :FenceMode }
|
2010-06-09 09:39:00 +08:00
|
|
|
xml.FenceMode(feature[:value])
|
|
|
|
end
|
|
|
|
}
|
|
|
|
end
|
|
|
|
},
|
|
|
|
{ 'Content-Type' => type }
|
|
|
|
else
|
|
|
|
mock_error 200, "401 Unauthorized"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|