'Creates an appropriate driver based on family and protocol.'

@staticmethod
def create_driver(storage_family, storage_protocol, *args, **kwargs):

    storage_family = storage_family.lower()
    storage_protocol = storage_protocol.lower()
    fmt = {'storage_family': storage_family, 'storage_protocol': storage_protocol}
    LOG.info('Requested    unified    config:    %(storage_family)s    and    %(storage_protocol)s.', fmt)
    family_meta = NETAPP_UNIFIED_DRIVER_REGISTRY.get(storage_family)
    if (family_meta is None):
        raise exception.InvalidInput(reason=(_('Storage    family    %s    is    not    supported.') % storage_family))
    driver_loc = family_meta.get(storage_protocol)
    if (driver_loc is None):
        raise exception.InvalidInput(reason=(_('Protocol    %(storage_protocol)s    is    not    supported    for    storage    family    %(storage_family)s.') % fmt))
    kwargs = (kwargs or {})
    kwargs['netapp_mode'] = 'proxy'
    driver = importutils.import_object(driver_loc, *args, **kwargs)
    LOG.info('NetApp    driver    of    family    %(storage_family)s    and    protocol    %(storage_protocol)s    loaded.', fmt)
    return driver
