<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find_all(self, model_class, params={}):
 """Return an list of models from the API and caches the result. Args: model_class (:class:`cinder_data.model.CinderModel`):
 A subclass of :class:`cinder_data.model.CinderModel` of your chosen model. params (dict, optional):
 Description Returns: list: A list of instances of you model_class or and empty list. """

        url = '{host}/{namespace}/{model}{params}'.format(
            host=self._host,
            namespace=self._namespace,
            model=self._translate_name(model_class.__name__),
            params=self._build_param_string(params)
        )
        data = self._get_json(url)['data']
        fresh_models = []
        for item in data:
            fresh_model = model_class(item['attributes'])
            fresh_model.id = item['id']
            fresh_model.validate()
            fresh_models.append(fresh_model)
            if self._cache is not None:
                self._cache.set_record(model_class.__name__, fresh_model.id, fresh_model)
        return fresh_models