'Provide a new config for the manager to use.
:raises: `ValueError` and rolls back to previous config if the provided config is not valid.'

def update_config(self, config):

    new_user_config = config
    old_config = self.config
    try:
        self.config = self.validate_config(config)
    except ValueError as e:
        for error in getattr(e, u'errors', []):
            log.critical(u'[%s]    %s', error.json_pointer, error.message)
        log.debug(u'invalid    config,    rolling    back')
        self.config = old_config
        raise
    log.debug(u'New    config    data    loaded.')
    self.user_config = copy.deepcopy(new_user_config)
    fire_event(u'manager.config_updated', self)
