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/models/compute/networks.rb
Peter Meier 30e28d704f [vcloud|compute] add API version 1.5 compability
vCloud version API 1.5 requires us to adapt certain calls. This
patch does all the necessary things to scan a vCloud 1.5 completely
and read all the necessary attributes, as we could already before.
Furthermore, it add tests for the version 1.5 calls.

The API version can now be set as a version param to the vcloud
compute resource. By default it chooses version 1.5.

This has been tested against a vCloud 1.5 and 1.0.
2012-01-30 19:04:19 +01:00

48 lines
1.4 KiB
Ruby

require 'fog/vcloud/models/compute/network'
module Fog
module Vcloud
class Compute
class Networks < Fog::Vcloud::Collection
undef_method :create
model Fog::Vcloud::Compute::Network
attribute :href
def all
self.href = connection.default_vdc_href unless self.href
data = nil
if self.href =~ /\/vdc\//
check_href!("Vdc")
data = [connection.get_vdc(self.href).available_networks].flatten.compact.reject{|n| n == '' }
elsif self.href =~ /\/org\//
check_href!("Org")
data = connection.get_organization(self.href).links.select{|l| l[:type] == network_type_id }
elsif self.href =~ /\/vApp\//
check_href!("Vapp")
data = [(connection.get_vapp(self.href).network_configs||{})[:NetworkConfig]].flatten.compact.collect{|n| n[:Configuration][:ParentNetwork] unless n[:Configuration].nil? }.compact
end
load([*data]) unless data.nil?
end
def get(uri)
connection.get_network(uri)
rescue Fog::Errors::NotFound
nil
end
private
def network_type_id
if connection.version == '1.0'
'application/vnd.vmware.vcloud.network+xml'
else
'application/vnd.vmware.vcloud.orgNetwork+xml'
end
end
end
end
end
end