code: func validateConfigMapNodeConfigSource(source *core.ConfigMapNodeConfigSource, fldPath *field.Path) field.ErrorList {
  	allErrs := field.ErrorList{}
  	// validate target configmap namespace
  	if source.Namespace == "" {
  		allErrs = append(allErrs, field.Required(fldPath.Child("namespace"), "namespace must be set"))
  	} else {
  		for _, msg := range ValidateNameFunc(ValidateNamespaceName)(source.Namespace, false) {
  			allErrs = append(allErrs, field.Invalid(fldPath.Child("namespace"), source.Namespace, msg))
  		}
  	}
  	// validate target configmap name
  	if source.Name == "" {
  		allErrs = append(allErrs, field.Required(fldPath.Child("name"), "name must be set"))
  	} else {
  		for _, msg := range ValidateNameFunc(ValidateConfigMapName)(source.Name, false) {
  			allErrs = append(allErrs, field.Invalid(fldPath.Child("name"), source.Name, msg))
  		}
  	}
  	// validate kubeletConfigKey against rules for configMap key names
  	if source.KubeletConfigKey == "" {
  		allErrs = append(allErrs, field.Required(fldPath.Child("kubeletConfigKey"), "kubeletConfigKey must be set"))
  	} else {
  		for _, msg := range validation.IsConfigMapKey(source.KubeletConfigKey) {
  			allErrs = append(allErrs, field.Invalid(fldPath.Child("kubeletConfigKey"), source.KubeletConfigKey, msg))
  		}
  	}
  	return allErrs
  }
docs: // common validation