code: func updateRcWithRetries(rcClient corev1client.ReplicationControllersGetter, namespace string, rc *corev1.ReplicationController, applyUpdate updateRcFunc) (*corev1.ReplicationController, error) {
  	// Deep copy the rc in case we failed on Get during retry loop
  	oldRc := rc.DeepCopy()
  	err := retry.RetryOnConflict(retry.DefaultBackoff, func() (e error) {
  		// Apply the update, then attempt to push it to the apiserver.
  		applyUpdate(rc)
  		if rc, e = rcClient.ReplicationControllers(namespace).Update(rc); e == nil {
  			// rc contains the latest controller post update
  			return
  		}
  		updateErr := e
  		// Update the controller with the latest resource version, if the update failed we
  		// can't trust rc so use oldRc.Name.
  		if rc, e = rcClient.ReplicationControllers(namespace).Get(oldRc.Name, metav1.GetOptions{}); e != nil {
  			// The Get failed: Value in rc cannot be trusted.
  			rc = oldRc
  		}
  		// Only return the error from update
  		return updateErr
  	})
  	// If the error is non-nil the returned controller cannot be trusted, if it is nil, the returned
  	// controller contains the applied update.
  	return rc, err
  }
docs: // updateRcWithRetries retries updating the given rc on conflict with the following steps:
  // 1. Get latest resource
  // 2. applyUpdate
  // 3. Update the resource