code: func parseAPIConfig(plugin *quobytePlugin, params map[string]string) (*quobyteAPIConfig, error) {
  	var apiServer, secretName string
  	secretNamespace := "default"
  
  	deleteKeys := []string{}
  
  	for k, v := range params {
  		switch gostrings.ToLower(k) {
  		case "adminsecretname":
  			secretName = v
  			deleteKeys = append(deleteKeys, k)
  		case "adminsecretnamespace":
  			secretNamespace = v
  			deleteKeys = append(deleteKeys, k)
  		case "quobyteapiserver":
  			apiServer = v
  			deleteKeys = append(deleteKeys, k)
  		}
  	}
  
  	if len(apiServer) == 0 {
  		return nil, fmt.Errorf("Quobyte API server missing or malformed: must be a http(s)://host:port pair or multiple pairs separated by commas")
  	}
  
  	secretMap, err := util.GetSecretForPV(secretNamespace, secretName, quobytePluginName, plugin.host.GetKubeClient())
  	if err != nil {
  		return nil, err
  	}
  
  	cfg := &quobyteAPIConfig{
  		quobyteAPIServer: apiServer,
  	}
  
  	var ok bool
  	if cfg.quobyteUser, ok = secretMap["user"]; !ok {
  		return nil, fmt.Errorf("Missing \"user\" in secret %s/%s", secretNamespace, secretName)
  	}
  
  	if cfg.quobytePassword, ok = secretMap["password"]; !ok {
  		return nil, fmt.Errorf("Missing \"password\" in secret %s/%s", secretNamespace, secretName)
  	}
  
  	return cfg, nil
  }
docs: // Parse API configuration (url, username and password) out of class.Parameters.