private static boolean verifyNumPath(List<Set<String>> initiatorUris,ZoneInfoMap zoningMap,BlockObject block,URI vPoolURI,DbClient dbClient){
  DbModelClientImpl dbModelClient=new DbModelClientImpl(dbClient);
  ExportPathParams pathParams=BlockStorageScheduler.getExportPathParam(block,vPoolURI,dbClient);
  for (  Set<String> hostInitiatorUris : initiatorUris) {
    List<Initiator> initiators=CustomQueryUtility.iteratorToList(dbModelClient.find(Initiator.class,StringSetUtil.stringSetToUriList(hostInitiatorUris)));
    boolean avoidNumPathCheck=false;
    for (    Initiator initiator : initiators) {
      if (initiator.checkInternalFlags(Flag.RECOVERPOINT)) {
        avoidNumPathCheck=true;
      }
    }
    if (hasFCInitiators(initiators) && !avoidNumPathCheck) {
      return verifyHostNumPath(pathParams,initiators,zoningMap,dbClient);
    }
  }
  return true;
}

private static boolean verifyNumPath ( List < Set < String > > initiatorUris , ZoneInfoMap zoningMap , BlockObject block , URI vPoolURI , DbClient dbClient ) { DbModelClientImpl dbModelClient = new DbModelClientImpl ( dbClient ) ; ExportPathParams pathParams = BlockStorageScheduler . getExportPathParam ( block , vPoolURI , dbClient ) ; for ( Set < String > hostInitiatorUris : initiatorUris ) { List < Initiator > initiators = CustomQueryUtility . iteratorToList ( dbModelClient . find ( Initiator . class , StringSetUtil . stringSetToUriList ( hostInitiatorUris ) ) ) ; boolean avoidNumPathCheck = false ; for ( Initiator initiator : initiators ) { if ( initiator . checkInternalFlags ( Flag . RECOVERPOINT ) ) { avoidNumPathCheck = true ; } } if ( hasFCInitiators ( initiators ) && ! avoidNumPathCheck ) { return verifyHostNumPath ( pathParams , initiators , zoningMap , dbClient ) ; } } return true ; }
given a zoneinfomap , check that the hosts in a cluster have a number of paths that is compliant with the vpool specifications .
