code: func (pc *PCCloud) DetachDisk(ctx context.Context, pdID string, nodeName k8stypes.NodeName) error {
  	photonClient, err := getPhotonClient(pc)
  	if err != nil {
  		klog.Errorf("Photon Cloud Provider: Failed to get photon client for DetachDisk, error: [%v]", err)
  		return err
  	}
  
  	operation := &photon.VmDiskOperation{
  		DiskID: pdID,
  	}
  
  	vmID, err := pc.InstanceID(ctx, nodeName)
  	if err != nil {
  		klog.Errorf("Photon Cloud Provider: pc.InstanceID failed for DetachDisk. Error[%v]", err)
  		return err
  	}
  
  	task, err := photonClient.VMs.DetachDisk(vmID, operation)
  	if err != nil {
  		klog.Errorf("Photon Cloud Provider: Failed to detach disk with pdID %s. Error[%v]", pdID, err)
  		return err
  	}
  
  	_, err = photonClient.Tasks.Wait(task.ID)
  	if err != nil {
  		klog.Errorf("Photon Cloud Provider: Failed to wait for task to detach disk with pdID %s. Error[%v]", pdID, err)
  		return err
  	}
  
  	return nil
  }
docs: // Detaches given virtual disk volume from the compute running kubelet.