'Retrieve pool (i.e. Data ONTAP volume) stats info from volumes.'

def _get_pool_stats(self, filter_function=None, goodness_function=None):

    pools = []
    self.perf_library.update_performance_cache()
    for vol in self.vols:
        volume_name = vol.get_child_content('name')
        if (self.volume_list and (volume_name not in self.volume_list)):
            continue
        if (volume_name == self.root_volume_name):
            continue
        state = vol.get_child_content('state')
        inconsistent = vol.get_child_content('is-inconsistent')
        invalid = vol.get_child_content('is-invalid')
        if ((state != 'online') or (inconsistent != 'false') or (invalid != 'false')):
            continue
        pool = dict()
        pool['pool_name'] = volume_name
        pool['QoS_support'] = False
        pool['multiattach'] = False
        pool['reserved_percentage'] = self.reserved_percentage
        pool['max_over_subscription_ratio'] = self.max_over_subscription_ratio
        total = float((vol.get_child_content('size-total') or 0))
        total /= units.Gi
        pool['total_capacity_gb'] = na_utils.round_down(total, '0.01')
        free = float((vol.get_child_content('size-available') or 0))
        free /= units.Gi
        pool['free_capacity_gb'] = na_utils.round_down(free, '0.01')
        pool['provisioned_capacity_gb'] = round((pool['total_capacity_gb'] - pool['free_capacity_gb']), 2)
        thick = (self.configuration.netapp_lun_space_reservation == 'enabled')
        pool['thick_provisioning_support'] = thick
        pool['thin_provisioning_support'] = (not thick)
        utilization = self.perf_library.get_node_utilization()
        pool['utilization'] = na_utils.round_down(utilization, '0.01')
        pool['filter_function'] = filter_function
        pool['goodness_function'] = goodness_function
        pool['consistencygroup_support'] = True
        pools.append(pool)
    return pools
