@classmethod
def get_drivers(cls):
    """Retrieves cluster drivers from python entry_points.

        Example:

        With the following classes:
        class Driver1(Driver):
            provides = [
                ('server_type1', 'os1', 'coe1')
            ]

        class Driver2(Driver):
            provides = [
                ('server_type2', 'os2', 'coe2')
            ]

        And the following entry_points:

        magnum.drivers =
            driver_name_1 = some.python.path:Driver1
            driver_name_2 = some.python.path:Driver2

        get_drivers will return:
            {
                (server_type1, os1, coe1):
                    {'driver_name_1': Driver1},
                (server_type2, os2, coe2):
                    {'driver_name_2': Driver2}
            }

        :return: dict
        """
    if not cls.definitions:
        cls.definitions = dict()
        for entry_point, def_class in cls.load_entry_points():
            for cluster_type in def_class().provides:
                cluster_type_tuple = cluster_type['server_type'], cluster_type[
                    'os'], cluster_type['coe']
                providers = cls.definitions.setdefault(cluster_type_tuple,
                    dict())
                providers['entry_point_name'] = entry_point.name
                providers['class'] = def_class
    return cls.definitions
