code: func (vs *volumeSnapshotter) bindandUpdateVolumeSnapshot(snapshot *crdv1.VolumeSnapshot, snapshotDataName string, status *[]crdv1.VolumeSnapshotCondition) (*crdv1.VolumeSnapshot, error) {
  	var snapshotObj crdv1.VolumeSnapshot
  
  	glog.Infof("In bindVolumeSnapshotDataToVolumeSnapshot")
  	// Get a fresh copy of the VolumeSnapshot from the API server
  	glog.Infof("bindVolumeSnapshotDataToVolumeSnapshot: Namespace %s Name %s", snapshot.Metadata.Namespace, snapshot.Metadata.Name)
  	err := vs.restClient.Get().
  		Name(snapshot.Metadata.Name).
  		Resource(crdv1.VolumeSnapshotResourcePlural).
  		Namespace(snapshot.Metadata.Namespace).
  		Do().Into(&snapshotObj)
  
  	uniqueSnapshotName := cache.MakeSnapshotName(snapshot)
  	// TODO: Is copy needed here?
  	snapshotCopy := snapshotObj.DeepCopy()
  
  	snapshotCopy.Spec.SnapshotDataName = snapshotDataName
  	if status != nil {
  		snapshotCopy.Status.Conditions = *status
  	}
  	glog.Infof("bindVolumeSnapshotDataToVolumeSnapshot: Updating VolumeSnapshot object [%#v]", snapshotCopy)
  	// TODO: Make diff of the two objects and then use restClient.Patch to update it
  	var result crdv1.VolumeSnapshot
  	err = vs.restClient.Put().
  		Name(snapshot.Metadata.Name).
  		Resource(crdv1.VolumeSnapshotResourcePlural).
  		Namespace(snapshot.Metadata.Namespace).
  		Body(snapshotCopy).
  		Do().Into(&result)
  	if err != nil {
  		return nil, fmt.Errorf("Error updating snapshot object %s on the API server: %v", uniqueSnapshotName, err)
  	}
  
  	return &result, nil
  }
docs: // Bind the VolumeSnapshot and VolumeSnapshotData and udpate the status