mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
3e240474ac
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.
40 lines
1.2 KiB
Ruby
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
|