'Helper method for calling a method across all extension drivers.'

def call(self, method_name, *args, **kwargs):

    exc_list = []
    for driver in self._drivers:
        try:
            getattr(driver, method_name)(*args, **kwargs)
        except Exception as exc:
            exception_msg = "Extension    driver    '%(name)s'    failed    in    %(method)s"
            exception_data = {'name': driver.name, 'method': method_name}
            LOG.exception(exception_msg, exception_data)
            exc_list.append(exc)
    if exc_list:
        raise exceptions.DriverCallError(exc_list=exc_list)
    if self.rpc_notifications_required:
        context = (kwargs.get('context') or args[0])
        policy_obj = (kwargs.get('policy_obj') or args[1])
        if (method_name == qos_consts.UPDATE_POLICY):
            self.push_api.push(context, [policy_obj], rpc_events.UPDATED)
        elif (method_name == qos_consts.DELETE_POLICY):
            self.push_api.push(context, [policy_obj], rpc_events.DELETED)
