code: func (ss *scaleSet) GetNodeNameByProviderID(providerID string) (types.NodeName, error) {
  	// NodeName is not part of providerID for vmss instances.
  	scaleSetName, err := extractScaleSetNameByProviderID(providerID)
  	if err != nil {
  		klog.V(4).Infof("Can not extract scale set name from providerID (%s), assuming it is mananaged by availability set: %v", providerID, err)
  		return ss.availabilitySet.GetNodeNameByProviderID(providerID)
  	}
  
  	resourceGroup, err := extractResourceGroupByProviderID(providerID)
  	if err != nil {
  		return "", fmt.Errorf("error of extracting resource group for node %q", providerID)
  	}
  
  	instanceID, err := getLastSegment(providerID)
  	if err != nil {
  		klog.V(4).Infof("Can not extract instanceID from providerID (%s), assuming it is mananaged by availability set: %v", providerID, err)
  		return ss.availabilitySet.GetNodeNameByProviderID(providerID)
  	}
  
  	vm, err := ss.getVmssVMByInstanceID(resourceGroup, scaleSetName, instanceID)
  	if err != nil {
  		return "", err
  	}
  
  	if vm.OsProfile != nil && vm.OsProfile.ComputerName != nil {
  		nodeName := strings.ToLower(*vm.OsProfile.ComputerName)
  		return types.NodeName(nodeName), nil
  	}
  
  	return "", nil
  }
docs: // GetNodeNameByProviderID gets the node name by provider ID.