'Return an iterable of models.Resource instances
:param user: Optional ID for user that owns the resource.
:param project: Optional ID for project that owns the resource.
:param source: Optional source filter.
:param start_timestamp: Optional modified timestamp start range.
:param start_timestamp_op: Optional start time operator, like gt, ge.
:param end_timestamp: Optional modified timestamp end range.
:param end_timestamp_op: Optional end time operator, like lt, le.
:param metaquery: Optional dict with metadata to match on.
:param resource: Optional resource filter.
:param limit: Maximum number of results to return.'

def get_resources(self, user=None, project=None, source=None, start_timestamp=None, start_timestamp_op=None, end_timestamp=None, end_timestamp_op=None, metaquery=None, resource=None, limit=None):

    if (limit == 0):
        return
    metaquery = (pymongo_utils.improve_keys(metaquery, metaquery=True) or {})
    query = {}
    if (user is not None):
        query['user_id'] = user
    if (project is not None):
        query['project_id'] = project
    if (source is not None):
        query['source'] = source
    if (start_timestamp or end_timestamp):
        return self._get_time_constrained_resources(query, start_timestamp, start_timestamp_op, end_timestamp, end_timestamp_op, metaquery, resource, limit)
    else:
        return self._get_floating_resources(query, metaquery, resource, limit)
