def METHOD_NAME(self, config):
    self.secret_engines = OrderedDict()
    self.default_secret_engine = None
    # add configured engines
    for secret_engine_name, secret_engine_conf in config.items():
        if secret_engine_name == self.noop_engine_name:
            self.logger.error("'%s' is a reserved engine name. skipped!", self.noop_engine_name)
            continue
        if self.separator in secret_engine_name:
            self.logger.error("'%' not allowed in secret engine name. skipped!", self.separator)
            continue
        secret_engine_conf = secret_engine_conf.copy()
        secret_engine_conf['secret_engine_name'] = secret_engine_name
        secret_engine_class = self._get_secret_engine_class(secret_engine_conf.pop('backend'))
        secret_engine = secret_engine_class(secret_engine_conf)
        self.secret_engines[secret_engine_name] = secret_engine
        if secret_engine.default:
            if self.default_secret_engine:
                logger.error('Multiple default secret engines')
            else:
                self.default_secret_engine = secret_engine
    # add noop engine
    noop_secret_engine_class = self._get_secret_engine_class(self.noop_engine_backend)
    noop_secret_engine = noop_secret_engine_class({'secret_engine_name': self.noop_engine_name})
    self.secret_engines[self.noop_engine_name] = noop_secret_engine
    # default default secret engine
    if not self.default_secret_engine:
        logger.info("No default secret engine")
        for secret_engine_name, secret_engine in self.secret_engines.items():
            logger.info("Use '%s' secret engine as default", secret_engine_name)  # noqa lgtm[py/clear-text-logging-sensitive-data]
            self.default_secret_engine = secret_engine
            break