code: func (c *controllerCommon) GetDiskLun(diskName, diskURI string, nodeName types.NodeName) (int32, error) {
  	disks, err := c.getNodeDataDisks(nodeName)
  	if err != nil {
  		klog.Errorf("error of getting data disks for node %q: %v", nodeName, err)
  		return -1, err
  	}
  
  	for _, disk := range disks {
  		if disk.Lun != nil && (disk.Name != nil && diskName != "" && *disk.Name == diskName) ||
  			(disk.Vhd != nil && disk.Vhd.URI != nil && diskURI != "" && *disk.Vhd.URI == diskURI) ||
  			(disk.ManagedDisk != nil && *disk.ManagedDisk.ID == diskURI) {
  			// found the disk
  			klog.V(2).Infof("azureDisk - find disk: lun %d name %q uri %q", *disk.Lun, diskName, diskURI)
  			return *disk.Lun, nil
  		}
  	}
  	return -1, fmt.Errorf("Cannot find Lun for disk %s", diskName)
  }
docs: // GetDiskLun finds the lun on the host that the vhd is attached to, given a vhd's diskName and diskURI.