private List<AgentInfo> getReadyAgentInfos(String userId, String targetRegion, boolean isContainSubregionAgents) {
		return getAllFreeApprovedAgents()
			.stream()
			.filter(agentInfo -> StringUtils.equals(targetRegion, agentInfo.getRegion()))
			.filter(agentInfo -> isEmpty(agentInfo.getSubregion()) || isContainSubregionAgents)
			.filter(agentInfo -> {
				String agentOwner = agentInfo.getOwner();
				return isEmpty(agentOwner) || StringUtils.equals(userId, agentOwner);
			})
			.collect(toList());
	}
${@link List} of ready status agents information return

@param userId                   the login user id
@param targetRegion             the name of target region
@param isContainSubregionAgents the flag of if contains subregion agents or not

@return ${@link List} of ready status agents information
ngrinder-controller/src/main/java/org/ngrinder/agent/service/AgentService.java