code: func ValidatePodStatusUpdate(newPod, oldPod *core.Pod) field.ErrorList {
  	fldPath := field.NewPath("metadata")
  	allErrs := ValidateObjectMetaUpdate(&newPod.ObjectMeta, &oldPod.ObjectMeta, fldPath)
  	allErrs = append(allErrs, ValidatePodSpecificAnnotationUpdates(newPod, oldPod, fldPath.Child("annotations"))...)
  	allErrs = append(allErrs, validatePodConditions(newPod.Status.Conditions, fldPath.Child("conditions"))...)
  
  	fldPath = field.NewPath("status")
  	if newPod.Spec.NodeName != oldPod.Spec.NodeName {
  		allErrs = append(allErrs, field.Forbidden(fldPath.Child("nodeName"), "may not be changed directly"))
  	}
  
  	if newPod.Status.NominatedNodeName != oldPod.Status.NominatedNodeName && len(newPod.Status.NominatedNodeName) > 0 {
  		for _, msg := range ValidateNodeName(newPod.Status.NominatedNodeName, false) {
  			allErrs = append(allErrs, field.Invalid(fldPath.Child("nominatedNodeName"), newPod.Status.NominatedNodeName, msg))
  		}
  	}
  
  	// If pod should not restart, make sure the status update does not transition
  	// any terminated containers to a non-terminated state.
  	allErrs = append(allErrs, ValidateContainerStateTransition(newPod.Status.ContainerStatuses, oldPod.Status.ContainerStatuses, fldPath.Child("containerStatuses"), oldPod.Spec.RestartPolicy)...)
  	allErrs = append(allErrs, ValidateContainerStateTransition(newPod.Status.InitContainerStatuses, oldPod.Status.InitContainerStatuses, fldPath.Child("initContainerStatuses"), oldPod.Spec.RestartPolicy)...)
  
  	// For status update we ignore changes to pod spec.
  	newPod.Spec = oldPod.Spec
  
  	return allErrs
  }
docs: // ValidatePodStatusUpdate tests to see if the update is legal for an end user to make. newPod is updated with fields
  // that cannot be changed.