'Get loadable classes from a list of names.  Each name can be
a full module path or the full path to a method that returns
classes to use.  The latter behavior is useful to specify a method
that returns a list of classes to use in a default case.'

def get_matching_classes(self, loadable_class_names):

    classes = []
    for cls_name in loadable_class_names:
        obj = importutils.import_class(cls_name)
        if self._is_correct_class(obj):
            classes.append(obj)
        elif inspect.isfunction(obj):
            for cls in obj():
                classes.append(cls)
        else:
            error_str = 'Not    a    class    of    the    correct    type'
            raise exception.ClassNotFound(class_name=cls_name, exception=error_str)
    return classes
