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 3e240474ac [vcloud|compute] improve models + additional tests
vCloud has also the concept of links in the responses. So we should
make use of them to navigate through the tree of resources in the
vCloud.
Furthermore, we can make various calls a bit easier by directly
returning the specific resource object than the plain xml response.

Adjust tests to work with the new changes, and also test the added
parts.
2012-01-30 18:57:13 +01:00

40 lines
1.2 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] == 'application/vnd.vmware.vcloud.network+xml' }
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
end
end
end
end