code: def _validate_config(config):
          if not isinstance(config, list):
              raise TypeError('Config must be a list')
          for config_dict in config:
              if not isinstance(config_dict, dict):
                  raise TypeError('Config must be a list of dictionaries')
              label = config_dict.keys()[0]
              cfg = config_dict[label]
              if not isinstance(cfg, dict):
                  raise TypeError('Config structure is broken')
              if 'host' not in cfg:
                  raise TypeError('Config entries must have a value for host')
              if not isinstance(cfg['host'], str) and not isinstance(cfg['host'], list):
                  raise TypeError('Host must be a string or a list.')
              if 'port' not in cfg:
                  raise TypeError('Config entries must have a value for port')
              if not isinstance(cfg['port'], int):
                  raise TypeError('Port must be an int')
              if 'dbpath' not in cfg:
                  raise TypeError('Config entries must have a value for dbpath')
              if not isinstance(cfg['dbpath'], str):
                  if not isinstance(cfg['dbpath'], list):
                      raise TypeError('Dbpath must either a string or a list of '
                                      'strings')
                  for dbpath in cfg['dbpath']:
                      if not isinstance(dbpath, str):
                          raise TypeError('Dbpath must either a string or a list '
                                          'of strings')
              if ('read_preference' in cfg and
                  not isinstance(cfg['read_preference'], str)):
                  raise TypeError('Read_preference must be a string')
              if ('replicaSet' in cfg and
                  not isinstance(cfg['replicaSet'], str)):
                  raise TypeError('replicaSet must be a string')