code: func parseConfig(data map[string][]byte, config map[string]*Credential) error {
  	if len(data) == 0 {
  		return ErrCredentialMissing
  	}
  	for credentialKey, credentialValue := range data {
  		credentialKey = strings.ToLower(credentialKey)
  		vcServer := ""
  		if strings.HasSuffix(credentialKey, "password") {
  			vcServer = strings.Split(credentialKey, ".password")[0]
  			if _, ok := config[vcServer]; !ok {
  				config[vcServer] = &Credential{}
  			}
  			config[vcServer].Password = string(credentialValue)
  		} else if strings.HasSuffix(credentialKey, "username") {
  			vcServer = strings.Split(credentialKey, ".username")[0]
  			if _, ok := config[vcServer]; !ok {
  				config[vcServer] = &Credential{}
  			}
  			config[vcServer].User = string(credentialValue)
  		} else {
  			klog.Errorf("Unknown secret key %s", credentialKey)
  			return ErrUnknownSecretKey
  		}
  	}
  	for vcServer, credential := range config {
  		if credential.User == "" || credential.Password == "" {
  			klog.Errorf("Username/Password is missing for server %s", vcServer)
  			return ErrCredentialMissing
  		}
  	}
  	return nil
  }
docs: // parseConfig returns vCenter ip/fdqn mapping to its credentials viz. Username and Password.