'Filter based on disk usage.'

def host_passes(self, host_state, spec_obj):

    requested_disk = ((1024 * (spec_obj.root_gb + spec_obj.ephemeral_gb)) + spec_obj.swap)
    free_disk_mb = host_state.free_disk_mb
    total_usable_disk_mb = (host_state.total_usable_disk_gb * 1024)
    if (total_usable_disk_mb < requested_disk):
        LOG.debug('%(host_state)s    does    not    have    %(requested_disk)s    MB    usable    disk    space    before    overcommit,    it    only    has    %(physical_disk_size)s    MB.', {'host_state': host_state, 'requested_disk': requested_disk, 'physical_disk_size': total_usable_disk_mb})
        return False
    disk_allocation_ratio = self._get_disk_allocation_ratio(host_state, spec_obj)
    disk_mb_limit = (total_usable_disk_mb * disk_allocation_ratio)
    used_disk_mb = (total_usable_disk_mb - free_disk_mb)
    usable_disk_mb = (disk_mb_limit - used_disk_mb)
    if (not (usable_disk_mb >= requested_disk)):
        LOG.debug('%(host_state)s    does    not    have    %(requested_disk)s    MB    usable    disk,    it    only    has    %(usable_disk_mb)s    MB    usable    disk.', {'host_state': host_state, 'requested_disk': requested_disk, 'usable_disk_mb': usable_disk_mb})
        return False
    disk_gb_limit = (disk_mb_limit / 1024)
    host_state.limits['disk_gb'] = disk_gb_limit
    return True
