'Return an iterable of api_models.Samples.
:param sample_filter: Filter.
:param limit: Maximum number of results to return.'

def get_samples(self, sample_filter, limit=None):

    if (limit == 0):
        return []
    session = self._engine_facade.get_session()
    query = session.query(models.Sample.timestamp, models.Sample.recorded_at, models.Sample.message_id, models.Sample.message_signature, models.Sample.volume.label('counter_volume'), models.Meter.name.label('counter_name'), models.Meter.type.label('counter_type'), models.Meter.unit.label('counter_unit'), models.Resource.source_id, models.Resource.user_id, models.Resource.project_id, models.Resource.resource_metadata, models.Resource.resource_id).join(models.Meter, (models.Meter.id == models.Sample.meter_id)).join(models.Resource, (models.Resource.internal_id == models.Sample.resource_id)).order_by(models.Sample.timestamp.desc())
    query = make_query_from_filter(session, query, sample_filter, require_meter=False)
    if limit:
        query = query.limit(limit)
    return self._retrieve_samples(query)
