Sha256: 4deecb8c11d411e7e285bcd3e6954208f43fbbe696aaa415946c2e1ec0750ae2

Contents?: true

Size: 1.52 KB

Versions: 2

Compression:

Stored size: 1.52 KB

Contents

module Fog
  module Compute
    class Vsphere
      class Real
        def list_storage_pods(filters = {})
          datacenter_name = filters[:datacenter]

          dc = find_raw_datacenter(datacenter_name)

          storage_pods = property_collector_results(storage_pod_filter_spec(dc))

          storage_pods.map do |storage_pod|
            map_attrs_to_hash(storage_pod, storage_pod_attribute_mapping).merge(
              datacenter: datacenter_name,
              id: managed_obj_id(storage_pod.obj)
            )
          end
        end

        protected

        def storage_pod_filter_spec(obj)
          RbVmomi::VIM.PropertyFilterSpec(
            objectSet: [
              obj: obj.datastoreFolder,
              skip: true,
              selectSet: [
                folder_traversal_spec
              ]
            ],
            propSet: storage_pod_filter_prop_set
          )
        end

        def storage_pod_filter_prop_set
          [
            { type: 'StoragePod', pathSet: storage_pod_attribute_mapping.values }
          ]
        end

        def storage_pod_attribute_mapping
          {
            name: 'name',
            freespace: 'summary.freeSpace',
            capacity: 'summary.capacity'
          }
        end
      end
      class Mock
        def list_storage_pods(filters = {})
          if filters.key?(:datacenter)
            data[:storage_pods].select { |h| h[:datacenter] == filters[:datacenter] }
          else
            data[:storage_pods]
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fog-vsphere-2.5.0 lib/fog/vsphere/requests/compute/list_storage_pods.rb
fog-vsphere-2.4.0 lib/fog/vsphere/requests/compute/list_storage_pods.rb