code: func (pbmClient *PbmClient) IsDatastoreCompatible(ctx context.Context, storagePolicyID string, datastore *Datastore) (bool, string, error) {
  	faultMessage := ""
  	placementHub := pbmtypes.PbmPlacementHub{
  		HubType: datastore.Reference().Type,
  		HubId:   datastore.Reference().Value,
  	}
  	hubs := []pbmtypes.PbmPlacementHub{placementHub}
  	req := []pbmtypes.BasePbmPlacementRequirement{
  		&pbmtypes.PbmPlacementCapabilityProfileRequirement{
  			ProfileId: pbmtypes.PbmProfileId{
  				UniqueId: storagePolicyID,
  			},
  		},
  	}
  	compatibilityResult, err := pbmClient.CheckRequirements(ctx, hubs, nil, req)
  	if err != nil {
  		klog.Errorf("Error occurred for CheckRequirements call. err %+v", err)
  		return false, "", err
  	}
  	if compatibilityResult != nil && len(compatibilityResult) > 0 {
  		compatibleHubs := compatibilityResult.CompatibleDatastores()
  		if compatibleHubs != nil && len(compatibleHubs) > 0 {
  			return true, "", nil
  		}
  		dsName, err := datastore.ObjectName(ctx)
  		if err != nil {
  			klog.Errorf("Failed to get datastore ObjectName")
  			return false, "", err
  		}
  		if compatibilityResult[0].Error[0].LocalizedMessage == "" {
  			faultMessage = "Datastore: " + dsName + " is not compatible with the storage policy."
  		} else {
  			faultMessage = "Datastore: " + dsName + " is not compatible with the storage policy. LocalizedMessage: " + compatibilityResult[0].Error[0].LocalizedMessage + "\n"
  		}
  		return false, faultMessage, nil
  	}
  	return false, "", fmt.Errorf("compatibilityResult is nil or empty")
  }
docs: // IsDatastoreCompatible check if the datastores is compatible for given storage policy id
  // if datastore is not compatible with policy, fault message with the Datastore Name is returned