Sha256: 3bc50545bf743aef71b6d525a4d5a74f600fec2ba518a86a46c93df785c0192b

Contents?: true

Size: 1.85 KB

Versions: 11

Compression:

Stored size: 1.85 KB

Contents

module Fog
  module Compute
    class Vsphere
      class Real
        def get_network(name, datacenter_name)
          network = get_raw_network(name, datacenter_name)
          raise(Fog::Compute::Vsphere::NotFound) unless network
          network_attributes(network, datacenter_name)
        end

        protected

        def get_raw_network(name, datacenter_name, distributedswitch=nil)
          finder = choose_finder(name, distributedswitch)
          networks = get_all_raw_networks(datacenter_name)
          networks.find { |n| finder.call(n) }
        end
      end

      module Shared

        protected

        def get_all_raw_networks(datacenter_name)
          dc = find_raw_datacenter(datacenter_name)
          connection.serviceContent.viewManager.
            CreateContainerView({
                                 :container => dc.networkFolder,
                                 :type =>      ["Network"],
                                 :recursive => true
                                }).view
        end

        def choose_finder(name, distributedswitch)
          case distributedswitch
          when String
            # only the one will do
            Proc.new { |n| (n.name == name) &&
                (n.class.to_s == "DistributedVirtualPortgroup") &&
                (n.config.distributedVirtualSwitch.name == distributedswitch)
            }
          when :dvs
            # the first distributed virtual switch will do - selected by network - gives control to vsphere
            Proc.new { |n| (n.name == name) && (n.class.to_s == "DistributedVirtualPortgroup") }
          else
            # the first matching network will do, seems like the non-distributed networks come first
            Proc.new { |n| (n.name == name) }
          end
        end

      end

      class Mock
        def get_network(id)
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
fog-vsphere-2.0.0 lib/fog/vsphere/requests/compute/get_network.rb
fog-vsphere-1.13.1 lib/fog/vsphere/requests/compute/get_network.rb
fog-vsphere-1.13.0 lib/fog/vsphere/requests/compute/get_network.rb
fog-vsphere-1.12.0 lib/fog/vsphere/requests/compute/get_network.rb
fog-vsphere-1.11.3 lib/fog/vsphere/requests/compute/get_network.rb
fog-vsphere-1.11.2 lib/fog/vsphere/requests/compute/get_network.rb
fog-vsphere-1.11.1 lib/fog/vsphere/requests/compute/get_network.rb
fog-vsphere-1.11.0 lib/fog/vsphere/requests/compute/get_network.rb
fog-vsphere-1.10.0 lib/fog/vsphere/requests/compute/get_network.rb
fog-vsphere-1.9.2 lib/fog/vsphere/requests/compute/get_network.rb
fog-vsphere-1.9.1 lib/fog/vsphere/requests/compute/get_network.rb