docs: def _set_cinder_config(cls, host, locks_path, cinder_config_params):
          """Setup the parser with all the known Cinder configuration."""
          cfg.CONF.set_default('state_path', os.getcwd())
          cfg.CONF.set_default('lock_path', '$state_path', 'oslo_concurrency')
  
          cls._parser = six.moves.configparser.SafeConfigParser()
          cls._parser.set('DEFAULT', 'enabled_backends', '')
  
          if locks_path:
              cls._parser.add_section('oslo_concurrency')
              cls._parser.set('oslo_concurrency', 'lock_path', locks_path)
              cls._parser.add_section('coordination')
              cls._parser.set('coordination',
                              'backend_url',
                              'file://' + locks_path)
          if host:
              cls._parser.set('DEFAULT', 'host', host)
  
          # All other configuration options go into the DEFAULT section
          cls.__set_parser_kv(cinder_config_params, 'DEFAULT')
  
          # We replace the OSLO's default parser to read from a StringIO instead
          # of reading from a file.
          cls._config_string_io = six.moves.StringIO()
          cfg.ConfigParser.parse = six.create_unbound_method(cls._config_parse,
                                                             cfg.ConfigParser)
  
          # Replace command line arg parser so we ignore caller's args
          cfg._CachedArgumentParser.parse_args = lambda *a, **kw: None
  
          # Update the configuration with the options we have configured
          cfg.CONF(project='cinder', version=cinderlib.__version__,
                   default_config_files=['in_memory_file'])
          cls._update_cinder_config()