Sha256: 79f0b1a0c0f66a1f4766455d12b3385f92654515419af8c818283fd1b91b234b

Contents?: true

Size: 1.79 KB

Versions: 11

Compression:

Stored size: 1.79 KB

Contents

module Fog
  module Compute
    class Vsphere
      class Real
        def list_resource_pools(filters = { })
          datacenter_name = filters[:datacenter]
          cluster_name    = filters[:cluster]
          cluster         = get_raw_cluster(cluster_name, datacenter_name)
          list_raw_resource_pools(cluster).map do |resource_pool|
            resource_pool_attributes(resource_pool, cluster_name, datacenter_name)
          end
        end

        protected

        # root ResourcePool + Children if they exists
        def list_raw_resource_pools(cluster)
          pools = []
          traverse_raw_resource_pools(pools, cluster.resourcePool)
          pools.uniq
        end

        def traverse_raw_resource_pools(pools, rp)
          if rp 
            if rp.respond_to? :resourcePool
              traverse_raw_resource_pools(pools, rp.resourcePool)
            end
            if rp.respond_to? :each
               rp.each do |resourcePool|
                 traverse_raw_resource_pools(pools, resourcePool)
               end
            else
              pools << rp
            end
          end
        end

        def resource_pool_attributes(resource_pool, cluster, datacenter)
          name = folder_path(resource_pool).gsub(/^.*Resources(\/|)/,'')
          name = 'Resources' if name.empty?
          {
            :id                   => managed_obj_id(resource_pool),
            :name                 => name,
            :configured_memory_mb => resource_pool.summary.configuredMemoryMB,
            :overall_status       => resource_pool.overallStatus,
            :cluster              => cluster,
            :datacenter           => datacenter
          }
        end
      end

      class Mock
        def list_resource_pools(filters = { })
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
fog-vsphere-2.1.1 lib/fog/vsphere/requests/compute/list_resource_pools.rb
fog-vsphere-2.1.0 lib/fog/vsphere/requests/compute/list_resource_pools.rb
fog-vsphere-2.0.1 lib/fog/vsphere/requests/compute/list_resource_pools.rb
fog-vsphere-2.0.0 lib/fog/vsphere/requests/compute/list_resource_pools.rb
fog-vsphere-1.13.1 lib/fog/vsphere/requests/compute/list_resource_pools.rb
fog-vsphere-1.13.0 lib/fog/vsphere/requests/compute/list_resource_pools.rb
fog-vsphere-1.12.0 lib/fog/vsphere/requests/compute/list_resource_pools.rb
fog-vsphere-1.11.3 lib/fog/vsphere/requests/compute/list_resource_pools.rb
fog-vsphere-1.11.2 lib/fog/vsphere/requests/compute/list_resource_pools.rb
fog-vsphere-1.11.1 lib/fog/vsphere/requests/compute/list_resource_pools.rb
fog-vsphere-1.11.0 lib/fog/vsphere/requests/compute/list_resource_pools.rb