Sha256: 3a188b388e25f5ac7f45b80f1bf8ca1fc59b71a241594b615e08b211c13655c4

Contents?: true

Size: 1.33 KB

Versions: 7

Compression:

Stored size: 1.33 KB

Contents

module Fog
  module Compute
    class Vsphere
      class Real
        def list_datacenters(_filters = {})
          raw_datacenters.map do |dc|
            {
              id: managed_obj_id(dc),
              name: dc.name,
              path: raw_getpathmo(dc),
              status: dc.overallStatus
            }
          end
        end

        protected

        def raw_getpathmo(mo)
          if mo.parent.nil? || (mo.parent.name == connection.rootFolder.name)
            [mo.name]
          else
            [raw_getpathmo(mo.parent), mo.name].flatten
          end
        end

        def raw_datacenters(folder = nil)
          folder ||= connection.rootFolder
          @raw_datacenters ||= get_raw_datacenters_from_folder folder
        end

        def get_raw_datacenters_from_folder(folder = nil)
          folder.childEntity.map do |childE|
            if childE.is_a? RbVmomi::VIM::Datacenter
              childE
            elsif childE.is_a? RbVmomi::VIM::Folder
              get_raw_datacenters_from_folder childE
            end
          end.flatten
        end

        def find_datacenters(name = nil)
          name ? [find_raw_datacenter(name)] : raw_datacenters
        end
      end

      class Mock
        def list_datacenters(_filters = {})
          data[:datacenters].values
        end
      end
    end
  end
end

Version data entries

7 entries across 5 versions & 2 rubygems

Version Path
fog-vsphere-2.5.0 lib/fog/vsphere/requests/compute/list_datacenters.rb
fog-vsphere-2.4.0 lib/fog/vsphere/requests/compute/list_datacenters.rb
fog-vsphere-2.3.0 lib/fog/vsphere/requests/compute/list_datacenters.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/gems/fog-vsphere-2.2.0/lib/fog/vsphere/requests/compute/list_datacenters.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/fog-vsphere-2.2.0/lib/fog/vsphere/requests/compute/list_datacenters.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/gems/fog-vsphere-2.2.0/lib/fog/vsphere/requests/compute/list_datacenters.rb
fog-vsphere-2.2.0 lib/fog/vsphere/requests/compute/list_datacenters.rb